您的位置:首页 > 理论基础 > 计算机网络

TCP协议的流量控制、拥塞控制和差错控制

2015-04-16 11:31 351 查看
流量控制:

1、流量控制是管理两端的流量,以免会产生发送过块导致收端溢出,或者因收端处理太快而浪费时间的状态。用的是:滑动窗口,以字节为单位

2、窗口有3种动作:展开(右边向右),合拢(左边向右),收缩(右边向左)这三种动作受接收端的控制。

合拢:表示已经收到相应字节的确认了

展开:表示允许缓存发送更多的字节

收缩(非常不希望出现的,某些实现是禁止的):表示本来可以发送的,现在不能发送;但是如果收缩的是那些已经发出的,就会有问题;为了避免,收端会等待到缓存中有更多缓存空间时才进行通信。

发端窗口的大小取决于收端的窗口大小rwnd(TCP报文的窗口大小字段)和拥塞窗口大小cwnd(见拥塞控制)

发端窗口大小 = min{ rwnd , cwnd };

3、关闭窗口:窗口缩回有个例外,就是发送rwnd=0表示暂时不愿意接收数据。这种情况下,发端不是把窗口收缩,二是停止发送数据。(为了比避免死锁,会用一些探测报定时发送试探,见定时器一节)

4、问题:某些时候,由于发端或收端的数据很慢,会引起大量的1字节数据痛惜,浪费很多资源。

(1)、发端的进程产生数据很慢时候,时不时的来个1字节数据,那么TCP就会1字节1字节的发送,效率很低。

解决方法(Nagle算法):

a、将第一块数据发出去

b、然后等到发送缓存有足够多的数据(最大报文段长度),或者等到收端确认的ACK时再发送数据。

c、重复b的过程

(2)、收端进程由于消耗数据很慢,所以可能会有这么一种情况,收端会发送其窗口大小为1的信息,然后有是1字节的传输

解决办法(2种)

a、Clark方法:在接收缓存的一半变空,或者有足够空间放最大报文长度之前,宣告接收窗口大小为0

b、推迟确认:在对收到的报文段确认之前等待到足够的接收缓存,或者等待到一个时间段(现在一般定义500ms)

拥塞控制:

1、如果网络上的负载(发送到网络上的分组数)大于网络上的容量(网络同时能处理的分组数),就可能引起拥塞,判断网络拥塞的两个因素:延时和吞吐量。拥塞控制机制是:开环(预防)和闭环(消除)(见网络原理相关书籍,略)

tcp处理拥塞的三种策略:慢启动(指数增大),拥塞避免(加法增大),拥塞检测(除2减少,或叫做乘法减少)

2、慢启动:指数增大

/* ssthresh是慢开始门限,slow start threshold表示一个上限,一般的实现为65535B */

cwnd = 1;(1表示一个MSS报文段,不是一个字节)

while ( cwnd < ssthresh )

if( 发出的报文段确认 )

cwd *= 2;

3、拥塞避免:加法增大

当到达ssthresh之后,就是加法阶段了,每收到一个确认,cwd += 1;

4、拥塞检测:乘法减少(除2减少)

当报文需要重传时,说明拥塞可能发生了,由于重传有2种情况,所以也分两种处理

(1)、由于超时重传,这是拥塞的可能性比较大,如下做强反映调整

a、 ssthresh /= 2;

b、 cwnd = 1;

重新慢启动过程

(2)、由于收到3个重复的ACK的重传,采取弱反映:

a、ssthresh /= 2;

b、cwnd = ssthresh;

c、开始拥塞避免过程

差错控制:

1、TCP必须保证数据:按序,没有差错,没有部分丢失,没有重复的交给应用层。方法就是:校验和,确认,超时重传

2、校验和:和UDP的做法一样,也要伪首部,和UDP不同的是这个功能在TCP中是必须的

3、确认:ACK的确认机制(下面是一些原则)

a、ACK报文不需要确认,也不消耗序号

b、当一端发送数据时,尽量包含捎带确认。

c、收端推迟发送ACK报文段,如果仅有一个未确认的按序报文段;延迟到500ms,或者有第二个报文段接收时(转d),或者有数据要发送时(转b)

d、任何时候,不能有两个(以上)未确认的报文段(就是说如果收端有两个未确认的按序报文段,就马上发送ACK报文段进行确认)

e、当收到一个序号比期望序号还大的报文段时,马上发送ACK,让发端进行快重传

f、收到重复的报文段,就立即发送确认(解决ACK丢失问题)

g、丢失的报文段到达,发送确认,表示已经收到了丢失的报文

4、确认类型

累计确认:收端忽略掉所有失序报文,告知发端他期待下一个收到的序号,叫做肯定累计ACK。肯定是说:丢弃的,丢失的,重复的都不报告。

选择确认(SACK):在某些新TCP实现里面实现了这个东西,报告失序和重复的数据,作伪TCP首部选项字段的一部分。

5、重传(两种情况) : 重传定时器时间到,或者 发端收到重复的三个ACK(快重传)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: