๐Ÿ“š CS [ComputerScience]/๐Ÿ“š CS ๋ฉด์ ‘

๐Ÿ“š [CS๋ฉด์ ‘] ์›น ๋ฉด์ ‘ ์งˆ๋ฌธ [17] [TCP/UDP]

Dbswnstjd 2024. 3. 12. 18:59

1. TCP / UDP

TCP์™€ UDP๋Š” OSI์˜ 4๊ณ„์ธต์ด์ž TCP/IP์˜ ์ „์†ก ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

์ „์†ก๊ณ„์ธต์€ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ†ต์‹ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ณ„์ธต์œผ๋กœ, ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ๋ฐ์ดํ„ฐ์˜ ์ „๋‹ฌ์„ ๋‹ด๋‹นํ•œ๋‹ค. 

tcp/udp

TCP (Transmission Control Protocol) 

์ •์˜๋Š” ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์„ธ์ง€ ํ˜•ํƒœ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด IP์™€ ํ•จ๊ผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

 

TCP์˜ ํŠน์ง•

- ์—ฐ๊ฒฐ ์ง€ํ–ฅ ๋ฐฉ์‹์œผ๋กœ ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉ

- 3-way handshake ๊ณผ์ •์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  4-way handshake๋ฅผ ํ†ตํ•ด ํ•ด์ œ

- ํ๋ฆ„ ์ œ์–ด ๋ฐ ํ˜ผ์žก ์ œ์–ด

- ๋†’์€ ์‹ ๋ขฐ์„ฑ (IP ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ TCP์—์„œ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ)

- UDP๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆผ

๊ฐ€์ƒํšŒ์„  ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹

 

TCP์˜ ์—ฐ๊ฒฐ ๊ณผ์ • (3-way handshake)

- SYN(synchronize sequence numbers) : ์—ฐ๊ฒฐ ํ™•์ธ์„ ๋ณด๋‚ด๋Š” ๋ฌด์ž‘์œ„์˜ ์ˆซ์ž ๊ฐ’

- ACK(acknowledgements) : Client ํ˜น๋Š” Server๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ SYN์— 1์„ ๋”ํ•ด SYN์„ ์ž˜ ๋ฐ›์•˜๋‹ค๋Š” ACK

3-way handshaking

 

CLOSED :์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์˜ ๊ธฐ๋ณธ ์ƒํƒœ

LISTEN : ํฌํŠธ๊ฐ€ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์—ฐ๊ฒฐ ์š”์ฒญ ๋Œ€๊ธฐ์ค‘

SYN-SENT : SYN์„ ์š”์ฒญํ•œ ์ƒํƒœ

SYN-RECEIVED :SYN ์š”์ฒญ์„ ๋ฐ›๊ณ  ์ƒ๋Œ€๋ฐฉ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘

ESTABLISHED : ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์ด ์™„๋ฃŒ๋œ ์ƒํƒœ, ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Œ

 

1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ SYN์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ  SYN-SENT ์ƒํƒœ๋กœ ๋Œ€๊ธฐํ•œ๋‹ค.

2. ์„œ๋ฒ„๋Š” LISTEN์—์„œ SYN-RECEIVED ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  SYN๊ณผ ์‘๋‹ต ACK๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.

3. SYN๊ณผ ์‘๋‹ต ACK๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ESTABLISHED ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์‘๋‹ต ACK๋ฅผ ๋ณด๋‚ธ๋‹ค.

4. ACK๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๋Š” ESTABLISHED ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ์ด๋Ÿฐ ๊ทธ๋ฆผ์ด๋ผ๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

SYN + ACK

 

TCP์˜ ์—ฐ๊ฒฐ ํ•ด์ œ ๊ณผ์ • (4-way handshaking)

4-way handshaking

 

ESTABLISHED : ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์ด ์™„๋ฃŒ๋œ ์ƒํƒœ, ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Œ

FIN-WAIT-1 : ์ž์‹ ์ด ๋ณด๋‚ธ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ์ƒ๋Œ€๋ฐฉ์˜ FIN์„ ๊ธฐ๋‹ค๋ฆผ

