TCP/IP 5계층 중 4계층인 transport 계층에서 대표적으로 사용되는 프로토콜이 UDP, TCP이다.
UDP를 사용할지 TCP를 사용할지는 application에 의해 결정된다고 생각하면 됨.
DNS 쿼리 같은경우는 UDP TCP 둘다 사용가능하지만 일반적으로 한개의 프로토콜을 사용한다.
UDP는 인터넷 트래픽의 10%미만이라고 한다. 대부분은 TCP가 이용되며 end-to-end 통신을 하며 비연결지향, message 패러다임을 따른다. end-to-end라는 것은 host의 application간의 통신을 의미하는데 UDP에서는 application을 port number로 나타낸다. 포트넘버는 쉽게 프로세스를 추상화한것이다. 운영체제마다 프로세스를 식별하는 기준이 다르기에 이를 port number로 추상화하여 나타낸 것. 참고로 0~1024보다 작은 포트는 well-known포트번호, 1024~49151은 registered number, 49151~65535 dynamic port라고 함.
IP(Internet Protocol)처럼 Best-effort 전달을 한다. 즉, 송신자가 보낸 패킷에 대해 복사, 소실, 순서 바뀜 등의 현상이 일어난다. 따라서 UDP를 사용할 때는 이런 패킷들이 문제가 생겨도 용인할 수 있는 곳에 사용돼야한다. 대표적으로 멀티미디어 전송같은 경우 픽셀 몇개가 소실되어도 사용자들이 불편함을 느끼지 않는다. 이런경우 UDP를 고려해보면 되겠다. 반면, 온라인 쇼핑같은 곳에서는 결제데이터가 복제되고 소실되고 이러면 안되기 때문에 신뢰성있는 통신을 고려해야겠다.
1:N통신이 가능하며 1:1 통신도 당연히 가능하다. TCP와 다르게 flow control과 같은 일은 하지 않기 때문에 TCP와 비교해서 패킷 전달이 더빠르다.
패킷을 보내는쪽은 application 계층으로부터 데이터를 받고 UDP header를 붙인다. 이것을 user datagram이라함. header는 아래 처럼 보내는쪽의 port, 받는쪽의 port 전체 datagram길이, checksum이 들어간다.

위에서 UDP는 message oriented 프로토콜이라고 했는데 stream protocol과 비교를 잠깐 하자면 message 기반 프로토콜은 데이터를 group이나 묶음(chunks)형태로 보내게 되는데, 송신자는 하나의 message가 어디서 시작했고 끝났는지 알수 있다. 반면, stream은 byte의 연속으로 데이터를 보내게 된다. 이를 잘 설명하는 예시로 전화와 문자메세지를 떠올리면 되겠다. 전화의 경우는 stream기반이라고 생각하면되고 문자메세지는 message기반이라고 생각하면 되겠다.
참고
https://binaryterms.com/user-datagram-protocol.html
What is User Datagram Protocol (UDP) - Binary Terms
User datagram protocol (UDP) provides connectionless and unreliable process-to-process communication. It is a transport layer protocol.
binaryterms.com
computer networks and internet 6th edition