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

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

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

请帮帮我..

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

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

提前致谢

【问题讨论】:

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

标签: c# tcp network-programming udp pwnat


【解决方案1】:

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

【讨论】:

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