• 11.TCP的交互数据流


     
        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连接中,通告的窗口大小会因为缓冲区中的数据大小实时进行调整。
     



  • 相关阅读:
    org.apache.catalina.mbeans.ServerLifecycleListener
    模拟log4j获取日志对象调用所在的类名、方法名及行号
    菜鸟从零学编程(八)——将MyEclipse项目导入到Eclipse
    Oracle DB 使用调度程序自动执行任务
    无线网卡的查看与配置——iw,iwconfig,ethtool
    如何从iTunes Connect中提款呢?
    tomcat解压war包的一点例外
    Shared File System Master Slave 全配置以及测试
    [置顶] “欢子说事”微信公众平台上线,做大学生第一交流平台
    android编程之ExpandableListView使用总结
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5281814.html
Copyright © 2020-2023  润新知