持续计时器

TCP 为每一个连接设有一个持续计时器。

只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。

若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据)

,而对方就在确认这个探测报文段时给出了现在的窗口值。

若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。

若窗口不是零,则死锁的僵局就可以打破了

超时重传计时器

 TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到还没有收到确认,就要重传这个报文段。由于数据链路层和运输层的往返实验概率分布存在很大差异,因此有必要选择合适的超时重传时间。
     报文段的往返时延是指收到确认报文的时间与每一个报文段发出的时间之差。报文段的平均往返时延RTT是由各个报文段的往返时延样本加权平均得出来的。计算公式为:
     平均往返时延RTT=α×(旧的RTT)+(1-α)×(新的往返时延样本),1 ≤ α < 1 典型的值为α为7/8.
 
     即使有一个好的RTT,要选择一个合适的超时重传时间RTO(Restransmission Time out)仍然不是一个容易的事情。, 显然RTO要大于RTT。其计算公式为 RTO = β × RTT, β > 1, 推荐是2
 
 

TCP四个计数器的更多相关文章

  1. TCP四步挥手的各种状态转换图

    对于TCP四步挥手时的各种状态转换,网上有很多资料.但是有很多描述不是很容易理解,甚至是描述错误,不如这篇文章里http://www.cnblogs.com/Jessy/p/3535612.html# ...

  2. TCP四次挥手

    TCP 四次挥手      TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake).客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close ...

  3. TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手

    这是一个很有意思的问题~ 首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息.而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不 ...

  4. Java网络编程学习A轮_03_抓包分析TCP四次挥手

    参考资料: http://www.jellythink.com/archives/705 示例代码: https://github.com/gordonklg/study,socket module ...

  5. TCP四次挥手断开连接详解

    TCP四次挥手. 数据传输结束后,通信的双方都可释放连接.现在A和B都处于ESTABLISHED状态.A的应用程序先向TCP发出连接释放报文段,主动关闭TCP连接.A把连接释放报文段的首部FIN置为1 ...

  6. 计算机网络(五),TCP四次挥手

    目录 1.TCP四次挥手详情 2.为什么会有TIME-WAIT状态 3.为什么需要四次握手才能断开连接 4.服务器出现大量CLOSE_WAIT的原因 五.TCP四次挥手 1.TCP四次挥手详情 (1) ...

  7. 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

    摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...

  8. 详解TCP四次挥手(断开TCP连接过程)

    在讲述TCP四次挥手,即断开TCP连接的过程之前,需要先介绍一下TCP协议的包结构. TCP协议包结构: 这里只对涉及到四次挥手过程的字段做解释 (1) 序号(Sequence number) 我们通 ...

  9. 解读TCP 四种定时器

    TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据.但是数据和确认都可能会丢失.TCP 通过在发送时设置一个定时器来解决这个问题.如果当定时器溢出时还没收到确认,它就会重传该数据. ...

随机推荐

  1. osgEarth学习笔记(转载)

    osgEarth学习笔记1.        通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染:所以如果 ...

  2. Bootstrap3写的红色警告框样式组件

    用的是BT3的类和fa的图标 <!DOCTYPE html><html><head lang="en">    <meta charset ...

  3. 2.5. Integer 16 、Integer 32、Integer 64(Core Data 应用程序实践指南)

    Core Data 使用 “带符号的整数”,通常我们会选择Integer 32,如果不够,可以升级为Integer 64 (第3章),通过升级托管对象模型. 这三种类型对应的特性(Property)类 ...

  4. 关于网页显示乱码问题的一些个人见解(PHP、JSP...)

    最近做项目,遇到了一些网页显示乱码的情况,在网上查了很多资料都没有给一个全面的准确的答案,自己摸索了一下经过对比开发环境(我使用的是Myeclipse)编辑器的编码和浏览器默认显示的编码发现,在字符编 ...

  5. Spring3.2AOP实现需要添加的三个包

    Spring3.2AOP实现需要添加的三个包 http://down.51cto.com/data/1001395 http://down.51cto.com/data/519542

  6. pyspark 内容介绍(一)

    pyspark 包介绍 子包 pyspark.sql module pyspark.streaming module pyspark.ml package pyspark.mllib package ...

  7. jq基础

    $(function() {          $(".dd").attr("class","cc").append("<h ...

  8. CF448C [Painting Fence]递归分治

    题目链接:http://codeforces.com/problemset/problem/448/C 题目大意:用宽度为1的刷子刷墙,墙是一长条一长条并在一起的.梳子可以一横或一竖一刷到底.求刷完整 ...

  9. PS切图篇(一)---界面设置

    #工作区设置 四大主要面板:信息 字符  图层 历史记录 打开必要属性: 选择工具设置 选择图层的方式:ctrl+鼠标左击想选择的图层

  10. MySql学习(七) —— 查询性能优化 深入理解MySql如何执行查询

    本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...