udp 隧道中的数据包丢弃和拆分

Posted

技术标签:

【中文标题】udp 隧道中的数据包丢弃和拆分【英文标题】:paket drop and splits in udp tunnel 【发布时间】:2011-02-14 12:11:57 【问题描述】:

目前我正在处理视频会议项目。为此,我使用pwnat 进行 nat 遍历。 pwnat 是基于 udp 隧道的。我使用 TCP 连接进行数据传输。

我的问题是,当我发送一个数据包时,它没有正确到达目的地。有时它会丢弃数据包,并且很多时候会将数据包分解(拆分)成碎片。

请帮帮我..

如何将一个数据包发送和接收成单件。所以,我可以正确地绘制图像并播放声音。

任何形式的帮助都会得到认可。

提前致谢

【问题讨论】:

我猜想用 UDP 建立 TCP 隧道会破坏使用 TCP 的意义并消除任何真正的顺序协议的可能性,但这只是一个猜测。 【参考方案1】:

TCP 没有数据包的概念。 TCP 流是一个连续的字节流——如果你想要一个字节流中的结构,你必须自己强加它,通过实现某种框架机制。一个简单的就是“长度前缀”——发送应用级帧时,首先发送帧的长度,然后是数据。

【讨论】:

感谢回复 我对网络不太了解,因为在 n/w 编程中是新的。通过查看我的日志文件。我发现在发送数据之前,数据长度为 16384 字节,并且在接收结束流长度为 11300,下一个流为 5084 字节。但有时它会收到 16384 字节的全长数据。这可能是因为 pwnat 正在处理 udp over tcp 并且它基于 udp 隧道的概念。 @SR Dusad:TCP 没有流中单个消息的概念。如果您发送 16384 个字节,您最终将收到这 16​​384 个字节 - 但您可能会以任意数量、任意大小的块接收它们。您的应用程序必须处理它。 感谢 caf :您的回答对我理解这个概念很有帮助

以上是关于udp 隧道中的数据包丢弃和拆分的主要内容,如果未能解决你的问题,请参考以下文章

C#多播UDP数据包丢弃,同时存储对象

Windows,UDP数据包静默丢弃

丢弃大于 1500 字节的 UDP 数据包

UDP 丢包的艺术

什么会导致 UDP 数据包在发送到 localhost 时被丢弃?

在 Linux 上模拟延迟和丢弃的数据包