拿着一个包裹

拿着一个包裹

我试图通过临时保存特定数据包来更改数据包流。

例如,如果数据包编号为1、2、3、4、5等,我想暂时存储数据包2,以便在需要时可以释放数据包2。也就是说客户端将得到 1,3,,4,5,$一些随机数,2

在我运行 #RELEASEPACKETMAGICCOMMAND 之前,您能帮我找到 #HOLDPACKETMAGICCOMMAND 数据包 3 吗?

我查看了针对特定数据包的 iptables 统计属性的实现,但我只能找到拒绝/丢弃。不幸的是,这两个人删除了数据包,而不是将其存储在可恢复的数组(如存储)中。

我查看了 TCPFLOW,但它只将原始数据包的副本存储到文件而不是内存中。

除了尝试在 iptables 中查找 MAGICPACKETHOLD 命令之外,还有其他更好的方法吗?

答案1

在网络中不存在保存数据包这样的概念。
数据包要么到达目的地,要么丢失(拒绝/丢弃)。

此外,在 TCP 中,数据包必须按顺序排列,如果接收到的数据包顺序不正确,则会重新排序。任何数据包丢失都会停止接收。

如果可以将数据包放入缓冲区,接收应用程序将简单地请求重新传输。应用程序将尝试恢复顺序并继续从丢失的特定数据包开始传输。

因此,即使可以保留数据包,也无法更改传输方式。

答案2

您可能对 Linux 软件包感兴趣交通管制( tc) 是 的一部分iproute2,至少使用它可以随机减慢(参数delayreorder和丢弃(参数loss)数据包。好的起点可能是https://wiki.debian.org/TrafficControl,使用流量控制如何创建过滤器

相关内容