๐Ÿ“จ ์ „์†ก ๊ณ„์ธต์˜ ์—ญํ• ๊ณผ ์›๋ฆฌ

์ „์†ก ๊ณ„์ธต(Transport Layer)์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๋…ผ๋ฆฌ์  ํ†ต์‹ (logical communication) ์„ ์ œ๊ณตํ•œ๋‹ค. ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋ผ์šฐํ„ฐ์™€ ์Šค์œ„์น˜๋ฅผ ๊ฑฐ์ณ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์ง€๋งŒ, ์ „์†ก ๊ณ„์ธต ๋•๋ถ„์— ์šฐ๋ฆฌ๋Š” ๋งˆ์น˜ ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

  • ์†ก์‹  ์ธก(Sender): ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์„ธ๊ทธ๋จผํŠธ(segment) ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๊ณ , ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.
  • ์ˆ˜์‹  ์ธก(Receiver): ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์—์„œ ๋ฐ›์€ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์›๋ž˜์˜ ๋ฉ”์‹œ์ง€๋กœ ์žฌ์กฐ๋ฆฝํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

์ธํ„ฐ๋„ท์˜ ์ „์†ก ๊ณ„์ธต์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ํ”„๋กœํ† ์ฝœ์ด ์žˆ๋‹ค: TCP์™€ UDP.

1. ์ „์†ก ๊ณ„์ธต vs ๋„คํŠธ์›Œํฌ ๊ณ„์ธต

๋‘ ๊ณ„์ธต์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ํ†ต์‹ ์˜ ๋Œ€์ƒ์„ ์–ด๋””๊นŒ์ง€ ๋ณด๋А๋ƒ์— ์žˆ๋‹ค.

  • ์ „์†ก ๊ณ„์ธต (Transport Layer): ํ”„๋กœ์„ธ์Šค ๋Œ€ ํ”„๋กœ์„ธ์Šค(process-to-process) ์˜ ๋…ผ๋ฆฌ์  ํ†ต์‹ ์„ ๋‹ด๋‹นํ•œ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต (Network Layer): ํ˜ธ์ŠคํŠธ ๋Œ€ ํ˜ธ์ŠคํŠธ(host-to-host) ์˜ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•œ๋‹ค.

์ฆ‰, ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์€ IP ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์ปดํ“จํ„ฐ๊นŒ์ง€ ๋ฐฐ๋‹ฌํ•˜๋Š” ํƒ๋ฐฐ ๊ธฐ์‚ฌ๋ผ๋ฉด, ์ „์†ก ๊ณ„์ธต์€ ๊ทธ ์ปดํ“จํ„ฐ ์•ˆ์—์„œ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋ณด๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(ํ”„๋กœ์„ธ์Šค)์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ง‘๋ฐฐ์›๊ณผ ๊ฐ™๋‹ค.

Untitled

2. Multiplexing & Demultiplexing

ํ•˜๋‚˜์˜ ํ˜ธ์ŠคํŠธ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. ์ „์†ก ๊ณ„์ธต์€ ์–ด๋–ป๊ฒŒ ์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ์„œ ์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋˜ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋ฐ”๋กœ ๋‹ค์ค‘ํ™”(Multiplexing) ์™€ ์—ญ๋‹ค์ค‘ํ™”(Demultiplexing) ๋•๋ถ„์ด๋‹ค.

  • ๋‹ค์ค‘ํ™” (Multiplexing) @ ์†ก์‹  ์ธก: ์—ฌ๋Ÿฌ ์†Œ์ผ“(ํ”„๋กœ์„ธ์Šค)์œผ๋กœ๋ถ€ํ„ฐ ์˜จ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์•„ ์ „์†ก ๊ณ„์ธต ํ—ค๋”๋ฅผ ๋ถ™์—ฌ์„œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ์—ญ๋‹ค์ค‘ํ™” (Demultiplexing) @ ์ˆ˜์‹  ์ธก: ์ˆ˜์‹ ๋œ ์„ธ๊ทธ๋จผํŠธ์˜ ํ—ค๋” ์ •๋ณด(ํŠนํžˆ ํฌํŠธ ๋ฒˆํ˜ธ)๋ฅผ ๋ณด๊ณ , ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์†Œ์ผ“(ํ”„๋กœ์„ธ์Šค)์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

