본문 바로가기

컴퓨터 사이언스/네트워크

[모바일 컴퓨팅] User Datagram Protocol (UDP)

Transport Layer

- end-to-end protocol

- 오직 host에만 구현되어있어야한다.

- End-to-End principle

- ISP 간섭없이 서비스를 지원할 수 있어야 한다.

 

UDP, TCP 비교

UDP (User Datagram Protocol)

- datagram oriented

- unreliable, connectionless

- simple

- unicast and multicast

- 이미 지나갔으면 재전송해도 의미없는 video stream과 같은 멀티미디어 어플리케이션에 유용한다.

- SNMP, RIP, DNS ...

- non-unicast, real-time, short transactions에 쓰인다.

 

TCP (Transmission Control Protocol)

- stream oriented

- reliable, connection-oriented (3-way handshake)

- complex (re-transmission 등)

- only unicast (500개의 host에게 멀티캐스트하려면 500개의 커넥션?!)

- web(http), email(smtp), file(ftp), terminal(telnet) ..

 

UDP (User Datagram Protocol)

- 신뢰성이 없는 데이터그램의 전송을 도와준다. 때문에 오버헤드가 작다.

- IP datagram의 host-to-host delivery를 application-to-applcation으로 확장해준다.

- IP의 기능에 multiplexing과 de-multiplexing만 추가 되었다고 볼 수 있다.

 

UDP Format

- Port Number

sending, receiving application을 특정해준다. (프로세스)

프로세스를 찾기 위해 필요하다. 

관련된 port를 찾지 못하면 (ex. port가 안 열려있거나) ICMP Port Unreachable이 반환된다.

- Checksum

UDP header와 UDP data의 에러

IPv4에서는 옵션이지만, IPv6에서는 필수이다.

checksum을 사용하지 않을 때는 0으로 채운다.

 

Checksum 계산

1. psuedo-header를 더한다.

2. checksum을 0으로 채운다.

3. 16-bit word로 나눈다. (나뉘어지지 않으면 0으로 패딩)

4. 1's complement로 더한다.

5. 결과를 complement하고 checksum 필드에 넣는다.

6. psuedo-header를 버린다.

 

Port Numbers

- UDP와 TCP는 어플리케이션을 특정하기 위해 port number를 사용한다.

- Transport layer에서 globally unique한 주소는 <IP address, port number>이다.

- 호스트마다 65,535개의 UDP port가 있다.

- IP address는 host를 특정해주고, Port number는 process를 특정해준다.

 

IP checksum이 있는데 UDP checksum이 필요한 이유는?

- By the end-to-end principle, the router can't control the udp header, so it can't detect errors in the udp header. And IP header made checksum only with ip header. So, when 4th layer receives the udp packet, they needed to check errors in the udp header. It is reason why udp checksum is needed even thought ip header exists.

- NAT로 end-to-end principle이 잘 지켜지지 않고있다.