TCP/IP知识总结(TCP/IP协议族读书笔记四)

  参考:http://blog.chinaunix.net/uid-26275986-id-4109679.htmlhtml

  继续!TCP的流量控制和拥塞控制。算法

  TCP相对UDP可靠的地方在于它的拥塞控制、流量控制。缓存

一.流量控制网络

  若是发送方把数据发送得过快,接收方可能会来不及接收,这就会形成数据的丢失。所谓流量控制就是把发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制能够很方便的在TCP链接上实现对发送方的流量控制。主要的方式就是返回ACK中会包含本身的接受窗口的大小,而且利用大小来控制发送方的数据发送。ui

  滑动窗口协议:TCP是全双工协议,发送方和接收方各自控制本身的缓冲区。发送放成功发送了数据,只有获得接收方的确认以后,才会移动滑动窗口离开已发送的数据;同时接收方则确认连续的数据分组,对于乱序的分组则先接收下来,避免网络重复传递spa

  中止等待协议:发送方和接收方都使用了大小为1的滑动窗口。发送方一次发送一个分组,而后在发送下一个分组以前要先等待一个确认。它是面向链接的,提供流量控制和差错控制。所须要的缓冲存储空间最小,缺点是信道效率很低。在任什么时候候信道中都只有一个分组和一个确认。流量控制是经过迫使发送方等待确认来实现,差错控制是经过丢弃损坏的分组并让发送方在计时器超市后重传未确认的分组来实现。.net

  返回N协议:为了提升传输的效率,在发送方等待确认时应当有多个分组正在传送中。也就是咱们应当让多个分组处于等待确认的状态,以便发送方在等待确认的同时,信道也能保持忙绿的状态。GBN的关键是咱们在收到确认以前可以发送多个分组,但接收方只能缓存一个分组。发送方为发送出去的分组保存副本直到确认到达。发送窗口必须小于2^m。(发送方不用等待接收方的应答,持续的发送多个帧,假如发现已发送的帧中有错误发生,那么从那个发生错误的帧开始及其以后全部的帧所有再从新发送。)复杂度低,可是没必要要的帧会再重发,因此大幅度范围内使用的话效率是不高的。unix

  

  

  流量控制htm

  

二.拥塞控制blog

  网络中的链路容量和交换结点中的缓存和处理机都有着工做的极限,当网络的需求超过它们的工做极限时,就出现了拥塞。拥塞控制就是防止过多的数据注入到网络中,这样可使网络中的路由器或链路不致过载。经常使用的方法就是:
1. 慢开始、拥塞控制
2. 快重传、快恢复
     一切的基础仍是慢开始,这种方法的思路是这样的:
-1. 发送方维持一个叫作“拥塞窗口”的变量,该变量和接收端口共同决定了发送者的发送窗口;
-2. 当主机开始发送数据时,避免一会儿将大量字节注入到网络,形成或者增长拥塞,选择发送一个1字节的试探报文;
-3. 当收到第一个字节的数据的确认后,就发送2个字节的报文;
-4. 若再次收到2个字节的确认,则发送4个字节,依次递增2的指数级;
-5. 最后会达到一个提早预设的“慢开始门限”,好比24,即一次发送了24个分组,此时遵循下面的条件断定:
  *1. cwnd < ssthresh, 继续使用慢开始算法;
  *2. cwnd > ssthresh,中止使用慢开始算法,改用拥塞避免算法;
  *3. cwnd = ssthresh,既可使用慢开始算法,也可使用拥塞避免算法;
-6. 所谓拥塞避免算法就是:每通过一个往返时间RTT就把发送方的拥塞窗口+1,即让拥塞窗口缓慢地增大,按照线性规律增加;
-7. 当出现网络拥塞,好比丢包时,将慢开始门限设为原先的一半,而后将cwnd设为1,执行慢开始算法(较低的起点,指数级增加);

     上述方法的目的是在拥塞发生时循序减小主机发送到网络中的分组数,使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完毕。慢开始和拥塞控制算法经常做为一个总体使用,而快重传和快恢复则是为了减小由于拥塞致使的数据包丢失带来的重传时间,从而避免传递无用的数据到网络。快重传的机制是:
-1. 接收方创建这样的机制,若是一个包丢失,则对后续的包继续发送针对该包的重传请求;
-2. 一旦发送方接收到三个同样的确认,就知道该包以后出现了错误,马上重传该包;
-3. 此时发送方开始执行“快恢复”算法:
  *1. 慢开始门限减半;
  *2. cwnd设为慢开始门限减半后的数值;
  *3. 执行拥塞避免算法(高起点,线性增加);

 

 

QUIZ:

  TCP链接创建后,是经过什么保持的呢?

ANSWER:

  网络中接收和发送数据都是经过SOCKET实现的。可是若是套接字断开,那发送数据和接收数据就必定会出现问题。如何判断套接字是否可用呢?也就是如何保持长链接呢?TCP为咱们设置了一个叫心跳的机制,若是设置了心跳,那么TCP就会在必定的时间内发送你设置的次数的心跳,而且此信息不会影响协议,让对方知道本身“还活着”,确保链接的有效性。

 

QUIZ:

  什么是长链接?什么是短链接?

ANSWER:

  长链接指在一个TCP链接上能够连续发送多个数据包,在TCP链接保持期间,若是没有数据包发送,须要双方检测包以维持此链接;短链接是指通讯双方有数据交互时,就创建一个TCP链接,数据发送完成后,则断开此TCP链接。长链接适用于操做频繁,点对点通讯,且链接数不太多的状况;短链接适用于银行,由于它管理起来比较简单,存在的链接都是合理的链接。

相关文章
相关标签/搜索