UDP
UDP(User Datagram Protocol) 프로토콜이란?
User Datagram Protocol의 약어로 컴퓨터간 데이터 통신을 하기 위한 규약(프로토콜)의 일종이다. UDP는 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약이다. 동일 계층에서 사용하는 또다른 프로토콜로 TCP가 존재한다. TCP와 동일한 계층에서 사용되고 있는 프로토콜이며 UDP에 대한 설명시 항상 TCP 프로토콜과의 비교로 설명하고 있다.
UDP의 특징
- TCP보다 부하가 적고 단순하며 빠름(TCP에서 여러 기능이 빠진 만큼 단순하고 빨라졌다.)
- 비연결형(TCP의 경우 최초 전송시 연결 확인 후 ACK 신호가 와야 통신하지만 UDP는 그런 과정이 생략된다.)
- 신뢰도가 떨어지며 재송에 관한 부분은 어플리케이션에서 담당함
- 전송제어 관한 로직 없음
목적성
통신 데이터의 신뢰성보다는 빠른 속도가 부하가 적은 프로토콜이 필요하여 발생하게 되었다. 반면 TCP에서 제공하는 신뢰성과 속도제어, 흐름제어의 기능이 빠지게 되었다. 신뢰성이 없어 손실 데이터에 대한 처리는 어플리케이션에 구현을 해야한다.(UDP를 선택한 어플리케이션이라면 이런 부분에 대해서는 이미 정책을 잡았을 것이라 생각든다.)
사용 분야
스트리밍 분야, VoIP, mVoIP, IPTV, TFTP, IP 터널, NFS, 온라인 게임, 에서 사용되고 있다.(어느 정도 손실이 발생해도 무방한 서비스 위주로 사용된다.)
UDP와 TCP의 전송 방식에 관한 개략적 설명도
TCP
UDP
UDP의 헤더 구조
- Source Port/Destination Port(송신 포트/수신 포트) : 송수신 프로세스에 할당된 네트워크 포트 번호다. 호스트에서 실행되는 프로세스를 구분하는 데 이용한다. 호스트는 IP 프로토콜의 IP 주소로 구분하므로, 인터넷에서 실행되는 네트워크 프로세스의 고유 구분자는 호스트의 IP 주소와 프로세스 포트 번호의 조합이다. UDP 포트 번호는 TCP 포트 번호와 독립적으로 관리되고 할당된다.
- Length(길이) : 프로토콜 헤더를 포함한 UDP 데이터그램의 전체 크기다. 단위는 바이트고, UDP 헤더의 크기가 8바이트므로 최솟값은 8이다.
- Checksum(체크섬) : 프로토콜 헤더와 데이터에 대한 체크섬 값을 제공하여 수신자가 데이터그램 변형 오류를 감지할 수 있도록 해준다. IP 프로토콜에서는 헤더만 체크섬을 계산하지만, UDP에서는 데이터까지 체크섬을 계산한다. 수신자는 체크섬 오류를 발견하면 해당 데이터그램을 버린다. UDP의 체크섬 기능은 옵션이므로 필드 값이 0이면 송신자가 체크섬 계산을 하지 않았다는 의미가 되어, 수신 프로세스에서는 체크섬으로 오류 검출 기능을 수행하지 않는다.
UDP 데이터그램의 Length 필드는 크기가 16비트므로 데이터그램의 최대 크기는 이론상 65,535(0~216~1)바이트다. 그러나 응용 프로그램을 포함한 다른 계층과의 연관성 문제를 고려하여 일반적으로 8,192바이트를 넘지 않게 사용한다.
UDP는 TCP보다 구조가 아주 단순해 전송 효율이 좋으며, 고속 전송이 필요한 환경에 유용하다. 특히 덩치가 큰 TCP를 구현하기에는 메모리 등이 작은 네트워크 장비에 사용하기 적합하다.
기타
초기 TCP의 제약 사항으로 이를 해결하기 위해 고안되었지만 TCP와 유사항 방식의 통신을 여러 옵션을 통해 지정할 수 있다. 또한 TCP 역시 옵션을 설정하여 UDP와 유사하게 사용할 수도 있다.