๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

TCP์™€ UDP ๋ณธ๋ฌธ

Computer Science/๋„คํŠธ์›Œํฌ

TCP์™€ UDP

sehaan 2024. 2. 7. 23:11

TCP - ์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ 

 

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

IP์˜ ๋‹จ์ ์ด์—ˆ๋˜ ํŒจํ‚ท ์†์‹ค์ด๋‚˜ ์ˆœ์„œ ๋ฏธ๋ณด์žฅ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์„ ํŒจํ‚ท์„ ์ œ์–ดํ•˜์—ฌ ํ•ด๊ฒฐํ•ด ์ค€๋‹ค.

 

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

๊ฐ€์ƒํšŒ์„  ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹์€ ๊ฐ ํŒจํ‚ท์— ๊ฐ€์ƒํšŒ์„  ์‹๋ณ„์ž๊ฐ€ ํฌํ•จ๋˜๊ณ  ํŒจํ‚ท๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ชจ๋“  ํŒจํ‚ท์„ ์ „์†กํ•˜๋ฉด ๊ฐ€์ƒ ํšŒ์„ ์ด ํ•ด์ œ๋œ๋‹ค.

 

TCP ํ”„๋กœํ† ์ฝœ์€ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•  ๋•Œ 3 way ํ•ธ๋“œ์…ฐ์ดํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ๋•Œ 4way ํ•ธ๋“œ ์…ฐ์ดํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

3way ํ•ธ๋“œ์…ฐ์ดํฌ

- SYN : ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ *ISN๊ณผ SYN์„ ๋ณด๋‚ธ๋‹ค. 

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

 

 

- SYN + ACK : ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ SYN์„ ๋ฐ›๊ณ  ์‘๋‹ต๊ฐ’์œผ๋กœ ์„œ๋ฒ„์˜ ISN๊ณผ ์Šน์ธ๋ฒˆํ˜ธ๋กœ ISN + 1์„ ๋ณด๋‚ธ๋‹ค.

 

- ACK : ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์Šน์ธ ๋ฒˆํ˜ธ๋ฅผ ๋‹ด์•„์„œ ACK๋ฅผ ๋ณด๋‚ธ๋‹ค.

 

์ด ๊ณผ์ •์ด ๊ตฌ์ถ•๋˜๊ณ  ๋‚œ ๋’ค์— ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, TCP๋Š” ์‹ ๋ขฐ์„ฑ์ด ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ชจ๋“  ํ†ต์‹ ์—์„œ ์ด ๊ณผ์ •์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๊ฐ™์€ ์†๋„๊ฐ€ ์ค‘์š”์‹œ ๋˜๋Š” ํ†ต์‹ ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

 

4way ํ•ธ๋“œ์…ฐ์ดํฌ

- FIN_WAIT_1 : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ์„ ๋‹ซ์œผ๋ ค๊ณ  ํ•  ๋•Œ FIN์œผ๋กœ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ FIN_WAIT_1์˜ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

- CLOSE_WAIT : ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ ACK๋ผ๋Š” ์Šน์ธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋Š” CLOSE , ํด๋ผ์ด์–ธํŠธ๋Š” FIN_WAIT2 ์ƒํƒœ์— ๋“ค์–ด๊ฐ„๋‹ค.

 

- LAST_ACK : ์„œ๋ฒ„๋Š” ACK๋ฅผ ๋ณด๋‚ด๊ณ  ์ผ์ • ์‹œ๊ฐ„ ์ดํ›„์— FIN์ด๋ผ๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

 

- *TIME_WAIT : ์ผ์ • ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฐ ๋’ค์— ์„œ๋ฒ„๋กœ ACK๋ฅผ ๋ณด๋‚ด์„œ ์„œ๋ฒ„๋Š” CLOSED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ดํ›„ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์ด ๋‹ซํžˆ๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ๋ชจ๋“  ์ž์›์˜ ์—ฐ๊ฒฐ์ด ํ•ด์ œ๋œ๋‹ค.

 

TIME_WAIT : ์†Œ์ผ“์ด ๋ฐ”๋กœ ์†Œ๋ฉธ๋˜์ง€ ์•Š๊ณ  ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€๋˜๋Š” ์ƒํƒœ์ด๋ฉฐ, ์ง€์—ฐ ํŒจํ‚ท์ด๋‚˜ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค.

 

2way ํ•ธ๋“œ์…ฐ์ดํฌ๊ฐ€ ์—†๋Š” ์ด์œ  : ์ „์†ก ์ธก ์ž…์žฅ์—์„œ ์ž๊ธฐ์˜ ์‹ ํ˜ธ๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์—ˆ๋Š” ์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋Š” TCP์˜ ๊ทผ๋ณธ์ธ ์–‘๋ฑกํ–ฅ ์—ฐ๊ฒฐ์ด ๊นจ์ ธ๋ฒ„๋ฆฌ๊ฒŒ ๋˜๊ณ  ๊ณง ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๊ฒŒ๋œ๋‹ค.

 