Untitled

์—ญ๋‹ค์ค‘ํ™”๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

ํ˜ธ์ŠคํŠธ๋Š” IP ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์ˆ˜์‹ ํ•˜๋ฉด, ๊ทธ ์•ˆ์— ๋‹ด๊ธด ์ „์†ก ๊ณ„์ธต ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊บผ๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ธ๊ทธ๋จผํŠธ ํ—ค๋”์— ์žˆ๋Š” ์ถœ๋ฐœ์ง€/๋ชฉ์ ์ง€ IP ์ฃผ์†Œ์™€ ์ถœ๋ฐœ์ง€/๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „๋‹ฌํ•  ์ •ํ™•ํ•œ ์†Œ์ผ“์„ ์ฐพ์•„๋‚ธ๋‹ค.

๋น„์—ฐ๊ฒฐํ˜• ์—ญ๋‹ค์ค‘ํ™” (UDP)

UDP ์†Œ์ผ“์€ ๋ชฉ์ ์ง€ IP ์ฃผ์†Œ์™€ ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ, ๋‹จ ๋‘ ๊ฐ€์ง€ ์ •๋ณด๋กœ ์‹๋ณ„๋œ๋‹ค. ์ˆ˜์‹ ๋œ UDP ์„ธ๊ทธ๋จผํŠธ์˜ ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋ณด๊ณ  ํ•ด๋‹นํ•˜๋Š” ์†Œ์ผ“์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์ถœ๋ฐœ์ง€ IP๋‚˜ ํฌํŠธ๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ์˜จ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์ด๋ผ๋„, ๋ชฉ์ ์ง€ IP์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋งŒ ๊ฐ™๋‹ค๋ฉด ๋ชจ๋‘ ๊ฐ™์€ UDP ์†Œ์ผ“์œผ๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋‹ค.

Untitled

์—ฐ๊ฒฐ ์ง€ํ–ฅํ˜• ์—ญ๋‹ค์ค‘ํ™” (TCP)

TCP ์†Œ์ผ“์€ (์ถœ๋ฐœ์ง€ IP, ์ถœ๋ฐœ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ, ๋ชฉ์ ์ง€ IP, ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ), ์ด ๋„ค ๊ฐ€์ง€ ์ •๋ณด์˜ ์กฐํ•ฉ์œผ๋กœ ์‹๋ณ„๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์„ธ๊ทธ๋จผํŠธ๋Š” ์ด ๋„ค ๊ฐ€์ง€ ๊ฐ’์ด ๋ชจ๋‘ ์ผ์น˜ํ•˜๋Š” ํŠน์ • ์†Œ์ผ“์œผ๋กœ๋งŒ ์ „๋‹ฌ๋œ๋‹ค. ๋•๋ถ„์— ์„œ๋ฒ„๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์™€ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ TCP ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Untitled

3. UDP: User Datagram Protocol

UDP๋Š” โ€œ์•„๋ฌด๊ฒƒ๋„ ๊พธ๋ฏธ์ง€ ์•Š์€(no-frills)โ€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์ด๋‹ค. IP๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ตœ์„  ๋…ธ๋ ฅ(best-effort) ์„œ๋น„์Šค ์™ธ์— ๊ฑฐ์˜ ์•„๋ฌด๋Ÿฐ ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋น„์‹ ๋ขฐ์ (Unreliable): ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋  ์ˆ˜๋„, ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€Œ์–ด ๋„์ฐฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๋น„์—ฐ๊ฒฐํ˜•(Connectionless): ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „์— ํ•ธ๋“œ์…ฐ์ดํ‚น ๊ฐ™์€ ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •์ด ์—†๋‹ค. ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

