问题标签 [ip-fragmentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
368 浏览

networking - 如何读取 tcpdump 生成的包含大型 UDP 数据包的 pcap 文件并重新组装 IP 分段数据包?

我想读取一个由 tcpdump 生成的 pcap 文件,其中包含经历了IPV4 碎片的大型 UDP 数据包。原始数据包的大小约为 22000 字节。

在 C++ 中,我会使用 libtins 及其 IPV4Reassembler。有没有办法可以在 Rust 中做类似的事情?

目前在 Rust 中,这是我迄今为止所写的:一个高度不完整的首次尝试(使用 crate pnet):

在 C++ 中,这是我将使用的代码(使用 libtins):

似乎一种解决方案是实现RFC815,但我不确定如何在 Rust 中做到这一点。我已经找到:

0 投票
0 回答
10 浏览

ip-fragmentation - 关于网络中的碎片

我最近开始研究网络,我有一个关于文件通过层时碎片的问题。

例如我有一个文件需要传输,第 4 层在这个文件中添加了 400 字节的标头。并且分片发生在第 3 层,例如创建 X 个分片,第 3 层将添加 20 字节的标头到第 2 层。

问题:第 2 层输入的每个分片的 header 总大小是 420 字节 = 400(第 4 层报头)+ 20(第 3 层报头)还是只有 20 字节(第 3 层报头)?

我研究了一个新的标题将被添加到消息中(它具有前一层的标题),当它通过层时。但是当它与碎片一起出现时我很困惑,并且在碎片之前已经存在一个标题。

我感谢您的所有回答和帮助。谢谢你。

0 投票
0 回答
37 浏览

sockets - 我无法在 TCP 连接上分段我的数据包

我一直在尝试对我的 TCP 数据包进行分段,但我没有找到任何有用的实现。我熟悉碎片化的理论和概念,甚至遇到过一些标志,例如IP_PMTUDISC_DONT,,IP_PMTUDISC_WANTIP_PMTUDISC_DO设置它们,但wireshark的捕获总是显示DF标志为on。

我已将“lo”网络接口的 MTU 设置为 1500,因为我在服务器和客户端上都使用了 LoopBack 地址。而且我认为碎片将由网络层处理,但我猜不是这样......请帮助我处理数据包的碎片。
这是我的代码...

服务器.cpp

客户端.cpp

这也引出了一个问题,我将如何以相同的顺序重新组装我的数据包?谢谢你。