TCP (RDT)

9/4/2025

TCP ์—ฐ๊ฒฐ๊ณผ ์‹ ๋ขฐ์  ๋ฐ์ดํ„ฐ ์ „์†ก

TCP ์ฃผ์š” ํŠน์ง•

TCP ์—ฐ๊ฒฐ์˜ ์ฃผ์š” ํŠน์ง•๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

point-to-point: ๋ฐœ์‹ ์ž์™€ ์ˆ˜์‹ ์ž๋Š” ๊ณ ์œ ์˜ ์†Œ์ผ“์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค.

send & receive buffers: ์ž„์‹œ๋กœ ์ •๋ณด๋“ค์„ ๋ณด๊ด€ํ•˜๋Š” ๋ฒ„ํผ๊ฐ€ ๋ณด๋‚ผ ๋•Œ์™€ ๋ฐ›์„ ๋•Œ ๋‘ ๊ฒฝ์šฐ ๋‹ค ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜ ๋‹ค ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

reliable in-order byte stream: ์†์‹ค ์—†์ด reliableํ•˜๊ณ , ์ „์†ก๋œ ์ˆœ์„œ๋Œ€๋กœ in-order๋กœ ์ •ํ™•ํžˆ ์ „๋‹ฌํ•œ๋‹ค.

pipelined: ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒจํ‚ท์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

full duplex data: ํ•œ ์—ฐ๊ฒฐ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–‘ ๋ฐฉํ–ฅ์œผ๋กœ ์ „์†ก๋  ์ˆ˜ ์žˆ๋‹ค.

flow control: ๋ฐœ์‹ ์ž๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์†๋„๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค.

๊ณ„์ธต๋ณ„ ๋ฐ์ดํ„ฐ ์ „์†ก ๋‹จ์œ„

์‘์šฉ๊ณ„์ธต์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก ๋‹จ์œ„๋Š”ย ๋ฉ”์‹œ์ง€๋ผ๊ณ  ํ•œ๋‹ค (์ด๊ฒƒ๋„ ํ—ค๋”์™€ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค). ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์†Œ์ผ“์„ ํ†ตํ•ด TCP๋กœ ๋‚ด๋ ค์˜ค๋ฉดย ์„ธ๊ทธ๋จผํŠธย ์•ˆ์˜ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ์„ธ๊ทธ๋จผํŠธ๋Š” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์˜ ์ „์†ก ๋‹จ์œ„์ธย ํŒจํ‚ท์˜ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ€๊ณ , ์ด ํŒจํ‚ท์€ ๋‹ค์‹œ ๋งํฌ ๊ณ„์ธต์˜ ์ „์†ก ๋‹จ์œ„์ธย ํ”„๋ ˆ์ž„์˜ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ„๋‹ค.

๊ฐ ๊ณ„์ธต์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๋•Œ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ ์‚ฌ์‹คย ํ—ค๋”๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ํ—ค๋” ๋ถ€๋ถ„์— ํ•ด๋‹น ๊ณ„์ธต์ด ํ•˜๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

TCP ์„ธ๊ทธ๋จผํŠธ ๊ตฌ์กฐ

ํ—ค๋” ํ•„๋“œ๋“ค

๊ฐ ํ•„๋“œ๋“ค์€ ์ „๋ถ€ 32๋น„ํŠธ ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

Source Port (16bit)         | Destination Port (16bit)
Sequence number (32bit)
Acknowledgement number (32bit)
Data Offset (4bit) | Reserved (6bit) | Flags (6bit) | Window (16bit)
Checksum (16bit)            | Urgent Pointer (16bit)

์œ„์˜ ํ•„๋“œ๋“ค์ด ํ•œ ์ค„๋งˆ๋‹ค ๊ฐ๊ฐ 32๋น„ํŠธ์”ฉ ํ˜ผ์ž ํ˜น์€ ๋‚˜๋ˆ ์„œ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋‹ค.

์‹œํ€€์Šค ๋ฒˆํ˜ธ์™€ ACK ๋ฒˆํ˜ธ

์‹œํ€€์Šค ๋ฒˆํ˜ธ (Sequence Number)

