TCP, UDP

Ahnickยท2021๋…„ 2์›” 23์ผ
0
post-thumbnail

TCP์™€ UDP

TCP์™€ UDP๋Š” TCP/IP 4๊ณ„์ธต ์ค‘ Transport ๊ณ„์ธต์—์„œ ๋ฐ์ดํ„ฐ์˜
์†ก์ˆ˜์‹ ์„ ์ œ์–ด
ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ(๊ทœ์•ฝ)๋“ค์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” TCP์™€
UDP๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

TCP

TCP๋Š” Transmission Control Protocol์˜ ์•ฝ์–ด๋กœ ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ
์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด IP์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

TCP์˜ ํŠน์ง•

TCP๋Š” ์—ฐ๊ฒฐ ์ง€ํ–ฅ์  ํ”„๋กœํ† ์ฝœ๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„, ๋˜๋Š” ํ˜ธ์ŠคํŠธ์™€ ํ˜ธ์ŠคํŠธ ์‚ฌ์ด์—์„œ
์„œ๋กœ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์ด ์—ฐ๊ฒฐ์„ฑ์„ ์ง€ํ–ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—
TCP๋Š” ๋†’์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ TCP๋Š” ์ด๋Ÿฌํ•œ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ์„ ์œ„ํ•ด Handshaking์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์ด ์„ฑ๊ณตํ•ด์•ผ
๊ทธ๋•Œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ byte streamํ˜•ํƒœ๋กœ ์ „์†กํ•ด
๋ฐ์ดํ„ฐ์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ „์†ก ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ์ œ์•ฝ์ด ์—†์Šต๋‹ˆ๋‹ค
๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ Segment ๊ธฐ์ค€์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ํŠน์ง•๋“ค์„ ๊ฐ€์ง€๊ณ  ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ์ง€ํ–ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ธฐ๋Š” ๋‹จ์ ๋„ ์กด์žฌํ•˜๋Š”๋ฐ
๋จผ์ € ๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ์—ฐ๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›์•„์•ผ ํ•˜๊ณ 
๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„๊ณผ ํ˜ผ์žก์„ ์ œ์–ดํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์†ก์†๋„๊ฐ€ UDP์— ๋น„ํ•ด ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์œผ๋ฉฐ
CPU์™€ ๊ฐ™์€ ์ž์›์„ ๋งŽ์ด ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค
.

3 Way Handshake

๋จผ์ € 3 way handshake๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•ด ํ˜ธ์ŠคํŠธ(์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„)๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ๊ณผ์ •์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” SYN ํŒจํ‚ท์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.(Client : SYN_SENT ์ƒํƒœ)
  • ์„œ๋ฒ„์—์„œ SYNํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ , ํ•ด๋‹น ํฌํŠธ๋ฅผ ์—ด์–ด๋‘ก๋‹ˆ๋‹ค (Server : SYN_RCVD ์ƒํƒœ)
  • ์„œ๋ฒ„์—์„œ ์‘๋‹ต์„ ์ˆ˜์‹ ํ–ˆ๋‹ค๋Š” ACK์™€ ํด๋ผ์ด์–ธํŠธ ํฌํŠธ๋ฅผ ์—ด์–ด๋‹ฌ๋ผ๋Š” SYN์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•œ ๋’ค ์ž์‹ ์˜ ํฌํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. (Client : ESTABLISHED ์ƒํƒœ)
  • ์ดํ›„ ์„œ๋ฒ„๋กœ ACK๋ฅผ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค (Server : ESTABLISHED ์ƒํƒœ)

์ด 3 way handshake ๋ฅผ ๊ฑฐ์ณ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋˜๊ณ  ์„œ๋กœ ํŒจํ‚ท๊ณผ ์ˆ˜์‹ ์„ ํ–ˆ๋‹ค๋Š”
ACK๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ํ†ต์‹ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4 Way Handshake

๋‹ค์Œ์€ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •์ธ 4 Way Handshake์ž…๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์ข…๋ฃŒ๋ฅผ ์˜ˆ๊ณ ํ•˜๋Š” FIN ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค (Client : FIN-WAIT-1)
  • ์„œ๋ฒ„๋Š” ์ด์— ๋Œ€ํ•œ ์‘๋‹ต ACK๋ฅผ ๋ณด๋‚ด๊ณ  ์ž์‹ ์˜ ํฌํŠธ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค (Server : CLOSE-WAIT)
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด ACK๋ฅผ ๋ฐ›์œผ๋ฉด Server์˜ FIN์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค (Client : FIN-WAIT-2)
  • ์„œ๋ฒ„๊ฐ€ ์ž์‹ ์˜ ํฌํŠธ๋ฅผ ์™„์ „ํžˆ ๋‹ซ์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ๋„ ๋‹ซ์œผ๋ผ๋Š” FIN์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค (Server : LAST-ACK)
  • ํด๋ผ์ด์–ธํŠธ๋Š” FIN์— ๋Œ€ํ•œ ACK์‘๋‹ต์„ ๋ณด๋‚ด๊ณ  ์ถ”๊ฐ€ ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆฌ๋‹ค ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค (Client : TIME-WAIT -> CLOSED)
  • ์„œ๋ฒ„๋Š” ACK๋ฅผ ๋ฐ›์œผ๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค (Server : CLOSED)

TCP State Diagram

์œ„์˜ 3-Way, 4-Way Handshake์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

TCP๋Š” ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•˜๊ณ  ACK๋ฅผ ํ†ตํ•œ ํŒจํ‚ท ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

UDP

UDP๋Š” User Datagram Protocol์˜ ์•ฝ์–ด๋กœ TCP์™€๋Š” ๋‹ฌ๋ฆฌ
๋น„์—ฐ๊ฒฐ์„ ์ง€ํ–ฅํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์—ฐ๊ฒฐ์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  Sender๊ฐ€ ์ผ๋ฐฉ์ ์œผ๋กœ
๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

UDP์˜ ํŠน์ง•

ํฐ ํŠน์ง•์œผ๋กœ๋Š” UDP๋Š” Datagram ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€
TCP์˜ Segment ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ํฌ๊ธฐ์— ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค (65535 Byte)

UDP๋Š” ๋น„์—ฐ๊ฒฐ์„ ์ง€ํ–ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— TCP์™€ ๋‹ฌ๋ฆฌ IP๋งŒ์„ ๊ฐ€์ง€๊ณ 
๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1:1 ์—ฐ๊ฒฐ์ธ TCP์™€ ๋‹ฌ๋ฆฌ 1:1, 1:n, n:n ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

TCP์™€ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„ ํ†ต์ œ(ACK)๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง€๊ณ  ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœํ•  ์ˆ˜ ์—†์œผ๋ฉฐ
๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•œ ์ž‘์—…์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ๋”ฐ๋ผ์„œ ํŒจํ‚ท์ด ์†์‹ค๋˜๊ฑฐ๋‚˜ ๋ณ€์กฐ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ณ 
๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‘๋‹ต ๊ณผ์ •์ด ์—†์œผ๋ฏ€๋กœ ์žฌ์ „์†ก์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
๋จผ์ € ๋ณด๋‚ธ ํŒจํ‚ท์ด ๋‚˜์ค‘์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ UDP๋Š” ์‹ ๋ขฐ์„ฑ๋ณด๋‹ค ์„ฑ๋Šฅ(์†๋„)์ด ์šฐ์„ ์‹œ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€