LUCATHREE.COM

← Back to list
🧐 TIL

[λ°±μ—”λ“œ κΈ°λ³Έ κ°œλ… 정리] TCP / UDP

μž‘μ„±μΌ:
TILTerms

TCP와 UDP

TCP와 UDPλŠ” λͺ¨λ‘ OSI 7κ³„μΈ΅μ˜ 전솑 계측(4계측)μ—μ„œ λ™μž‘ν•˜λŠ” ν”„λ‘œν† μ½œλ‘œ λ„€νŠΈμ›Œν¬λ₯Ό 톡해 데이터λ₯Ό 주고받을 λ•Œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ 데이터λ₯Ό 전솑할지λ₯Ό κ²°μ •ν•˜λŠ” ν”„λ‘œν† μ½œλ“€μ΄λ‹€.
λ‘˜ λ‹€ 전솑 계측(Transport Layer) μ—μ„œ λ™μž‘ν•œλ‹€λŠ” 것 μ™Έμ˜ 곡톡점은 포트 번호λ₯Ό μ‚¬μš©ν•΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹λ³„ν•œλ‹€λŠ” 점과 (예: HTTPλŠ” 80번, HTTPSλŠ” 443번, DNSλŠ” 53번) μƒμœ„ 계측(HTTP, DNS λ“±)μ—μ„œ λ‚΄λ €μ˜¨ 데이터λ₯Ό λ„€νŠΈμ›Œν¬ 계측(IP)에 μ „λ‹¬ν•œλ‹€λŠ” κ²ƒμœΌλ‘œ, β€œμ–΄λ–€ μž₯치둜 보낼지” λ₯Ό κ²°μ •ν•˜λŠ” 것이 IP라면 β€œμ–΄λ–€ μ‘μš© μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ 보낼지” λ₯Ό κ²°μ •ν•˜λŠ” 건 TCP/UDP 이닀.

TCP β€” μ‹ λ’°μ„± μžˆλŠ” μ—°κ²° μ§€ν–₯ ν”„λ‘œν† μ½œ

TCPλŠ” Transmission Control Protocol(전솑 μ œμ–΄ ν”„λ‘œν† μ½œ)의 μ•½μžλ‘œ μ—°κ²° μ§€ν–₯적(Connection-Oriented) ν”„λ‘œν† μ½œμ΄λ‹€.
TCPλŠ” 데이터λ₯Ό 보내기 전에 톡신이 μ΄λ£¨μ–΄μ§ˆ 두 λ…Έλ“œ κ°„μ˜ 연결을 μ„€μ •ν•˜λŠ”λ°, μ΄λŠ” λ°μ΄ν„°μ˜ μˆœμ„œ 보μž₯, 데이터 무결성, μ‹ λ’°μ„± μžˆλŠ” 데이터 전솑을 κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.

3-Way Handshake

TCPκ°€ 연결을 μ‹œμž‘ν•˜λŠ” κ³Όμ •μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„ μ„Έλ²ˆμ˜ νŒ¨ν‚· κ΅ν™˜μ΄ 이루어진닀.
  1. ν΄λΌμ΄μ–ΈνŠΈ β†’ μ„œλ²„: SYN (μ—°κ²° μš”μ²­)
  1. μ„œλ²„ β†’ ν΄λΌμ΄μ–ΈνŠΈ: SYN + ACK (μ—°κ²° 승인)
  1. ν΄λΌμ΄μ–ΈνŠΈ β†’ μ„œλ²„: ACK (확인)
SYN은 Synchronize Sequence Numbers의 μ•½μžλ‘œ 동기화λ₯Ό μœ„ν•œ μ‹œν€€μŠ€ λ²ˆν˜Έκ°€ λ‹΄κΈ΄ νŒ¨ν‚·μ΄λ©°, ACK은 Acknowledgement의 μ•½μžλ‘œ μš”μ²­μ— λŒ€ν•œ 확인을 μ˜λ―Έν•œλ‹€. ACK νŒ¨ν‚·μ—λŠ” SYN의 μ‹œν€€μŠ€ λ²ˆν˜Έμ— 1을 λ”ν•œ 값을 μ „λ‹¬ν•˜λŠ”λ° 이 과정을 톡해 연결이 ν™•λ¦½λ˜λ©΄ 데이터 전솑이 μ‹œμž‘λœλ‹€.

