TCP/IP详解 TCP的交互数据流(19)

有关数据的传输

  1. 按照分组数据计算,约有一半的TCP报文包含成块数据(eg:FTP、电子邮件、Usenet新闻) , 另一半包含交互数据(eg:Telnet、 Rlogin)
  2. 按照字节计算, 成块数据与交互数据的比例约为90% 和10% 。 因为成块数据的报文段基本上是满长度的(full-sized)的(通常为512字节 的用户数据),而交互数据则小得多。

今天主要讨论的是交互数据, 以Rlogin为例, 揭示时延的去人是如何工作的以及Nagle算法怎么减少了通过广域网络传输的小分组的数目


交互式输入

一种数据流的交互回显
  1. 通常每个交互的按键都会产生一个数据分组
  2. 上面的例子,就会产生了4个报文段:《1》来自客户端的交互按键 《2》来自服务器的按键确认 《3》来自服务器的按键回显 《4》来自客户的按键回显确认。

PS: 发现传输的有效数据是非常小的, 传输的效率相对较低, 上面的例子,后来一般2、3会进行一次合并一起的传输—— 【经受时延的确认】。


经受时延的确认【delay ack】


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

Nagle算法

  1. 该算法要求一个TCP连接上最多只能有一个未被去人的未完成的小分组, 在改分组的去人到达之前不能发送其他的小分组。 相反, TCP收集这些少量的分组, 并在确认到来时以一个分组的方式发出去。 该算法的优越之处在于它是自适应的: 确认到达得越快, 数据也就发送得越快。 而在希望减少微小分组数目的低速广域网上, 则会发送更少的分组。
  2. 注意到从左到右边大司法数据长度是不同的,分别是: 1、1、2、1、2、2、3、1 和3个字节。 这是因为客户只有接收到前一个数据的确认后才发送已经收集的数据。 通过使用Nagle算法,为发送16字节的数据客户只需要使用9个报文段, 而不再是16个。 —— 比较自适应网络的方法
  3. 有时, 我们需要关闭Nagle算法,一个线性的例子是X窗口系统服务器: 小消息(鼠标移动)必须无时延地发送, 以便为进行某种操作的交互用户提供实时的反馈。 —— Nagle算法增加了时延,所以要求严格时延的场景时必须关闭Nagle算法的
  4. 另外一个场景:在一个交互注册过程中,键入终端的一个特殊功能键。 这个功能通常可以产生多个字符序列, 经常从ASCII码转义(escape)字符开始。 如果TCP每次得到一个字符,它很可能会发送序列中的第一个字符(ASCII 嘛的ESC), 然后缓存其他字符并等待对改字符的确认。 但服务器接收到该字符后, 它并不发送确认,而是继续等待接收序列中的其他字符。 这就会经常触发服务器的经受时延的确认算法, 表示剩下的字符没有在200ms内发送。 对交互用户而言,这将产生明显的时延。



    关闭nagle算法

窗口大小通告

  1. Nagle 算法中, 报文段5通告窗口大小是4095字节,这意味着TCP的缓冲区中仍然有一个字节等待应用程序(Rlogin)读取。同样,来自客户的下一个报文段声明其窗口大小为4094个字节。 这说明仍然有2个字节等待读取。
  2. 服务器通常通告窗口大小为8912个字节,这是因为服务器在读取并回显接收到的数据之前,其TCP没有数据发送。
  3. 然而, 在ACK到来时, 客户的TCP总是有数据需要发送。 这是因为它再等待ACK的过程中缓存接收到的字符。当客户TCP发送缓存的数据时, Rlogin客户没有机会读取来自服务器的数据,因此客户通告的窗口大小总是小于4096。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容