์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ

category:CS
instructor:์ด์„๋ณต
provide:KOCW,ํ•œ์–‘๋Œ€ํ•™๊ต

KOCW ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•œ์–‘๋Œ€ ์ด์„๋ณต ๊ต์ˆ˜์˜ ๊ฐ•์˜.

TCP (Flow Control, Connection Management)

date:
2025-09-05
order:
5

RDT(Reliable Data Transfer) ๋ณต์Šต

์ง€๋‚œ ์‹œ๊ฐ„์— ํ•™์Šตํ•œ RDT์˜ ์ฃผ์š” ํŠน์ง•๋“ค:

  1. Cumulative ACK
    • ํŠน์ • ์‹œํ€€์Šค ๋ฒˆํ˜ธ๊นŒ์ง€์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ „๋‹ฌ๋˜์—ˆ์Œ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹
  2. Fast Retransmit
    • ํƒ€์ด๋จธ ๋งŒ๋ฃŒ ์ „์— ๋™์ผํ•œ ACK๊ฐ€ 3๊ฐœ ์—ฐ์†์œผ๋กœ ๋„์ฐฉํ•˜๋ฉด (์ด 4๊ฐœ) ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์œ ์‹ค๋˜์—ˆ๋‹ค๊ณ  ํŒ๋‹จ
    • ์ฆ‰์‹œ ์žฌ์ „์†ก์„ ์ˆ˜ํ–‰
  3. ๋™์  ํƒ€์ž„์•„์›ƒ ์„ค์ •
    • ํ†ต์‹  ์ƒํ™ฉ์— ๋”ฐ๋ผ ํƒ€์ด๋จธ ๊ฐ’์„ ๋™์ ์œผ๋กœ ์กฐ์ •
  4. ํ๋ฆ„ ์ œ์–ด(Flow Control)
    • ์ˆ˜์‹ ์ž์˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์— ๋งž์ถฐ ์†ก์‹  ์†๋„๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜

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

ํ๋ฆ„ ์ œ์–ด(Flow Control)

๊ธฐ๋ณธ ๋™์ž‘ ์›๋ฆฌ

TCP์—์„œ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์œ„ ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌํ•˜๋Š” ์‹œ์ ์€ ์ „์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฐ์ •์— ๋‹ฌ๋ ค ์žˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ read() ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•ด์•ผ๋งŒ TCP ์ˆ˜์‹  ๋ฒ„ํผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.

๋งŒ์•ฝ ํ”„๋กœ์„ธ์Šค๊ฐ€ read() ํ˜ธ์ถœ์„ ์ž์ฃผ ํ•˜์ง€ ์•Š์œผ๋ฉด:

  • ์ˆ˜์‹  ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ถ•์ 
  • ๋ฒ„ํผ ํฌํ™” ์‹œ ์ถ”๊ฐ€ ์„ธ๊ทธ๋จผํŠธ ์œ ์‹ค ์œ„ํ—˜ ๋ฐœ์ƒ

์ˆ˜์‹  ์œˆ๋„์šฐ(Receive Window)

์ˆ˜์‹ ์ž๋Š” ์ž์‹ ์˜ ์ˆ˜์‹  ๋ฒ„ํผ ์—ฌ์œ  ๊ณต๊ฐ„ ์ •๋ณด๋ฅผ ์†ก์‹ ์ž์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ์ด๊ฒƒ์ด ์ˆ˜์‹  ์œˆ๋„์šฐ์ด๋ฉฐ, TCP ํ—ค๋”์˜ Window ํ•„๋“œ์— ํฌํ•จ๋œ๋‹ค.

์†ก์‹ ์ž๋Š” ์ˆ˜์‹  ์œˆ๋„์šฐ ํฌ๊ธฐ ์ด๋‚ด์—์„œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์—ฌ ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.

