专栏名称: 林湾村龙猫
资深后台开发
目录
相关文章推荐
高校人才网V  ·  事业编制!攀枝花学院2025年第一批直接考核 ... ·  4 天前  
高校人才网V  ·  江西工程学院2025年招聘公告 ·  4 天前  
闹闹每日星运  ·  周运 | 闹闹12星座周运势:0317~0323 ·  4 天前  
闹闹每日星运  ·  己卯月12生肖运势 ·  3 天前  
51好读  ›  专栏  ›  林湾村龙猫

系列TCP/IP协议-数据交互(013)

林湾村龙猫  · 掘金  ·  · 2019-05-20 02:58

正文

阅读 70

系列TCP/IP协议-数据交互(013)

一、引言

当TCP连接建立上了,现在就需要通讯了。但是在不同的场景下,我们关心的地方不一样。如对于交互型的应用,我们关心实时性;对于视频文件传输等,我们更多的关心速度。 交互数据流 成块数据流 将可以解决这些问题。在一些关于TCP通信量的研究中,交互数据流与成块数据流的比例是1:9。

二、交互数据流

1.交互式例子

我们通过Rlogin命令(程序)来了解交互式输入,如图是一次按键的交互结果:

图1.一次按键交互
一次按键就会产生4个数据包。

  • 1.客户端到服务器的按键数据包。
  • 2.服务器到客户端的按键确认数据包。
  • 3.服务器到客户端的按键回显数据包。
  • 4.客户端到服务器的按键回显确认数据包。

在这里特意用Rlogin作为例子,因为它每次总是从客户发送一个字节到服务器。事实上,Telnet允许客户发送一行到服务器,通过使用这个选项可以减少网络的负载。

2.经过时延的确认数据包

在上面的例子中,每发送一次按键信息,都会产生4个数据包。事实上2数据包与3数据包可以合并在一起发送的。这样会减少不少数据包。通常TCP在接收到数据时并不立即发送ACK;相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(有时称这种现象为数据捎带ACK)。绝大多数实现采用的时延为 200ms,也就是说,TCP将以最大200ms的时延等待是否有数据一起发送。

3.Nagle算法

像这种交互数据流,每一次都发送一个字节(一个数据包)到服务器,在网上会产生很多微小的分组,在局域网中,这些分组通常不会引起麻烦,但是在广域网上,这些分组可能增加拥塞出现的可能。Nagle算法的出现就是为了解决这些问题。   Nagle算法要求一个TCP连接上最多有一个没有被确认的未完成分租,在该分组的确认到达之前不能发送其他分组。在等待确认数据包的时候,它会把需要发送的几个小分组合并在一起,在确认到达后,发送出去。   该算法的优点是它是自适应的:确认到达越快,数据就发送得越快。在希望减少小分组的低速网络上,会发送更少的分组。

三、成块数据流

1.正常块数据流例子







请到「今天看啥」查看全文