Tiny Bunny TCP / UDP
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
network

TCP / UDP

by maesil 2025. 5. 4.

TCP ํ†ต์‹  ๋‹จ๊ณ„

  • TCP๋Š” ํ†ต์‹ (๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ )ํ•˜๊ธฐ ์ „์— ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๊ณ  ํ†ต์‹ ์ด ๋๋‚˜๋ฉด ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒ

 

โœ” MSS(Maximum Segment Size)

  • MSS: TCP๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ
  • TCP ํ—ค๋” ํฌ๊ธฐ๋Š” ์ œ์™ธ

 

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

โœ… ์†ก์‹ ์ง€ ํฌํŠธ, ์ˆ˜์‹ ์ง€ ํฌํŠธ

  • ์†ก์ˆ˜์‹ ํ•˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ

 

โœ… ์ˆœ์„œ ๋ฒˆํ˜ธ(sequence number)

  • ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ ๋ช…์‹œ๋˜๋Š” ํ•„๋“œ
  • ์ˆœ์„œ ๋ฒˆํ˜ธ: ์†ก์ˆ˜์‹ ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ ๋ฐ์ดํ„ฐ์˜ ์ฒซ ๋ฐ”์ดํŠธ์— ๋ถ€์—ฌ๋˜๋Š” ๋ฒˆํ˜ธ
    - ์„ธ๊ทธ๋จผํŠธ์˜ ์˜ฌ๋ฐ”๋ฅธ ์†ก์ˆ˜์‹  ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฒˆํ˜ธ

โœ” ์ˆœ์„œ ๋ฒˆํ˜ธ = ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ + ์†ก์‹ ํ•œ ๋ฐ”์ดํŠธ ์ˆ˜

  • (์˜ˆ์‹œ) ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ(ISN, Initial Sequence Number)๋Š” ๋ฌด์ž‘์œ„ ๊ฐ’
  • ์„ธ๊ทธ๋จผํŠธ B์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋Š” ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ์ธ 100์—์„œ 500๋ฐ”์ดํŠธ ๋–จ์–ด์ง„ ์…ˆ์ด๋ฏ€๋กœ 600
  • ์„ธ๊ทธ๋จผํŠธ C์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋Š” ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ๋กœ๋ถ€ํ„ฐ 1000๋ฐ”์ดํŠธ ๋–จ์–ด์ง„ 1100
  • ์„ธ๊ทธ๋จผํŠธ D์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋Š” ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ๋กœ๋ถ€ํ„ฐ 1500๋ฐ”์ดํŠธ ๋–จ์–ด์ง„ 1600

 

โœ… ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ(acknowledgment number)

  • ์ƒ๋Œ€ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ณด๋‚ธ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต
  • ๋‹ค์Œ์œผ๋กœ ์ˆ˜์‹ ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ ๋ช…์‹œ
์ˆ˜์‹ ์ž๊ฐ€ ๋‹ค์Œ์œผ๋กœ ๋ฐ›๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ (์ผ๋ฐ˜์ ์œผ๋กœ '์ˆ˜์‹ ํ•œ ์ˆœ์„œ ๋ฒˆํ˜ธ + 1')
ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ ๊ฐ’์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ œ์–ด ๋น„ํŠธ์—์„œ ์Šน์ธ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„ํŠธ์ธ ACK ํ”Œ๋ž˜๊ทธ๋ฅผ 1๋กœ ์„ค์ •

 

โœ… ์ œ์–ด ๋น„ํŠธ(control bits) / ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ(flag bits)

  • ํ˜„์žฌ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ๋ถ€๊ฐ€ ์ •๋ณด
  • ๊ธฐ๋ณธ์ ์œผ๋กœ 8๋น„ํŠธ๋กœ ๊ตฌ์„ฑ
- ACK: ์„ธ๊ทธ๋จผํŠธ์˜ ์Šน์ธ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ๋น„ํŠธ
- SYN: ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๊ธฐ ์œ„ํ•œ ๋น„ํŠธ
- FIN: ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ ๋น„ํŠธ

 