๊ทธ๋Ÿผ UDP๋Š” ์™œ ์“ธ๊นŒ? ๐Ÿค”

  • ๋น ๋ฅธ ์—ฐ๊ฒฐ: ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •์ด ์—†์œผ๋ฏ€๋กœ ์ง€์—ฐ์ด ์ ๋‹ค.
  • ๋‹จ์ˆœํ•จ: ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์–ด ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๋‹ค.
  • ์ž‘์€ ํ—ค๋”: TCP๋ณด๋‹ค ํ—ค๋” ํฌ๊ธฐ๊ฐ€ ์ž‘์•„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๋‹ค.
  • ํ˜ผ์žก ์ œ์–ด ์—†์Œ: TCP์ฒ˜๋Ÿผ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์— ๋”ฐ๋ผ ์ „์†ก ์†๋„๋ฅผ ์กฐ์ ˆํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ, DNS, SNMP, ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์˜ HTTP/3 ๋“ฑ์—์„œ UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฌผ๋ก  ์‹ ๋ขฐ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

UDP ์„ธ๊ทธ๋จผํŠธ ๊ตฌ์กฐ์™€ ์ฒดํฌ์„ฌ

Untitled

UDP ํ—ค๋”๋Š” ์ถœ๋ฐœ์ง€/๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ, ๊ธธ์ด, ๊ทธ๋ฆฌ๊ณ  ์ฒดํฌ์„ฌ(Checksum)์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ฒดํฌ์„ฌ์€ ์ „์†ก ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’์ด๋‹ค.

  • ์†ก์‹  ์ธก: ์„ธ๊ทธ๋จผํŠธ์˜ ๋‚ด์šฉ์„ 16๋น„ํŠธ ์ •์ˆ˜์˜ ๋‚˜์—ด๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋ชจ๋‘ ๋”ํ•œ ํ›„, 1์˜ ๋ณด์ˆ˜๋ฅผ ์ทจํ•ด ์ฒดํฌ์„ฌ ํ•„๋“œ์— ์ €์žฅํ•œ๋‹ค. (์ด๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ฌ๋ฆผ(carry)์€ ๋‹ค์‹œ ๋”ํ•ด์ค€๋‹ค.)
  • ์ˆ˜์‹  ์ธก: ๋ฐ›์€ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋˜‘๊ฐ™์ด ์ฒดํฌ์„ฌ์„ ๊ณ„์‚ฐํ•˜์—ฌ, ์ˆ˜์‹ ๋œ ์ฒดํฌ์„ฌ ๊ฐ’๊ณผ ๋น„๊ตํ•œ๋‹ค. ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.

4. ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก (RDT)

UDP์™€ ๋‹ฌ๋ฆฌ TCP๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฑ„๋„(e.g., IP) ์œ„์—์„œ ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด๋‚˜ ์˜ค๋ฅ˜ ์—†์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก(Reliable Data Transfer, RDT) ํ”„๋กœํ† ์ฝœ์˜ ์›๋ฆฌ๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ „์‹œ์ผœ๋ณด์ž.

Untitled

rdt 2.0: ์˜ค๋ฅ˜ ๊ฒ€์ถœ๊ณผ ํ”ผ๋“œ๋ฐฑ

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์•„์ด๋””์–ด๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ํŒจํ‚ท์„ ์ž˜ ๋ฐ›์•˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ์†ก์‹ ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

  • ACK (Acknowledgements): โ€œํŒจํ‚ท ์ž˜ ๋ฐ›์•˜์–ด!โ€ ๋ผ๋Š” ๊ธ์ •์˜ ์‹ ํ˜ธ.
  • NAK (Negative Acknowledgements): โ€œํŒจํ‚ท์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด!โ€ ๋ผ๋Š” ๋ถ€์ •์˜ ์‹ ํ˜ธ.

์†ก์‹ ์ž๋Š” ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ  ACK๋‚˜ NAK๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. NAK๋ฅผ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ํŒจํ‚ท์„ ์žฌ์ „์†กํ•˜๊ณ , ACK๋ฅผ ๋ฐ›์œผ๋ฉด ๋‹ค์Œ ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค. ์ด ๋ฐฉ์‹์„ Stop-and-Wait๋ผ๊ณ  ํ•œ๋‹ค.

Untitled

ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ACK/NAK ๋ฉ”์‹œ์ง€ ์ž์ฒด์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด? ์†ก์‹ ์ž๋Š” ์ค‘๋ณต๋œ ํŒจํ‚ท์„ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ , ์ˆ˜์‹ ์ž๋Š” ์ด๋ฅผ ๊ตฌ๋ถ„ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ๐Ÿ˜ฑ

