实现可靠UDP通信的两种方式

实现可靠UDP通信的两种方式

众所周知UDP通信协议是不可靠的通信协议,其可靠性必须由上层应用实现。一般都会采用消息重传来实现其可靠性,采用消息重传的时候有两种方式,一种是发送者发起,另一种是接收者发起。

对于发送者发起的方式,一般情况下接收者会发送一个消息包的确认。发送者维护一个计时器并重传那些在某个确定的时间段里没有收到确认的消息包。这一类型的协议容易引起发送者溢出,因为要确认每一个发送的消息包。这种溢出现象被称为发送者(或者ACK)内爆。

对于接收者发起的方式,通信双方的接收者负责错误检测。在这个方式里,序列号被用于检测消息包丢失。当检测到消息包丢失,接收者请求发送者重传消息包。采用这种方法,如果消息包没有到达任何一个接收者,发送者容易因NACK溢出。这会引起发送者的负载过高和过多的重传。这种现像被称为NACK内爆。Ramakrishnan et al.在1987年提出可以使用定时器来限制消息包重传,从而避免NACK内爆。在现实应用中这种方式使用得较多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值