UDP
User Datagram Protocol
- Transport Layer(4L)의 비연결 지향적 프로토콜
특징
- 비연결형 서비스로 데이터그램 방식을 제공
- 데이터 경계를 구분한다 (데이터그램 서비스)
- 정보를 주고 받을 때, 정보를 보내거나 받는다는 신호절차를 거치지 않는다.(3-way handshaking X, connectionless)
- UDP header의 checksum 필드를 통해 최소한의 오류만 검출한다.
- 패킷관리가 필요하다.
- 패킷 오버헤드가 적어 네트워크 부하가 감소되는 장점
- 신뢰성이 낮다
- TCP보다 속도가 빠르다
- 신뢰성보다 전송속도가 중요할 때 사용(ex. 스트리밍 사이트)
- ex. DNS, SNMP
UDP checksum
![](https://velog.velcdn.com/images/oyeon/post/d66c7f98-3317-4b0f-87a6-0ec338bbee18/image.png)
- 위의 UDP segment header를 보면 checksum 항목이 있다. 이는 전송된 segment의 에러를 탐지위한 것이다.
계산과정
- 도착 IP 주소, 송신 포트번호, 수신 포트번호, 데이터 길이, payload 등의 데이터들을 16비트 단위로 쪼개서 전부 더한다.
- 만약, 더하는 도중 overflow 되어 carry-out 값(1)이 생기면 결과에 1을 더해 sum을 만든다.
- 계산한 sum 값에 1의 보수를 취한 값이 checksum 이다.
검증과정
- 계산한 checksum 값을 송신측에서 header의 checksum 영역에 넣어 수신측에 보낸다.
- 수신측에서도 checksum 값을 계산하고, 송신측에서 보낸 checksum과 비교한다.
- 만약 동일하다면 에러가 없는 것이고, 동일하지 않다면 에러가 있는 것으로 이해하면 된다.
※ 100% 검증은 불가하다
- 전송도중 checksum 값이 바뀔 수 있기 때문
- 데이터가 변형되었음에도 불구, 계산한 checksum 값이 같은 상황이 있을 수도 있기 때문
reference
https://mangkyu.tistory.com/15
https://coding-factory.tistory.com/614
https://code-lab1.tistory.com/25