例如,当magic_number为 0xa1b2c3d4 时,ether_type为 0x0008 。
然后,如果magic_number为 0xd4c3b2a1 ,则e ther_type 是否为 0x0800 ?
我只有 .pcap 个文件,其中magic_number是 0xa1b2c3d4 ,所以我无法验证自己。
或者有人可以上载一个 .pcap 文件,该文件的magic_number为 0xd4c3b2a1 ,那么我可以自己分析一下。
谢谢。
答案 0 :(得分:0)
根据https://www.gitignore.io/api/unrealengine:
这允许软件读取文件以确定 写入文件的主机的字节顺序是否与 在其上读取文件的主机的字节顺序,因此 每个文件和 每个数据包 标头中的值是否需要 字节交换。
我认为答案是肯定的。
答案 1 :(得分:0)
以太网类型字段在数据包中始终按大端字节(“网络”)字节顺序进行,因此,要读取它,必须使用例如以下方法将其从大端字节顺序转换为计算机的字节顺序,ntohs()
。
这与编写文件的主机的字节顺序无关;使用ntohs()
可以在具有所有pcap文件的所有计算机上使用。
(但是请记住,在某些机器上,您必须一次获取一个以太网类型字段(或任何其他多字节整数字段)一个字节并将这些字节组合为值,因为机器会捕获未对齐的内存访问。例如,请参见tcpdump源文件中EXTRACT_
中的extract.h
宏/函数。)