返回信息流不知道wireshark或者Sniffer对抓到的数据包处理时是怎么识别每层协议的。现在在用Winpcap编一个C++程序,用pcap_open_offline函数打开一个CAP或者PCAP文件,对每一个包在packet_handler中从抓到的报文头开始读到IP报文头,再进行相关处理。但是在找IP报头时,有的只需要跳过PPP头,有的需要跳过以太网报头和设备封装的IP,UDP,L2TP,PPP四层协议的报头才能找到真正的IP报头。现在对这两种报文的处理方式是手动改指针偏移量,不知道能不能有什么方法让程序自动识别找到IP报文头,就不用改来改去了。不知道是不是该发这里,哪位高人指点一下,谢谢了!
这是一条镜像帖。来源:北邮人论坛 / cpp / #17452同步于 2008/12/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助】网络数据包的处理问题
assisitant
2008/12/12镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不懂winpcap
但看上去你抓到的是以太网的数据包
这样应该是通过改指针偏移得到IP包头所在的。
看看怎么能直接抓到IP包。把修改指针偏移扔给内核去做。
可惜我要处理的数据包不是我自己抓的啊,是老师给的现成的文件
【 在 Hermione 的大作中提到: 】
: 不懂winpcap
: 但看上去你抓到的是以太网的数据包
: 这样应该是通过改指针偏移得到IP包头所在的。
: ...................
不会是计科的“计算机应用编程实验”吧
【 在 assisitant 的大作中提到: 】
: 可惜我要处理的数据包不是我自己抓的啊,是老师给的现成的文件
嗯,问了很多人都说除了改指针偏移量没有什么更好的方法了。很想知道wireshark是怎么识别的。
【 在 white127 的大作中提到: 】
: 只能一层一层的用指针把包剖开吧,其他还有什么好方法吗?
: pcap中应该是没有自动识别IP报文首部的功能吧
【 在 assisitant 的大作中提到: 】
: 嗯,问了很多人都说除了改指针偏移量没有什么更好的方法了。很想知道wireshark是怎么识别的。
wireshark也是一层一层解析的啊,只不过用winpcap+常用功能+友好的界面而已