UDP header 是16位但实际上是24位
UDP header is 16 bit but there's actually 24bits
我想了解 UDP header,我发现它实际上是 24 位
struct sockaddr_in {
short sin_family; // e.g. AF_INET //4 bytes
unsigned short sin_port; // e.g. htons(3490) //4 bytes
struct in_addr sin_addr; // see struct in_addr, below //8 bytes
char sin_zero[8]; // zero this if you want to //8 bytes
};
struct in_addr {
unsigned long s_addr; // load with inet_aton()
};
根据this explanation it's 16 bytes. Since sin_zero[8] isn't used anywhere it is 16 bytes ? UDP HEADER结构大小仍然是24字节。我错过了什么吗?
谢谢!
你的问题是表示套接字地址的C结构。
它与实际通过 UDP 网络发送的内容不同 header。
基本上 IPv4 header 是 20 个字节,其上的 UDP header 是 8 个字节,正如您的问题中的极客对极客参考所解释的那样。
我建议查看 https://en.wikipedia.org/wiki/User_Datagram_Protocol,或者安装 Wireshark 并捕获 UDP 数据包以查看其外观。
我想了解 UDP header,我发现它实际上是 24 位
struct sockaddr_in {
short sin_family; // e.g. AF_INET //4 bytes
unsigned short sin_port; // e.g. htons(3490) //4 bytes
struct in_addr sin_addr; // see struct in_addr, below //8 bytes
char sin_zero[8]; // zero this if you want to //8 bytes
};
struct in_addr {
unsigned long s_addr; // load with inet_aton()
};
根据this explanation it's 16 bytes. Since sin_zero[8] isn't used anywhere it is 16 bytes ? UDP HEADER结构大小仍然是24字节。我错过了什么吗?
谢谢!
你的问题是表示套接字地址的C结构。
它与实际通过 UDP 网络发送的内容不同 header。
基本上 IPv4 header 是 20 个字节,其上的 UDP header 是 8 个字节,正如您的问题中的极客对极客参考所解释的那样。
我建议查看 https://en.wikipedia.org/wiki/User_Datagram_Protocol,或者安装 Wireshark 并捕获 UDP 数据包以查看其外观。