UDP可靠性设计

可靠性传输

主要是以下机制实现可靠性传输

1:ACK机制

2:重传机制

3:序号机制

4:重排机制

5:窗口机制

ACK机制

停等协议:

就是客户端每发一个包就等待服务端回一个ack

退回N帧协议

客户端比如发送8个包,但是服务端除了第二个包没有收到,其余包都收到了,此时就会重新从第二个包开始重传,3,4,5,6,7,8也会重新开始发送

选择重传

 

 客户端比如发送8个包,但是服务端除了第二个包没有收到,其余包都收到了,此时就会重新从第二个包开始重传,3,4,5,6,7,8不会重新开始发送

重传机制

RTT意思:就是发送方发送包的时间戳与接受到回应的ack之间的时间

 

利用RTT来现实重传,重传的条件有两个

1:在规定的RTT时间内没有收到ACK

2:包是缺失的

 

流量控制

恢复数据发送时机:

    是客户端每隔一段时间去发送一个探测包,探测服务端的接受缓冲区是否还有空闲。

拥塞控制

采用的是慢开始与快恢复的策略,当开始时,客户端就会发少量的包,从指数型增长,到达一定条件后转为线性发包;当客户端连续接受到三个ACK重复之后就说明已经开始丢包了,此时转入拥塞算法,降低发包的数量,从线性增长发包。

 

KCP协议设计

发送数据

 

将数据存储到send_queue队列当中去,然后放入到send_buf,此时如果对这个数据已经进行了ack应答了,将该数据从send_buf中删除;send_queue取出来放到buf中就释放了

接受数据

 服务端接受数据时先放入到buf中,进行排好序,将排好序的包放入到队列当中,再有用户态recv去取数据;没有排好序的包继续留在buf中,比如13之前没有12,就继续等待12的到来,来了之后就插入到13之前然后在插入到队列当中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值