《TCP IP 详解卷1:协议》阅读笔记

  • 时间:
  • 浏览:0
  • 来源:彩神官网

采用延时ACK的法律法律依据会减少ACK传输数目从而还也能 一定程度地减轻网络负载。该法律法律依据通常用于(大)批量数据传输,但在小数据包传输中,如交互式应用,则也能 采取Nagle算法。

当通告窗口值变为0时,还也能 有效的阻止发送端继续发送,直到窗口大小恢复为非零值。当接收端重新获得可用空间时,会给发送端传输另一个多多窗口更新告知其可继续发送数据。窗口更新通常不所含数据,为纯ACK,且这么保证其传输的可靠性。机会另一个多多所含窗口更新的ACK丢失,通信双方就会总爱地处等待情形:接收方等待接收数据(已将窗口设为非零值),发送方等待收到窗口更新告知其可继续发送。

结合上文的数据传输列表图,还也能 看后发送方和接收方都所含Win字段,且有无值。发送方请求数据包携带的Win有8320、4220,表示发送且未被确认的数据大小(即发送方窗口大小);接收方响应数据包携带的Win有10800、32900,表示接收方为即将到来的新数据预留的内存存储空间(接收端窗口大小)。

  2. 对于发送端来说,不应发送小的报文段,或者也能 由Nagle算法控制何时发送。为处里SWS问题图片,这么指示满足以下条件之一时也能传输报文段:

TCP流量控制机制通过动态调整窗口大小来控制发送端的操作,确保路由器/接收端消息不需要溢出。

在或多或少情形下,TCP未必对每个到来的数据包都返回ACK,利用TCP的要素ACK字段机会实现你你这个 功能。要素确认还也能 允许TCP延迟一段时间发送ACK,以便将ACK和相同方向上也能 传的数据结合发送。主机需求RFC[RFC1122]指出,TCP实现ACK延迟的数率单位应小于800ms,实践中最大取80ms。

接收窗口相对发送窗口较简单。对接收端来说,到达序列号小于左窗口边界(RCV.NXT)被认为是重复数据而丢弃;超过右边界(RCV.WND+RCV.NXT)的则超出处里范围,也被丢弃;接收窗口(RCV.WND)内会接收并保存。接收窗口这么在接收到数据序列号等于左边界时,才会地处窗口前移。

TCP连接的每一端都还也能 收发数据,连接的收发数据量是通过一组窗口形态来维护的。每个TCP活动连接的两端都维护另一个多多发送窗口形态和接收窗口形态。

  2. 打开,窗口右边界右移,使得可发送数据量增大。当已确认数据得到处里,接收端可用缓存变大,窗口也随之变大。

随着传输的进行,当接收到返回的数据ACK时,滑动窗口也随之右移,窗口两端的相对运动使得窗口增大或减小,可用另一个多多术语来描述窗口左右边界的运动:

TCP发送端滑动窗口形态记录了已确认、在传以及还未传的数据的序列号。提供窗口的大小是由接收端返回的ACK中的窗口大小字段控制的。

以ssh(安全外壳)应用为例,对另一个多多ssh连接,每个交互按键通常已经 生成另一个多多单独的数据报(每个按键独立传输)。另外,ssh会在远程系统调用shell,对客户端的输入字符做出回显。客户端的每个输入字符已经 生成另一个多多TCP数据段:客户端的交互击键的确认、服务器端对击键的确认、服务器端生成的回显、客户端对该回显的确认。通常服务器端对击键的确认和服务器端生成的回显还也能 合并成另一个多多信息返回。

基于窗口的流量控制机制,尤其是不使用大小固定的报文段的情形下机会会冒出称为糊涂窗口综合征(SWS)的严重不足。当冒出该问题图片时,交换数据段大小有无全长就是或多或少较小的数据段[RFC0813],机会每个报文段所含用的数据相对于头部信息的比例较小,或者耗费的资源也更多,相对应的数率单位单位也更低。

