UDP

가지가지 2006. 6. 19. 21:52
 
User Datagram Protocol(UDP)

User Datagram Protocol(UDP)는 Internet Protocol(IP)의 상위에 있는 두 개의 주요한 Transport layer 중 하나이다. UDP는 최상의 데이터 스트림(stream) 서비스를 요구하지 않는 어플리케이션들을 위해 transaction-oriented best-effort delivery 서비스를 제공한다.

UDP의 서비스 공급자는 IP이다. UDP의 중요한 클라이어트는 다음과 같은 어플리케이션 계층 프로토콜들이다.

>Network File System(NFS)
>Domain Name Service(DNS)
>Trivial File Transfer Protocol(TFTP)
>Simple Network Management Protocol (SNMP)

UDP는 IP의 서비스를 사용하지만, 그것은 인터넷 프로토콜로서 신뢰성이 결여된 커넥션리스 전달 서비스(connectionless delivery service)를 제공한다. UDP는 호스트들 사이에서 변화하는 정보의 비율을 관리하기 위해 흐름제어(flow control)를 수행한다.

UDP는 데이터의 성공적 전달을 보장하는 표시를 보내거나 받지 않는다. UDP는 패킷 정렬하는 방법을 제공하지 않기 때문에 패킷은 destination station에 의해 적절한 순서대로 놓이게 된다. 신뢰성 있고 순차적인 전달을 요구하는 어플리케이션들은 TCP의 서비스를 사용해야만 한다.

UDP는 어플리케이션 프로그램들간의 통신을 위해 최소한의 프로토콜 오버헤드(마치 TCP 처럼)로 간단한 transaction 서비스를 지원한다. UDP는 IP에 의해 이미 제공된것보다 두 가지 추가적인 특색을 지원한다.

UDP는 목적지 포트 넘버에 기초한 어플리케이션 프로세서를 위하여 데이터를 demultiplex하는 기능을 제공한다.
UDP 헤더는 source 호스트로부터 destination 호스트까지 데이터가 전달될 때 발생하는 에러를 감지하는 체크섬(checksum)을 포함한다.

Demultiplexing Based on Port Number
UDP가 IP에 의해 제공하는것 이외에 지원하는 추가적인 특색 중 하나는 목적지 포트 넘버에 기초하여 어플리케이션 프로세서를 위한 데이터를 demultiplex하는 능력이다. 반면에 IP는 인터넷을 통한 두 개의 호스트들 사이에 통신이 가능하도록 하는 라우팅 기능을 제공하고, UDP는 주어진 호스트 안에서 다양한 목적지들을 구별하도록 하는 메카니즘을 만든다. 이것은 주어진 호스트에서 데이터그램을 독립적으로 주고 받을 수 있도록 다수의 어플리케이션 프로그램들이 실행하도록 한다.

Demultiplexing

UDP는 요청 프로세스와 서버 프로세스 사이에 분리된 상호작용을 위한 인터페이스를 제공한다. 서버 클라이언트는 passive 클라이언트인 반면에 요청 프로세스(requester process)는 active 클라이언트이다. active 클라이언트는 리모트 passive 클라이언트에 서비스를 요청한다.

Receive 요청을 을 받으면, passive 클라이언트는 well-known 포트(주어진 서비스를 위해 이미 정해진) 넘버로 listening socket을 유지한다. passive 서버는 active 클라이언트가 요청하는 서비스에 해당하는 포트에 따라 서비스를 제공한다. Active 클라이언트 는 Well-known 포트로 서비스 요청을 보내고, passive 클라이언트가 응답을 위해 사용하는 포트 넘버에 관심을 갖는다.

UDP의 사용 예는 네트웍 매니지먼트의 내용에서 쉽게 참고할 수 있다. 예를 들면, 호스트에 존재하는 SNMP agents(the server process)는 네트웍 매니지먼트 스테이션(the request process)의 요청에 응답해야만 한다. 각 SNMP agent는 destination 호스트의 Well-known 161 UDP 포트에 매니지먼트 요청을 기다린다. 만일 SNMP 매니저가 네트웍 관리 정보를 얻고자 한다면, destination 호스트 UDP 포트 161에 요청을 한다.

Some UDP Port Numbers

Decimal Description
5Remote Job Entry
7Echo
9Discard
11Active Users
13Daytime
15Who is up or NETSTAT
17Quote of the Day
19Character Generator
37Time
39Resource Location Protocol
42Host Name Server
43Who Is
53Domain Name Server
67Bootstrap Protocol Server
68Bootstrap protocol Client
69Trivial Filter Transfer
79Finger
111Sun Microsystems' RPC
123Network Time Protocol
161SNMP Message
162SNMP Trap
Frame Encapsulation
UDP 메시지는 인터넷을 통한 이동을 위해 IP 데이터그램 내부로 encapsulate 된다.
UDP Frame Encapsulation
>Ethernet layer
동일 물리적 계층에서 두 개의 호스트나 라우터 사이에서 데이터를 전달하기 위한 책임 계층.
>IP layer
다른 네트웍에 있는 호스트들 사이에서 라우터를 통하는 데이터를 전달하는 책임 계층.
>UDP layer
목적지 호스트안에 다수의 프로세스들을 demultiplexing하는 책임 계층
UDP Header Format
UDP Header Format
>Source Port
(Optional) 보내는 프로세스들의 포트와 응답 하기 위해서 어드레스된 포트를 지적한다. 만일 전달하는 호스트가 source 포트를 제공하지 않는 다면, 이 필드는 ‘0’ 값을 가진다.
>Destination
destination 장비의 프로세스들 사이에서 데이터그램을 demultiplex한다.
>Length
UDP 헤더와 데이터의 합쳐진 길이를 octet로 표현 한다.
>Checksum
(Optional) 만일 checksum이 계산되지 않았다면 제로 값을 갖는다. IP는 데이터그램의 데이터 부분을 위하여 checksum을 계산하지 않기 때문에 (IP 체크섬은 단지 IP 헤더 부분만 담당) UDP 체크섬은 데이터가 에러없이 도착했는지를 결정 하는 수단을 제공한다.
Pseudo Header and Checksum

Pseudo 헤더는 IP 헤더와 UDP 헤더로부터 선택된 필드들로 구성된다. Pseudo 헤더는 source 인터넷 어드레스, destination 인터넷 어드레스, IP 헤더로의 프로토콜 필드로 구성된다. 또한 UDP 길이 필드도 포함한다.

주의 : Pseudo 헤더는 실제적으로 destination 호스트로 전송되지 않는다. 그것은 UDP checksum의 계산을 보조하기 위해 논리적으로 구성된 것이다.

다음 절차는 UDP checksum을 계산하는 과정이다.
1. Pseudo 헤더는 논리적으로 구성된 것이고, UDP 데이터 필드의 앞부분에 있다.
2. 만일 데이터 필드가 필요하다면 제로 octet로 덧 붙여 진다.
3. 그때 checksum은 전체적인 목적을 위해 계산된다.

UDP checksum은 source 호스트에서 destination 호스트까지 데이터 그램이 전달될 때 발생하는 모든 에러에 대한 검출이 가능하다. 만일 데이터그램이 destination 호스트의 알맞은 포트에 전달됐다는 것을 검증할 수 있다면, 우리는 적절한 위치에 도착한 것을 안다.

Standard IP Header
Standard UDP Heade
UDP Checksum Fields : Pseudo Header and Data Qctets


출처:
http://blog.naver.com/no1kam
CCNA+CCNP 참고교육사이트 : http://www.lesson-web.com/cisco/main_1.htm