TIL-082 | TCP & UDP

Lee, Chankyuยท2022๋…„ 2์›” 11์ผ
0

Computer Science

๋ชฉ๋ก ๋ณด๊ธฐ
9/12
post-thumbnail

๐ŸŒˆ TCP & UDP

  • TCP์™€ UDP๋Š” OSI ํ‘œ์ค€๋ชจ๋ธ๊ณผ TCP/IP ๋ชจ๋ธ์˜ ์ „์†ก๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • ์ „์†ก๊ณ„์ธต์€ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ†ต์‹  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  IP์— ์˜ํ•ด ์ „๋‹ฌ๋˜๋Š” ํŒจํ‚ท์˜ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉฐ ์žฌ์ „์†ก ์š”๊ตฌ ์ œ์–ด๋“ฑ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ณ„์ธต์ด๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด ๋ฐ์ดํ„ฐ์˜ ์ „๋‹ฌ์„ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

TCP(Transmission Control Protocol)๋ž€?

  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์—ฐ๊ฒฐ ์ง€ํ–ฅ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • ๋ณดํ†ต TCP์™€ IP๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, IP๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ๋ฐฐ๋‹ฌ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด TCP๋Š” ํŒจํ‚ท์„ ์ถ”์  ๋ฐ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

TCP์˜ ๋‹จ์ 

  • ๋ฐ์ดํ„ฐ๋กœ ๋ณด๋‚ด๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ์—ฐ๊ฒฐ์ด ํ˜•์„ฑ๋˜์–ด์•ผํ•œ๋‹ค.
  • ์ผ๋Œ€์ผ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ณ ์ •๋œ ํ†ต์‹  ์„ ๋กœ๊ฐ€ ์ตœ๋‹จ์„ (๋„คํŠธ์›Œํฌ ๊ธธ์ด)์ด ์•„๋‹๊ฒฝ์šฐ ์ƒ๋Œ€์ ์œผ๋กœ UDP๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์ „์†ก์†๋„๊ฐ€ ๋Š๋ฆผ.

TCP์˜ ํŠน์ง•

  • ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹์„ ์ œ๊ณต
    • ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค๋Š”๊ฑด, ๋ฐœ์‹ ์ง€์™€ ์ˆ˜์‹ ์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ํŒจํ‚ท์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ์  ๊ฒฝ๋กœ๋ฅผ ๋ฐฐ์ •ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.
  • 3-way handshaking ๊ณผ์ •์œผ๋กœ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  4-way handshaking์„ ํ†ตํ•ด ํ•ด์ œํ•œ๋‹ค.
  • ํ๋ฆ„์ œ์–ด(Flow Control) ๋ฐ ํ˜ผ์žก ์ œ์–ด(Congestion Control)
    • ํ๋ฆ„์ œ์–ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๋Š” ๊ณณ๊ณผ ์ˆ˜์‹ ํ•˜๋Š” ๊ณณ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ.
    • ํ˜ผ์žก์ œ์–ด๋Š” ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ํŒจํ‚ท ์ˆ˜๊ฐ€ ๋„˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ. ๋งŒ์•ฝ ์ •๋ณด์˜ ์†Œํ†ต๋Ÿ‰์ด ๊ณผ๋‹คํ•˜๋ฉด ํŒจํ‚ท์„ ์กฐ๊ธˆ๋งŒ ์ „์†กํ•˜์—ฌ ํ˜ผ์žก ๋ถ•๊ดด ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • ๋†’์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅ
  • ๋Œ€์‹  UDP๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

TCP ์„œ๋ฒ„์˜ ํŠน์ง•

  • ์„œ๋ฒ„์†Œ์ผ“์€ ์—ฐ๊ฒฐ๋งŒ์„ ๋‹ด๋‹นํ•œ๋‹ค.
  • ์—ฐ๊ฒฐ๊ณผ์ •์—์„œ ๋ฐ˜ํ™˜๋œ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์€ ๋ฐ์ดํ„ฐ์˜ ์†ก์ˆ˜์‹ ์— ์‚ฌ์šฉ๋œ๋‹คํ˜• ์„œ๋น„์Šค๋กœ ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” 1๋Œ€1๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.
  • ์ŠคํŠธ๋ฆผ ์ „์†ก์œผ๋กœ ์ „์†ก ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋ฌด์ œํ•œ์ด๋‹ค.
  • ํŒจํ‚ท์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—(์‹œ๊ฐ„ ์ง€์—ฐ, CPU ์†Œ๋ชจ) ์„ฑ๋Šฅ์ด ๋‚ฎ๋‹ค.
  • Streaming ์„œ๋น„์Šค์— ๋ถˆ๋ฆฌํ•˜๋‹ค.(์†์‹ค๋œ ๊ฒฝ์šฐ ์žฌ์ „์†ก ์š”์ฒญ์„ ํ•˜๋ฏ€๋กœ)

