博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP/IP详解 卷1 第十九章 TCP的交互数据流
阅读量:5955 次
发布时间:2019-06-19

本文共 933 字,大约阅读时间需要 3 分钟。

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算法来减少这些小报文段的数目。这个算法限制发送者任何时候只能有一个发送的小报文未被确认。

转载地址:http://bprxx.baihongyu.com/

你可能感兴趣的文章
js setTimeout 与 setInterval 以及 for 循环 刷新UI
查看>>
Samsung_tiny4412(驱动笔记07)----spinlock,semaphore,atomic,mutex,completion,interrupt
查看>>
substring 在C#,Javascript,SQL 中index开始值
查看>>
抽象工厂模式
查看>>
Android SDK镜像的介绍使用【转发】
查看>>
MVC 3.0 在各个版本IIS中的部署
查看>>
Java入门记(四):容器关系的梳理(上)——Collection
查看>>
HTML5 Storage API
查看>>
range-bar
查看>>
Bootstrap<基础十> 响应式实用工具
查看>>
微价值:专訪《甜心爱消除》个人开发人员Lee,日入千元!
查看>>
裸函数naked解析
查看>>
Opencv学习笔记(六)SURF学习笔记
查看>>
IEE数据库kill指定条件的进程
查看>>
【leetcode】Kth Largest Element in an Array (middle)☆
查看>>
算法-表达式求值
查看>>
github 提交报403 forbidden的错误解决
查看>>
jquery 事件冒泡的介绍以及如何阻止事件冒泡
查看>>
兰州大学,财经兰州大学改名
查看>>
CreateFont详细解释
查看>>