libpcap:打印tcp源和目标端口

时间:2015-12-23 05:35:55

标签: c sockets tcp libpcap

我面临一个奇怪的问题

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

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

wireshark显示端口是 088e和a264

为什么libpcap交换字节? 或者我的代码有问题吗?

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

1 个答案:

答案 0 :(得分:0)

端口以TCP头中的网络字节顺序(大端)存储(大多数协议使用big endian通过网络发送多字节数字,因此是昵称)。 Wireshark只是在将字节转换为人类可读数字时,将字节转换为主机字节顺序(大端或小端,取决于您的PC硬件,因此是昵称)。在您的代码中,您可以使用平台的ntohs()函数执行相同的操作。