UDP(User Datagram Protocol)๋ž€?

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

UDP์˜ ๋‹จ์ 

  • ๋ฐ์ดํ„ฐ ์‹ ๋ขฐ์„ฑ์ด ์—†๋‹ค.
  • ์˜๋ฏธ์žˆ๋Š” ์„œ๋ฒ„์˜ ๊ตฌ์ถ•์„ ์œ„ํ•ด์„  ์ผ์ผ์ด ํŒจํ‚ท์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

UDP์˜ ํŠน์ง•

  • ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค
  • ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์ •๋ณด๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›๋Š”๋‹ค๋Š” ์‹ ํ˜ธ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค.
  • UDPํ—ค๋”์˜ CheckSum ํ•„๋“œ๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ์˜ ์˜ค๋ฅ˜๋งŒ ๊ฒ€์ถœํ•œ๋‹ค.
  • ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ๋‹ค
  • TCP๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

UDP ์„œ๋ฒ„์˜ ํŠน์ง•

  • UDP์—๋Š” ์—ฐ๊ฒฐ ์ž์ฒด๊ฐ€ ์—†์–ด์„œ(connect ํ•จ์ˆ˜ ๋ถˆํ•„์š”) ์„œ๋ฒ„ ์†Œ์ผ“๊ณผ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์˜ ๊ตฌ๋ถ„์ด ์—†๋‹ค.
  • ์†Œ์ผ“ ๋Œ€์‹  IP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” 1๋Œ€1, 1๋Œ€N, N๋Œ€M ๋“ฑ์œผ๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ทธ๋žจ(๋ฉ”์„ธ์ง€) ๋‹จ์œ„๋กœ ์ „์†ก๋˜๋ฉฐ ๊ทธ ํฌ๊ธฐ๋Š” 65535๋ฐ”์ดํŠธ๋กœ, ํฌ๊ธฐ๊ฐ€ ์ดˆ๊ณผํ•˜๋ฉด ์ž˜๋ผ์„œ ๋ณด๋‚ธ๋‹ค.
  • ํ๋ฆ„์ œ์–ด(flow control)๊ฐ€ ์—†์–ด์„œ ํŒจํ‚ท์ด ์ œ๋Œ€๋กœ ์ „์†ก๋˜์—ˆ๋Š”์ง€, ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
  • ํŒŒ์ผ ์ „์†ก๊ณผ ๊ฐ™์€ ์‹ ๋ขฐ์„ฑ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ค‘์š”์‹œ ๋˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

TCP vs UDP

ํ”„๋กœํ† ์ฝœ ์ข…๋ฅ˜TCPUDP
์—ฐ๊ฒฐ๋ฐฉ์‹์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค
ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹๋ฐ์ดํ„ฐ ๊ทธ๋žจ ๋ฐฉ์‹
์ „์†ก ์ˆœ์„œ์ „์†ก ์ˆœ์„œ ๋ณด์žฅ์ „์†ก ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Œ
์ˆ˜์‹  ์—ฌ๋ถ€ ํ™•์ธ์ˆ˜์‹  ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•จ์ˆ˜์‹  ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Œ
ํ†ต์‹  ๋ฐฉ์‹์ผ๋Œ€์ผ ํ†ต์‹ 1:1 or 1:N or N:N ํ†ต์‹ 
์‹ ๋ขฐ์„ฑ๋†’๋‹ค๋‚ฎ๋‹ค
์†๋„๋Š๋ฆฌ๋‹ค๋น ๋ฅด๋‹ค

๐Ÿ™†โ€โ™‚๏ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์—ฌ ํ™•์‹คํ•˜๊ฒŒ ์ฃผ๊ณ ๋ฐ›๊ณ  ์‹ถ์„ ๋•Œ๋Š” โ€˜TCP(Transmission Control Protocol)โ€™๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์›น์ด๋‚˜ ๋ฉ”์ผ, ํŒŒ์ผ ๊ณต์œ  ๋“ฑ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ˆ„๋ฝ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์€ ์„œ๋น„์Šค๋Š” TCP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ์„ฑ๋ณด๋‹ค๋Š” ์˜ค๋กœ์ง€ ์†๋„๊ฐ€ ์ค‘์š”ํ•  ๋•Œ๋Š” 'UDP(User Datagram Protocol)โ€™๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. VoIP(Voice over IP)๋‚˜ ์‹œ๊ฐ„ ๋™๊ธฐ, ์ด๋ฆ„ ํ•ด๊ฒฐ ๋“ฑ๊ณผ ๊ฐ™์ด ๋ฌด์—‡๋ณด๋‹ค ์†๋„๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์„œ๋น„์Šค๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“ Reference

  1. https://mangkyu.tistory.com/15
  2. https://coding-factory.tistory.com/614
  3. https://livlikwav.github.io/study/tcp-and-udp/
profile
Backend Developer - "Growth itself contains the germ of happiness"

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด