2015-12-23 50 views
0

我面临着一个奇怪的问题的libpcap:印刷TCP源端口和目的端口

检索TCP报头,并试图打印源端口和目的端口 代码:

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

Wireshark的表示,端口是 088e和a264

为什么libpcap交换字节? 或者我的代码有问题吗? PS:我使用this program中显示的结构。

回答

0

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