Post

[CS] Computer Networking - Transport layer(3): TCP segment, retransmittion

[CS] Computer Networking - Transport layer(3): TCP segment, retransmittion

๐Ÿ“š์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

โญ Transfer layer์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ T.C.P์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

TCP


TCP(Transmission Control Protocol): ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ํ”„๋กœํ† ์ฝœ

โœ…TCP์˜ ์ฃผ์š” ๊ตฌ์„ฑ ๊ฐœ๋…:

  • Point-to-Point: ํ•˜๋‚˜์˜ sender์™€ ํ•˜๋‚˜์˜ recevier๋งŒ ์—ฐ๊ฒฐ
  • Reliable, In-order Byte Stream: ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค ์—†์ด ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉ
  • Full Duplex Data: ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋™์‹œ์— ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ
  • Connection-oriented: ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์ „์— ์—ฐ๊ฒฐ ์„ค์ • ํ•„์š”(3-way handshaking)
  • Flow Control: ์ˆ˜์‹ ์ž๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์–‘๋งŒํผ๋งŒ ๋ฐ์ดํ„ฐ ์ „์†ก

TCP Segment sructure


TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ segment๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด NETWORK layer๋กœ ์ „์†กํ•œ๋‹ค.

alt text

  • Source/Destination Port: UDP์ฒ˜๋Ÿผ multi/demultiplexing์„ ์œ„ํ•œ port
  • sequence number: ๋ฐ์ดํ„ฐ ๋ฐ”์ดํŠธ ์ˆœ์„œ
  • ackownledgement number: ACKํ•˜๋Š” ๋„˜๋ฒ„
  • A: Ack ํ•„๋“œ๊ฐ€ ์œ ํšจํ•จ(1์ด๋ฉด ์œ ํšจ)
  • P: ๋ชจ์•„์„œ ์˜ฌ๋ฆฌ์ง€ ๋ง๊ณ  ๋ฐ”๋กœ ์˜ฌ๋ฆฌ๋ผ๋Š” ๋ช…๋ น
  • R: ๋ฆฌ์…‹
  • S: ์ปค๋„ฅ์…˜ ๋งบ์ž๊ณ  ์š”์ฒญํ•˜๋Š” ๊ฒƒ. ๋งบ์–ด์ง€๋ฉด 0, ๋งบ์–ด์ง€๊ธฐ์ „์€ 1์ด๋‹ค.
  • F: ์ปค๋„ฅ์…˜ ๋Š์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋‚œ ์ด์ œ ์•ˆ๋ณด๋‚ด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ. ํ•˜์ง€๋งŒ ์ƒ๋Œ€๋Š” ์•„์ง ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋Š์œผ๋ คํ•  ๋•Œ 1๋กœ ๋ฐ”๊พผ๋‹ค.
  • receive window: ํ˜„์žฌ ๋‚˜์˜ ์œˆ๋„์šฐ ๋ฒ„ํผ ํฌ๊ธฐ

TCP Seq #, ACKs


Sequence Numbers: ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์—์„œ ์ฒซ ๋ฐ”์ดํŠธ์˜ ์œ„์น˜ ACK: receiver๊ฐ€ ๋‹ค์Œ์— ๋ฐ›๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ฐ”์ดํŠธ์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ

alt text

Host A์˜ ์ดˆ๊ธฐ ์‹œํ€€์Šค ๋„˜๋ฒ„๋Š” 42, Host B์˜ ์ดˆ๊ธฐ ์‹œํ€€์Šค ๋„˜๋ฒ„๋Š” 79
A๊ฐ€ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ผ ๋•Œ ACK๋ฅผ 79๋กœํ•˜๊ณ  ์ „์†ก
B๋Š” ์ด์— ์‘๋‹ตํ•˜์—ฌ 79 ์‹œํ€€์Šค๋ฅผ ๋ณด๋‚ด๋Š”๋ฐ ACK๊ฐ€ 43
์ด๋Š” ๊ธฐ๋Œ€ํ•˜๋Š” ์„ธ๊ทธ๋จผํŠธ๊ฐ€ 43๋ฒˆ์ด๋ผ๊ณ  ์ด์ชฝ์—์„œ ๋ฏธ๋ฆฌ ๋”ํ•ด์„œ ์ฃผ๋Š” ๊ฒƒ
A๋Š” 79๋ฅผ ์ž˜ ๋ฐ›์•˜๋‹ค๊ณ  ACK 80๊ณผ ๋‹ค์Œ ์‹œํ€€์Šค ๋„˜๋ฒ„์ธ 43๋ฅผ ์ „์†ก

