问题标签 [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.
networking - 如何读取 tcpdump 生成的包含大型 UDP 数据包的 pcap 文件并重新组装 IP 分段数据包?
我想读取一个由 tcpdump 生成的 pcap 文件,其中包含经历了IPV4 碎片的大型 UDP 数据包。原始数据包的大小约为 22000 字节。
在 C++ 中,我会使用 libtins 及其 IPV4Reassembler。有没有办法可以在 Rust 中做类似的事情?
目前在 Rust 中,这是我迄今为止所写的:一个高度不完整的首次尝试(使用 crate pnet
):
在 C++ 中,这是我将使用的代码(使用 libtins):
似乎一种解决方案是实现RFC815,但我不确定如何在 Rust 中做到这一点。我已经找到:
- 这个对 smolltcp 的旧拉取请求,但它似乎已被放弃。
- Fuschia reassembly.rs但我不知道如何在 Fuschia 之外使用它。
ip-fragmentation - 关于网络中的碎片
我最近开始研究网络,我有一个关于文件通过层时碎片的问题。
例如我有一个文件需要传输,第 4 层在这个文件中添加了 400 字节的标头。并且分片发生在第 3 层,例如创建 X 个分片,第 3 层将添加 20 字节的标头到第 2 层。
问题:第 2 层输入的每个分片的 header 总大小是 420 字节 = 400(第 4 层报头)+ 20(第 3 层报头)还是只有 20 字节(第 3 层报头)?
我研究了一个新的标题将被添加到消息中(它具有前一层的标题),当它通过层时。但是当它与碎片一起出现时我很困惑,并且在碎片之前已经存在一个标题。
我感谢您的所有回答和帮助。谢谢你。
sockets - 我无法在 TCP 连接上分段我的数据包
我一直在尝试对我的 TCP 数据包进行分段,但我没有找到任何有用的实现。我熟悉碎片化的理论和概念,甚至遇到过一些标志,例如IP_PMTUDISC_DONT
,,IP_PMTUDISC_WANT
并IP_PMTUDISC_DO
设置它们,但wireshark的捕获总是显示DF标志为on。
我已将“lo”网络接口的 MTU 设置为 1500,因为我在服务器和客户端上都使用了 LoopBack 地址。而且我认为碎片将由网络层处理,但我猜不是这样......请帮助我处理数据包的碎片。
这是我的代码...
服务器.cpp
客户端.cpp
这也引出了一个问题,我将如何以相同的顺序重新组装我的数据包?谢谢你。