Post

[🌐CN] UDP - User Datagram Protocol

[🌐CN] UDP - User Datagram Protocol

🌐 Internet Protocol 전공 수업 정늬

IP 계잵의 Best Effort 서비슀 위에 Transport Layer가 등장한닀. UDP는 가장 닚순한 전송 계잵 프로토윜로, IP에 Multiplexing/Demultiplexing Ʞ능만 추가한닀. 닚순핚 속에 숚겚진 강력한 활용 사례와 섀계 철학을 삎펎볎자.


Transport Layer 개요

TCP/IP 계잵 구조에서의 위치

📚Transport Layer: Network Layer(IP) 위에서 동작하며 애플늬쌀읎션 간 데읎터 전송을 닎당하는 계잵

프로토윜 슀택:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────────────────────────────┐
│      Application Layer                  │
│  Telnet  FTP  HTTP  DHCP  DNS  Ping     │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      Transport Layer                    │  ◄─ 여Ʞ!
│         TCP          UDP                │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      Network Layer                      │
│    IP      ICMP      IGMP               │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      Link Layer                         │
│  ARP  Hardware Interface  RARP          │
└─────────────────────────────────────────┘
              ↕
            Media

End-to-End Principle

📚End-to-End Principle: Ʞ능 배치의 원칙 - 애플늬쌀읎션별 Ʞ능은 통신의 양 끝당(end nodes)에만 구현

핵심 철학:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                HOST                                HOST
┌───────────────────────┐            ┌───────────────────────┐
│     Application       │◄··········►│     Application       │
├────────────────────────            ├────────────────────────
│     Transport         │◄··········►│     Transport         │
├────────────────────────            ├────────────────────────
│      Network          │◄─────┐     │      Network          │
├────────────────────────      │     ├────────────────────────
│     Data Link         │◄──┐  │  ┌─►│     Data Link         │
└───────────────────────┘   │  │  │  └───────────────────────┘
                            │  │  │
                    ┌───────▌──▌──▌───────┐
                    │   Intermediate      │
                    │     Routers         │
                    │  (Network + Link)   │
                    └─────────────────────┘

섀계 원칙:

  • ✅ Application-specific features: 통신하는 End nodes에만 구현
  • ✅ Intermediate routers: 넀튞워크 구성만 닎당 (Dumb minimal networks)
  • ✅ Smart terminals: 몚든 지능은 양 끝닚에
  • ✅ Performance enhancement: 혞슀튞가 올바륎게 구현할 수 있닀멎, 하위 계잵에는 성능 향상 목적윌로만 구현
  • ❌ No burden: 핎당 Ʞ능읎 필요 없는 애플늬쌀읎션에 부닎을 죌지 않음

철학의 핵심: “Ʞ능을 필요로 하지 않는 애플늬쌀읎션에 부닎을 죌지 마띌!”


Transport Protocols: UDP vs TCP

읞터넷의 2가지 Transport Protocol

비교표:

1
2
3
4
5
6
7
8
9
┌─────────────────────────────────────┬─────────────────────────────────┐
│              UDP                    │             TCP                 │
│   User Datagram Protocol            │ Transmission Control Protocol   │
├─────────────────────────────────────┌──────────────────────────────────
│ ✅ Datagram oriented                │ ✅ Stream oriented              │
│ ❌ Unreliable, Connectionless      │ ✅ Reliable, Connection-oriented│
│ ✅ Simple                           │ ❌ Complex                      │
│ ✅ Unicast and Multicast            │ ❌ Only Unicast                 │
└─────────────────────────────────────┮─────────────────────────────────┘

UDP의 특징 및 용도

UDP 특징:

  • Datagram oriented: 각 메시지가 독늜적
  • Unreliable: 손싀, 쀑복, 순서 바뀜 가능
  • Connectionless: 연결 섀정 없음
  • Simple: 최소한의 였버헀드
  • Multicast 지원: 1:N 통신 가능

UDP 죌요 사용처:

1
2
3
4
3가지 죌요 용도:
1. Non-unicast (Multicast/Broadcast)
2. Real-time (싀시간 통신)
3. Short transactions (짧은 튞랜잭션)
분류애플늬쌀읎션읎유
서비슀DNS, DHCP, SNMP, RIP짧은 요청/응답
멀티믞디얎VoIP, 화상회의, IPTV, 게임싀시간성 쀑요, 지연 최소화
멀티캐슀튞Router discovery, Multicast video1:N 통신

TCP의 특징 및 용도

TCP 특징:

  • Stream oriented: 연속된 바읎튞 슀튞늌
  • Reliable: 순서 볎장, 손싀 복구
  • Connection-oriented: 3-way handshake
  • Complex: 흐멄 제얎, 혌잡 제얎
  • Unicast only: 1:1 통신만 가능

TCP 죌요 사용처:

애플늬쌀읎션포튞특징
HTTP80웹 람띌우징
SMTP25읎메음 전송
FTP21파음 전송
Telnet23원격 터믞널

UDP의 역할

UDP가 제공하는 것

📚UDP의 핵심 Ʞ능: IP의 host-to-host delivery륌 application-to-application delivery로 확장

UDP가 추가하는 유음한 Ʞ능:

1
2
3
4
5
6
7
8
9
10
11
12
                Applications               Applications
                   ○ ○ ○                      ○ ○ ○
                   │ │ │                      │ │ │
                ┌──▌─▌─▌───┐                ┌─▌─▌─▌──┐
                │   UDP    │                │  UDP   │
                └────┬─────┘                └────┬───┘
                     │                           │
                ┌────▌─────┐                ┌────▌───┐
                │    IP    │ ──────────────►│   IP   │
                └──────────┘                └────────┘

핵심 Ʞ능: Multiplexing & Demultiplexing

UDP = IP + Multiplexing/Demultiplexing

  • Multiplexing (송신 ìž¡): 여러 애플늬쌀읎션의 데읎터륌 IP로 전달
  • Demultiplexing (수신 ìž¡): IP 팚킷을 올바륞 애플늬쌀읎션윌로 전달

UDP가 제공하지 않는 것:

  • ❌ 신뢰성 (Reliability)
  • ❌ 순서 볎장 (Ordering)
  • ❌ 흐멄 제얎 (Flow Control)
  • ❌ 혌잡 제얎 (Congestion Control)
  • ❌ 연결 ꎀ늬 (Connection Management)

Unreliable transmission: UDP는 datagram의 전송만 제공하며, 낮은 였버헀드륌 유지한닀!


UDP Header 구조

UDP 팚킷 구성

1
2
3
4
┌──────────┬────────────┬──────────────────────────┐
│IP header │ UDP header │      UDP data            │
│(20 bytes)│  (8 bytes) │      (variable)          │
└──────────┮────────────┮──────────────────────────┘

UDP Header 포맷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 0      7 8     15 16    23 24                    31
├────────┎────────┌────────┎───────────────────────────
│ Source Port     │   Destination Port Number        │
│   Number        │         (16 bits)                │
│  (16 bits)      │                                  │
├─────────────────┌───────────────────────────────────
│ UDP Message     │       Checksum                   │
│   Length        │       (16 bits)                  │
│  (16 bits)      │                                  │
├─────────────────┎───────────────────────────────────
│                                                    │
│                  DATA                              │
│                                                    │
└────────────────────────────────────────────────────┘

필드 섀명:

필드크Ʞ섀명
Source Port Number16 bits송신 애플늬쌀읎션 식별
Destination Port Number16 bits수신 애플늬쌀읎션 식별
UDP Message Length16 bitsUDP 헀더 + 데읎터 전첎 Ꞟ읎
Checksum16 bits였류 검출 (IPv4에서는 선택, IPv6에서 필수)

헀더 필드 상섞

Port Numbers (각 16 bits):

  • 송신/수신 애플늬쌀읎션(프로섞슀) 식별
  • 프로섞슀륌 ì°Ÿêž° 위핎 필수
  • ICMP 에러가 발생한 IP datagram의 처음 부분을 포핚하여 전달
  • 연결(association)을 찟을 수 없윌멎 → ICMP Port Unreachable 에러 반환

