# TCP์™€ UDP

written by sohyeon, hyemin ๐Ÿ’ก


# 1. TCP(Transmission Control Protocol)

# TCP๋ž€?

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

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

# TCP์˜ ํŠน์ง•

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

# TCP ํ—ค๋”์˜ ๊ตฌ์กฐ

TCP์˜ ์„ธ๊ทธ๋จผํŠธ๋Š” ๋ฐ์ดํ„ฐ ๋ณธ์ฒด์— TCP ํ—ค๋”๊ฐ€ ๋ถ™์€ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • ์ผ๋ จ๋ฒˆํ˜ธ(sequence number) : ์†ก์‹ ํ•œ ๋ฐ”์ดํŠธ ์ˆ˜
  • ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ(acknowledgement number) : ์ˆ˜์‹ ํ•œ ๋ฐ”์ดํŠธ ์ˆ˜
  • ๋ฐ์ดํ„ฐ ์˜ต์…‹(data offset) : TCP ํ—ค๋”์˜ ๊ธธ์ด
  • ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ(windows size) : ํ•œ ๋ฒˆ์— ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํฌ๊ธฐ
  • ์ฒดํฌ์„ฌ(checksum) : ๋ฐ์ดํ„ฐ๊ฐ€ ํ›ผ์†๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด

# ํ๋ฆ„ ์ œ์–ด์™€ ํ˜ผ์žก ์ œ์–ด

  • ํ๋ฆ„ ์ œ์–ด(flow control)
    • ํ๋ฆ„ ์ œ์–ด๋Š” ์†ก์‹  ์ธก(ํ˜ธ์ŠคํŠธ)๊ณผ ์ˆ˜์‹  ์ธก(ํ˜ธ์ŠคํŠธ)์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„ ์ฐจ์ด๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ด๋‹ค.
    • ์ˆ˜์‹  ์ธก์€ ๋„์ฐฉํ•œ ํŒจํ‚ท๋“ค์„ ๋ฒ„ํผ์— ์Œ“์•„ ๋‘๋Š” ๊ฒƒ๊ณผ ๋™์‹œ์— ์ด๋ฏธ ๋ฒ„ํผ์— ์Œ“์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊บผ๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
    • ์ด๋•Œ ๋งŒ์•ฝ ์ˆ˜์‹  ์ธก ์ปดํ“จํ„ฐ์˜ ์„ฑ๋Šฅ์ด ๋‚ฎ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์†๋„๋ณด๋‹ค ์ฒ˜๋ฆฌํ•˜๋Š” ์†๋„๊ฐ€ ๋Š๋ ค์ ธ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ทธ๋ž˜์„œ ์ˆ˜์‹  ์ธก์€ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ˜„์žฌ ์–ด๋Š ์ •๋„๊นŒ์ง€ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ˆ˜์‹œ๋กœ ์•Œ๋ ค์ฃผ๊ฒŒ ๋œ๋‹ค.
  • ํ˜ผ์žก ์ œ์–ด(congestion control)
    • ํ˜ผ์žก ์ œ์–ด๋Š” ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ํŒจํ‚ท ์ˆ˜๊ฐ€ ๋„˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ด๋‹ค.
    • ์†ก์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ๋Š” ์ง€์—ญ๋ง์ด๋‚˜ ์ธํ„ฐ๋„ท์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋Œ€ํ˜• ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋œ๋‹ค.
    • ๋งŒ์•ฝ ํ•˜๋‚˜์˜ ๋ผ์šฐํ„ฐ์—๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฐ๋ฆด ๊ฒฝ์šฐ, ๋ผ์šฐํ„ฐ๋Š” ์ž์‹ ์—๊ฒŒ ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
    • ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ํ˜ธ์ŠคํŠธ๋“ค์€ ๋˜ ๋‹ค์‹œ ์žฌ์ „์†ก์„ ํ•˜๊ฒŒ ๋˜๊ณ  ๊ฒฐ๊ตญ ํ˜ผ์žก์„ ๊ฐ€์ค‘์‹œ์ผœ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋‚˜ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
    • ๋”ฐ๋ผ์„œ, ์ด๋Ÿฌํ•œ ๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์†ก์‹  ์ธก์—์„œ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์†๋„๋ฅผ ๊ฐ•์ œ๋กœ ์ค„์ด๊ฒŒ ๋œ๋‹ค.

# 2. UDP(User Datagram Protocol)

# UDP๋ž€?

UDP(User Datagram Protocol)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

