TCP报文段一般有两类,分别是成块数据和交互数据。
1.交互式输入
    Rlogin连接上键入一个交互命令的数据流如下图所示。
    每一个交互按键都会产生一个数据分组,每次从客户传到服务器的是一个字节的按键。而Rlogin需要远程系统回显客户键入的字符,这样就会产生4个报文段:
    (1)来自客户的交互按键
    (2)来自服务器的按键确认
    (3)来自服务器的按键回显
    (4)来自客户的按键回显确认

2.延时确认

    通常TCP在接收到数据之后不会立即发送ACK,相反,它推迟发送,以便ACK和需要沿该方向发送的数据一起发送(捎带ACK)。绝大多数实现采用的时延为200ms,也就是说,TCP将以最大200ms的时延等待是否有数据一起发送。如果200ms之后依然没有等到发往对方的数据,则单独发送ACK。如果定时器溢出时,TCP接收缓冲区中海油数据没有被应用层读取完,则返回报文段的窗口大小为初始窗口大小减去缓冲区的数据大小。

3.Nagle算法

一、介绍:
    在Rlogin连接中,客户每次发送一个字节到服务器,产生一个41字节长的分组。在广域网上,这些小分组会增加拥塞出现的可能,降低网络的发送效率。可以采用Nagle算法解决这个问题。
    该算法要求一个TCP连接上最多只能由一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。TCP收集这些少量的分组,并在确认到来时以一个分组的方式发送出去。该算法具有适应性,确认到达的越快,数据发送越快。
二、Nagle算法的规则:                                          MSS-最大报文段长度
      (1)如果包长度达到MSS,则允许发送;
      (2)如果该包含有FIN,则允许发送;
      (3)设置了TCP_NODELAY选项,则允许发送;
      (4)未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;
      (5)上述条件都未满足,但发生了超时(一般为200ms),则立即发送。
三、关闭Nagle算法:
    某些情况下,小消息必须无时延发送(例如鼠标移动),以便提供实时反馈,这时需要关闭Nagle算法。

4.窗口大小通告

    TCP连接中,通告的窗口大小会因为缓冲区中的数据大小实时进行调整。
 

11.TCP的交互数据流的更多相关文章

  1. 《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  2. TCP/IP协议--TCP的交互数据流和成块数据流

    前边讲了TCP连接的建立和终止,分别要三次握手和四次通信.这些报文段都只包含首部,没有数据部分.    这里就讲讲数据传送的一些细节.一个TCP连接建立成功以后,就可以开始传送数据了~ 一般TCP数据 ...

  3. TCP的交互数据流

    在TCP进行数据传输时,可以分为成块数据流和交互数据流两种,如果按字节计算,成块数据与交互数据的比例约为90%和10%,TCP需要同时处理这两类数据,且处理的算法不同. 书籍本章中以Rlogin应用为 ...

  4. 《TCP/IP具体解释》读书笔记(19章)-TCP的交互数据流

    在TCP进行传输数据时.能够分为成块数据流和交互数据流两种.假设按字节计算.成块数据与交互数据的比例约为90%和10%,TCP须要同一时候处理这两类数据,且处理的算法不同. 书籍本章中以Rlogin应 ...

  5. TCP/IP详解 卷1 第十九章 TCP的交互数据流

    19.1 引言 成块数据:比如ftp.电子邮件.Usenet新闻 交互数据:Telnet.Rlogin 成块数据的报文段基本上都是满长度(full-size)的,而交互数据小的多(Telnet和Rlo ...

  6. 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流

    19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数 ...

  7. TCP/IP详解 卷一(第十九章 TCP的交互数据流)

    TCP需要同时处理两类数据:块数据.交互数据. 本章将以Rlogin应用为例观察交互数据的传输过程. 交互式输入 首先观察在一个Rlogin连接上键入一个交互命令时所产生的数据流(每键入一个交互按键都 ...

  8. TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流

    目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等.这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大 ...

  9. TCP/IP之TCP交互数据流、成块数据流

    建立在TCP协议上的网络协议有telnet,ssh,ftp,http等等.这些协议根据数据吞吐量来分成两大类: (1)交互数据类型,例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的 ...

随机推荐

  1. jq中的移除事件

    unbind([type],[data]); 第一个参数是事件类型,第二个参数是将要移出的函数 说明: 1,如果没有参数,则删除所有绑定的事件 2,如果只提供了事件类型作为参数,则只删除该类型的绑定事 ...

  2. 【转】调用getActionBar()报Call requires API level 11 (current min is 8): android.app.Activity#getActionBar

    解决办法: 第一种方法:修改AndroidManifest.xml中的minSdkVersion=11   第二种方法: 1.导入android-support-v7-appcompat项目,并将其作 ...

  3. AXIS-web.xml里配置axis报错addChild: Child name 'AxisServlet' is not unique 解决办法

    报错这个那么就表示,web.xml中有相同的AxisServlet的这个名字,可以把原来的删除配置自己的,也可以保留原来的,自己的不配置 Ctrl+f 搜索下就知道了

  4. li里元素都浮动 li 在IE6 7 下方会产生4px间隙问题

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. .NET反射应用

    .Net中,在编写框架时,反射是最长用的一个知识点,在这举个小例子,旨在说明反射如何应用:本文只程序中只涉及到System.Type的应用,通过这个类可以访问关于任何数据类型的信息,注释部分涉及到Sy ...

  6. codeforces 665B Shopping

    暴力 #include<cstdio> #include<cstring> #include<cmath> #include<vector> #incl ...

  7. PAT1011

    With the 2010 FIFA World Cup running, 随着2010世界杯的举行 football fans the world over were becoming increa ...

  8. python第一天(文件流以及控制流)简单总结

    第一天的python学习主要是: (1)对python的一个大致了解 值得注意的是在window下开发要注意path的问题. (2)对python控制流的一个了解 常用的if ,while ,for ...

  9. appium通过WiFi连接真机进行测试

    http://www.th7.cn/Program/Android/201507/514602.shtml appium通过WiFi连接真机进行测试   2015-07-24 19:43:07CSDN ...

  10. SpringMVC 接收表单数据的方式 - Samuel - 博客频道 - CSDN.NET

    1.@RequestParam @RequestMapping(value = "/xxxx.do") public void create(@RequestParam(value ...