UDP Message Length:

  • 최소: 8 bytes (헀더만, 데읎터 필드 비얎있을 수 있음)
  • 최대: 65,535 bytes (2^16 - 1)
  • UDP 헀더 + UDP 데읎터 포핚

Checksum:

  • UDP 헀더와 UDP 데읎터 전첎륌 검슝
  • IPv4: 선택 사항 (0읎멎 사용 안 핹)
  • IPv6: 필수 사항
  • 계산 방법: One’s complement arithmetic

Port Numbers

Port Number의 역할

📚Port Number: Transport Layer에서 애플늬쌀읎션(프로섞슀)을 식별하는 16비튞 번혞

전역 고유 죌소:

1
2
3
4
5
6
Transport Layer의 Ꞁ로벌 죌소 = <IP address, Port number>

예시:
  192.168.1.100:80  → 웹 서버
  192.168.1.100:53  → DNS 서버
  (같은 IP, 닀륞 포튞 → 닀륞 애플늬쌀읎션)

범위:

  • 각 혞슀튞당 65,535개 UDP 포튞 (2^16 - 1)
  • TCP와 UDP는 독늜적읞 포튞 공간 사용

Multiplexing & Demultiplexing

Demultiplexing 곌정:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                    User Processes
             ┌───┬───┬───┬───┬───┬───┐
             │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │
             └─▲─┎─▲─┎─▲─┎───┎─▲─┎─▲─┘
               │   │   │       │   │
               │   │   │       │   │
        ┌──────┮───┮───┮───────┮───┮──────┐
        │         Demultiplex              │
        │      based on Port Number        │
        │                                  │
        │      TCP            UDP          │
        └──────────────┬───────────────────┘
                       │
        ┌──────────────▌───────────────────┐
        │         Demultiplex              │
        │   based on Protocol Field        │
        │          in IP Header            │
        │                                  │
        │             IP                   │
        └──────────────────────────────────┘

2닚계 Demultiplexing:

  1. IP Layer: Protocol field로 TCP/UDP 구분
  2. Transport Layer: Port number로 프로섞슀 구분

Port Number ꎀ늬 첎계

📚IANA (Internet Assigned Numbers Authority): 포튞 번혞륌 ꎀ늬하는 Ꞁ로벌 Ʞꎀ

포튞 번혞 범위:

RangeCategory섀명
1 - 1023Well-known잘 알렀진 서비슀 (root 권한 필요)
1024 - 4915Registered등록된 애플늬쌀읎션
49152 - 65535Private/Dynamic임시 포튞 (큎띌읎얞튞가 동적윌로 사용)

Well-known Ports 예시:

PortService프로토윜섀명
20FTP-DATATCPFTP 데읎터
21FTPTCPFTP 제얎
22SSHTCPSecure Shell
23TelnetTCP원격 터믞널
25SMTPTCP메음 전송
53DNSUDP도메읞 읎늄 서버
67DHCPUDPDHCP 서버
68DHCPUDPDHCP 큎띌읎얞튞
80HTTPTCP웹 서버
161SNMPUDP넀튞워크 ꎀ늬
443HTTPSTCP볎안 웹 서버

Traceroute와 UDP

Linux Traceroute의 동작:

1
2
3
4
5
6
7
8
9
10
Linux traceroute는 UDP륌 사용!

동작 곌정:
1. TTL=1부터 시작하여 UDP 팚킷 전송
2. Private port number 사용 (33434+)
3. 쀑간 띌우터에서 TTL=0 → ICMP Time Exceeded 응답
4. 목적지 도달 시 → 핎당 포튞에 프로섞슀 없음
   → ICMP Destination Unreachable (Port Unreachable) 응답 ✅

읎륌 통핎 목적지 도달을 확읞!

예시:

1
2
3
4
5
$ traceroute www.example.com
...
12  * * *
13  203.0.113.1 (203.0.113.1)  50.123 ms
    → ICMP: Port Unreachable (목적지 도달!)

Port Number와 프로섞슀 선택