4-Way Handshake

TCPμ—μ„œ 연결을 μ’…λ£Œν•˜λŠ” κ³Όμ •μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„ λ„€λ²ˆμ˜ νŒ¨ν‚· κ΅ν™˜μ΄ 이루어진닀.
  1. ν΄λΌμ΄μ–ΈνŠΈ β†’ μ„œλ²„: FIN (μ—°κ²° ν•΄μ œ μš”μ²­)
  1. μ„œλ²„ β†’ ν΄λΌμ΄μ–ΈνŠΈ: ACK (μš”μ²­ 확인)
  1. μ„œλ²„ β†’ ν΄λΌμ΄μ–ΈνŠΈ: FIN (ν•΄μ œ 승인)
  1. ν΄λΌμ΄μ–ΈνŠΈ β†’ μ„œλ²„: ACK (확인)
FIN은 Finish의 μ•½μžλ‘œ 접속을 끊기 μœ„ν•œ μ€€λΉ„κ°€ λ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. ν΄λΌμ΄μ–ΈνŠΈ μͺ½μ—μ„œ λ¨Όμ € ν•΄μ œ μ€€λΉ„λ₯Ό ν•˜κ³  μ„œλ²„μ— μš”μ²­μ„ 보내면 μ„œλ²„μ—μ„œλŠ” 이에 λŒ€ν•œ 확인과 ν•¨κ»˜ ν΄λΌμ΄μ–ΈνŠΈλ‘œ 보낼 남은 데이터가 μžˆμ„ 경우 λ‚˜λ¨Έμ§€λ₯Ό λͺ¨λ‘ μ „μ†‘μ‹œν‚¨λ‹€. 이후 μ„œλ²„μ—μ„œλ„ 더 이상 보낼 데이터가 μ—†μœΌλ©΄ ν•΄μ œ μ€€λΉ„κ°€ λ˜μ—ˆμŒμ„ μ•Œλ¦¬κ³  ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ΅œμ’… 확인이 이루어지면 연결이 μ’…λ£Œλœλ‹€.

μž₯점

  • μ‹ λ’°μ„± 보μž₯ β€” 데이터가 λͺ©μ μ§€μ— μˆœμ„œλŒ€λ‘œ λ„μ°©ν•˜λŠ”μ§€ ν™•μΈν•˜κ³ , 손싀 μ‹œ μž¬μ „μ†‘
  • μ—°κ²° 관리 β€” μ„Έμ…˜ κ°œλ…μ΄ μžˆμ–΄ μ–‘ 끝이 μƒνƒœλ₯Ό μΈμ§€ν•˜κ³  데이터가 μ˜¨μ „νžˆ λͺ©μ μ§€μ— μ „λ‹¬λ˜λ„λ‘ 보μž₯
  • 혼작 μ œμ–΄ β€” λ„€νŠΈμ›Œν¬ μš©λŸ‰μ— 따라 데이터 전솑 속도λ₯Ό μ€„μž„
  • 흐름 μ œμ–΄ β€” μˆ˜μ‹ μžμ˜ 버퍼 μƒνƒœμ— 따라 속도λ₯Ό 쑰절

단점

  • μ˜€λ²„ν—€λ“œ 큼 β€” μ—°κ²° 수립/μ’…λ£Œ 과정이 ν•„μš”
  • μ§€μ—° μ‹œκ°„ λ°œμƒ β€” μž¬μ „μ†‘Β·ν˜Όμž‘μ œμ–΄ λ•Œλ¬Έμ— 느렀질 수 있음

UDP β€” λΉ λ₯΄κ³  λ‹¨μˆœν•œ λΉ„μ—°κ²°ν˜• ν”„λ‘œν† μ½œ

