TCP使用四种定时器:



重传定时器(Retransmission Timer)、坚持定时器(Persistent Timer)、保活定时器(Keeplive Timer)、时间等待定时器(Time_Wait Timer)。

重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建重传计时器,若在计时器超时之前收到对报文段的确认,撤销计时器;若在计时器超时之后收到,则重传报文,复位计时器。

坚持定时器:ACK的传输不可靠,TCP不对ACK报文段进行确认,TCP 只确认那些包含数据的ACK报文段,为了防止因为ACK报文段丢失而双方进行等待的问题,发送方用一个坚持计时器来周期性地向接收方查询,以便发现窗口是否已增大。这些从发送方发出的报文段称为窗口探查。坚持计时器总是在5-60秒之间。



保活定时器:如果一个连接在两个小时之内没有任何动作,则服务器就向客户发送一个探查报文段。客户主机必须处于一下4个状态之一:

  1)客户主机依然正常运行,并从服务器可达。服务器在2个小时以后将保活计时器复位。

  2)客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应,服务器也收不到对探查的响应,并在75秒后超时。服务器总共发送10个这样的探查,每个间隔75秒。如果服务器没有收到一个响应,就会认为客户主机已经关闭并终止连接。

  3)客户主机崩溃并已经重新启动。这是服务器将收到一个对其保活探查的响应,但是这个响应是一个复位,使得服务器终止这个连接。

  4)客户主机正常运行,但是服务器不可达。这与状态2相同,TCP不能够区分状态4与状态2的区别,它所能发现的就是没有收到探查的响应。



时间等待定时器:在连接终止期使用,当TCP关闭连接时,并不认为这个连接就真正关闭了,在时间等待期间,连接还处于一种中间过度状态,这样就可以使重复的fin报文段在达到终点后被丢弃,这个计时器的值通常设置为一个报文段寿命期望值的2倍。

TIME_WAIT状态也称为2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime),它是任何报文段被丢弃前在网络内的最长时间。当TCP 执行一个主动关闭,并发回最后一个ACK,该连接必须在TIME_WAIT状态停留的时间为2倍的MSL,这样可以:

1)让TCP再次发送最后的ACK以防止这个ACK丢失(另一端超时并重发最后的FIN)。

2)在2MSL等待时间,插中使用的本地端口在默认情况下不能再被使用。在连接处于2MSL等待时,任何迟到的报文段将被丢弃。

TCP半关闭:TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

参考:

《TCP/IP 详解(卷1:协议)》

版权声明:本文为博主原创文章,未经博主允许不得转载。

TCP四种定时器--学习笔记的更多相关文章

  1. 解读TCP 四种定时器

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

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

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

  3. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  4. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

  5. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  6. TCP/IP详解学习笔记- 概述

    TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构      网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统.      如图所 ...

  7. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  8. TCP/IP协议组学习笔记

    TCP/IP协议族学习笔记: 一.基础概念: (1)TCP(Transmission Control Protocol) 传输控制协议. (2)IP(Internet Protocol)网际协议.IP ...

  9. wpf中应该使用c#四种定时器中的DispatcherTimer

    c#中有四种定时器 1:System.Threading.Timer 使用: private System.Threading.Timer timerClose; timerClose = new S ...

随机推荐

  1. codeforces 334B - Eight Point Sets

    题意难懂,其实就是x1<x2<x3与y1<y2<y3两两组合成九个点,去掉(x2,y2),剩余八个.这样的八个点才是满足要求的. 忘去重了 #include<cstdio ...

  2. 我是红领巾,分享2014 google不能用的方法。

    那啥已经20天打不开了. 得爬qiang. 今天无意间发现一个好东东. 特记录一下.    360浏览器设置 1.   工具菜单==>选项==>高级设置==>管理搜索引擎 . 2. ...

  3. C语言中strcpy(char *strDest, const char *strScr)字符串复制库函数的理解与分析

    1.原版的strcpy()函数原型 char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) &am ...

  4. python - 简述list. extend() 和 append() 区别

    >>> a = 'hello' >>> b = [1, 2, 3] >>> b.append(a) >>> b [1, 2, 3 ...

  5. 数据库语言(二):SQL语法实例整理

    连接表达式: select * from student join takes on student.ID = takes.ID; 通过on后面的谓词作为连接条件,相同的属性可以出现两次,也就是等价于 ...

  6. poj 3160 Father Christmas flymouse

    // 题目描述:从武汉大学ACM集训队退役后,flymouse 做起了志愿者,帮助集训队做一些琐碎的事情,比如打扫集训用的机房等等.当圣诞节来临时,flymouse打扮成圣诞老人给集训队员发放礼物.集 ...

  7. ORACLE CLIENT客户端安装步骤详解

    下载地址: http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip 先将下载下来的ZIP文件解压,并运行se ...

  8. [转](多实例)mysql-mmm集群

    一.需求说明 最近一直在学习mysql-mmm,想以后这个架构也能用在我们公司的业务上,我们公司的业务是单机多实例部署,所以也想把mysql-mmm部署成这样,功夫不负有心人,我成功了,和大家分享一下 ...

  9. android中ViewHolder通用简洁写法

    public class ViewHolder {     // I added a generic return type to reduce the casting noise in client ...

  10. Linux C程序如何检测WIFI无线USB网卡是否可用?

    最新做一个WIFI应用项目.如何检测WIFI USB设备是否插上了呢?特此共享. 第一种方法,采用读取文件的方式.在linux下,任何一种设备都可看成文件.通过分析相关文件信息,可得知WIFI设备是否 ...