交互式输入
    Rlogin连接上键入一个交互命令时所产生的数据流.
    使用Rlogin作为例子,因为它每次总是从客户发送一个字节到服务器。
    通常每一个交互按键都会产生一个数据分组,也就是说,每次从客户传到服务器的是一个字节的按键(而不是每次一行)
    而且,Rlogin需要远程系统(服务器)回显我们(客户)键入的字符。这样就会产生4个报文段:
    (1)来自客户的交互按键;
    (2)来自服务器的按键确认;
    (3)来自服务器的按键回显;
    (4)来自客户的按键回显确认。
    图19-1表示了这个数据流。
    image.png
    然而,我们一般可以将报文段2和3进行合并—按键确认与按键回显一起发送

    延迟确认
    通常TCP在接收到数据时并不立即发送ACK;相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(有时称这种现象为数据捎带ACK)。
    绝大多数实现采用的时延为200 ms,也就是说,TCP将以最大200 ms的时延等待是否有数据一起发送。

    Nagle算法
    开启Nagle算法:
    高吞吐。
    在一个Rlogin连接上客户一般每次发送一个字节到服务器,这就产生了一些41字节长的分组:20字节的IP首部、20字节的TCP首部和1个字节的数据。
    在局域网上,这些小分组(被称为微小分组(tinygram))通常不会引起麻烦,因为局域网一般不会出现拥塞。
    但在广域网上,这些小分组则会增加拥塞出现的可能。一种简单和好的方法就是采用RFC 896 [Nagle 1984]中所建议的Nagle算法。
    该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。而在希望减少微小分组数目的低速广域网上,则会发送更少的分组。

    关闭Nagle算法:
    低延迟。
    插口API用户可以使用TCP_NODELAY选项来关闭Nagle算法

    窗口大小通告
    通告窗口大小为 就是 win 大小(Windows size value)