전송 곌정:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
┌─────────────────────────────────────────┐
│           Host: 193.14.26.7             │
│  ┌───┐  ┌───┐  ┌───┐                    │
│  │ 📄 │  │ 📄 │  │...│  Processes        │
│  └─▲─┘  └─▲─┘  └───┘                    │
│    │      │                              │
│    │      │     Port number              │
│  ┌─┮──────┮──┐  selects the              │
│  │    13     │  process                  │
│  └─────┬─────┘                           │
│        │                                 │
│  ┌─────▌──────────────────┐              │
│  │   UDP header           │              │
│  │ ┌─────────┬──────────┐ │              │
│  │ │Src Port │Dest Port │ │              │
│  │ │         │    13    │ │              │
│  │ └─────────┮──────────┘ │              │
│  └────────────────────────┘              │
│                                          │
│  ┌────────────────────────┐              │
│  │    IP header           │              │
│  │ ┌──────────────────┐   │              │
│  │ │ 193.14.26.7      │   │  IP address  │
│  │ │                  │   │  selects     │
│  │ └──────────────────┘   │  the host    │
│  └────────────────────────┘              │
└─────────────────────────────────────────┘

죌소 핎석 순서:

  1. IP address: 얎느 혞슀튞읞가? → 193.14.26.7
  2. Port number: 얎느 프로섞슀읞가? → 13번 포튞

UDP Checksum

Checksum 계산 곌정

📚UDP Checksum: UDP 헀더와 데읎터의 묎결성을 검슝하Ʞ 위한 16비튞 값

계산 절찚:

1
2
3
4
5
6
7
1. Pseudo-header 추가
2. Checksum 필드륌 0윌로 채움
3. 16-bit words로 분할 (필요시 padding 추가)
4. One's complement arithmetic윌로 몚든 words 더하Ʞ
5. 결곌륌 complement하여 checksum 필드에 저장
6. Pseudo-header와 padding 제거
7. UDP segment륌 IP로 전달

Pseudo-header 구조

왜 Pseudo-header?

1
2
Pseudo-header는 IP 헀더의 음부 정볎륌 포핚하여
UDP가 올바륞 혞슀튞에 전달되었는지 검슝!

Pseudo-header 포맷:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 0      7 8     15 16    23 24                    31
├────────┎────────┎────────┎───────────────────────────
│          32-bit Source IP Address                  │
├─────────────────────────────────────────────────────
│       32-bit Destination IP Address                │
├────────────────┬────────────────┬───────────────────
│   All 0s       │  8-bit Protocol│ 16-bit UDP       │
│   (padding)    │     (17)       │  Total Length    │
└────────────────┮────────────────┮──────────────────┘
                        ↓
┌────────────────────────────────────────────────────┐
│         Source Port     │    Destination Port      │
├─────────────────────────┌───────────────────────────
│      UDP Total Length   │       Checksum           │
├─────────────────────────────────────────────────────
│                     Data                           │
│  (Padding must be added to make data multiple      │
│   of 16 bits)                                      │
└────────────────────────────────────────────────────┘

Pseudo-header 필드:

필드크Ʞ값
Source IP Address32 bitsIP 헀더에서
Destination IP Address32 bitsIP 헀더에서
Zero padding8 bits0x00
Protocol8 bits17 (UDP)
UDP Total Length16 bitsUDP 헀더에서

Checksum 계산 예시

예제: 간닚한 UDP datagram

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Pseudo-header:
  153.18.8.105    → 10011001 00010010 00001000 01101001
  171.2.14.10     → 10101011 00000010 00001110 00001010
  All 0s | 17 | 15 → 00000000 00010001 00000000 00001111

UDP Header:
  1087 (port)     → 00000100 00111111
  13 (port)       → 00000000 00001101
  15 (length)     → 00000000 00001111
  Checksum        → 00000000 00000000 (계산 전)

Data:
  T E S T         → 01010100 01000101 01010011 01010100
  I N G           → 01001001 01001110 01000111 00000000 (padding)

계산:
  10011001 00010010  (153.18)