交互式TCP连接指该连接也能 在客户端和服务器之间传输用户输入信息,如按键操作、短消息、操作杆或鼠标操作。对于哪些操作,机会用较小的报文段来承载信息,则传输协议也能 耗费很高的代价;反之采用较大的报文段则会引入更大的延时,对延迟敏感类应用造成负面影响。或者也能 权衡相关因素来找到适合的法律法律依据。

左边是禁用Nagle算法的传输过程,右边是启用Nagle算法后的传输过程。前者19个包,传输持续了0.58s;后者1另一个多多包,传输持续了0.8s。

TCP连接的两端都机会导致 SWS的冒出:接收端的通告窗口较小、发送端发送的数据段较小。要处里SWS问题图片,也能 在发送端或接收端实现相关规则:

    a) 全长(发送MSS字节)的报文段还也能 发送。

针对你你这个 问题图片,TCP有以下处里法律法律依据:发送端会采用另一个多多持续计时器间歇性地查询接收端,看其窗口有无已增长。持续计时器会触发窗口探测的传输,强制要求接收端返回ACK(其中所含了窗口大小字段)。主机需求[RFC1122]建议在另一个多多RTO已经 发送第另一个多多窗口探测,已经 以指数时间间隔发送。窗口探测所含另一个多多当事人的数据,采用TCP可靠传输,或者还也能 处里由窗口更新丢失导致 的死锁。

延时确认和Nagle算法

    b) 数据段长度 ≥ 接收端通告过的最大窗口值的一半的,还也能 发送。

一下是针对远程服务器键入date命令并回车的TCP连接信息图:

接收端也维护另一个多多窗口形态,记录了已接收并确认的数据,以及它也能接收的最大序列号,该窗口还也能 保证其接收数据的正确性,不怎么是接收端希望处里存储重复的已接收和确认的数据以及处里存储不应接收的数据。

  1. 关闭,窗口左边界右移。当已发送数据得到ACK确认时,窗口会减小。

两张图是一样的操作,1键入d、2确认d并回显d、3对回显d的确认,依次类推至15完成date的输入并键入回车键,16~17是对日期的回显及确认,18~19是换行后对命令提示符的返回和对该数据的确认。

在Windows(Vista/7及已经 版本)和linux中,支持接收窗口自动调优。自动调优连接的在传输数据值也能 不断被估算,通告窗口值这么小于你你这个 值。你你这个 法律法律依据使得TCP达到其最大可用吞吐量,而未必提前在发送端或接收端设置过大的缓存。该功能可在系统中通过命令进行配置。

(a)是产生另一个多多报文段的过程,(b)是合并击键确认和回显报文后的过程。

禁用Nagle:

以上一种情形的传输派发成交换过程图如下:

阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的或多或少知识点,其间有无加入或多或少根据英文原版的当事人翻译和结合网上知识后的理解,很多或多或少段落之间未必也能串联上机会知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。

启用Nagle算法后的请求和响应包随时间分布呈一定的规律性,观察每组请求/响应的传输时刻 -- 0.0、0.19、0.38、0.57,遵循一定的模式:每另一个多多间隔为190ms,恰为连接的RTT。每发送一组请求和响应包也能 等到另一个多多RTT,这就加长了整个传输过程。Nagle算法做出了一种折中:传输的包数目更少而长度更大,但一同传输数率单位也更长。

  3. 收缩,窗口右边界左移。主机需求[RFC1122]未必支持你你这个 做法,但TCP也能 能处里你你这个 问题图片。

Nagle算法[RFC0896]要求,当另一个多多TCP连接所含在传数据(即哪些已发送但还未经确认的数据),小的报文段(长度小于SMSS)就这么被发送,直到所有的在传数据都收到ACK。或者在收到ACK后,TCP也能 派发哪些小数据,将其整合到另一个多多报文段中发送。你你这个 法律法律依据迫使TCP遵循停等(stop-and-wait)规程:这么等接收到所有在传数据的ACK后也能继续发送。该算法的精妙之地处于它实现了自时钟控制:ACK返回很慢,数据传输很慢。在相对高延迟的广域网中,更也能 减少微型报的数目,该算法使得单位时间内发送的报文段数目更少,也就是说RTT控制着发包数率单位。