โœ… ์œˆ๋„์šฐ(window)

  • ์ˆ˜์‹  ์œˆ๋„์šฐ(ํ•œ ๋ฒˆ์— ์ˆ˜์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘)์˜ ํฌ๊ธฐ๊ฐ€ ๋ช…์‹œ

 

TCP ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ๊ณผ ์ข…๋ฃŒ

โœ… ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ: ์“ฐ๋ฆฌ ์›จ์ด ํ•ธ๋“œ์…ฐ์ดํฌ

  • ์“ฐ๋ฆฌ ์›จ์ด ํ•ธ๋“œ์…ฐ์ดํฌ(three-way handshake): ์„ธ ๊ฐœ์˜ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง„ TCP์˜ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๊ณผ์ •
    e.g.) ํ˜ธ์ŠคํŠธ A์™€ B๊ฐ€ ์“ฐ๋ฆฌ ์›จ์ด ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •

 

  • ์•กํ‹ฐ๋ธŒ ์˜คํ”ˆ(active open): ์—ฐ๊ฒฐ ์‹œ์ž‘ ํ˜ธ์ŠคํŠธ์˜ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๊ณผ์ •
  • ํŒจ์‹œ๋ธŒ ์˜คํ”ˆ(passive open): ์—ฐ๊ฒฐ ์ˆ˜๋ฝ ํ˜ธ์ŠคํŠธ์˜ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๊ณผ์ •

 

โœ… ์—ฐ๊ฒฐ ์ข…๋ฃŒ

  • ์†ก์ˆ˜์‹  ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ฐ์ž ํ•œ ๋ฒˆ์”ฉ FIN๊ณผ ACK๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ TCP ์—ฐ๊ฒฐ ์ข…๋ฃŒ
  • ๋„ค ๋‹จ๊ณ„๋กœ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•œ๋‹ค๋Š” ์ ์—์„œ ํฌ ์›จ์ด ํ•ธ๋“œ์…ฐ์ดํฌ(four-way handshake)๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ

 

  • ์•กํ‹ฐ๋ธŒ ํด๋กœ์ฆˆ(active close): ์ข…๋ฃŒ ์‹œ์ž‘ ํ˜ธ์ŠคํŠธ์˜ ์ข…๋ฃŒ ๊ณผ์ •
  • ํŒจ์‹œ๋ธŒ ํด๋กœ์ฆˆ(passive close): ์ข…๋ฃŒ ์ˆ˜๋ฝ ํ˜ธ์ŠคํŠธ์˜ ์ข…๋ฃŒ ๊ณผ์ •

 

TCP ์ƒํƒœ

  • ์ƒํƒœ(state): ํ˜„์žฌ ์–ด๋–ค ํ†ต์‹  ๊ณผ์ •์— ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋ณด
  • ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ํ™œ์šฉํ•˜๋Š” TCP: ์Šคํ…Œ์ดํŠธํ’€(stateful) ํ”„๋กœํ† ์ฝœ

 

TCP ์ƒํƒœ์˜ ์œ ํ˜•

 

โ‘  ์—ฐ๊ฒฐ์ด ์ˆ˜๋ฆฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ
โ‘ก ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๊ณผ์ •์—์„œ ์ฃผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ
โ‘ข ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ณผ์ •์—์„œ ์ฃผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ

 

โœ… ์—ฐ๊ฒฐ์ด ์ˆ˜๋ฆฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ

  • CLOSED: ์•„๋ฌด๋Ÿฐ ์—ฐ๊ฒฐ์ด ์—†๋Š” ์ƒํƒœ
  • LISTEN: ์ผ์ข…์˜ ์—ฐ๊ฒฐ ๋Œ€๊ธฐ ์ƒํƒœ (SYN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ)
    - ์„œ๋ฒ„๋กœ์„œ ๋™์ž‘ํ•˜๋Š” ํŒจ์‹œ๋ธŒ ์˜คํ”ˆ ํ˜ธ์ŠคํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ LISTEN ์ƒํƒœ ์œ ์ง€
    - LISTEN ํ˜ธ์ŠคํŠธ์—๊ฒŒ SYN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๋ฉด ์“ฐ๋ฆฌ ์›จ์ด ํ•ธ๋“œ์…ฐ์ดํฌ ์‹œ์ž‘

 