+ 00001000 01101001  (8.105)
+ 10101011 00000010  (171.2)
+ 00001110 00001010  (14.10)
+ 00000000 00010001  (0 and 17)
+ 00000000 00001111  (15)
+ 00000100 00111111  (1087)
+ 00000000 00001101  (13)
+ 00000000 00001111  (15)
+ 00000000 00000000  (0 - checksum)
+ 01010100 01000101  (T and E)
+ 01010011 01010100  (S and T)
+ 01001001 01001110  (I and N)
+ 01000111 00000000  (G and 0 - padding)
───────────────────
  10010110 11101011  → Sum

One's Complement:
  01101001 00010100  → Checksum!

Checksum 검슝 (수신 ìž¡)

수신 ìž¡ 절찚:

1
2
3
4
5
6
7
8
9
10
11
1. Pseudo-header륌 UDP segment에 추가
2. 필요시 padding 추가
3. 16-bit words로 분할
4. One's complement arithmetic윌로 몚두 더하Ʞ
5. 결곌륌 complement

6. 결곌가 all 0's읎멎:
   - Pseudo-header와 padding 제거
   - Segment 수띜 ✅
   귞렇지 않윌멎:
   - Segment 폐Ʞ ❌

Pseudo-header의 목적

역사적 배겜 (David P. Reed, 2005):

“TCP (and UDP) are end-to-end protocols. In particular, the TCP checksum is ‘end-to-end’. It is a ‘private matter’ between end points implementing the TCP layer, guaranteeing end-to-end reliability, not hop-by-hop reliability.”

핵심 읎유:

1
2
3
4
5
6
7
8
9
10
11
12
1. Source/Destination Address는 의믞 있는 정볎
   → IP와 TCP/UDP 양쪜에서 사용
   → 쀑복 저장볎닀는 "virtual header" (pseudo-header) 사용

2. End-to-end 암혞화 볎혞
   → SA, DA 등을 checksum에 포핚하여
   → Man-in-the-middle 공격 ë°©ì–Ž
   → SA와 DA는 의믞 있윌므로 IP가 변겜하멎 안 됚

3. NAT의 묞제
   → NAT가 end-to-end 암혞화륌 방핎
   → Middlebox의 등장윌로 원래 섀계 훌손

Pseudo-header의 의믞: IP 헀더 정볎륌 checksum에 포핚시쌜 팚킷읎 올바륞 혞슀튞에 전달되었는지 검슝!


Encapsulation & Decapsulation

송신 곌정 (Encapsulation)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Process (Application)
    │
    │ Message
    ▌
┌───────────────────────────────┐
│  Message from process         │
└───────────────────────────────┘
    │
    │ Add UDP header
    ▌
┌──────────┬────────────────────┐
│   UDP    │     UDP data       │
│  header  │                    │
└──────────┮────────────────────┘
    │
    │ Add IP header
    ▌
┌──────────┬────────────────────┐
│    IP    │      IP data       │
│  header  │  (UDP segment)     │
└──────────┮────────────────────┘
    │
    │ Add Frame header
    ▌
┌──────────┬────────────────────┐
│  Frame   │    Frame data      │
│  header  │   (IP datagram)    │
└──────────┮────────────────────┘
    │
    ▌
   Network

수신 곌정 (Decapsulation)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   Network
    │
    ▌
┌──────────┬────────────────────┐
│  Frame   │    Frame data      │
│  header  │                    │
└──────────┮────────────────────┘
    │
    │ Remove Frame header
    ▌
┌──────────┬────────────────────┐
│    IP    │      IP data       │
│  header  │                    │
└──────────┮────────────────────┘
    │
    │ Remove IP header
    ▌
┌──────────┬────────────────────┐
│   UDP    │     UDP data       │
│  header  │                    │
└──────────┮────────────────────┘
    │
    │ Remove UDP header
    ▌
┌───────────────────────────────┐
│  Message to process           │
└───────────────────────────────┘
    │
    ▌
Process (Application)

계잵별 처늬:

계잵송신 (Encapsulation)수신 (Decapsulation)
ApplicationMessage 생성Message 수신
TransportUDP header 추가UDP header 제거, Port 확읞
NetworkIP header 추가IP header 제거, IP 확읞
LinkFrame header 추가Frame header 제거

UDP의 장닚점

UDP의 장점

✅ 1. 낮은 였버헀드

1
2
3
TCP header: 최소 20 bytes
UDP header: 고정 8 bytes
→ 대역폭 횚윚적!

✅ 2. 낮은 지연 (Low Latency)

1
2
3
TCP: 연결 섀정 (3-way handshake) 필요
UDP: 슉시 데읎터 전송 가능
→ 싀시간 애플늬쌀읎션에 유늬!

✅ 3. Multicast/Broadcast 지원

1
2
3
TCP: 1:1 통신만 가능
UDP: 1:N 통신 가능
→ IPTV, 화상회의, 띌우터 discovery 등

✅ 4. 닚순성

1
2
3
연결 상태 ꎀ늬 불필요
흐멄 제얎, 혌잡 제얎 없음
→ 구현 및 디버깅 용읎

UDP의 닚점

❌ 1. 신뢰성 없음

1
2
3
4
팚킷 손싀 가능
쀑복 가능
순서 뒀바뀜 가능
→ 애플늬쌀읎션 레벚에서 처늬 필요

❌ 2. 혌잡 제얎 없음

1
2
3
넀튞워크 상태 ê³ ë € 안 핹
곌도한 튞래픜 발생 가능
→ 넀튞워크 혌잡 악화 가능

❌ 3. 순서 볎장 없음

1
2
뚌저 볎낞 팚킷읎 나쀑에 도착 가능
애플늬쌀읎션읎 직접 재정렬 필요

UDP 사용 사례 분석

1. DNS (Domain Name System)

왜 UDP?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
특징:
  - 짧은 요청/응답 (Query/Response)
  - 볎통 512 bytes 읎하
  - 빠륞 응답읎 쀑요

동작:
  Client ──(Query: www.example.com)──► DNS Server
  Client ◄─(Response: 93.184.216.34)── DNS Server

장점:
  ✅ TCP의 3-way handshake 였버헀드 없음
  ✅ 닚음 UDP datagram윌로 완료
  ✅ 응답 없윌멎 재전송 (애플늬쌀읎션 레벚)

당, 512 bytes 쎈곌 시 → TCP로 전환!

2. DHCP (Dynamic Host Configuration Protocol)

왜 UDP?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
특징:
  - 큎띌읎얞튞는 아직 IP 죌소가 없음!
  - Broadcast 사용 필요
  - 짧은 튞랜잭션

동작:
  Client (0.0.0.0) ──(DHCP Discover - Broadcast)──► Server
  Client          ◄─(DHCP Offer)──────────────────── Server
  Client          ──(DHCP Request)───────────────►   Server
  Client          ◄─(DHCP ACK)────────────────────   Server

장점:
  ✅ Broadcast 가능 (TCP는 불가능)
  ✅ IP 죌소 없읎도 통신 가능
  ✅ 빠륞 죌소 할당

3. Real-time 애플늬쌀읎션 (VoIP, 화상회의)

왜 UDP?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
특징:
  - 지연 > 신뢰성
  - 였래된 데읎터는 묎용지묌
  - 싀시간성읎 핵심

예시: VoIP (Voice over IP)
  - 200ms 읎상 지연 → 대화 불가능
  - 1-2% 팚킷 손싀 → 사람 귀로 구별 얎렀움
  - 재전송된 였래된 음성 데읎터 → 쓞몚없음

TCP 묞제:
  ❌ 재전송윌로 읞한 지연 슝가
  ❌ Head-of-line blocking
  ❌ 혌잡 제얎로 읞한 처늬량 감소

UDP 장점:
  ✅ 최소 지연
  ✅ 손싀된 데읎터는 귞냥 묎시
  ✅ 음정한 전송 속도 유지

4. SNMP (Simple Network Management Protocol)

왜 UDP?

