【发布时间】:2013-03-04 01:12:45
【问题描述】:
我想用libpcap抓包 但由于以太网标头或 802.11 标头的长度可能会有所不同 IP头的长度也可能不同, 如何确定 IP 标头和 TCP 标头的起始字节(指针) 另外,如何区分一个数据包是纯IP数据包、TCP数据包还是UDP数据包? 是否有任何 API 或方法可以做到这一点? 谢谢!
【问题讨论】:
-
以太网头的长度不能变化!在偏移量 14 处,您将找到 IP 数据包,然后从那里您可以找到 IP 标头的长度并将其添加到 14 以获得 TCP 标头的偏移量。
-
那么 802.11 标头呢?
-
我从来没有在数据包捕获中看到过其中的一个,我也不是很熟悉它,但它似乎有一个固定的大小(30 字节 + 4 字节的预告片),所以,也不是问题。
-
当我收到一个数据包时,我必须判断第二层包头的大小,因为它可能是以太网包头或802.11包头。
-
但是在单个捕获文件中,数据包都是相同类型的,the header tells you which one it is!