Computer Science/네트워크

[네트워크] UDP - Segment Structure

바보1 2023. 4. 15. 18:51

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

2023.04.15 - [Computer Science/네트워크] - [네트워크] UDP - Connectionless Transport

 

[네트워크] UDP - Connectionless Transport

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.15 - [Computer Science/네트워크] - [네트워크] Transport-Layer Protocols [네트워크] Transport-Layer Protocols 앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.07

hi-guten-tag.tistory.com


1. UDP Segment Structure

 

 

출처 : Computer Networking 3장. Figure 3.7

  • 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의 ChecksumError 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에 대해 알아보겠습니다.

감사합니다.

지적 환영합니다.