1

我正在阅读libpcap 教程并使用了一些我想分析的捕获(我自己没有创建它们),所以我使用的是离线模式。

应用本教程时,似乎没有任何内容匹配。我没有从以太网帧中获得有效的 MAC 地址,甚至序言似乎都不正确。经过一些过期后,我启动了wireshark并注意到一些奇怪的东西。每个数据包都以6: 这些不是以太网(数据链路)层上的数据包,它们已经是 IP(网络)层的上一层(它们是 IPv6 数据包,这是预期的)。

当然,我现在可以轻松继续了,但我仍然想知道:我怎么知道捕获的包在哪一层?似乎至少有两种选择:在数据链路层保存和在网络层保存。也可能是我在传输层接收数据包吗?我该如何区分?用户必须告诉我吗?我真的不想去猜测,但是看到wireshark做对了,必须有一种简单的方法来确定它。

4

1 回答 1

2

libpcap 文件格式在其全局标头中有一个名为network指定数据链接类型的字段。这对应于 tcpdump 项目中关于各种Link-Layer Header Types的文档。

从那里,您将能够确定链接层包含多少字节(如果有),这将是您解析使用 libpcap 库创建的 pcap 文件的可靠方法。

我不知道“libpcap 系列”中的程序选项允许您从传输层开始捕获。

于 2013-11-14T02:54:15.857 回答