UDP打孔与移动服务提供商不可能(UDP Hole Punching not possible wi

2019-07-30 19:38发布

实际上IAM编码,其接收,它连接到PC摄像头的图片的机器人应用程序。 为了获得更多的FPS我使用UDP协议而不是TCP的。 我们的想法是,在PC发送图片到手机的IP和端口。 但手机的供应商有不同的公共端口。 所以我不能直接解决了电话。 这就是为什么我试图解决通过UDP打孔的问题,但没有工作。 当我的手机发送一个数据包发送到上位机,上位得到手机的公网IP和端口。 出现这种情况每秒保持conenction开放。 然后服务器一样快,他可以发送webcame帧到这个IP和端口。 但手机只接收10-15图片wihtin 1-2秒。 在此之后,供应商似乎因为手机犯规得到任何进一步的数据包进行过滤每一个后续的分组或类似的东西。

现在,我的问题是:发生了什么(或什么是供应商在做),我该如何解决这个问题? TCP协议的工作,但是,因为过多的开销及纠错的流过慢。

Answer 1:

有几个问题,以保持与UDP,这是在移动网络放大的心态:

  • 正如你可能知道,一旦你发送一个UDP数据报,也绝对不能保证它会得到通过,并没有肯定的方式来知道发生了什么,如果它没有。

  • 有效载荷比大致1400字节的有可能被分解成IP片段。 接收操作系统可以重新组装的那些成一个整体包,但仅当每个片段到达。 一些路由器丢弃任意片段,一些防火墙丢弃的片段,如果它们包含特定字节模式,以及一些限值,在片段可被发送的速率。 它最好始终保持你的小数据包和处理重组和自己缺少的部分的重复。

  • 没有流量控制:如果任何一台路由器的缓冲区已满,之后,一切都将被丢弃。 有些路由器将开始随机丢弃报文的百分比,如果他们的缓冲区增长,但仍未充分。 如果去比一些任意的阈值更快一些防火墙将列入黑名单的UDP源。

在一般情况下,设备和防火墙制造商往往把UDP像废话所以作为UDP开发人员,你必须是一个额外的好公民,以不下去了甩:调节你的流量,请记住,丢弃的数据包的意思是,你可能会走得太快,并保持包小。 有很多,你可以逃脱在受控的环境,但如果应用程序将“在野外”进行部署,将采取了很多精心设计的编程,以避免出现问题。



文章来源: UDP Hole Punching not possible with mobile provider