UDP 收包失序时怎么判定有丢包
UDP 收包失序时如何判定有丢包
RT
欢迎大家讨论这个问题:
UDP在收包时会失序也会丢包,发送时给每个包按顺序打上序号从一开始 收包可能的样本是 1 3 4 5 6 ...丢包; 也可能是 1 4 5 2 3 6 ... 乱序;
现假设是第二种情况,收包顺序是乱的。当收到包序号为5时,怎么样决定是否发生了丢包,还是说只能给出包丢失的概率(收包还在继续,无法确定将来是否能收到现在没有收到的包,收到包5时,没有收到包2,3,),有人说把包收完然后去数就行了,问题是在实时情况下不可能知道包是否已经发完。
我想请教各位,实际开发中这种问题是怎么处理的,仅仅只是做一个大的缓冲区吗。
------解决方案--------------------
问题是在实时情况下不可能知道包是否已经发完---在数据包中用某一位来标识是第一个 包 还是中间包 还是最后一个包 不就是了么
------解决方案--------------------
自己给包编号
------解决方案--------------------
你这个属于UDP可靠传输范畴。
接收乱序完全是有可能的,乱序分两种情况,一种是不同序号的网络包,经过的路由路线不一样,导致最终的到太乱序。另外一种情况就是,重发,引起的乱序。
发生乱序后,怎么办泥?
在UDX协议中,我是这样处理的,
申请一个list用来保存收到的包,插入的时候,判断不要重复插入。
然后,提交给应用层时,按包序号一个个取,当发生乱序时,比如,现在list中是1,2,3,5,6,7.五个包。四号包丢失,我们取包时,从1开始while取,当取到4时发现包没有,就break。一直等到收到4号包,从复前面的过程。
udx协议也是用来传输实时,非实时数据的,在现有网络条件下,可靠UDP完全是有必要的。
有兴趣的,可以与我讨论。
RT
欢迎大家讨论这个问题:
UDP在收包时会失序也会丢包,发送时给每个包按顺序打上序号从一开始 收包可能的样本是 1 3 4 5 6 ...丢包; 也可能是 1 4 5 2 3 6 ... 乱序;
现假设是第二种情况,收包顺序是乱的。当收到包序号为5时,怎么样决定是否发生了丢包,还是说只能给出包丢失的概率(收包还在继续,无法确定将来是否能收到现在没有收到的包,收到包5时,没有收到包2,3,),有人说把包收完然后去数就行了,问题是在实时情况下不可能知道包是否已经发完。
我想请教各位,实际开发中这种问题是怎么处理的,仅仅只是做一个大的缓冲区吗。
udp
------解决方案--------------------
问题是在实时情况下不可能知道包是否已经发完---在数据包中用某一位来标识是第一个 包 还是中间包 还是最后一个包 不就是了么
------解决方案--------------------
自己给包编号
------解决方案--------------------
你这个属于UDP可靠传输范畴。
接收乱序完全是有可能的,乱序分两种情况,一种是不同序号的网络包,经过的路由路线不一样,导致最终的到太乱序。另外一种情况就是,重发,引起的乱序。
发生乱序后,怎么办泥?
在UDX协议中,我是这样处理的,
申请一个list用来保存收到的包,插入的时候,判断不要重复插入。
然后,提交给应用层时,按包序号一个个取,当发生乱序时,比如,现在list中是1,2,3,5,6,7.五个包。四号包丢失,我们取包时,从1开始while取,当取到4时发现包没有,就break。一直等到收到4号包,从复前面的过程。
udx协议也是用来传输实时,非实时数据的,在现有网络条件下,可靠UDP完全是有必要的。
有兴趣的,可以与我讨论。