《TCP/IP详解卷一》学习笔记(11)TCP的交互数据流

引言

研究发现,如果按照分组数量计算,约有一半的TCP报文段包含成块数据(如电子邮件、FTP和Usenet新闻),另一半则包含交互数据(如Telnet和Rlogin)。如果按照字节计算,成块数据和交互数据的比例约为9:1。这是因为成块数据的报文段基本都是满长度的,而交互数据则小得多。

TCP要处理这两类数据,使用的处理算法有所不同。本篇笔记以Rlogin应用为例观察交互数据的传输过程。并揭示延迟确认是如何工作的以及Nagle算法怎样减少了通过广域网络传输的小分组数目。

交互式输入

首先来观察在一个Rlogin连接上键入一个交互命令时所产生的数据流。

产生了4个报文段:

(1) 来自客户的交互按键

(2) 来自服务器的按键确认

(3)来自服务器的按键回显

(4)来自客户的按键回显确认

 

延迟确认

通常TCP在接收到数据时并不立即发送ACK;相反,它延迟发送,以便将ACK与需要沿该方向发送的数据一起发送。绝大多数实现采用的时延为200ms。

Nagle算法

在广域网上,小分组会增加拥塞出现的可能,一种比较好的方法是采用Nagle算法。

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

该算法的优点在于它是自适应的:确认到达的越快,数据发送地越快。

发布了23 篇原创文章 · 获赞 0 · 访问量 979

猜你喜欢

转载自blog.csdn.net/u014635079/article/details/89052256