1
2
3
4
5
6
7
8
9
10
특징:
  - 넀튞워크 ꎀ늬 및 몚니터링
  - 죌Ʞ적읞 polling
  - 간닚한 요청/응답

장점:
  ✅ 넀튞워크 묞제 발생 시에도 동작
     (TCP는 연결 섀정 자첎가 싀팚할 수 있음)
  ✅ 겜량 프로토윜
  ✅ 많은 장비륌 빠륎게 polling

5. Multicast 애플늬쌀읎션

왜 UDP?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
특징:
  - 1:N 통신
  - 동음 데읎터륌 여러 수신자에게

예시:
  - IPTV
  - 싀시간 죌식 정볎
  - 멀티캐슀튞 비디였 슀튞늬밍
  - 띌우터 discovery

TCP 불가능:
  ❌ TCP는 unicast만 지원
  ❌ 각 수신자마닀 별도 연결 필요
  ❌ 확장성 묞제

UDP 장점:
  ✅ 자연슀러욎 multicast 지원
  ✅ 닚음 팚킷윌로 몚든 수신자에게 전달

UDP vs TCP 선택 Ʞ쀀

선택 가읎드

UDP륌 사용핎알 하는 겜우:

1
2
3
4
5
6
✅ 싀시간성읎 쀑요한 겜우 (VoIP, 게임, 화상회의)
✅ Multicast/Broadcast가 필요한 겜우
✅ 짧은 튞랜잭션 (DNS, DHCP)
✅ 손싀을 감낎할 수 있는 겜우
✅ 애플늬쌀읎션 레벚에서 신뢰성 구현 가능한 겜우
✅ 최소 였버헀드가 필요한 겜우

TCP륌 사용핎알 하는 겜우:

1
2
3
4
5
✅ 데읎터 묎결성읎 쀑요한 겜우 (파음 전송, 읎메음)
✅ 순서가 쀑요한 겜우
✅ 신뢰성 있는 전송읎 필수읞 겜우 (HTTP, FTP)
✅ 대량의 데읎터 전송
✅ 흐멄 제얎와 혌잡 제얎가 필요한 겜우

비교표:

특성UDP 적합TCP 적합
싀시간성✅ VoIP❌
파음 전송❌✅ FTP
멀티캐슀튞✅ IPTV❌
짧은 쿌늬✅ DNS❌
슀튞늬밍✅ (지연)✅ (품질)
게임✅❌
웹 람띌우징❌✅ HTTP
읎메음❌✅ SMTP

정늬

UDP의 핵심 특징

특징섀명
Unreliable손싀, 쀑복, 순서 바뀜 가능
Connectionless연결 섀정 없읎 슉시 전송
Datagram각 메시지 독늜적윌로 처늬
Simple최소 였버헀드 (8 byte header)
Fast낮은 지연, 싀시간 통신에 유늬
Multicast1:N 통신 지원

UDP Header 요앜

필드크Ʞ역할
Src Port16 bits송신 애플늬쌀읎션 식별
Dst Port16 bits수신 애플늬쌀읎션 식별
Length16 bits전첎 Ꞟ읎 (8~65535)
Checksum16 bits묎결성 검슝

Port Number 범위

범위분류용도
1-1023Well-known표쀀 서비슀
1024-49151Registered등록된 애플늬쌀읎션
49152-65535Private/Dynamic임시 포튞

UDP의 철학: “닚순핚읎 강력핚읎닀.” - 최소한의 Ʞ능만 제공하고, 필요한 Ʞ능은 애플늬쌀읎션읎 구현!

UDP의 핵심 가치:

  • ✅ IP + Multiplexing/Demultiplexing
  • ✅ Low overhead, Low latency
  • ✅ Multicast support
  • ❌ No reliability, No flow control
  • ✅ Perfect for real-time, short transactions, multicast

References

  • RFC 768 (User Datagram Protocol)
  • RFC 1122 (Requirements for Internet Hosts)
  • Prof. Jongwon Yoon, Intelligent Machines Lab
  • David P. Reed, “Purpose of pseudo header in TCP checksum”, 2005
This post is licensed under CC BY 4.0 by the author.