libpcap:打印 tcp 源和目标端口

libpcap: printing tcp source and destination ports

我遇到了一个奇怪的问题

正在检索 tcp header 并尝试打印源端口和目标端口 代码:

src_p = tcp->th_sport;
dest_p = tcp->th_dport;
output  (in hex):
8e08 and 64a2

wireshark 显示端口是 088e 和 a264

为什么 libpcap 交换字节? 还是我的代码有问题?

PS:我正在使用 this program 中显示的结构。

端口以网络字节顺序(大端)存储在 TCP header(大多数协议使用大端通过网络发送 multi-byte 数字endian,因此得名)。当 Wireshark 将字节转换为 human-readable 数字时,它只是将字节转换为 主机字节顺序 (大端或小端,取决于您的 PC 的硬件,因此是昵称)。在您的代码中,您可以使用平台的 ntohs() 函数来做同样的事情。