TCPDUMP的IPv6格式的网络数据包

时间:2015-07-07 06:14:56

标签: android networking ipv6 tcpdump packet-sniffers

我是tcpdump工具的新手,我正在分析网络数据包,我已经分析了在wifi情况下生成的IPv4 Ip包。但是现在我在sim的3g网络中运行我的android手机,生成IPv6数据包,完全不同于IPv4格式。我对IPv6数据包结构感到困惑,

同样,我已经完成了IPv6标头格式,以及下面给出的手机数据包,这两种格式不匹配。我对IPv6标题感到困惑。

我的手机的本地IP是100.87.163.16,我的问题是如何检测收到的数据包和发送数据包。另外,我想找出IPv4格式的标头长度,有效负载长度,源和目标IP地址。我正在寻找你宝贵的建议。

感谢。

10:59:06.365651 00:00:32:06:af:56(oui Unknown)> 45:00:00:a8:35:49(oui Unknown),ethertype Unknown(0xd83a),长度168:

{{1}}

1 个答案:

答案 0 :(得分:0)

好的,让我们重建完整的原始数据包内容。

驱动程序提供了一个ARPHRD_值,该值已映射到DLT_EN10MB(可能是一个不合适的ARPHRD_值;这是一些Android手机界面中的一个已知问题,可能是为了应对DHCP实现的不足之处,以及更高版本的libpcap工作在它周围),所以数据包被解释为它是一个以太网数据包,实际上它可能不是以太网数据包。

因此tcpdump打印数据包就像前6个字节是目标MAC地址一样,接下来的6个字节是源MAC地址,接下来的2个字节是类型/长度字段。

因此,数据包开始于:

45 00 00 a8 35 49 00 00 32 06 af 56 d8 3a

并且真的看起来像是一个带有 no 链路层标头的IPv4数据包 - 正是所涉移动电话接口所提供的内容作为数据包。

libpcap 1.6.2及更高版本具有libpcap解决方法;如果您使用的tcpdump版本使用更高版本的libpcap,则可能会正确显示数据包。 (如果他们不这样做,也许黑客libpcap用来检测错误的ARPHRD_值需要检查更多接口名称;请将此报告给tcpdump-workers@lists.tcpdump.org或GitHub issues list for libpcap。 (将此报告为libpcap问题,而不是tcpdump问题,因为它是什么。)