前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TCP/IP详解 卷1 第十九章 TCP的交互数据流

TCP/IP详解 卷1 第十九章 TCP的交互数据流

作者头像
xcywt
发布2018-03-28 11:14:39
5510
发布2018-03-28 11:14:39
举报
文章被收录于专栏:xcywtxcywt

19.1 引言

成块数据:比如ftp、电子邮件、Usenet新闻

交互数据:Telnet、Rlogin

 成块数据的报文段基本上都是满长度(full-size)的,而交互数据小的多(Telnet和Rlogin分组中通常约90%左右的用户数据小于10个字节)。

19.2 交互式输入

 在Rlogin键入一个交互命令时所产生的数据流,一般需要下面四个步骤:

然而我们一般可以将报文段2和报文段3进行合并—也就是按键确认和按键回显一起发送。这就是经受时延的确认。 

19.3 经受时延的确认

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

19.4 Nagle算法

微小分组(tinygram):41字节长的分组(20字节IP头,20字节TCP头,1字节数据)。

在局域网内一般不会出现拥塞,但是在广域网上这些小分组会增加出现拥塞的可能。

解决方法就是RFC 896中建议的Nagle算法。

该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组 的确认到达之前不能发送其他的小分组。相反、TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去。(简而言之就是把所有的小分组收集到一起再发送出去)

 19.4.1关闭Nagle算法

在X窗口系统服务器上,小消息(比如鼠标移动)必须无延时的发送,以便为进行某种操作的交互用户提供实时的反馈

19.5 窗口大小通告

19.6 小结

交互数据总是以小于最大报文段长度的分组发送。在Rlogin中通常只有一个字节从客户发送到服务器、Telnet允许一次发送一行输入数据,但是目前大多数实现任然是发送一个字节。

对于这些小的报文段,接收方使用经受时延的确认方法来判断确认是否可被推迟发送,以便和回送数据一起发送。这样通常会减少报文段的数目,尤其是对于需要回显用户输入字符的Rlogin会话。

在较慢的广域网环境中,通常使用Nagle算法来减少这些小报文段的数目。这个算法限制发送者任何时候只能有一个发送的小报文未被确认。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 19.1 引言
  • 19.2 交互式输入
  • 19.3 经受时延的确认
  • 19.4 Nagle算法
  • 19.5 窗口大小通告
  • 19.6 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档