TCP RTT & Timeout

Timeout์‹œ๊ฐ„์„ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์„ค์ •ํ•ด์•ผํ• ๊นŒ?

๋„ˆ๋ฌด ์งง์œผ๋ฉด ๋ถˆํ•„์š”ํ•œ ์žฌ์ „์†ก์ด ๋งŽ์•„์ง€๊ณ , ๋„ˆ๋ฌด ๊ธธ๋ฉด loss๋ณต๊ตฌ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค. โ†’ RTT๋ณด๋‹ค ์‚ด์ง ๊ธด ์‹œ๊ฐ„์ด ์ตœ์ ์˜ ์‹œ๊ฐ„์ด๋‹ค.

๐Ÿ“šRTT?
sender์—์„œ segment๊ฐ€ receiver๊นŒ์ง€ ๊ฐ€์„œ ACK๊ฐ€ ๋Œ์•„์˜ค๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

๊ทธ๋Ÿผ RTT๋Š” ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐํ•˜๋Š”๊ฐ€ โ†’ SampleRTT๋ฅผ ์ด์šฉํ•œ๋‹ค

  • ์„ธ๊ทธ๋จผํŠธ ์ „์†ก๋ถ€ํ„ฐ ACK ์ˆ˜์‹ ๊นŒ์ง€์˜ ์‹ค์ œ ์ธก์ • ์‹œ๊ฐ„
  • ๋„คํŠธ์›Œํฌ๋Š” dynamicํ•˜๊ธฐ ๋•Œ๋ฌธ์— segment๋ฅผ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค SampleRTT๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค โ†’ ๋ถˆ๊ทœ์น™์ ์ž„
  • ๋”ฐ๋ผ์„œ ํ‰๊ท ๊ฐ’์„ ์ฑ„ํƒํ•˜๊ธฐ ์œ„ํ•œ ๊ณต์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
1
EstimatedRTT = (1-ฮฑ) ร— EstimatedRTT + ฮฑ ร— SampleRTT
  • ฮฑ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 0.125
  • EstimatedRTT๋Š” ํ‰๊ท ์ ์ธ RTT ์ถ”์ •๊ฐ’
  • ์ด์ „์— ๊ณ„์‚ฐ๋œ RTT์˜ ๊ฐ€์ค‘์น˜๋Š” 0.875์ด๊ณ , ์ƒˆ๋กœ ๊ณ„์‚ฐ๋œ RTT๋Š” 0.125์˜ ๊ฐ€์ค‘์น˜ โ†’ ์ƒˆ๋กœ์šด ํ‰๊ท  RTT๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค๋Š” ์˜๋ฏธ

๋˜ํ•œ ํ˜„์žฌ ์ธก์ •๋œ RTT๊ฐ€ ๊ธฐ์กด์˜ ํ‰๊ท  RTT๋ฅผ ์–ผ๋งˆ๋‚˜ ๋ฒ—์–ด๋‚˜๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜๋‹ค.

1
DevRTT = (1-ฮฒ) ร— DevRTT + ฮฒ ร— |SampleRTT - EstimatedRTT|
  • evRTT: ์•ˆ์ „์„ฑ์„ ์œ„ํ•œ ์ผ์ข…์˜ margin๊ฐ’

EstimatedRTT์™€ DevRTT๋ฅผ ์ด์šฉํ•˜๋ฉด Timeout ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. alt text

TCP transfer ๋งค์ปค๋‹ˆ์ฆ˜


