๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science/Network

14 Transport Layer (Feat. TCP, UDP)

by Dowon Kang 2023. 12. 30.

์ „์†ก๊ณ„์ธต(Transport Layer)์€ OSI ๋ชจ๋ธ์˜ 4๋ฒˆ์งธ ๊ณ„์ธต์œผ๋กœ, ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์„ ๊ด€๋ฆฌํ•˜๊ณ  ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์˜ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต์‹ ์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

์ „์†ก๊ณ„์ธต์˜ ํŠน์ง• 

1) ์‹ ๋ขฐ์„ฑ/์ •ํ™•์„ฑ - TCP(์—ฐ๊ฒฐํ˜• ํ†ต์‹ )

์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์ „์— ๋จผ์ € ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„ธ์…˜์„ ์ˆ˜๋ฆฝํ•˜๋Š” ๊ณผ์ •์œผ๋กœ, ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์˜ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์บก์Šํ™” ๊ณผ์ •์—์„œ ์ „์†ก ๊ณ„์ธต์˜ ํ—ค๋”๊ฐ€ TCP๊ฐ€ ๋ถ™์œผ๋ฉด Segment๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. TCP์˜ ํŠน์ง•์€ ์‹ ๋ขฐ์„ฑ๊ณผ ์ •ํ™•์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ ค๋ฉด ์—ฐ๊ฒฐ(Connection)์ด๋ผ๋Š” ๊ฐ€์ƒ์˜ ๋…์  ํ†ต์‹ ๋กœ๊ฐ€ ํ™•๋ณด๋˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. 


TCP ํ—ค๋” ์•ˆ์— ์ฝ”๋“œ ๋น„ํŠธ๋Š” 6๋น„ํŠธ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ SYN์€ ์—ด๊ฒฐ ์š”์ฒญ์„ ACK์€ ์‘๋‹ต ํ™•์ธ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ๊ฒฐ์„ ํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „์— ํŒจํ‚ท์„ ๊ตํ™˜ํ•˜๋Š”๋ฐ 3๋ฒˆ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

 


์†ก์‹ ์ž๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ˆ˜์‹ ์ž๊ฐ€ ์‘๋‹ต ํ™•์ธ๊ณผ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋™์‹œ์— ์†ก์‹ ์ž์—๊ฒŒ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์†ก์‹ ์ž๊ฐ€ ์‘๋‹ต ํ™•์ธ์„ ํ•˜๋ฉด์„œ ๋งˆ๋ฌด๋ฆฌ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ๊ฒฐ์„ 3-way handshake๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ๊ฒฐ์„ ๋Š์„ ๋•Œ๋Š” FIN๊ณผ ACK์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

2) ํšจ์œจ์„ฑ - UDP ( ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹  )

๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์„ค์ •์— ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ๋‹จ๊ณ„๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ ํŒจํ‚ท์ด ๋น ๋ฅด๊ฒŒ ์†ก์‹ ์ž์—์„œ ์ˆ˜์‹ ์ž๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ๋™์˜์ƒ ์„œ๋น„์Šค์™€ ๊ฐ™์€ ๊ณณ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 


UDP ํ—ค๋”๊ฐ€ ๋ฐ์ดํ„ฐ์— ๋ถ™์œผ๋ฉด UDP Datagram์ด๊ฐ€ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ์œผ๋กœ ๋˜์–ด ์žˆ์–ด ์ „์†ก์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.


UDP์˜ ํŠน์ง•์œผ๋กœ๋Š” ๊ฐ™์€ LAN์— ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ, ๋„คํŠธ์›Œํฌ ์žฅ๋น„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ Broadcast๋ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

3) ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹๋ณ„ ๊ธฐ๋Šฅ 

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

