UDP는 Best-effort(최선형) 서비스로, 흐름 제어, 혼잡 제어, 패킷 손실, 지연 등을 보장하지 않는다.
장점
- 헤더가 간결하고 네트워크 부하가 적으며, 연결 설정과 관련된 과정이 없어 데이터 송수신이 빠르다.
→ 비디오 스트리밍 서비스, DNS, HTTP/3 등에 이용- 연결을 수립하지 않기 때문에 Round-Trip Time (RTT)를 줄일 수 있으며, 이로 인해 전송 성능이 향상 될 수 있다.
- source port #: 송신자의 포트 번호로 생략 또는 운영체제에 위임할 수 있다.
- dest port #: 수신자의 포트 번호
- length: 세그먼트의 길이 (바이트 단위)
- checksum: 에러를 검증하기 위한 숫자
- payload: 응용 계층에서 전달 또는 응용 계층으로 전달 할 데이터가 위치
네트워크 상에서 송수신되는 데이터의 오류 검출을 위한 값
- Error detection시에 해당 패킷은 버린지만, Linux에서 설정 변경을 할 수 있다.
- Software로 구현되어 weak protection의 특징을 가지고 있다.
- 하드웨어를 활용한 CRC (Cyclic Redundancy Check) 검사 방법을 사용하면 더 높은 수준의 데이터 보호를 제공할 수 있다.
Sender: checksum 생성 과정
- 모든 데이터 더하기
→ 16-bit word 단위로 모두 더하기- 덧셈 과정에서 carry가 있다면 warpping
- 1의 보수(checksum value)
- 예시: 11100110011001101101010101010101를 보내야 한다.
receiver : checksum 값 확인을 통해 오류검출 과정
- 체크섬을 포함한 모든 데이터 더하기
- 덧셈 과정에서 carry가 있다면 warpping
- 1의 보수
→ 결과가 0: 오류(X) , 0이 아니면: 오류(O)