rdt 2.1 & 2.2: ์ˆœ์„œ ๋ฒˆํ˜ธ์™€ NAK-free

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆœ์„œ ๋ฒˆํ˜ธ(Sequence Number)๋ฅผ ๋„์ž…ํ•œ๋‹ค. ์†ก์‹ ์ž๋Š” ๊ฐ ํŒจํ‚ท์— 0, 1, 0, 1โ€ฆ ์ˆœ์œผ๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ๋‹ค. ์ˆ˜์‹ ์ž๋Š” ์ด ๋ฒˆํ˜ธ๋ฅผ ๋ณด๊ณ  ์ค‘๋ณต๋œ ํŒจํ‚ท์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜์—ฌ ์ฒ˜๋ฆฌ(๋˜๋Š” ํ๊ธฐ)ํ•  ์ˆ˜ ์žˆ๋‹ค.

Untitled

๋” ๋‚˜์•„๊ฐ€, rdt 2.2์—์„œ๋Š” NAK๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค. ์ˆ˜์‹ ์ž๋Š” NAK๋ฅผ ๋ณด๋‚ด๋Š” ๋Œ€์‹ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜์‹ ํ•œ ํŒจํ‚ท์˜ ACK๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค. ์†ก์‹ ์ž ์ž…์žฅ์—์„œ ์ค‘๋ณต๋œ ACK๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์€ โ€˜๋ฐฉ๊ธˆ ๋ณด๋‚ธ ํŒจํ‚ท์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๊ตฌ๋‚˜โ€™๋ผ๋Š” ์‹ ํ˜ธ(NAK)์™€ ๊ฐ™์œผ๋ฏ€๋กœ, ํ•ด๋‹น ํŒจํ‚ท์„ ์žฌ์ „์†กํ•˜๋ฉด ๋œ๋‹ค. ์ด๊ฒƒ์ด TCP๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

Untitled

rdt 3.0: ํŒจํ‚ท ์†์‹ค ์ฒ˜๋ฆฌ

๋งŒ์•ฝ ํŒจํ‚ท์ด๋‚˜ ACK๊ฐ€ ์•„์˜ˆ ์†์‹ค(loss) ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ์†ก์‹ ์ž๋Š” ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ด๋จธ(Timer) ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์†ก์‹ ์ž๋Š” ํŒจํ‚ท์„ ๋ณด๋‚ผ ๋•Œ ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜๊ณ , ์ผ์ • ์‹œ๊ฐ„(timeout) ๋‚ด์— ACK๊ฐ€ ๋„์ฐฉํ•˜์ง€ ์•Š์œผ๋ฉด ํŒจํ‚ท์ด ์†์‹ค๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์žฌ์ „์†กํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹จ์ˆœํžˆ ์ง€์—ฐ๋œ ๊ฒƒ์ด์—ˆ๋‹ค๋ฉด ์ค‘๋ณต ์ „์†ก์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, ์ˆœ์„œ ๋ฒˆํ˜ธ ๋•๋ถ„์— ์ˆ˜์‹ ์ž๋Š” ์ค‘๋ณต์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Untitled

์ด Stop-and-Wait ๋ฐฉ์‹์˜ rdt 3.0์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€๋งŒ, ํ•œ ๋ฒˆ์— ํŒจํ‚ท ํ•˜๋‚˜์”ฉ๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์ฑ„๋„์˜ ์ด์šฉ๋ฅ (utilization)์ด ๋งค์šฐ ๋‚ฎ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

Untitled

์ด ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ํŒŒ์ดํ”„๋ผ์ด๋‹(Pipelining) ์ด๋ฉฐ, ์ด๋Š” ๋‹ค์Œ TCP ํŒŒํŠธ์—์„œ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

์ „์†ก ๊ณ„์ธต์˜ ๋ณต์žกํ•œ ์›๋ฆฌ๋ฅผ ํ•˜๋‚˜์”ฉ ์•Œ์•„๊ฐ€๋Š” ๊ณผ์ •์ด ํฅ๋ฏธ๋กญ๋‹ค. ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ์œ„ํ•ด ์ •๋ง ๋งŽ์€ ์žฅ์น˜๋“ค์ด ์ˆจ์–ด์žˆ๋‹ค.