ํ•ต์‹ฌ: ์œˆ๋„์šฐ ํฌ๊ธฐ๋Š” ์ˆ˜์‹ ์ž์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฉฐ, ์ด๋Š” ์‹œํ€€์Šค ๋ฒˆํ˜ธ๊ฐ€ ์†ก์‹ ์ž์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ๊ณผ ๋Œ€์กฐ์ ์ด๋‹ค.

๋ฐ๋“œ๋ฝ ์ƒํ™ฉ๊ณผ ํ•ด๊ฒฐ์ฑ…

TCP ์„ธ๊ทธ๋จผํŠธ ์ „์†ก ์กฐ๊ฑด

TCP ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ „์†ก๋˜๋Š” ๊ฒฝ์šฐ:

  1. ํ”„๋กœ์„ธ์Šค์˜ write() ํ˜ธ์ถœ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก
  2. ์ˆ˜์‹ ํ•œ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ACK ์‘๋‹ต ์ „์†ก

๋ฐ๋“œ๋ฝ ์‹œ๋‚˜๋ฆฌ์˜ค

์ƒํ™ฉ: ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผ๊ฐ€ ํฌํ™” ์ƒํƒœ โ†’ ์†ก์‹ ์ž๊ฐ€ ์ „์†ก ์ค‘๋‹จ โ†’ ์–‘์ธก ๋ชจ๋‘ ์ƒ๋Œ€๋ฐฉ์˜ ์‘๋‹ต ๋Œ€๊ธฐ

๋ฌธ์ œ์ :

  • ์†ก์‹ ์ž: ์ˆ˜์‹  ์œˆ๋„์šฐ ๊ฐฑ์‹ ์„ ์œ„ํ•ด ๋Œ€๊ธฐ
  • ์ˆ˜์‹ ์ž: ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด ์‘๋‹ต ์„ธ๊ทธ๋จผํŠธ ์—†์Œ

์œˆ๋„์šฐ ํ”„๋กœ๋ธŒ(Window Probe)

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • ์ˆ˜์‹  ์œˆ๋„์šฐ๊ฐ€ 0์ž„์„ ํ†ต์ง€๋ฐ›์€ ์†ก์‹ ์ž๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ž‘์€ ํฌ๊ธฐ์˜ ์œˆ๋„์šฐ ํ”„๋กœ๋ธŒ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก
  • ํฌ๊ธฐ: TCP ํ—ค๋”(20๋ฐ”์ดํŠธ) + ๋ฐ์ดํ„ฐ 1๋ฐ”์ดํŠธ = 21๋ฐ”์ดํŠธ
  • ๋ชฉ์ : ์ˆ˜์‹ ์ž์˜ ์œˆ๋„์šฐ ์ƒํƒœ ํ™•์ธ

์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ ์ตœ์ ํ™”

์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ์˜ ๋”œ๋ ˆ๋งˆ

ํฐ ์„ธ๊ทธ๋จผํŠธ์˜ ์žฅ์ :

  • ์ ์€ ์„ธ๊ทธ๋จผํŠธ ์ˆ˜๋กœ ํšจ์œจ์  ์ „์†ก
  • ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋‹น ์˜ค๋ฒ„ํ—ค๋“œ ์ตœ์†Œํ™”

ํฐ ์„ธ๊ทธ๋จผํŠธ์˜ ๋‹จ์ :

  • ์œ ์‹ค ์‹œ ์žฌ์ „์†ก ๋น„์šฉ ์ฆ๊ฐ€
  • ์ž‘์€ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ์ง€์—ฐ ๋ฐœ์ƒ

๋„ค์ด๊ธ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Nagle Algorithm)

์ „์†ก ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋งŒ์กฑ๋  ๋•Œ๊นŒ์ง€ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ ์ถ•์ :

  1. ์ตœ๋Œ€ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ(MSS) ๋งŒํผ ๋ฐ์ดํ„ฐ ์ถ•์ 
  2. ์ด์ „ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ACK ์ˆ˜์‹ 
  3. ํƒ€์ด๋จธ ๋งŒ๋ฃŒ

