首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PcapLiveDevice上配置pcapplusplus,使其不会忽略大于MTU大小的数据包?

如何在PcapLiveDevice上配置pcapplusplus,使其不会忽略大于MTU大小的数据包?
EN

Stack Overflow用户
提问于 2021-11-20 08:48:13
回答 1查看 49关注 0票数 0

我在c++中使用pcapplusplus库来处理tcp数据包。当我收到大于MTU大小的数据包时,我的程序停止进一步处理,因为TcpReassembly没有处理该数据包。由于这一点,onMessageReadyCallback不会调用该数据包。

更严重的是,当该分组被tcpReassembly忽略时,该分组的相应序列no,比方说x,也被忽略。所以我的程序不能处理任何其他传入的包,因为它期望一个序列号为x的包,但是tcpReassmbly已经忽略了这个包,所以它不会接收序列为no x的包,程序停止执行。

所以我的问题是,我们是否有一种方法来指导tcpReassembly不忽略大于MTU大小的数据包。只需将其转发到相应的函数回调?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-23 09:06:57

基本上,问题出在tcpreplay,而不是pcpp::TcpReassembly。Tcpreplay无法发送大于接口https://tcpreplay.appneta.com/wiki/faq.html.的MTU的数据包

现在让我看看发生问题的状态。我有一个pcap文件,我正在使用tcpreplay在接口上重放这些数据包。但是tcpreplay不会重放巨型数据包。它只是忽略了这些数据包。

因此,当该数据包被忽略时,TcpReassembly会等待该序列号,但将来也永远不会获得该序列号,因为该序列号已经被忽略。

虽然下一个数据包将会到来,但TcpReassembly不会在没有接收到被忽略的序列数据包的情况下继续进行。所以程序执行停止了,就像应用程序挂起一样,但那是在tcpreplay端,而不是TcpReassembly端。你不必担心TcpReassembly,它会重新组装它将接收到的任何数据包。MTU大小没有任何限制。我也检查了TcpReassembly的cpp文件,没有检查数据包大小是否大于MTU大小,然后忽略数据包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70044479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档