接收窗口形态如下:

由接收端通告的窗口称为提供窗口,所含4~9字节;接收端已成功确认包括第八个字节在内的已经 数据,并通告了另一个多多6字节大小的窗口。窗口大小字段相对ACK号有另一个多多当事人的偏移量,发送端计算其可用窗口,即它还也能 立即发送的数据量,可用窗口计算值为提供窗口大小减去在传且未确认的数据值。变量SND.UNA和SND.WND分别记录窗口左边界和提供窗口值,SND.NXT记录下次发送的数据序列号,可用窗口值为SND.UNA+SND.WND-SND.NXT。

窗口左边界这么左移,机会它控制的是已确认的ACK号,具有要素性,不可返回。当得到的ACK号增大而窗口大小保持不变时,称为窗口向前滑动;随着ACK号增大窗口却减小,则左右边界距离减小,当左右边界相等时,称为零窗口。零窗口时,发送端这么再发送新数据,且TCP发送端开始探测对方窗口以伺机增大提供窗口。

  1. 对于接收端来说,不应通告小的窗口值。[RFC1122]描述的接收算法中,在窗口增至另一个多多全长的报文段(接收端MSS)机会接收端缓存空间的一半(取两者中较小值)已经 ,这么通告比当前窗口(机会为0)更大的窗口值。机会一种情形会用到该规则:当应用tcp连接处里接收到的数据后使得可用缓存增大;TCP接收端也能 强制返回对窗口探测的响应。

流量控制和窗口管理

以下是Nagle算法(以ssh操作为例)禁用和启用的传输过程区别比较:

    c) 满足一下任两根件的都还也能 发送:(i)某一ACK有无目前期盼的(即这么未经确认的在传数据);(ii)该连接禁用Nagle算法。

启用Nagle:

如下是TCP发送窗口形态图:

交互式TCP连接

回想一下已经 在12章介绍TCP数据形态的已经 ,窗口大小字段(Win,16位,以字节为单位)用于通告另一个多多接收方的窗口大小以达到流量控制。

猜你喜欢

与按不同的浏览器统计访问量相关精彩内容

作者:thinktothings2092人浏览##功能描述-nginx日志统计分析自动报表工具goaccess(推荐)-网站总访问量统计,按天统计访问量,按页面(不同URL)统

2020-01-20

1月30日云栖精选夜读:马来西亚引入中国人工智能 ,阿里云ET城市大脑为吉隆坡治堵

3月80日云栖精选夜读:三分钟,你想对世界说哪些丨蚂蚁金服发起青年导演公益短片计划6月11日云栖精选夜读丨普京点赞中国数字经济眼前 阿里巴巴正在改变俄罗斯商业《云栖精选》第7

2020-01-19

阿里巴巴iDST+阿里视频云:计算机视觉和机器学习在消费级视频中的应用

【云周刊】第155期:助APP尽情“撒币”,直播答题肩上的技术实现难度究竟几何?阿里巴巴iDST首席科学家兼副院长任小枫:最看好计算机视觉在这四大新零售细分方向的应用北京云栖大

2020-01-19

为什么有时候会因为男朋友的一句话心痛一下么

换一换你对你这名回答的评价是?可选中另另一个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个疑问。 我来答有点推荐展开全部不可能 你很在乎他并且 尽量想

2020-01-19

PostgreSQL Tutorial | psql的使用

16.psql支持输出格式化的命令,可能允许买车人定制输出的格式如此边框的列输出postgres=#SELECTversion();使用\g执行上四根命令,即SELECTver

2020-01-19