zoukankan      html  css  js  c++  java
  • TCP协议探究(四):定时器

    1 概述

    • 重传定时器:使用于当希望收到另一端的确认。
    • 坚持(persist)定时器:使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口
    • 保活(keepalive)定时器:用于检测一个空闲连接的另一端何时崩溃或重启。
    • 2MSL定时器:测量一个连接处于TIME_WAIT状态的时间。

    2 重传定时器

    • 目的:提高TCP可靠性,确保对方收到,并返回ACK。
    • 作用:重新发送丢失的包
    • 重传时机:超时时间(RTO)
    • RTO值:RTO不能是固定值,需要参考往返时间(RTT)
    • 计算算法:经典算法(SRTT算法)、 Karn / Partridge 算法(SRTT优化算法)、Jacobson / Karels 算法(SRTT改良算法)

    3 坚持定时器

    • 目的:滑动窗口为0时,Sender将停止发送数据给Receiver。但是Sender需要知道Receiver何时才可以接受新的消息(窗口探测技术)。
    • 作用:Sender轮询问Receiver的滑动窗口大小(零窗口通知),从而决定发送消息或关闭连接。
    • 补充:Receiver可以不回复Sender自己的滑动窗口大小,这样Sender就会重传该报文。

    4 保活定时器

    • 目的:在两个TCP连接间出现长时间的没有传输数据的情况,判断对方是否还活着
    • 作用:一般为每2个小时去询问对方是否还活着
    • 情况
      • 客户主机正常运行且可达:保活定时器复位。
      • 客户主机崩溃:保活探测没有响应,75秒后超时重试,一般重试10次,最后都没有响应则关闭连接。
      • 客户主机崩溃并重新启动:这时服务器将收到一个对其保活探查的响应,但是这个响应是一个复位,使得服务器终止这个连接。
      • 客户主机正常运行但不可达:同第二种情况

    5 2MSL定时器

    • 目的:确保对端有足够的时间收到ACK,并把TCP状态从TIME_WAIT => CLOSED
    • 作用:主动关闭连接时,需要发送完ACK,并对端收到ACK时,才算结束。但是可能网络原因导致,对方没有收到ACK,所以对方需要重新发送FIN报文,这边则发送ACK报文。2 * MSL是为了保证对端能够有足够时间发送两个FIN报文
    • MSL值(TCP段的最大存活时间):需要参考TTL时间(IP数据报的存活时间),大于等于TTL即可。

    6 补充

    • RTT(往返时间):采样值,一般实时计算,比较严格
    • TTL(IP报文存活时间):固定值
    • MSL(TCP段的最大存活时间):固定值,MSL >= TTL

    7 参考资料

  • 相关阅读:
    使用eclipse的时候maven项目的项目没有问题,但是项目报×
    大数据学习笔记5
    大数据学习笔记4
    Docker端口映射
    hadoop集群访问——Hadoop客户端访问、Java API访问
    Hadoop环境搭建--Docker完全分布式部署Hadoop环境(菜鸟采坑吐血整理)
    Java反射
    大数据学习笔记3
    大数据学习笔记2
    大数据学习笔记1-大数据处理架构Hadoop
  • 原文地址:https://www.cnblogs.com/linzhanfly/p/9969850.html
Copyright © 2011-2022 走看看