# UDP์˜ ํŠน์ง•

  • UDP๋Š” TCP์™€ ๋‹ฌ๋ฆฌ ๋น„์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ํ• ๋‹น๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค.
  • ํ†ต์‹  ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • VoIP์™€ ๊ฐ™์€ ์Œ์„ฑ ์„œ๋น„์Šค๋‚˜ ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค๋Š” ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์™œ๊ณก๋˜๋”๋ผ๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— UDP๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • UDP๋Š” TCP์™€๋Š” ๋‹ฌ๋ฆฌ ๋ฉ”์‹œ์ง€๋ฅผ ํŒจํ‚ท(๋ฐ์ดํ„ฐ๊ทธ๋žจ)์œผ๋กœ ๋‚˜๋ˆ„์ง€๋งŒ ์ตœ์ข… ๋ชฉ์ ์ง€์—์„œ ์žฌ์กฐ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • RTP(Real-Time Protocol), Multicast, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด, VoIP, DNS์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.
    • RTP : ์žฌ์ „์†กํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์„ž์ด๊ฒŒ ๋˜๋ฏ€๋กœ UDP ์‚ฌ์šฉ
    • DNS : TCP์ฒ˜๋Ÿผ Session์„ ๋งบ๊ณ  ํ†ต์‹ ์„ ํ•œ๋‹ค๋ฉด ์†๋„๋„ ๋Š๋ฆฌ๊ณ , ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๋„ ์—„์ฒญ๋‚˜๊ฒŒ ์†Œ๋ชจ๋˜๋ฏ€๋กœ UDP ์‚ฌ์šฉ

# UDP ํ—ค๋” ๊ตฌ์กฐ

UDP์—์„œ๋Š” ํŒจํ‚ท์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ํŒจํ‚ท ๊ธธ์ด(UDP length) : ํ—ค๋” ๊ธธ์ด์™€ ๋ฐ์ดํ„ฐ ๊ธธ์ด์˜ ํ•ฉ๊ณ„
  • ์ฒดํฌ์„ฌ(checksum) : ๋ฐ์ดํ„ฐ๊ฐ€ ํ›ผ์†๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด

# ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ & ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ

TCP์—๋Š” ์—†๋Š” ๊ธฐ๋Šฅ์œผ๋กœ UDP์—๋Š” ํ•˜๋‚˜์˜ ํŒจํ‚ท์„ ์—ฌ๋Ÿฌ ์ˆ˜์‹ ์ง€์— ์ „๋‹ฌํ•˜๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ(broadcast)์™€ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ(multicast)๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.

  • ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ(broadcast)
    • local LAN ์ƒ์— ๋ถ™์–ด์žˆ๋Š” ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์žฅ๋น„๋“ค์—๊ฒŒ ๋ณด๋‚ด๋Š” ํ†ต์‹ ์ด๋‹ค.
    • ํ†ต์‹ ์˜ ๋Œ€์ƒ์ด ํŠน์ •ํ•œ ํ•œ ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋„คํŠธ์›Œํฌ ์•ˆ์˜ ๋ชจ๋“  ์žฅ๋น„๋“ค์—๊ฒŒ ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ(multicast)
    • ๋ณด๋‚ด๊ณ ์ž ํ•˜๋Š” ์ •๋ณด๋ฅผ ๊ทธ๋ฃน ๋‚ด์˜ ์ผ์ • ๋„คํŠธ์›Œํฌ ์žฅ๋น„๋“ค์—๊ฒŒ๋งŒ ํ•œ๋ฒˆ์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํ†ต์‹ ์ด๋‹ค.

# 3. TCP์™€ UDP์˜ ์ฐจ์ด์ 

TCP UDP
์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํ”„๋กœํ† ์ฝœ ๋น„์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํ”„๋กœํ† ์ฝœ
๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•œ ์—ฐ๊ฒฐ ๋ฉ”์‹œ์ง€ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•œ ์—ฐ๊ฒฐ
ํ˜ผ์žก์ œ์–ด, ํ๋ฆ„์ œ์–ด ํ˜ผ์žก์ œ์–ด, ํ๋ฆ„์ œ์–ด ์ง€์›ํ•˜์ง€ ์•Š์Œ
์ˆœ์„œ ๋ณด์žฅ, ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆผ ์ˆœ์„œ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ, ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฆ„
์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก, ์•ˆ์ •์  ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
TCP ํŒจํ‚ท์€ ์„ธ๊ทธ๋จผํŠธ UDP ํŒจํ‚ท์€ ๋ฐ์ดํ„ฐ๊ทธ๋žจ
HTTP, ์ „์ž์šฐํŽธ, ํŒŒ์ผ ์ „์†ก์—์„œ ์‚ฌ์šฉ DNS, Broadcasting

# Reference & Additional Resources

TCP/IP ์‰ฝ๊ฒŒ, ๋” ์‰ฝ๊ฒŒ
[๋„คํŠธ์›Œํฌ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ 22ํŽธ] TCP 3 Way-Handshake & 4 Way-Handshake
TCP์™€ UDP ๊ทธ๋ฆฌ๊ณ  TCP/IP

Last Updated: 12/5/2020, 11:36:44 AM