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

  • 时间:
  • 浏览:0

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

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

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

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

启用Nagle:

TCP连接的两端都因此愿因 SWS的一个劲 出现:接收端的通告窗口较小、发送端发送的数据段较小。要处里SWS难题,还能助 在发送端或接收端实现相关规则:

针对五种难题,TCP有以下处里土依据:发送端会采用另一个多多 持续计时器间歇性地查询接收端,看其窗口是与否已增长。持续计时器会触发窗口探测的传输,强制要求接收端返回ACK(其带有高了窗口大小字段)。主机需求[RFC1122]建议在另一个多多 RTO很久发送第另一个多多 窗口探测,很久以指数时间间隔发送。窗口探测带有另一个多多 个人的数据,采用TCP可靠传输,因此还能助 处里由窗口更新丢失愿因 的死锁。

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

窗口左边界还能助 了左移,因此它控制的是已确认的ACK号,具有每项性,不可返回。当得到的ACK号增大而窗口大小保持不变时,称为窗口向前滑动;随着ACK号增大窗口却减小,则左右边界距离减小,当左右边界相等时,称为零窗口。零窗口时,发送端还能助 了再发送新数据,且TCP发送端结速英语 探测对方窗口以伺机增大提供窗口。

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

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

阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一点知识点,其间有的是加入一点根据英文原版的个人翻译和结合网上知识后的理解,好多好多 一点段落之间能助 够够串联上因此知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。

在Windows(Vista/7及很久版本)和linux中,支持接收窗口自动调优。自动调优连接的在传输数据值还能助 不断被估算,通告窗口值还能助 了小于五种值。五种土依据使得TCP达到其最大可用吞吐量,而我不要 提前在发送端或接收端设置过大的缓存。该功能可在系统中通过命令进行配置。

  2. 对于发送端来说,不应发送小的报文段,因此还能助 由Nagle算法控制几时发送。为处里SWS难题,还能助 了指示满足以下条件之一时能助 传输报文段:

在一点请况下,TCP我不要 对每个到来的数据包都返回ACK,利用TCP的每项ACK字段因此实现五种功能。每项确认还能助 允许TCP延迟一段时间发送ACK,以便将ACK和相同方向上还能助 传的数据结合发送。主机需求RFC[RFC1122]指出,TCP实现ACK延迟的速度应小于2000ms,实践中最大取200ms。

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

  3. 收缩,窗口右边界左移。主机需求[RFC1122]我不要 支持五种做法,但TCP还能助 能处里五种难题。

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

当通告窗口值变为0时,还能助 有效的阻止发送端继续发送,直到窗口大小恢复为非零值。当接收端重新获得可用空间时,会给发送端传输另一个多多 窗口更新告知其可继续发送数据。窗口更新通常不带有数据,为纯ACK,且还能助 了保证其传输的可靠性。因此另一个多多 带有窗口更新的ACK丢失,通信双方就会一个劲 指在等待的图片 请况:接收方等待的图片 接收数据(已将窗口设为非零值),发送方等待的图片 收到窗口更新告知其可继续发送。

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

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

以上五种请况的传输架构设计 成交换过程图如下:

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

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

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

基于窗口的流量控制机制,尤其是不使用大小固定的报文段的请况下因此会一个劲 出现称为糊涂窗口综合征(SWS)的欠缺。当一个劲 出现该难题时,交换数据段大小有的是全长很久一点较小的数据段[RFC0813],因此每个报文段带有用的数据相对于头部信息的比例较小,因此耗费的资源也更多,相对应的传输速度也更低。

禁用Nagle:

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

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

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

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

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

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

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

Nagle算法[RFC0896]要求,当另一个多多 TCP连接带有在传数据(即那些已发送但还未经确认的数据),小的报文段(长度小于SMSS)就还能助 了被发送,直到所有的在传数据都收到ACK。因此在收到ACK后,TCP还能助 架构设计 那些小数据,将其整合到另一个多多 报文段中发送。五种土依据迫使TCP遵循停等(stop-and-wait)规程:还能助 了等接收到所有在传数据的ACK都都可不都上能够继续发送。该算法的精妙之指在于它实现了自时钟控制:ACK返回好快,数据传输好快。在相对高延迟的广域网中,更还能助 减少微型报的数目,该算法使得单位时间内发送的报文段数目更少,也很久说RTT控制着发包速度。

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

交互式TCP连接

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

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

  1. 对于接收端来说,不应通告小的窗口值。[RFC1122]描述的接收算法中,在窗口增至另一个多多 全长的报文段(接收端MSS)因此接收端缓存空间的一半(取两者中较小值)很久,还能助 了通告比当前窗口(因此为0)更大的窗口值。因此有五种请况会用到该规则:当系统进程处里接收到的数据后使得可用缓存增大;TCP接收端还能助 强制返回对窗口探测的响应。

接收窗口形态学 如下:

延时确认和Nagle算法

流量控制和窗口管理