๋™์ž‘ ์˜ˆ์‹œ: ๋ฐ์ดํ„ฐ [0,1,2,3,4]๊ฐ€ ์žˆ์„ ๋•Œ:

  • ์ฒ˜์Œ 0๋ฒˆ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก
  • ACK ์ˆ˜์‹  ์‹œ: ์ถ•์ ๋œ ๋ฐ์ดํ„ฐ(์˜ˆ: [1,2]) ์ฆ‰์‹œ ์ „์†ก
  • ACK ๋ฏธ์ˆ˜์‹  ์‹œ: ํƒ€์ด๋จธ ๋งŒ๋ฃŒ ํ›„ 0๋ฒˆ ์„ธ๊ทธ๋จผํŠธ ์žฌ์ „์†ก
  • MSS ๋„๋‹ฌ ์‹œ: ACK์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ „์†ก

์—ฐ๊ฒฐ ๊ด€๋ฆฌ(Connection Management)

3-Way Handshake (์—ฐ๊ฒฐ ์„ค์ •)

1๋‹จ๊ณ„: ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ (SYN)

  • SYN bit = 1
  • ์‹œํ€€์Šค ๋ฒˆํ˜ธ = x (์ž„์˜๊ฐ’)

2๋‹จ๊ณ„: ์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ (SYN-ACK)

  • SYN bit = 1
  • ์‹œํ€€์Šค ๋ฒˆํ˜ธ = y (์ž„์˜๊ฐ’)
  • ACK ๋ฒˆํ˜ธ = x + 1

3๋‹จ๊ณ„: ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ (ACK)

  • SYN bit = 0
  • ACK ๋ฒˆํ˜ธ = y + 1
  • ์ด ๋‹จ๊ณ„๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ

์—ฐ๊ฒฐ ์ข…๋ฃŒ (Connection Termination)

1๋‹จ๊ณ„: ํ”„๋กœ์„ธ์Šค close() ํ˜ธ์ถœ โ†’ FIN ๋ฉ”์‹œ์ง€ ์ „์†ก

2๋‹จ๊ณ„: ์ƒ๋Œ€๋ฐฉ์˜ FIN์— ๋Œ€ํ•œ ACK ์‘๋‹ต + ์ƒ๋Œ€๋ฐฉ๋„ FIN ์ „์†ก

3๋‹จ๊ณ„: ๋งˆ์ง€๋ง‰ ACK ์ „์†ก

์ค‘์š”: FIN ๊ตํ™˜์ด ์™„๋ฃŒ๋˜์–ด๋„ TCP ์—ฐ๊ฒฐ์ด ์ฆ‰์‹œ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค. ์—ฐ๊ฒฐ ์„ค์ •๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์–‘๋ฐฉํ–ฅ ํ™•์ธ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

%%

Flow Control

์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” RDT(reliable data transfer)์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ–ˆ๋‹ค. ์ฃผ์š”ํ•œ ํŠน์ง•๋“ค๋กœ๋Š” cumulative ack๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ์ง€ํ€€์Šค ๋ฒˆํ˜ธ๊นŒ์ง€์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค๋Š”์ . ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์— fast retransmit ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ํƒ€์ด๋จธ๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ๊ฐ™์€ ack๊ฐ€ 4๊ฐœ ๋„์ฐฉํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋Š” ์œ ์‹ค๋˜์—ˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ  ์ฆ‰์‹œ ์žฌ์ „์†ก ํ•œ๋‹ค๋Š” ์ . ๊ทธ๋ฆฌ๊ณ  ํƒ€์ž„์•„์›ƒ ๊ฐ’์„ ํƒ€์ด๋จธ๋ฅผ ํ†ต์‹ ์ด ์žˆ์„๋•Œ๋งˆ๋‹ค ๋™์ ์œผ๋กœ ์ •ํ•œ๋‹ค๋Š” ์ .

๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ์ฃผ์š”ํ•œ ํŠน์ง•์œผ๋กœ๋Š” ํ๋ฆ„ ์ œ์–ดFlow control๊ฐ€ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ณต์Šต TCP๋Š” ์šด์˜์ฒด์ œ ์ปค๋„์— ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ , ์šด์˜์ฒด์ œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์†Œ์ผ“ API๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ , ํฌํŠธ์— ํ• ๋‹นํ•˜๋ฉด TCP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„คํŠธ์›Œํฌ์˜ ๊ฐ ๊ณ„์ธต์€ ์ƒ์œ„ ๊ณ„์ธต์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

TCP๊ฐ€ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ธ์ œ ๊ฐ€์ ธ๊ฐˆ์ง€๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์žฌ๋Ÿ‰์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ read()๋ฅผ ํ•ด์•ผ TCP์ธต์—์„œ ์ˆ˜์‹  ๋ฒ„ํผ ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ์— read()๋ฅผ ์ž์ฃผ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฒ„ํผ์— ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ์— ๋ฒ„ํผ๊ฐ€ ๊ฝ‰ ์ฐผ๋Š”๋ฐ ๊ณ„์†ํ•ด์„œ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๋„์ฐฉํ•œ๋‹ค๋ฉด ์–ด์ฐจํ”ผ ์œ ์‹ค๋ ๊ฒƒ์ด๋‹ˆ๊นŒ, ์ˆ˜์‹ ์ž๋Š” ์ž์‹ ์˜ ์ˆ˜์‹  ๋ฒ„ํผ์— ๋‚จ์€ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด๋ฅผ ์ˆ˜์‹  ์œˆ๋„์šฐ๋ผ๊ณ  ํ•œ๋‹ค. (์ด์ „์‹œ๊ฐ„ ํ—ค๋”์— Window๋ผ๊ณ  ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„. ์†ก์‹ ์ž๋Š” ํ”ผ๋“œ๋ฐฑ ํ—ค๋”์— ์žˆ๋Š” ์ˆ˜์‹  ์œˆ๋„์šฐ ํฌ๊ธฐ๋งŒํผ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ฆ‰ ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋Š” ์ˆ˜์‹ ์ž์— ์˜ํ•ด ์ •ํ•ด์ง„๋‹ค. ์†ก์‹ ์ž ์ธก์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋„ ์ˆ˜์‹ ์ž ์ธก์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ๋“œ๋ฝ ์ƒํ™ฉ

TCP์—์„œ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๋‚˜๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  1. ํ”„๋กœ์„ธ์Šค์—์„œ write()๋ฅผ ํ•ด์„œ ์†ก์‹  ๋ฒ„ํผ์—์„œ ๋ณด๋‚ผ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์žˆ์„ ๋•Œ.
  2. ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋”๋ผ๋„, ์ˆ˜์‹ ํ•œ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ผ ๋•Œ.

๋งŒ์•ฝ์— ์ˆ˜์‹ ์ž ์ธก์—์„œ ์ˆ˜์‹  ๋ฒ„ํผ๊ฐ€ ํฌํ™”์ƒํƒœ๋ผ๊ณ  ์•Œ๋ฆฐ๋‹ค๋ฉด, ์†ก์‹ ์ž๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ๊ธฐ๋‹ค๋ฆด๊ฒƒ์ด๋‹ค. ์–ธ์ œ๊นŒ์ง€? ๋‹ค์Œ์— ๋„์ฐฉํ•˜๋Š” ์„ธ๊ทธ๋จผํŠธ์—์„œ ์—…๋ฐ์ดํŠธ๋œ ์ˆ˜์‹  ์œˆ๋„์šฐ ์ƒํ™ฉ์„ ํ™•์ธํ•  ๋•Œ ๊นŒ์ง€. A์™€ B ์‚ฌ์ด์—์„œ ์ด๋Ÿฐ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•˜๊ณ , B๋Š” A์˜ ๋ฒ„ํผ๊ฐ€ ์—ฌ์œ ๊ฐ€ ์ƒ๊ธธ ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ A๋Š” B์ธก์—์„œ ์ „์†ก๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์—†์œผ๋‹ˆ ๋ณด๋‚ผ ์‘๋‹ต์ด ์—†๊ณ , ๊ทธ๋ž˜์„œ A ํ”„๋กœ์„ธ์Šค๊ฐ€ B ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ๊ฑฐ๊ธฐ์— ๊ฐ™์ด ๋ณด๋‚ด์•ผํ•˜๋Š”๋ฐ ๋งŒ์•ฝ A ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „ํ˜€ ์—†๋‹ค๋ฉด?

์œˆ๋„์šฐ ํ”„๋กœ๋ธŒ

์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์˜์™ธ๋กœ ๊ฐ„๋‹จํ•˜๋‹ค. B๊ฐ€ ๋งŒ์•ฝ์— A๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹  ์œˆ๋„์šฐ๊ฐ€ 0์ด๋ผ๋Š” ์†Œ์‹์„ ๋ฐ›์œผ๋ฉด, ์ฃผ๊ธฐ์ ์œผ๋กœ (TCP ํ—ค๋”๋Š” 40๋ฐ”์ดํŠธ ์ •๋„ ํฌ๊ธฐ์ธ๋ฐ, ์—ฌ๊ธฐ์— ์ „์†กํ•  ๋ฐ์ดํ„ฐ์˜ ์ฒซ ๋ฐ”์ดํŠธ๋งŒ ๋‹ด์€) 41๋ฐ”์ดํŠธ์˜ ์ž‘์€ ์œˆ๋„์šฐ ํ”„๋กœ๋ธŒ Window Probe ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋Š”?

์ƒ๊ฐํ•ด๋ณด๋ฉด ์„ธ๊ทธ๋จผํŠธ์˜ ๊ฐ€๋Šฅํ•œ ์ œ์ผ ํฐ๊ฒŒ ์ข‹์„๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์•ผ ์ตœ๋Œ€ํ•œ ์ ์€ ์ˆ˜์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„๊ฒƒ์ด๊ณ  tcp ํ†ต์‹ ์—์„œ ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋งˆ๋‹ค ์ ์ง€ ์•Š์€ ๋น„์šฉ์ด ๋“ ๋‹ค๋Š” ์ ์—์„œ ์ตœ๋Œ€ํ•œ ์„ธ๊ทธ๋จผํŠธ์˜ ์ˆ˜๋ฅผ ์ค„์ด๋Š”๊ฒŒ ์ข‹์„๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๋งˆ๊ตฌ ๋Š˜๋ฆฌ๋ฉด, ์ผ๋‹จ ํ•œ๋ฒˆ ์œ ์‹ค๋์„๋•Œ ๋‹ค์‹œ ์ „์†กํ•ด์•ผ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๊ฐ™์ด ์ปค์ง€๋ฉด์„œ ์žฌ์ „์†ก ๋ถ€๋‹ด์ด ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๊ณ , ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ write()ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ์œผ๋ฉด ํ•˜์—ผ์—†์ด ๊ธฐ๋‹ค๋ ค์•ผ ๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ Nagle ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•œ๋‹ค.

๋„ค์ด๊ธ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋„ค์ด๊ธ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ๋‹ค์Œ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋งŒ์กฑ๋  ๋•Œ ๊นŒ์ง€ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์•„๋‘”๋‹ค.

  • ์ตœ๋Œ€ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ(MSS)๋งŒํผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ์˜€์„ ๋•Œ
  • ์ด์ „์— ์ „์†กํ•œ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์ด ๋„์ฐฉํ–ˆ์„ ๋•Œ
  • ํƒ€์ž„์•„์›ƒ

[0,1,2,3,4]๊ฐ€ ์žˆ์œผ๋ฉด ์ฒ˜์Œ์— 0์„ ์ „์†กํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

  1. ACK ๋„์ฐฉ
  2. ACK๊ฐ€ ์˜ค์ง€ ์•Š์Œ (์œ ์‹ค)

1๋ฒˆ์˜ ๊ฒฝ์šฐ ACK๊ฐ€ ๋„์ฐฉํ•˜๋Š” ์‚ฌ์ด์— ๊ทธ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์Œ“์—ฌ์žˆ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ „๋‹ฌํ•œ ๋ฐ์ดํ„ฐ๋“ค, ์˜ˆ๋ฅผ๋“ค์–ด [1,2]๊ฐ€ ์žˆ์œผ๋ฉด ์ด๊ฒƒ์„ ์ „์†กํ•œ๋‹ค. 2๋ฒˆ์˜ ๊ฒฝ์šฐ๋Š” ๊ฒฐ๊ตญ 0 ๋ฒˆ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ  ๋‹ค์‹œ 0๋ฒˆ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ณ„์† ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์‚ฐํ•ด์„œ MMS๋งŒํผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ„ํผ์— ์Œ“์ด๊ฒŒ ๋˜๋ฉด ๊ทธ๊ฑด 0๋ฒˆ ์„ธ๊ทธ๋จผํŠธ์™€ ์ƒ๊ด€ ์—†์ด ์ „์†กํ•œ๋‹ค.

Connection Management

Three way handshake๋ฅผ ํ†ตํ•ด ์–‘์ธก์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ์Œ์„ ํ™•์ธํ•œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ SYN ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•œ๋‹ค. ํ—ค๋”์— SYN bit๊ฐ€ 1๋กœ ์ž…๋ ฅ๋˜์–ด์žˆ๊ณ , ์ž„์˜์˜ Seq ๋ฒˆํ˜ธ x๋ฅผ ๊ฐ€์ง„๋‹ค.
  2. ์„œ๋ฒ„๊ฐ€ SYN ACK ์‘๋‹ต์„ ์ „์†กํ•œ๋‹ค. (๋งˆ์ฐฌ๊ฐ€์ง€๋กœ SYNbit๊ฐ€ ์ฒดํฌ๋˜์–ด์žˆ์Œ) ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ—ค๋”์— SYNbit๊ฐ€ 1๋กœ ์ฒดํฌ๋˜์–ด ์žˆ๊ณ , ์ž„์˜์˜ Seq๋ฒˆํ˜ธ y๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ACK๋ฒˆํ˜ธ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์˜ Seq ๋ฒˆํ˜ธ์ธ x๋ฅผ ์‚ฌ์šฉํ•ด์„œ x+1์ด ๋œ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์‹œ ์„œ๋ฒ„์ธก ์‘๋‹ต์— ๋Œ€ํ•œ ์‘๋‹ต ACK๋ฅผ ์ „์†กํ•œ๋‹ค. SYNbit๋Š” ์ฒดํฌ๋˜์–ด์žˆ์ง€ ์•Š๊ณ  ACK๋ฒˆํ˜ธ๋Š” ์„œ๋ฒ„์ธก์˜ Seq ๋ฒˆํ˜ธ y๋ฅผ ์‚ฌ์šฉํ•ด y+1. ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

์—ฐ๊ฒฐ ๋‹ซ๊ธฐ

  1. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ์ผ“์„ close()ํ•˜๋ฉด TCP์—์„œ๋Š” FIN ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•œ๋‹ค
  2. ์ƒ๋Œ€์ธก์—์„œ๋Š” FIN์— ๋Œ€ํ•œ ์‘๋‹ต ACK๋ฅผ ์ „์†ก. ๋™์‹œ์— ์ƒ๋Œ€์ธก์—์„œ๋„ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด FIN ์ „์†ก
  3. ์—ฌ๊ธฐ์„œ๋„ ์ด์— ๋Œ€ํ•œ ACK๋ฅผ ์ „์†กํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์„œ๋กœ FIN์„ ์ „์†กํ–ˆ๋‹ค๊ณ  TCP ์—ฐ๊ฒฐ์ด ๋ฐ”๋กœ ๋Š๊ธฐ๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์—ฐ๊ฒฐ์„ ๋‹ซ์„๋•Œ๋„ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•  ๋•Œ ์ฒ˜๋Ÿผ ํ™•์ธ์„ ํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. %%