TCP-IP详解卷1-19:TCP的交互数据流
一:介绍
TCP数据流大致可以分为两类,交互式数据流和成块的数据流。
交互式数据流就是发送控制命令的数据流,比如relogin, telnet, ftp命令等。
成块数据流是用来发送数据包,网络上大部分的TCP包都是这种包。
二:交互式输入(以relogin为例)
许多TCP/IP的初者很吃惊地发现通常每一个交互按键都会产生一个数据分组,也就是说,每次从客户传到服务器的是一个字节的按键(而不是每次一行)。
而且,Rlogin需要远程系统(服务器)回显我们(客户)键入的字符。这样就会产生4个报文段:
1: 来自客户的交互按键;
2: 来自服务器的按键确认;
3: 来自服务器的按键回显;
4:来自客户的按键回显确认;
三:经受时延的确认
TCP交互式数据流通常使用“经过时延的确认”技术。即Server在接收到Client发送过来的数据时,并不马上发送ACK,而是等一小段时间,看看本机是否有数据需要反馈给Client。
如果有,就将数据包在此ACK包中,一起发送给Client。
一般情况下,这个延时为200MS。
四:NAGLE算法
1: 小分组
在一个Rlogin连接上客户一般每次发送一个字节到服务器,这就产生了一些41字节长的分组:20字节的IP首部、20字节的TCP首部和1个字节的数据。
在局域网上,这些小分组(被称为微小分组(tinygram))通常不会引起麻烦,因为局域网一般不会出现拥塞。
但在广域网上,这些小分组则会增加拥塞出现的可能。
2: 该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。
相反, TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去。
该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。
而在希望减少微小分组数目的低速广域网上,则会发送更少的分组。
3: 有时我们也需要关闭Nagle算法。一个典型的例子是X窗口系统服务器:小消息(鼠标移动)必须无时延地发送,以便为进行某种操作的交互用户提供实时的反馈。
TCP-IP详解卷1-19:TCP的交互数据流
最新推荐文章于 2023-05-31 09:52:41 发布