《TCP/IP详解 卷1:协议》 读书笔记 第19章 TCP的交互数据流

来源:互联网 发布:windows 10虚拟光驱 编辑:程序博客网 时间:2024/05/21 14:59

TCP的交互数据流

  • TCP的交互数据流
    • 引言
    • 交互式输入
    • 经受时延的确认
    • Nagle算法
      • 关闭Nagle算法
    • 窗口大小通告


引言

TCP通信量的研究:

  • 按照分组数量计算:一般TCP报文段包含成块数据(如FTP、电子邮件和Usenet新闻),另一半则包含交互数据(如Telnet和Rlogin)。
  • 按照字节计算:90%为成块数据,10%为交互数据。

交互式输入

在一个Rlogin连接上键入一个交互命令所产生的数据流,通常每一个交互按键都会产生一个数据分组,每次从客户传到服务器的是一个字节的按键。
交互按键回显的方法


经受时延的确认

通常TCP在接收到数据时并不立即发送ACK;它会等到有需要发送的数据,再和ACK一起发送。(有时候称为数据捎带ACK)
绝大多数采用的时延为200ms,TCP将以最大200ms的时延等待是否有数据一起发送。每次等200ms,然后发一次。

ACK等待发送的时间总是不大于定时器,因为ACK在1~200ms内到达,而定时器在200ms溢出,那它等待的时间肯定小于200ms啦。


Nagle算法

交互数据可能是很多的小分组,比如一个字节,就要发送41字节的分组:IP首部+TCP首部+1=41.
在局域网上这些小分组通常不会有问题,局域网很少拥塞。但是在广域网上,这些小分组就增加了拥塞的可能。

Nagle算法:要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组确认到达之前不能发送其他的小分组;TCP收集这些小分组,在确认到来时一起以一个分组发出去。

优点:减少拥塞的可能。
缺点:增加时延。

关闭Nagle算法

有时候需要关闭Nagle算法,因为有些应用必须无时延发送。


窗口大小通告

TCP报文段会通报窗口大小win,一般为4096.表示缓存可以接收的数据大小。

0 0