Wireshark에서 캡쳐시 UDP/TCP 데이터 뒤에 0으로 채워진 패딩이 붙는 이유에 대해서 아래 글을 보고 궁금증을 해결했다.
https://stackoverflow.com/questions/45263480/udp-is-adding-bytes-to-end-of-datagram
UDP의 경우 18바이트 미만의 데이터를 실어 보내면 뒤에 패딩이 붙는다.
아래 캡쳐를 보면 UDP 데이터의 길이가 16바이트인 패킷의 Length가 60이라고 나와있고 뒤에 00 00 패딩이 붙은 것을 볼 수 있다.
✔ Length가 60이라고 나온 이유는 ?
Etherner frame은 최소 64bytes인데 Wireshark에서는 FCS(Frame check sequence, 32‑bit CRC)를 포함하지 않고 표시하기 때문에 60이된 것이다.
✔ Ethernet frame의 최소 사이즈가 64bytes인 이유는?
충돌감지(carrier-sense multiple access with collision detection, CSMA/CD) 기능 때문에 그렇다. Ethernet frame은 header + payload + FCS로 구성되는데 header와 FCS를 제외한 payload의 사이즈는 최소 46bytes(64-14) 이상이어야 하므로 payload가 미만일 때는 패딩을 붙인다.
❗ 정리하면
아래 케이스에서는 이더넷 헤더 14 + 이더넷 FCS 4 + IPv4 헤더 20 + UDP 헤더 8 + UDP 데이터 16 = 62 bytes로 UDP 데이터 뒤에 2bytes의 패딩을 붙여 64 bytes를 완성시킨것이다. 단, 이때 붙는 패딩은 UDP 데이터그램 외부에 있는 것으로 SW에서 처리시 문제가 되지는 않는다.
Ethernet Frame
IPv4 header
UDP header
'지식창고 > IT 지식' 카테고리의 다른 글
TCP/IP stack (0) | 2024.01.10 |
---|---|
loop unroll (0) | 2023.12.19 |
CPU 구조 (0) | 2023.12.18 |
스위치, 허브, 라우터, 공유기 차이점 (0) | 2023.12.16 |
ISO 국가표준 규격서 무료 열람 (0) | 2023.12.10 |