UDP(4)

명칭
udp - 인터넷 유저 데이터 그램 프로토콜

서식
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> int socket(AF_INET, SOCK_DGRAM, 0)

해설
UDP (은)는 단순해 신뢰성이 없는 데이터 그램 프로토콜이며, 인터넷 프로토콜 패밀리에 있어 SOCK_DGRAM (으)로서 추상화 된 기능을 서포트하는 것으로서 사용됩니다. UDP 소켓은 connectionless형이며, 보통 sendto(2) 및 recvfrom(2) 콜과 함께 사용됩니다. 다만, 다음에 보내지는 패킷의 행선지를 고정하는 목적으로 connect(2) 콜도 사용할 수 있습니다 (그 경우에는 보통 recv(2) 또는 read(2) , 및 send(2) 또는 write(2) 시스템 콜과 함께 사용됩니다).

UDP 의 주소 포맷은 TCP 그리고 사용되는 것과 동일합니다. 특히 UDP (은)는 표준의 인터넷 주소 포맷에 가세해 포트 식별자를 제공합니다. UDP 포트 공간은 TCP 포트 공간과는 분리하고 있는 것에 주의해 주세요 (즉, UDP 포트는 TCP 포트와 “접속할 수 없습니다” ). 더해, 브로드캐스트 패킷은 예약되었다 “브로드캐스트 어드레스” (을)를 이용해 송신됩니다 (하위층의 네트워크가 이것을 서포트하고 있는 것과 가정하고 있습니다). 브로드캐스트 어드레스는 네트워크 인터페이스에 의존합니다.

IP 트랜스폴트층에 있어서의 옵션은 UDP 그리고 사용할 수 있습니다. 본건에 대해서는 ip(4) (을)를 참조해 주세요.

진단
소켓 조작의 실패 시에는 다음의 에러 중 하나가 돌려주어집니다:

[EISCONN]
    이미 connection가 확립되어 있는 소켓에 대해 한층 더 connection를 확립 시키려고 했을 때, 혹은 이미 소켓의 connection가 확립되어 있는데, 행선지 주소를 지정해 데이터 그램을 송신하려고 했을 때

[ENOTCONN]
    소켓의 connection가 확립되어 있지 않은 경우에, 행선지 주소의 지정을 하지 않고 데이터 그램의 송신을 실시하려고 했을 때

[ENOBUFS]
    내부적인 데이터 구조를 위한 메모리가 부족했을 때

[EADDRINUSE]
    이미 할당할 수 있고 있는 포트에 대해 소켓을 작성하려고 했을 때

[EADDRNOTAVAIL]
    대응한 네트워크 인터페이스가 존재하지 않는다 네트워크 주소를 지정해, 소켓을 작성하려고 했을 때

관련 항목
getsockopt(2), recv(2), send(2), socket(2), inet(4), intro(4), ip(4)

역사
udp 프로토콜은 4.2BSD (으)로부터 등장했습니다.