TCPIP详解学习笔记(11-13).docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP/IP 详解学习笔记 (11)-TCP 交互数据流,成块数据流 目前建立在 TCP 协议上的网络协议特别多,有 telnet ,ssh ,有 ftp,有 http 等等。这些协 议又可以根据数据吞吐量来大致分成两大类: (1) 交互数据类型,例如 telnet ,ssh ,这种类 型的协议在大多数情况下只是做小流量的数据交换, 比如说按一下键盘, 回显一些文字等等。 (2) 数据成块类型,例如 ftp,这种类型的协议要求 TCP 能尽量的运载数据,把数据的吞吐 量做到最大,并尽可能的提高效率。针对这两种情况, TCP 给出了两种不同的策略来进行 数据传输。 1.TCP 的交互数据流 对于交互性要求比较高的应用, TCP 给出两个策略来提高发送效率和减低网络负担:( 1) 捎带 ACK 。(2)Nagle 算法 (一次尽量多的发数据)。通常,在网络速度很快的情况下,比 如用 lo 接口进行 telnet 通信,当按下字母键并要求回显的时候,客户端和服务器将经历 发 送按键数据 -服务器发送按键数据的 ack - 服务器端发送回显数据 - 客户端发送回显数据 的 ACK 的过程,而其中的数据流量将是 40bit + 41bit+41bit+40bit = 162bit ,如果在广域网 里面,这种小分组的 TCP 流量将会造成很大的网络负担。 1.1.捎带 ACK 的发送方式 这个策略是说,当主机收到远程主机的 TCP 数据报之后,通常不马上发送 ACK 数据报, 而是等上一个短暂的时间,如果这段时间里面主机还有发送到远程主机的 TCP 数据报,那 么就把这个 ACK 数据报 “捎带 ”着发送出去,把本来两个 TCP 数据报整合成一个发送。一般 的,这个时间是 200ms 。可以明显地看到这个策略可以把 TCP 数据报的利用率提高很多。 1.2.Nagle 算法 上过 bbs 的人应该都会有感受,就是在网络慢的时候发贴,有时键入一串字符串以后,经 过一段时间,客户端 “发疯 ”一样突然回显出很多内容,就好像数据一下子传过来了一样,这 就是 Nagle 算法的作用。 Nagle 算法是说,当主机 A 给主机 B 发送了一个 TCP 数据报并进入等待主机 B 的 ACK 数 据报的状态时, TCP 的输出缓冲区里面只能有一个 TCP 数据报,并且,这个数据报不断地 收集后来的数据,整合成一个大的数据报,等到 B 主机的 ACK 包一到,就把这些数据 “一 股脑 ”的发送出去。虽然这样的描述有些不准确,但还算形象和易于理解,我们同样可以体 会到这个策略对于低减网络负担的好处。 在编写插口程序的时候,可以通过 TCP_NODELAY 来关闭这个算法。并且,使用这个算法 看情况的, 比如基于 TCP 的 X 窗口协议, 如果处理鼠标事件时还是用这个算法, 那么 “延迟 ” 可就非常大了。 2.TCP 的成块数据流 对于 FTP 这样对于数据吞吐量有较高要求的要求,将总是希望每次尽量多的发送数据到对 方主机, 就算是有点 “延迟 ”也无所谓。 TCP 也提供了一整套的策略来支持这样的需求。 TCP 协议中有 16 个 bit 表示 “窗口 ”的大小,这是这些策略的核心。 2.1.传输数据时 ACK 的问题 在解释滑动窗口前, 需要看看 ACK 的应答策略, 一般来说, 发送端发送一个 TCP 数据报, 那么接收端就应该发送一个 ACK 数据报。但是事实上却不是这样,发送端将会连续发送数 据尽量填满接受方的缓冲区, 而接受方对这些数据只要发送一个 ACK 报文来回应就可以了, 这就是 ACK 的累积特性,这个特性大大减少了发送端和接收端的负担。 2.2.滑动窗口 滑动窗口本质上是描述接受方的 TCP 数据报缓冲区大小的数据,发送方根据这个数据来计 算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为 0 的 TCP 数据报,那 么发送方将停止发送数据,等到接受方发送窗口大小不为 0 的数据报的到来。书中的 P211 和 P212 很好的解释了这一点。 关于滑动窗口协议,书上还介绍了三个术语,分别是: 1. 窗口合拢:当窗口从左边向右边靠近的时候,这种现象发生在数据被发送和确认的 时候。 2. 窗口张开:当窗口的右边沿向右边移动的时候,这种现象发生在接受端处理了数据 以后。 3. 窗口收缩:当窗口的右边沿向左边移动的时候,这种现象不常发生。 TCP 就是用这个窗口,慢慢的从数据的左边移动到右边,把处于窗口范围内的数据发送出 去(但不用发送所有,只是处于窗口内的数据可以发送。)。这就是窗口的意义。图 20-6 解释了这一点。窗口的大小是可以通过 socket 来制定的, 4096 并不是最理想的窗口大小, 而 16384 则可以使吞吐量

您可能关注的文档

文档评论(0)

5566www + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6122115144000002

1亿VIP精品文档

相关文档