![使用 Wireshark 分析数据包时,十六进制值似乎倒过来了](https://linux22.com/image/1365207/%E4%BD%BF%E7%94%A8%20Wireshark%20%E5%88%86%E6%9E%90%E6%95%B0%E6%8D%AE%E5%8C%85%E6%97%B6%EF%BC%8C%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E5%80%BC%E4%BC%BC%E4%B9%8E%E5%80%92%E8%BF%87%E6%9D%A5%E4%BA%86.png)
我尝试使用 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 在内存中所做的那样。