alt text

  • ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ App layer์—์„œ Trasnport layer๋กœ ๋‚ด๋ ค์˜ด
  • ์—ฌ๋Ÿฌ segment๋กœ ๋ถ„ํ• ํ•ด์„œ send buffer์— ์ €์žฅ
  • ์„ค์ •๋œ window size๋งŒํผ receiver์ธก์œผ๋กœ segment๋ฅผ ํ•œ๋ฒˆ์— ์ „์†ก
  • segment๋ฅผ receiver์˜ receive buffer์— ์ €์žฅ
  • sender๋Š” ์ „์†กํ•œ segment๋“ค์— ๋Œ€ํ•œ ACK๋ฅผ ์ˆ˜์‹ 

TCP retransmission scenarios

alt text

1. ACK lost
  1. A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ (SEQ=92, 8๋ฐ”์ดํŠธ) B๊ฐ€ ACK๋ฅผ ์ „์†ก(ACK=100)
  2. ๊ทธ๋Ÿฌ๋‚˜ ACK ํŒจํ‚ท์ด ๋„คํŠธ์›Œํฌ์—์„œ ์†์‹ค
  3. ํ˜ธ์ŠคํŠธ A๋Š” ํƒ€์ž„์•„์›ƒ ํ›„์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†ก
  4. ํ˜ธ์ŠคํŠธ B๋Š” ๋‹ค์‹œ ACK=100์„ ์ „์†ก
  5. ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‘ ๋ฒˆ ๋ณด๋‚ด์กŒ์œผ๋‚˜, TCP๋Š” seq #๋ฅผ ํ†ตํ•ด ์ค‘๋ณต์„ ์ฒ˜๋ฆฌ
2. premature timeout
  1. A๊ฐ€ ๋‘ ๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†ก(SEQ=92์™€ SEQ=100).
  2. ํƒ€์ž„์•„์›ƒ์ด ์ผ์ฐ ๋ฐœ์ƒ โ†’ ํ˜ธ์ŠคํŠธ A๋Š” ์ฒซ ๋ฒˆ์งธ ์„ธ๊ทธ๋จผํŠธ(SEQ=92)๋ฅผ ์žฌ์ „์†ก
  3. ๊ทธ ์‚ฌ์ด ํ˜ธ์ŠคํŠธ B๋Š” ๋‘ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•ด ACK=100๊ณผ ACK=120์„ ์ „์†ก
  4. A๋Š” ํƒ€์ด๋จธ๋ฅผ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์žฌ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์ง€๋งŒ, ๋ˆ„์  ACK ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋•๋ถ„์— ๊ฒฐ๊ตญ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ „์†ก๋จ

alt text

3. cumulative ACK covers for earlier lost ACK
  1. A๊ฐ€ ๋‘ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†ก(SEQ=92์™€ SEQ=100).
  2. ์ฒซ ๋ฒˆ์งธ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ACK=100์ด ์†์‹ค
  3. ๋‘ ๋ฒˆ์งธ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ACK=120์ด ๋„์ฐฉ
  4. ๋ˆ„์  ACK ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์ธํ•ด ACK=120์€ ์ด์ „์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ(SEQ=92 ํฌํ•จ)๊ฐ€ ๋ฐ›์•„์กŒ์Œ์„ ์˜๋ฏธ
  5. ๋”ฐ๋ผ์„œ ์†์‹ค๋œ ACK=100์— ๋Œ€ํ•œ ๊ฑฑ์ • ์—†์ด ํ†ต์‹ ์ด ๊ณ„์†๋œ๋‹ค.

ํƒ€์ž„์•„์›ƒ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋” ๋น ๋ฅด๊ฒŒ ์žฌ์ „์†ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?

TCP Fast Retransmit

โœ…sender๊ฐ€ 3 duplicate ACK๋ฅผ ๋ฐ›์œผ๋ฉด, ํ•ด๋‹น segment๊ฐ€ ์†์‹ค๋˜์—ˆ๋‹ค๊ณ  ํŒ๋‹จ โ†’ ํƒ€์ž„์•„์›ƒ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์žฌ์ „์†ก

alt text

3๊ฐœ์˜ ๊ฐ™์€ ACK๊ฐ€ ์•„๋‹ˆ๋ผ 3๊ฐœ์˜ โ€œ์ค‘๋ณตโ€ ACK์— ์ฃผ์˜!!
์ฒซ ๋ฒˆ์งธ ์ •์ƒ ACK๋Š” ํฌํ•จX

  • sample problem alt text alt text
This post is licensed under CC BY 4.0 by the author.