UDPλŠ” User Datagram Protocol(μ‚¬μš©μž λ°μ΄ν„°κ·Έλž¨ ν”„λ‘œν† μ½œ)의 μ•½μžλ‘œ λΉ„μ—°κ²°ν˜•(Connectionless) ν”„λ‘œν† μ½œμ΄λ‹€.
λΉ„μ—°κ²°ν˜•μ΄κΈ° λ•Œλ¬Έμ— λ…Έλ“œ κ°„ 사전 연결을 μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©° 데이터 전솑 ν›„ μˆ˜μ‹  여뢀에 λŒ€ν•΄μ„œλ„ ν™•μΈν•˜μ§€ μ•ŠλŠ”λ‹€. κ·Έ λŒ€μ‹  속도가 λΉ λ₯Έ 것이 μž₯점이닀.

λ™μž‘ 방식

  • 데이터λ₯Ό κ·ΈλŒ€λ‘œ μΊ‘μŠν™”ν•΄ IP에 전달
  • 솑신 츑은 λ°›μ•˜λŠ”μ§€ ν™•μΈν•˜μ§€ μ•ŠμŒ
  • μˆœμ„œ 보μž₯도 μ—†κ³ , μž¬μ „μ†‘λ„ μ—†μŒ

μž₯점

  • μ—°κ²° μˆ˜λ¦½Β·μž¬μ „μ†‘ 과정이 μ—†κ³  더 μž‘μ€ νŒ¨ν‚·μ„ 더 적은 μ˜€λ²„ν—€λ“œλ‘œ μ „μ†‘ν•˜κΈ° λ•Œλ¬Έμ— 속도가 빠름
  • 일뢀 νŒ¨ν‚·μ΄ μ†μ‹€λ˜λ”λΌλ„ 전체 전솑이 μ€‘λ‹¨λ˜μ§€ μ•ŠμŒ
  • λΈŒλ‘œλ“œμΊμŠ€νŠΈ 및 λ©€ν‹°μΊμŠ€νŠΈ κΈ°λŠ₯을 톡해 ν•˜λ‚˜μ˜ UDP 전솑을 μ—¬λŸ¬ μˆ˜μ‹ μžμ—κ²Œ 전솑할 수 있음

단점

  • νŒ¨ν‚·μ˜ 도착 μˆœμ„œκ°€ μ •ν•΄μ§€μ§€ μ•ŠμŒ
  • 데이터 νŒ¨ν‚·μ΄ λͺ©μ μ§€μ— μ„±κ³΅μ μœΌλ‘œ λ„λ‹¬ν–ˆλŠ”μ§€, 손싀 없이 μ˜¨μ „νžˆ μ „λ‹¬λ˜μ—ˆλŠ”μ§€ 보μž₯λ˜μ§€ μ•Šμ•„ 신뒰성이 μ—†μŒ
  • μœ„ 이유둜 μž¬μ „μ†‘μ΄ ν•„μš”ν•  경우 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 직접 μž¬μ „μ†‘ λ‘œμ§μ„ κ΅¬ν˜„ν•΄μ•Όν•¨
  • λΌμš°ν„°κ°€ 데이터 νŒ¨ν‚·μ˜ μš°μ„ μˆœμœ„λ₯Ό μ •ν•  경우 UDP 보닀 TCPλ₯Ό μš°μ„ μ‹œν•  κ°€λŠ₯성이 λ†’μŒ

μ‚¬μš© μΌ€μ΄μŠ€

  • TCP
    • μ›Ή μš”μ²­/응닡 (HTTP, HTTPS)
    • 금육 μ„œλΉ„μŠ€, 파일 전솑 β€” μ ˆλŒ€ μ†μ‹€λ˜λ©΄ μ•ˆ λ˜λŠ” 경우
  • UDP
    • μ‹€μ‹œκ°„ 슀트리밍, ν™”μƒνšŒμ˜, 온라인 κ²Œμž„ β€” λΉ λ₯Έ λ°˜μ‘μ΄ μ€‘μš”ν•œ 경우
    • DNS 쿼리 β€” μž‘μ€ μš”μ²­/응닡, μ§€μ—° μ΅œμ†Œν™”
Β