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. hdu_2844_Coins(多重背包)

    题目连接:hdu_2844_Coins 题意:给你n个硬币的价值和对应的数量,问你从1到m有那些数能组合出来 题解:如果我们将硬币的价值看成一个物品的容量和价值,那么对应1-m,如果dp[i]==i, ...

  2. struts2语法--error页面如何捕获?

    如果地址栏输入了不带后缀或者action为后缀, 不存在的页面跳转到error.jsp: struts.xml配置" <package name="default" ...

  3. Android SharedPreferences存图片,转码解码图片

    保存图片  首先创建ByteArrayStream对象,然后用BitmapFactroy把图片加载进来,然后compress压缩图片到流,  然后toByteArray()就行了 public voi ...

  4. XML字符串解析成对象的时候应注意空格

    BomList bomList=(BomList)unmarshaller_bom.unmarshal(new StringReader(xml));xml 不能以空格开头

  5. EXCEL读写NPOI--导出功能

    第一步:将NPOI中的一下三个文件复制到项目中

  6. 在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互

    Android的私钥和信任证书的格式必须是BKS格式的,通过配置本地JDK,让keytool可以生成BKS格式的私钥和信任证书,java本身没有BouncyCastle密库 服务端: Java代码  ...

  7. DataTable的名称要后设置

    string sqldatabase = string.Format(dr["sql"].ToString(), drpat["PATIENT_ID"].ToS ...

  8. JS——基础知识(二)

    1.变量提升问题 <script> var num=10; fun(); function fun(){ console.log(num); var num=20; } </scri ...

  9. CodeForces 618C CodeForces 618C

    第一反应是在凸包上随便找一条边,然后找剩下n-2个点里面距离这条边最短的一个点,这三点就构成了符合要求的三角形..然而..精度被卡死. 换种思路,随便找两个点P1,P2,找剩下n-2个点中哪一个点与P ...

  10. nginx 生成 缩略图 and 生成缩略图到硬盘

    nginx  编译的时候增加  ./configure --with-http_image_filter_module 配置如下 server { listen     80; server_name ...