TCP ์ „์†ก ์ œ์–ด

 

ํ๋ฆ„์ œ์–ด

์†ก์‹  ์ธก์€ ์ˆ˜์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋Š ์ •๋„๋กœ ๋ณด๋‚ด์ค˜์•ผ ํ• ์ง€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ์„œ ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋Ÿ‰์„ ์กฐ์ ˆ

 

์˜ค๋ฅ˜์ œ์–ด

ํ†ต์‹  ๋„์ค‘์— ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์—ˆ์„ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) go back n - ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋œ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. 

selective repeat - ์œ ์‹ค๋œ ๋ฐ์ดํ„ฐ๋งŒ ์„ ํƒ์ ์œผ๋กœ ๋ณด๋‚ธ๋‹ค. 

 

ํ˜ผ์žก์ œ์–ด

๋„คํŠธ์›Œํฌ ํ˜ผ์žก์„ ๊ฐ์ง€ํ•˜์—ฌ์„œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์†ก์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰์„ ์กฐ์ ˆํ•œ๋‹ค.

ex)

AIMD

- ์†ก์‹  ์ธก์ด transmission rate(window size)๋ฅผ ํŒจํ‚ท ์†์‹ค์ด ์ผ์–ด๋‚  ๋•Œ๊นŒ์ง€ ์ฆ๊ฐ€

Slow Start

- Slow Start๋Š” ์†ก์‹  ์ธก์ด window size๋ฅผ 1๋ถ€ํ„ฐ ํŒจํ‚ท ์†์‹ค์ด ์ผ์–ด๋‚  ๋•Œ๊นŒ์ง€ ์ง€์ˆ˜์Šน(exponentially)์œผ๋กœ ์ฆ๊ฐ€

 

TCP ํ—ค๋”

 

TCP ํ”„๋กœํ† ์ฝœ์€ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋‚˜ ACK ๋ฒˆํ˜ธ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ •๋ณด๋“ค์„ ํ—ค๋”์— ๋‹ด๊ณ  ์žˆ๋‹ค.

 

TCP์˜ ํŠน์ง• ์ •๋ฆฌ

1. ์—ฐ๊ฒฐ ์ง€ํ–ฅ(๊ฐ€์ƒํšŒ์„  ํŒจํ‚ท ๊ตํ™˜) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

2. 3way , 4way ํ•ธ๋“œ ์…ฐ์ดํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๊ณ  ํ•ด์ œํ•œ๋‹ค.

3. ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ „์†ก ์ œ์–ด ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

4. ํŒจํ‚ท์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ›์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

 

UDP - ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํ”„๋กœํ† ์ฝœ

 

๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. TCP์˜ ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ์ธ ์†๋„๋กœ ์ธํ•ด์„œ ๋น ๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ์š”๊ตฌ๋˜๋Š” ํ˜„๋Œ€์— ํ•„์š”์„ฑ์ด ๋Œ€๋‘๋˜์—ˆ์œผ๋ฉฐ HTTP/3.0์—์„œ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒ๋˜์—ˆ๋‹ค. 

ํ•˜์ง€๋งŒ ๋น ๋ฅธ ์†๋„ ๋Œ€์‹  ์ „์†ก ์ œ์–ด๋‚˜ ํ•ธ๋“œ ์…ฐ์ดํฌ(๋น„์—ฐ๊ฒฐ์„ฑ) ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

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

๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ์„œ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๋ชฉ์ ์ง€๋กœ ๋ผ์šฐํŒ… ํ•˜๋Š” ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ํ•ธ๋“œ ์…ฐ์ดํฌ๋‚˜ ์ „์†ก ์ œ์–ด๊ฐ™์€ ๊ธฐ๋Šฅ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๋Š” ๋” ๋นจ๋ผ์ง„ ๋Œ€์‹  ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์€ ๋–จ์–ด์ง„๋‹ค.

 

UDP ํ—ค๋”

 

UDP ํ”„๋กœํ† ์ฝœ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ—ค๋”์—์„œ๋„ ๋งŽ์€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์ง„์•Š๋‹ค.

checksum ํ•„๋“œ๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ์˜ ์˜ค๋ฅ˜ ๊ฒ€์ถœ์€ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

UDP์˜ ํŠน์ง• ์ •๋ฆฌ

1. ๋น„์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

2. ์—ฐ๊ฒฐ ๊ณผ์ •์—์„œ ๋ณ„๋„์˜ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค. -> ์ˆ˜์‹  ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.

3. ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์€ ๋Œ€์‹  ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

4. ์†๋„๊ฐ€ ์ค‘์š”์‹œ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค์— ์ ํ•ฉํ•˜๋‹ค.