我尝试使用 Wireshark 调试我的某个应用程序遇到的错误。我很难理解数据包内容在 Wireshark 中的格式和显示方式。为了更好地理解,请考虑以下几点:
我将以下数据作为前缀写入从我的应用程序发送的 TCP 消息中:
1b version buffer, value 52
4b message buffer length, value 1171
应用适当的过滤器后,Wireshark 显示消息的前 5 个字节的以下十六进制表示形式:
0x34
0x93
0x04
0x00
0x00
第一个字节 0x34 对应于我从应用程序写入的版本缓冲区,因为 0x34 的十进制表示实际上是 52!
但是,根据我从应用程序写入缓冲区的值,接下来的四个字节似乎不能代表消息缓冲区的长度 1171。
1171 的十六进制值为 0x493。我感到很困惑,因为根据上面代码块中打印的十六进制,该值似乎是正确的,只是它是倒着的!这是为什么呢?
答案1
这可能是字节顺序。字节可以以小端或大端发送,这只是一个方便性和硬件支持的问题。显然,您的网络通信正在使用小端,就像 Intel 兼容 CPU 在内存中所做的那样。