TCP์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋Š” '๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์˜ ์ œ์ผ ์ฒซ ๋ฐ”์ดํŠธ์˜ ์ˆœ์„œ๋ฒˆํ˜ธ' ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”์‹œ์ง€ ์ž์ฒด๊ฐ€ 100๋ฐ”์ดํŠธ ํฌ๊ธฐ๋ผ๊ณ  ํ•˜์ž (0๋ถ€ํ„ฐ 99๋ฒˆ ๋ฐ”์ดํŠธ๊นŒ์ง€ ์žˆ๋‹ค). ํ•œ ๋ฒˆ์— 10๋ฐ”์ดํŠธ์”ฉ ์ „์†ก์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด:

  • ์ฒซ ๋ฒˆ์งธ ์ „์†ก: ์‹œํ€€์Šค ๋ฒˆํ˜ธ 0 (0-9๋ฒˆ ๋ฐ”์ดํŠธ)
  • ๋‘ ๋ฒˆ์งธ ์ „์†ก: ์‹œํ€€์Šค ๋ฒˆํ˜ธ 10 (10-19๋ฒˆ ๋ฐ”์ดํŠธ)
  • ์„ธ ๋ฒˆ์งธ ์ „์†ก: ์‹œํ€€์Šค ๋ฒˆํ˜ธ 20 (20-29๋ฒˆ ๋ฐ”์ดํŠธ)
  • ...

ACK ๋ฒˆํ˜ธ (Acknowledgement Number)

ACK ๋ฒˆํ˜ธ์˜ ๊ฒฝ์šฐ์—๋Š” ์ •์ƒ์ ์œผ๋กœ ๋ฐ›์€ ๋‹ค์Œ ๋ฐ”์ดํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๋œ๋‹ค. ์œ„์—์„œ 0-9๋ฒˆ ๋ฐ”์ดํŠธ๋ฅผ ์ „์†กํ–ˆ๊ณ  ์ˆ˜์‹ ์ž๊ฐ€ ์ด์ƒ์—†์ด ์ž˜ ๋ฐ›์•˜๋‹ค๋ฉด ACK ๋ฒˆํ˜ธ๋Š” 10๋ฒˆ์ด ๋œ๋‹ค.

์ฐธ๊ณ : TCP ํ†ต์‹  ์ค‘์—๋Š” ์–‘์ธก ๋ชจ๋‘ ์ƒ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์—, ACK ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ผ ๋•Œ๋„ ๋ฐ›๋Š” ์ฆ‰์‹œ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ผ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ 500ms ์ •๋„ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค๋ฅธ ์„ธ๊ทธ๋จผํŠธ์— piggybackํ•ด์„œ ๋ณด๋‚ธ๋‹ค๊ฑฐ๋‚˜, ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๊ทธ๋ƒฅ ์‘๋‹ต๋งŒ ๋ณด๋‚ธ๋‹ค๊ณ  ํ•œ๋‹ค.

์‹ ๋ขฐ์  ๋ฐ์ดํ„ฐ ์ „์†ก (Reliable Data Transfer)

์ ์‘์  ํƒ€์ž„์•„์›ƒ (Adaptive Timeout)

์ด์ „์— ํƒ€์ด๋จธ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‹ค๋ค˜์—ˆ๋‹ค. ๋„ˆ๋ฌด ๋น ๋ฅด๋ฉด ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์งˆ ๊ฒƒ์ด๊ณ , ๋„ˆ๋ฌด ๋А๋ฆฌ๋ฉด ์ „์†ก ๊ณผ์ • ์ž์ฒด๊ฐ€ ๋А๋ ค์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ ์ ˆํ•œ ํƒ€์ž„์•„์›ƒ์„ ์ฐพ๋Š” ๊ฒŒ ์ค‘์š”ํ•œ๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธก์ •ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

RTT ์ถ”์ • ๊ณต์‹:

EstimatedRTT = (1-ฮฑ)*EstimatedRTT + ฮฑ*SampleRTT    (typically, ฮฑ = 0.125)
DevRTT = (1-ฮฒ)*DevRTT + ฮฒ*|SampleRTT-EstimatedRTT|  (typically, ฮฒ = 0.25)
TimeoutInterval = EstimatedRTT + 4*DevRTT

ํ•œ ๋ฒˆ ์ „์†ก๋œ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต์‹œ๊ฐ„์ธ SampleRTT๋ฅผ ๊ธฐ์กด ํ‰๊ท ์— ๋”ํ•ด์„œ ๋‹ค์‹œ ํ‰๊ท ๊ฐ’์„ ๋‚ธ๋‹ค (๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ƒฅ 1/n ํ‰๊ท ์ด ์•„๋‹ˆ๋ผ ์ตœ๊ทผ RTT์— ํฐ ๊ฐ€์ค‘์น˜๋ฅผ ์ฃผ๋ฉด์„œ ํ‰๊ท ์„ ๋‚ธ๋‹ค).

๊ทธ๋ฆฌ๊ณ  DevRTT (๋ณ€๋™์„ฑ)๋ฅผ ์ธก์ •ํ•ด์„œ ์—ฌ๊ธฐ์— 4๋ฐฐ์˜ ๋งˆ์ง„์„ ๋ถ™์—ฌ์„œ ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์„ ์ •ํ•œ๋‹ค. ์ฆ‰ย ํ†ต์‹  ์ค‘์—๋„ ๊ณ„์† ํƒ€์ž„์•„์›ƒ ๊ฐ’์ด ๋ณ€ํ•œ๋‹ค๋Š” ์ ์ด ์ค‘์š”ํ•˜๋‹ค.

