我面临一个奇怪的问题
检索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 :(得分:0)
端口以TCP头中的网络字节顺序(大端)存储(大多数协议使用big endian通过网络发送多字节数字,因此是昵称)。 Wireshark只是在将字节转换为人类可读数字时,将字节转换为主机字节顺序(大端或小端,取决于您的PC硬件,因此是昵称)。在您的代码中,您可以使用平台的ntohs()
函数执行相同的操作。