์˜ˆ๋ฅผ ๋“ค์–ด, TCP ํ—ค๋”๋ฅผ ๋ณด๋ฉด ์ถœ๋ฐœ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ์™€ ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 2๋ฐ”์ดํŠธ๋กœ 0~65535๋ฒˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ 0~1023๋ฒˆ ํฌํŠธ๋Š” ์ฃผ์š” ํ”„๋กœํ† ์ฝœ์ด ์‚ฌ์šฉ๋˜๋„๋ก ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํฌํŠธ๋ฅผ Well-known ports๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 1024๋ฒˆ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํŠธ์ด๊ณ  1025๋ฒˆ ์ด์ƒ๋ถ€ํ„ฐ๋Š” Random ports๋ผ ํ•ด์„œ Clients์ธก์˜ ์†ก์‹ ํฌํŠธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.   

 

ํฌํŠธ๋Š” ํ˜ธํ…”์˜ ๊ฐ์‹ค ๋ฒˆํ˜ธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์†๋‹˜์€ ์ž์‹ ์˜ ๋ฐฉ ๋ฒˆํ˜ธ๊ฐ€ ๋ญ”์ง€ ์•Œ์•„์•ผ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋งˆ๋‹ค ์ง€์ •๋œ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์žˆ์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

4) ์˜ค๋ฅ˜ ์ ๊ฒ€ 

์ „์†ก๊ณ„์ธต์—์„œ ์˜ค๋ฅ˜ ์ ๊ฒ€์€ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ TCP (Transmission Control Protocol)์—์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค.

1. ํ™•์ธ์‘๋‹ต (Acknowledgment): TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ ํ›„ ์ˆ˜์‹ ์ž๋กœ๋ถ€ํ„ฐ ํ™•์ธ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ˆ˜์‹ ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๋Œ€๋กœ ์ˆ˜์‹ ํ–ˆ์„ ๊ฒฝ์šฐ์—๋งŒ ํ™•์ธ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ œ๋Œ€๋กœ ์ˆ˜์‹ ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์†ก์‹ ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

2. ์ˆœ์„œ ๋ฒˆํ˜ธ (Sequence Number): TCP๋Š” ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์— ์ผ๋ จ๋ฒˆํ˜ธ(์ˆœ์„œ ๋ฒˆํ˜ธ)๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ˆ˜์‹ ์ž๋Š” ์„ธ๊ทธ๋จผํŠธ์˜ ์ˆœ์„œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•ํ•œ ์žฌ์กฐ๋ฆฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

3. ํ™•์ธ์‘๋‹ต ํƒ€์ž„์•„์›ƒ (Acknowledgment Timeout): ์†ก์‹ ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ฉด ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ™•์ธ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ด ์‹œ๊ฐ„์„ ์ดˆ๊ณผํ•˜๋ฉด ์†ก์‹ ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ํŠนํžˆ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์†์‹ค๋กœ ์ธํ•œ ๋ฌธ์ œ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ํ†ตํ•ด TCP๋Š” ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด๋‚˜ ์™œ๊ณก์„ ์‹ ์†ํ•˜๊ฒŒ ๊ฐ์ง€ํ•˜๊ณ , ์žฌ์ „์†ก ๋“ฑ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์˜ค๋ฅ˜๋ฅผ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ์จ TCP๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์—ฐ๊ฒฐ ์ง€ํ–ฅํ˜• ํ†ต์‹ ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ „ํ•œ ์ „์†ก์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

 

 


Transport Layer

- The layer in a network responsible for reliable and efficient data transmission, often employing protocols like TCP and UDP.

Connection-oriented communication and TCP (Transmission Control Protocol)

- A protocol that establishes a connection and ensures reliable data transmission, breaking data into segments for transfer.

Segment

- Small fragments into which data is divided during transmission via TCP, utilized for reassembly at the receiving end.

SYN, ACK, FIN, and 3-way handshake

- A three-step communication process for establishing a TCP connection; the client sends a SYN, the server responds with SYN and ACK, and the client acknowledges with an ACK to complete the connection.

Connectionless communication and UDP (User Datagram Protocol)

- A protocol for transmitting data without establishing a connection, prioritizing speed over reliability.

UDP datagram

- A unit of data transmitted via UDP, analogous to a segment in TCP.

Well-known ports

- Fixed port numbers assigned to specific protocols or services, such as port 80 for HTTP or port 443 for HTTPS.

 

๋Œ“๊ธ€