โœ… ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ์ƒํƒœ

  • SYN-SENT

- ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ธ ๋’ค ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ
- ์•กํ‹ฐ๋ธŒ ์˜คํ”ˆ ํ˜ธ์ŠคํŠธ๊ฐ€ SYN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ ๋’ค ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์ธ SYN + ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ

 

  • SYN-RECEIVED

- ํŒจ์‹œ๋ธŒ ์˜คํ”ˆ ํ˜ธ์ŠคํŠธ๊ฐ€ SYN + ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ ๋’ค ๊ทธ์— ๋Œ€ํ•œ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ

 

  • ESTABLISHED

- ์—ฐ๊ฒฐ์ด ํ™•๋ฆฝ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒํƒœ

 

โœ… ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์ƒํƒœ

  • FIN-WAIT-1

- ์ผ๋ฐ˜์ ์ธ TCP ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ณผ์ •์— ์žˆ์–ด FIN-WAIT-1์€ ์—ฐ๊ฒฐ ์ข…๋ฃŒ์˜ ์ฒซ ๋‹จ๊ณ„

 

  • CLOSE-WAIT

- ์ข…๋ฃŒ ์š”์ฒญ์ธ FIN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›์€ ํŒจ์‹œ๋ธŒ ํด๋กœ์ฆˆ ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ ํ›„ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ

 

  • FIN-WAIT-2

- FIN-WAIT-1 ์ƒํƒœ์—์„œ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›๊ณ  ์ƒ๋Œ€ ํ˜ธ์ŠคํŠธ์˜ FIN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ

 

  • LAST-ACK

- CLOSE-WAIT ์ƒํƒœ์—์„œ FIN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ ๋’ค ์ด์— ๋Œ€ํ•œ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ

 

  • TIME-WAIT

- ์•กํ‹ฐ๋ธŒ ํด๋กœ์ฆˆ ํ˜ธ์ŠคํŠธ๊ฐ€ FIN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ˆ˜์‹ ํ•œ ๋’ค, ์ด์— ๋Œ€ํ•œ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ ๋’ค ์ ‘์–ด๋“œ๋Š” ์ƒํƒœ
- ํŒจ์‹œ๋ธŒ ํด๋กœ์ฆˆ ํ˜ธ์ŠคํŠธ๋Š” ๋งˆ์ง€๋ง‰ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด CLOSED ์ƒํƒœ๋กœ ์ „์ด
- TIME-WAIT ์ƒํƒœ์˜ ์•กํ‹ฐ๋ธŒ ํด๋กœ์ฆˆ ํ˜ธ์ŠคํŠธ๋Š” ์ผ์ • ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฐ ๋’ค CLOSED ์ƒํƒœ๋กœ ์ „์ด

 

โœ” UDP

UDP ๋ฐ์ดํ„ฐ๊ทธ๋žจ์˜ ๊ตฌ์กฐ

  • UDP๋Š” TCP์™€ ๋‹ฌ๋ฆฌ ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœํ† ์ฝœ
  • ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๋ฐ ํ•ด์ œ, ์žฌ์ „์†ก์„ ํ†ตํ•œ ์˜ค๋ฅ˜ ์ œ์–ด, ํ˜ผ์žก ์ œ์–ด, ํ๋ฆ„ ์ œ์–ด ๋“ฑ์„ ์ˆ˜ํ–‰ X
  • ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€๋„ ์•Š์Œ: ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(stateless) ํ”„๋กœํ† ์ฝœ
  • UDP๋Š” TCP์— ๋น„ํ•ด ์ ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ํŒจํ‚ท์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ
    - ์ฃผ๋กœ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค, ์ธํ„ฐ๋„ท ์ „ํ™”์ฒ˜๋Ÿผ ์‹ค์‹œ๊ฐ„์„ฑ์ด ๊ฐ•์กฐ๋˜๋Š” ์ƒํ™ฉ์—์„œ TCP๋ณด๋‹ค ๋” ๋งŽ์ด ์“ฐ์ž„

 

 

์ถœ์ฒ˜