TCP重传机制Timeout特点:

  • 设长了,重发就慢,效率和性能差;
  • 设短了,重发就快,可能导致没有丢就重发,增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。

TCP协议引入2个概念:

  RTT——Round Trip Time(一个数据包从发出去到回来的时间)

  RTO---Retransmission TimeOut(重传超时时间)

1 经典算法

RFC793 经典算法:

  • 采样RTT,记下最近好几次的RTT值。
  • 做平滑计算SRTT(α 取值在0.8 到 0.9之间,α -加权移动平均),公式为:
    SRTT = ( α * SRTT ) + ((1- α) * RTT)
  • 计算RTO(β 值一般在1.3到2.0之间)。公式为:
    RTO = min [ UBOUND, max [ LBOUND, (β * SRTT) ] ]

说明:

  • UBOUND是最大的timeout时间,上限值
  • LBOUND是最小的timeout时间,下限值

优点:

  • 算法简单
  • RTT连续采样(包括正常和重传),采样简单

缺点:

  • RTT采样方案,不能反应真实网络,即正常和重传区分不开
  • 参数α是为了平滑SRTT。小的α值可以感受到 RTT 的微小变化,但可能会容易受到暂时波动的影响。大的α值更稳定,但可能不够快,无法适应真正的变化。

2 Karn / Partridge 算法

经典算法问题:

  • 情况(a)是ack没回来,计算第一次发送和重传ACK的时间,算大了。
  • 情况(b)是ack回来慢,计算重传时间和第一次ACK的时间,算小了。

Karn/Partridge算法:

  • 不采样重传RTT,即仅采样正常传输TCP。
  • TCP重传,RTO设置为当前RTO的2倍。公式为:
    RTO=2 * RTO_cur

优点:

  • 解决经典RTT采样问题

缺点:

  • 参数α是为了平滑SRTT。小的α值可以感受到 RTT 的微小变化,但可能会容易受到暂时波动的影响。大的α值更稳定,但可能不够快,无法适应真正的变化。
  • TCP重传退避算法固定。网络较差情况,RTO持续翻倍,重发就慢,效率和性能差,不能反应网络真实情况

3 Jacobson / Karels 算法

Jacobson/Karels算法:(其中的DevRTT是Deviation RTT)

  • SRTT = SRTT + α (RTT – SRTT) :计算平滑RTT;
  • DevRTT = (1-β)*DevRTT + β*(|RTT-SRTT|) :计算平滑RTT和真实的差距(加权移动平均);
  • RTO= μ * SRTT + ∂ *DevRTT : 加权平均公式。

说明:

  • 在Linux下,α=0.125,β=0.25,μ =1,∂=4

优点:

  • 解决RTT不被感知问题,考虑RTT方差。方差较小,RTO接近SRTT;方差较大,导致DevRTT主导计算

TCP/IP RTT算法比较的更多相关文章

  1. tcp|ip nagle算法

    在TCP传输数据流中,存在两种类型的TCP报文段,一种包含成块数据(通常是满长度的,携带一个报文段最多容纳的字节数),另一种则包含交互数据(通常只有携带几个字节数据). 对于成块数据的报文段,TCP采 ...

  2. Python Web学习笔记之图解TCP/IP协议和浅析算法

    本文通过两个图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图1所示,给出了TCP通信过程的示意图. 图1主要包括三部分:建立连接.传 ...

  3. TCP/IP详解 (转)

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  4. TCP IP详解(转)

    大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...

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

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

  6. TCP/IP Four Layer Protocol Format Learning

    相关学习资料 tcp-ip详解卷1:协议.pdf 目录 . 引言 . 应用层 . 传输层 . 网络层 0. 引言 协议中的网络字节序问题 在学习协议格式之前,有一点必须明白,否则我们在观察抓包数据的时 ...

  7. RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议

    RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...

  8. 计算机网络及TCP/IP知识点(全面,慢慢看)

    TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的.自治的计算机的集合.因特网是网络的网络. 2.分类: 根据作用范围分类: 广域网 WAN (Wide Area Networ ...

  9. TCP/IP详解之:TCP

    第17章 TCP:传输控制协议 TCP提供了一种可靠的面向连接的字节流运输层服务 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务. TCP通过下 ...

  10. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

随机推荐

  1. VirtualBox 下 CentOS7 静态 IP 的配置 → 多次踩坑总结,蚌埠住了!

    开心一刻 一个消化不良的病人向医生抱怨:我近来很不正常,吃什么拉什么,吃黄瓜拉黄瓜,吃西瓜拉西瓜,怎样才能恢复正常呢? 医生沉默片刻:那你只能吃屎了 环境准备 VirtualBox 6.1 网络连接方 ...

  2. MvvmLight框架的基本使用

    关于MvvmLight框架的介绍可以看这篇,说的很详细,在此记录下来以作复习,通过一个简单的例子说明MvvmLight的基本使用 https://www.cnblogs.com/3xiaolonglo ...

  3. (C++) std::move std::forward及使用

    概念 std::ref :针对std::thread,需要把实参显式转换为引用类型: std::move :无条件把参数转换为右值:但是右值赋值给新变量时,实际还要看是否满足右值条件,如const s ...

  4. Easy-Classification-验证码识别

    1.背景 Easy-Classification是一个应用于分类任务的深度学习框架,它集成了众多成熟的分类神经网络模型,可帮助使用者简单快速的构建分类训练任务.   案例源代码 Easy-Classi ...

  5. Java Web中requset,session,application 的作用域及区别

    三者概述 requset概述: request是表示一个请求,只要发出一个请求就会创建一个request 用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递. session ...

  6. 解决mysql本地连接速度慢

    解决方法 用127.0.0.1而不用localhost 原因 听说是有什么DNS的反向解析

  7. Mybatis SQL 对应Oracle中javaType和jdbcType对应

    <resultMap type="java.util.Map" id="resultjcm"> <result property=" ...

  8. SpringMVC02:返回值、json数据、文件上传、拦截器

     一.响应返回值 1.搭建环境(两个webapp,不要选错) 2.响应之返回值是String类型 package cn.itcast.controller; import cn.itcast.doma ...

  9. 【Java EE】Day09 JavaScript基础

    一.JavaScript简介 二.JavaScript语法 三.JavaScript对象

  10. 【Hadoop学习】补充:优化、新特性

    一.数据压缩 1.概述 原则:IO密集而不是计算密集的job 压缩算法选择 2.压缩位置选择 通过参数进行配置 3.压缩实例: 数据流的压缩和解压缩 Map输出端采用压缩 Reduce输出端采用压缩 ...