UDP可靠传输UDP稳定传输技术 - 网通电信传输

UDP可靠传输UDP稳定传输技术 - 网通电信传输

 

 

1. 就上一篇 UDP传输与高延时的实现方式选择 作相关补充:

 

a. 假如需求是1毫秒, 那么可以使用timeSetEvent 这个多媒体的时钟来实现。
   经测试,普通电脑上基本都可以达到1毫秒的精度。

   而且时钟的好处就是不费CPU.

 

b. 假如一毫秒内需要发送多次数据, 只能采用高延时占CPU的方式来实现。
   然后加上时钟延时, CPU的消费就基本为0了。


2. 网通电信的传输极其困难

 

   经一周多时间的详细测试情况基本是这样的:
   我发送30个数据包每秒,只能收到20个左右。
  
   请问我需要多发送,还是少发送一点?

   我发送100个数据包每秒,只能收到70个左右。

   我发送150个数据包每秒,只能收到90个左右。
   我发送200个数据包每秒,只能收到102个左右。
   我发送250个数据包每秒,只能收到110个左右。
   我发送300个数据包每秒,只能收到107个左右。
 

  欢迎VC程序员加入VC 十年技术群 QQ群号: 30107096  共同研究技术


   这样的网络, 很领我困惑.

 

 

a. UDP可靠传输UDP稳定传输的速度调节依据 - 掉包率

   估计常见的UDP可靠传输的速度调节上是靠:掉包率来调节的。我的实现也是靠这个值来调节的。
   那么请问这样的情况的掉包率如何计算。这个计算方式,直接影响传输速度。

 

   UDP掉包率计算的指导思想是这样的:
   a. 许可偿试加大发送量. 不至于发送量变大,值突然变小。
   b. 许可有效值加大。许可掉包区间变大变小。

   注:掉包区间  =  最早掉的包 -> 最晚掉的包  这之间的距离


b. UDP可靠传输UDP稳定传输的速度调节依据 - 有效率

   发送方可以根据有效率来寻找一个发送频率。并不断偿试加大发送量。


 欢迎VC程序员加入VC 十年技术群 QQ群号: 30107096  共同研究技术


c. 有关掉包区间大小的控制问题以及UDP重复收包

   比如数据包ID为:1 -> 1000  假如接收方收到: 900个数据包时,向发送方索要:第1个数据包。当然因为接收方没有收到第1个数据包。

   这就意味着,发送方必须要存有: 1->900个数据包。

   另外一个问题就是:发送方什么时候可以丟掉第一个数据包呢? 

   方案一:根据接收方信息来确定。
   方案二:固定大小内存循环使用。


欢迎VC程序员加入VC 十年技术群 QQ群号: 30107096  共同研究技术


   了解了以上情况后,那么如何控制大小呢?  假如掉包区间 = 0 代表:延时0, 实时性最佳。有关实时性是视音频传输的重要需求。
   有关视音频传输还是以后再讨论吧。

   控制UDP掉包区间大小的方式一是:接收方固定时间检测掉包数据,总是从最早反馈给接受方。
   方式二是:区段反馈(利于减小重复反馈与重复收包, 不利于区间控制).


   有关重复收包, 我希望留给读者自己去实践。我这里只讲一点:

   first dropped packet 10 -----received---dropped---received---dropped---- end received packet 100
  
   我们需要反馈给发送方10-> 100之间的掉包情况,请求发送方重发。
   这是理论,假如我们这样做,那么就是我们在浪费带宽。

   最好的做法是:反馈给发送方10-> n 之间的掉包情况, 并且n 必须小于 100, n 与100越近代表重复收包越大。


   ----------------------------------------------------------------------------


   当然有关重复收包的控制问题,我提到的方式都是可行的,但不是最好的方式。因为情况不同更适合的方式不同。
   犹如视音频传输与文件传输,截然不同。一个注重实时性,一个注重速度。


欢迎VC程序员加入VC 十年技术群 QQ群号: 30107096  共同研究技术

   希望我以后会有时间再多写一点这方面的经验之谈的文章。更希望能带给读者一点用处。

 

 

 

你可能感兴趣的:(Socket)