TCP三大特色

TCP对比UDP的三大特色:可靠传输,流量控制,拥塞控制

可靠传输对应于TCP实现中的超时重传,这看似很简单,但选择重传的时机却很是复杂.当前

采取karn算法,总的原则有:

超时重传时间RTO(Retransmission Time-Out)应略大于加权平均往返时间RTTs,其中RTTs

比报文段的往返时间RTT(Round Trip Time)值更平滑(即两个相隔的RTTs值比两个相邻的

RTT值更差距更少),具体来说RTTs的计算如下:

新的RTTs = (1 - a) x (旧的RTTs) + a x (新的RTT样本)

其中RTT样本根据报文段发出时间以及相应的确认报文的接收时间来确定.

由上式可知,a的值越大,则RTT变化的幅度越大,而RFC 2988推荐的a值为1/8,这就不知道他

用什么数学方法计算出来的了.同时他也建议使用下式计算RTO:

RTO = RTTs + 4 x RTTd

而RTTd是RTT的偏差的加权平均值,它的计算与RTTs的计算模式相似,但我不明白有什么意

义,就不写出来了.

而第二个原则是,当报文段发生重传时,不采用这个报文段作计算RTO的样本,但这样就会出

问题,例如某时刻之后传播时延突然增大了许多,导致在原本的RTO时间内,报文未能收到确

认,于时重传,但由于重传之后RTO并不会更新(不选择重传报文作样本),所以后续发送的所

有报文只能继续采用旧的RTO,这将导致所有报文至少都要重传一次.

所以必须对karn算法作出修正,方法是:报文段每重发一次,就将RTO增大一倍.然后当重传

不再发生时再重新计算RTO.

 

流量控制比较简单,只要发送方在接收方的接收窗口大小范围内发送报文就可以了,但考虑

到传输效率问题,例如rlogin之类的交互式应用时,除了简单的不超出范围传送外,还需要

令传输更有效率,也就是避免小分组在网络上的传送,这时可采用Nagle算法,即:

发送第一个字节,然后在确认应答来到之前缓存所有要发送的小分组,在应答到来之后才可

发送.

还有一个问题叫糊涂窗口综合症,具体表现为:当接收缓存已满,而接收进程每次取出一个

字节,这将导致只有一个字节的接收空间也会通知发送方,这时发送方发送一个字节,如此

循环.解决方法是让接收方等待一段时间,直到接收缓存可容纳一个最长的报文段(MSS)或

接收缓存有一半的空闲空间时才发送确认给发送方.

 

拥塞控制控制的是整个网络的流量,而流量控制仅仅是点对点通信双方的问题,可以想像,

拥塞控制比流量控制要复杂得多.

RFC 2581定义了进行拥塞控制的四种算法:慢开始(slow-start),拥塞避免(congestion

avoidance),快重传(fast retransmit)和快恢复(fast recovery).在TCP的实现中,这四种

算法是配合使用的,《计算机网络》第212页的图很好的描述了这一点.

当采用快恢复算法时,慢开始只是在TCP连接建立时和网络出现超时时才使用.

当然拥塞控制还会用到超时重传,毕竟拥塞发生时报文会丢失.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值