앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.04.15 - [Computer Science/네트워크] - [네트워크] UDP - Connectionless Transport
1. UDP Segment Structure
- UDP segment structure은 위의 그림과 같습니다.
- 이때 헤드 정보는 PCI(Protocol Control Information)이고, 페이 로드는 SDU(Service Data Unit)입니다.
- PCI와 SDU가 합쳐져서 PDU(Protocol Data Unit)이 됩니다.
- UDP의 헤더는 각각 2 바이트씩 차지하는 4개의 필드만 존재합니다.
- 당연히 포트 번호는 multiplexing/demultiplexing을 위함입니다.
- Lengh Field는 UDP 세그먼트의 바이트 수를 표시합니다. (데이터와 헤더를 포함하여)
- 이렇게 명시적으로 길이를 적어놓는 이유는 UDP 세그먼트마다 데이터 필드의 사이즈가 다르기 때문입니다.
- 또한 UDP는 Checksum도 존재합니다.
- checksum은 수신 측에서 세그먼트에 어떤 오류가 있는지 체크하기 위해 사용됩니다.
- 실제로 checksum은 IP header의 적은 부분도 포함하여 계산합니다.
2. UDP Checksum
- UDP의 Checksum은 Error Detection 기능을 제공합니다.
- 이는 UDP 세그먼트에서 비트가 변경되었는지 판단하기 위해 사용합니다.
- UDP 송신자는 모든 데이터를 16 비트 단위로 쪼개어서 모두 더한 후, 1의 보수를 취합니다.
- 만약 더하는 과정에서 overflow가 발생한다면 이를 Wrap Around를 행합니다.
- 아무튼 이렇게 더해진 checksum을 UDP 세그먼트의 checksum field에 넣습니다.
- 아래에 예시가 있습니다.
- 마지막 더하기에서 overflow가 발생하는데, 이때 carry sum은 wrap around 됩니다.
- 이렇게 나온 결과는 최종적으로 1의 보수를 취해져서 checksum field에 저장되어 송신됩니다.
- 수신 측에서는 checksum field까지 포함하여 더합니다.
- 만약 오류가 없다면 당연히 결과는 111111111111111이 되겠죠? 만약 중간에 0 비트가 들어가 있다면 이는 오류가 발생했다는 증거입니다.
- 하지만 UDP의 checksum은 에러를 검출할 수 있을 뿐, 에러를 복구하는 기능은 존재하지 않습니다.
- 따라서 몇몇 UDP는 손상된 세그먼트를 폐기하거나, application에 경고와 함께 보냅니다.
참고
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업
Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년
Chat GPT, Bing AI
다음 글에서는 Principles of reliable data transfer에 대해 알아보겠습니다.
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] Principle of RDT - rdt 1.0 (0) | 2023.04.17 |
---|---|
[네트워크] Principles of Reliable Data Transfer (0) | 2023.04.17 |
[네트워크] UDP - Connectionless Transport (0) | 2023.04.15 |
[네트워크] Transport-Layer Protocols (0) | 2023.04.15 |
[네트워크] DASH, CDN (0) | 2023.04.14 |