Tcp-udp.md


์˜ค๋Š˜์€ ๋„คํŠธ์›Œํฌ 7๊ณ„์ธต ์ค‘ ์ „์†ก๊ณ„์ธต์— ์†ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ์ค‘ TCP์™€ UDP์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ositcp

TCP


์ •์˜

Transmission Control Protocol

์ง์—ญํ•ด๋ณด๋ฉด '์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ'

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

์ผ๋ฐ˜์ ์œผ๋กœ TCP๋งŒ์„ ๋ถ€๋ฅด์ง€ ์•Š๊ณ  TCP/IP๋ผ๊ณ  ๋งŽ์ด ํ‘œ๊ธฐํ•˜๋Š”๋ฐ์š”, ๊ทธ ์ด์œ ๋Š” IP๊ฐ€ TCP์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

IP (Internet Protocol Address)

์ธํ„ฐ๋„ท์ƒ์— ์žˆ๋Š” ์ปดํ“จํ„ฐ์˜ ๊ณ ์œ ํ•œ ์ฃผ์†Œ

IP๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ๋ฐฐ๋‹ฌ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด TCP๋Š” ํŒจํ‚ท์„ ์ถ”์  ๋ฐ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐ŸŸข ํŒจํ‚ท(Packet)์ด๋ž€?

์ธํ„ฐ๋„ท ํ†ต์‹ ์‹œํ…Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ๋ผ์šฐํŒ…์„ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์กฐ๊ฐ๋“ค๋กœ ๋‚˜๋ˆ„์–ด ์ „์†กํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ ์ด ์กฐ๊ฐ์„ ํŒจํ‚ท์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŸ  TCP๊ฐ€ ํŒจํ‚ท์„ ์ถ”์  ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ํŒจํ‚ท A, B, C๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์„ธ ํŒจํ‚ท ๋ชจ๋‘ ๋ชฉ์ ์ง€ Z์— ์ˆœ์ฐจ์ ์œผ๋กœ ๋„๋‹ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํŒจํ‚ท์ด ์ „์†ก๋˜๋Š” ๋„์ค‘ B๊ฐ€ ๋ถ„์‹ค๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค. ํ•˜์ง€๋งŒ ๋ชฉ์ ์ง€ Z์—์„œ๋Š” A, C๋งŒ ๋ณด๊ณ  ์ „์†ก์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ A, B, C ํŒจํ‚ท์— 1,2,3์ด๋ผ๋Š” ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ํŒจํ‚ท์˜ ๋ถ„์‹ค ํ™•์ธ๊ณผ ๊ฐ™์€ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์—ฌ ๋ชฉ์ ์ง€์—์„œ ์žฌ์กฐ๋ฆฝํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์œผ๋กœ TCP๋Š” ํŒจํ‚ท์„ ์ถ”์ ํ•˜๊ณ , ๋‚˜๋ˆ„์–ด ๋ณด๋‚ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TCP Flow

tcpflow

TCP๋Š” ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ ์ธํ„ฐ๋„ท ํ™˜๊ฒฝ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

pakitexchange

ํŠน์ง•

  • ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹์„ ์ œ๊ณต

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

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

  • ๋†’์€ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ

  • UDP๋ณด๋‹ค ๋А๋ฆฐ ์†๋„

  • ์ „์ด์ค‘, ์ ๋Œ€์  ๋ฐฉ์‹

3-way-handshaking 3wayhandshaking

์œ„์™€ ๊ฐ™์€ ํŠน์ง•๋“ค์„ ํ†ตํ•ด ๋ฐœ์‹ ์ง€์™€ ์ˆ˜์‹ ์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ •ํ™•ํ•œ ์ „์†ก์„ ๋ณด์žฅํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ cpu๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— UDP์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋А๋ฆฝ๋‹ˆ๋‹ค.

โœ” ๋”ฐ๋ผ์„œ TCP๋Š” ์—ฐ์†์„ฑ๋ณด๋‹ค๋Š” ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ์ „์†ก์ด ์ค‘์š”ํ•  ๋•Œ์— ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

UDP


์ •์˜

User Datagram Protocol

โ˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

๋ฐ์ดํ„ฐ๊ทธ๋žจ์ด๋ž€ ๋…๋ฆฝ์ ์ธ ๊ด€๊ณ„๋ฅผ ์ง€๋‹ˆ๋Š” ํŒจํ‚ท์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

udproute

ํŠน์ง•

  • ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ฐฉ์‹ ์ œ๊ณต

  • ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›๋Š”๋‹ค๋Š” ์‹ ํ˜ธ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค.

  • UDPํ—ค๋”์˜ CheckSum ํ•„๋“œ๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ์˜ ์˜ค๋ฅ˜๋งŒ ๊ฒ€์ถœํ•œ๋‹ค.

  • ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ๋‹ค.

  • TCP๋ณด๋‹ค ๋น ๋ฅธ ์†๋„

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

UDP Flow

udpflow

  • UDP๋Š” ์—ฐ๊ฒฐ ์ž์ฒด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์†Œ์ผ“๊ณผ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์˜ ๊ตฌ๋ถ„์ด ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ๋ฆ„์ œ์–ด(flow-control)๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ‚ท์ด ์ œ๋Œ€๋กœ ์ „์†ก๋˜์—ˆ๋Š”์ง€, ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ๋ฆ„์ œ์–ด(flow-control)๋ž€?

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

ํ˜ผ์žก์ œ์–ด(Congestion-control)๋ž€?

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

TCP vs UDP


ํ”„๋กœํ† ์ฝœ
TCP
UDP

์—ฐ๊ฒฐ ๋ฐฉ์‹

์—ฐ๊ฒฐํ˜•

๋น„ ์—ฐ๊ฒฐํ˜•

ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹

๊ฐ€์ƒํšŒ์„  ๋ฐฉ์‹

๋ฐ์ดํ„ฐ ๊ทธ๋žจ ๋ฐฉ์‹

์ „์†ก ์ˆœ์„œ

๋ณด์žฅ

๋ณด์žฅํ•˜์ง€ ์•Š์Œ

์ˆ˜์‹  ์—ฌ๋ถ€

ํ™•์ธ

ํ™•์ธํ•˜์ง€์•Š์Œ

ํ†ต์‹  ๋ฐฉ์‹

1:1

1:1 or 1:N or N:N

์‹ ๋ขฐ์„ฑ

โฌ†

โฌ‡

์†๋„

๋А๋ฆผ

๋น ๋ฆ„

Last updated