๋น ๋ฅธ ์žฌ์ „์†ก (Fast Retransmit)

์ด์ „ ์‹œ๊ฐ„์— RDT๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ๊ณ ์•ˆํ•ด๋ดค๋‹ค: Go-back-N ๋ฐฉ์‹๊ณผ Selective Repeat. TCP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ GBN์˜ cumulative ACK๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ธฐ์กด GBN์˜ ๋ฌธ์ œ์ :
๊ธฐ์กด GBN์—์„œ ๋‹จ์ ์€ ์ค‘๋ณต๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ณ„์† ๋ฐ›์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 100๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ 10๋ฒˆ ์„ธ๊ทธ๋จผํŠธ๋งŒย ์œ ์‹ค๋๊ณ , ๊ทธ๋ ‡๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ ACK(9)๋ฅผ ์ „์†กํ•˜๋ฉด ๋ฐœ์‹ ์ž๋Š” 10๋ฒˆ๋ถ€ํ„ฐ ๋‹ค์‹œ 100๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋‹ค์‹œ ์ „์†กํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 11๋ฒˆ๋ถ€ํ„ฐ 99๋ฒˆ๊นŒ์ง€ 90๊ฐœ ๊ฐ€๋Ÿ‰์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์žฌ์ „์†กํ•˜๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‚ญ๋น„๋˜๋Š” ์…ˆ์ด๋‹ค.

TCP์˜ Fast Retransmit ๋ฐฉ์‹:
๊ทธ๋ž˜์„œ TCP์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋А๋ƒ๋ฉด, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 10๋ฒˆ ์„ธ๊ทธ๋จผํŠธ๋งŒ ์œ ์‹ค๋๋‹ค๋ฉด:

  1. 10๋ฒˆ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์œ ์‹ค๋œ ํ›„ 11๋ฒˆ, 12๋ฒˆ, ... ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๊ณ„์† ๋„์ฐฉํ•œ๋‹ค
  2. ํ•˜์ง€๋งŒ 10๋ฒˆ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์†ํ•ด์„œ ACK(10)์„ ๋ณด๋‚ธ๋‹ค (ACK(9)๊ฐ€ ์•„๋‹ˆ๋‹ค)
  3. ๋ฐœ์‹ ์ž ์ธก์—์„œ๋Š” 0-99๋ฒˆ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋ƒˆ๊ณ  ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์ด ๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ACK(10)์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค
  4. ๊ทธ๋Ÿฌ๋ฉด ๋‚˜๋จธ์ง€ ์„ธ๊ทธ๋จผํŠธ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋„์ฐฉํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  10๋ฒˆ ์„ธ๊ทธ๋จผํŠธ๋งŒย ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค

Fast Retransmit ๊ทœ์น™:ย ๊ถŒ๊ณ ์‚ฌํ•ญ์— ๋”ฐ๋ฅด๋ฉด ์ค‘๋ณต๋œ ACK๋ฅผ 3๋ฒˆ ๋ฐ›์œผ๋ฉด, ์ฆ‰ ์›๋ž˜ ACK๊นŒ์ง€ ์ด 4๊ฐœ์˜ ๊ฐ™์€ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋งŒ ์žฌ์ „์†กํ•œ๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์„ย Fast Retransmit์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํƒ€์ž„์•„์›ƒ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ ๋„ ๋น ๋ฅด๊ฒŒ ์œ ์‹ค๋œ ํŒจํ‚ท์„ ์žฌ์ „์†กํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ „์†ก ํšจ์œจ์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ๋‹ค.

์ •๋ฆฌ

TCP๋Š” ์ด์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์‹ ๋ขฐ์ ์ด๊ณ  ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•œ๋‹ค:

  • ์ ์‘์  ํƒ€์ž„์•„์›ƒ: ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ํƒ€์ž„์•„์›ƒ ๊ฐ’์„ ์กฐ์ •
  • Fast Retransmit: ์ค‘๋ณต ACK๋ฅผ ํ†ตํ•ด ๋น ๋ฅธ ์˜ค๋ฅ˜ ๋ณต๊ตฌ
  • Cumulative ACK: ์ˆœ์ฐจ์ ์ธ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณด์žฅ

์ด๋Ÿฌํ•œ ํŠน์ง•๋“ค์ด ๊ฒฐํ•ฉ๋˜์–ด TCP๊ฐ€ ์ธํ„ฐ๋„ท์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ „์†ก ํ”„๋กœํ† ์ฝœ์ด ๋  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.