FIN-WAIT-2 : ์ž์‹ ์ด ๋ณด๋‚ธ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๋ฐ›์•˜๊ณ , ์ƒ๋Œ€๋ฐฉ์˜ FIN์„ ๊ธฐ๋‹ค๋ฆผ

CLOSE-WAIT : ์ƒ๋Œ€๋ฐฉ์˜ FIN์„ ๋ฐ›์€ ์ƒํƒœ. ์ƒ๋Œ€๋ฐฉ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๋ณด๋‚ด๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ข…๋ฃŒ๋ฅผ ์•Œ๋ฆผ

LAST-ACK : CLOSE-WAIT ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌ ํ›„ FIN ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ

TIME-WAIT : ๋ชจ๋“  FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๋ฐ›๊ณ  ์—ฐ๊ฒฐ ์ข…๋ฃŒ๊ฐ€ ์™„๋ฃŒ๋œ ์ƒํƒœ, ์ƒˆ ์—ฐ๊ฒฐ๊ณผ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ์ผ์ • ์‹œ๊ฐ„ ๊ธฐ๋‹ค๋ฆฐ ํ›„ CLOSED๋กœ ์ „์ด

CLOSED : ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์˜ ๊ธฐ๋ณธ ์ƒํƒœ

 

โ€ป TIME-WAIT : ๋จผ์ € ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ชฝ์—์„œ ์ƒ์„ฑ๋˜๋Š” ์†Œ์ผ“์œผ๋กœ, ํ˜น์‹œ ๋ชจ๋ฅผ ์ „์†ก ์‹คํŒจ์— ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์†Œ์ผ“์ด๋ฉฐ,

TIME-WAIT์ด ์—†๋‹ค๋ฉด, ํŒจํ‚ท์˜ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ํ†ต์‹ ์ž ๊ฐ„ ์—ฐ๊ฒฐ ํ•ด์ œ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

์—ฐ๊ฒฐ์„ ํ•ด์ œ ํ•˜๋Š”๋ฐ ์ด ๊ณผ์ •์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐํ•  ๋•Œ์™€ ๋‹ค๋ฅธ ๋ฐฉ์‹์ด๋‹ค.

 

1. ๋จผ์ € close๋ฅผ ์‹คํ–‰ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ FIN์„ ๋ณด๋‚ด๊ณ  FIN-WAIT-1์ƒํƒœ๋กœ ๋Œ€๊ธฐ

2. ์„œ๋ฒ„๋Š” CLOSE-WAIT์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‘๋‹ต ACK๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ๋™์‹œ์— ํ•ด๋‹น ํฌํŠธ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ close๋ฅผ ์š”์ฒญ

3. ACK๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒํƒœ๋ฅผ FIN-WAIT-2๋กœ ๋ณ€๊ฒฝ

4. close ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ข…๋ฃŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  FIN์„ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด LAST-ACK ์ƒํƒœ๋กœ ๋ฐ”๊ฟˆ

5. FIN์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ACK๋ฅผ ์„œ๋ฒ„์— ๋‹ค์‹œ ์ „์†กํ•˜๊ณ  TIME-WAIT์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟˆ

TIME-WAIT์—์„œ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด CLOSE ๋œ๋‹ค. ACK๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๋„ ํฌํŠธ๋ฅผ CLOSED๋กœ ๋‹ซ๋Š”๋‹ค.

 

 

UDP (User Datagram Protocol)

UDP๋Š” ๋น„์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ํ•Ÿ๋ž‘๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ฒฝ๋กœ๊ฐ€ ์—†๊ณ  ๊ฐ๊ฐ์˜ ํŒจํ‚ท์€ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์ „์†ก๋˜๋ฉฐ, ๋…๋ฆฝ์ ์ธ ๊ด€๊ณ„๋ฅผ ์ง€๋‹Œ๋‹ค.

๋ฐ์ดํ„ฐ๊ทธ๋žจ ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ

UDP์˜ ํŠน์ง•

- ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ฐฉ์‹์„ ์ œ๊ณต : ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Œ

- ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์‹  ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Œ 

- ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์Œ

-TCP๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฆ„

- 1:1, 1:N, N:N ํ†ต์‹ ์ด ๊ฐ€๋Šฅ

 

์ฃผ๋กœ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค(Streaming)์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.