TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

原创 2006年05月28日 00:34:00

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是:

  1. 坚持定时器
  2. 保活定时器
  3. 2MSL定时器

其中坚持定时器用于防止通告窗口为0以后双方互相等待死锁的情况;而保活定时器则用于处理半开放连接

1.坚持定时器

坚持定时器的原理是简单的,当TCP服务器收到了客户端的0滑动窗口报文的时候,就启动一个定时器来计时,并在定时器溢出的时候向向客户端查询窗口是否已经增大,如果得到非零的窗口就重新开始发送数据,如果得到0窗口就再开一个新的定时器准备下一次查询。通过观察可以得知,TCP的坚持定时器使用1,2,4,8,16……64秒这样的普通指数退避序列来作为每一次的溢出时间。

糊涂窗口综合症

TCP的窗口协议,会引起一种通常叫做糊涂窗口综合症的问题,具体表现为,当客户端通告一个小的非零窗口时,服务器立刻发送小数据给客户端并充满其缓冲区,一来二去就会让网络中充满小TCP数据报,从而影响网络利用率。对于发送方和接收端的这种糊涂行为。TCP给出了一些建议(或者是规定)。

  1. 接收方不通告小窗口。通常的算法是接收方不通告一个比当前窗口大的窗口(可以为0),
    除非窗口可以增加一个报文段大小(也就是将要接收的MSS)或者可以增加接收方缓存空间
    的一半,不论实际有多少。
  2. 发送方避免出现糊涂窗口综合症的措施是只有以下条件之一满足时才发送数据: ( a )可
    以发送一个满长度的报文段; ( b )可以发送至少是接收方通告窗口大小一半的报文段; ( c )可以
    发送任何数据并且不希望接收ACK(也就是说,我们没有还未被确认的数据)或者该连接上
    不能使用Nagle算法。

ok,现在我们回忆一下,可以发现TCP的很多规定都是为了在一次传送中发送尽量多的数据,例如捎带ACK数据报文的策略,Nagle算法,重传时发送包含原数据报文的策略,等等。

2.保活定时器

保活定时器更加的简单,还记得FTP或者Http服务器都有Sesstion Time机制么?因为TCP是面向连接的,所以就会出现只连接不传送数据的“半开放连接”,服务器当然要检测到这种连接并且在某些情况下释放这种连接,这就是保活定时器的作用。其时限根据服务器的实现不同而不通。另外要提到的是,当其中一端如果崩溃并重新启动的情况下,如果收到该端“前生”的保活探察,则要发送一个RST数据报文帮助另一端结束连接。

TCP/IP详解-坚持定时器和保活定时器

1 坚持定时器 ACK的传输并不可靠。TCP不对ACK报文段进行确认,只确认那些包含有数据的ACK报文段当接收窗口大小为0,并且接收方发送的窗口通告确认丢失了,那接收方等待接收数据,而发送方在等待允...
  • rosepicker
  • rosepicker
  • 2015年08月26日 22:33
  • 1343

TCP的定时器系列 — 保活定时器

主要内容:保活定时器的实现,TCP_USER_TIMEOUT选项的实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   原理   HTTP有Keep...
  • zhangskd
  • zhangskd
  • 2015年04月05日 10:35
  • 8594

TCP/IP详解--学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器保活定时器2MSL定时器 其中坚持定时器用于防止通告窗口为0以后双方互相等...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2013年02月07日 23:31
  • 1519

TCP/IP详解学习笔记--TCP的坚持和保活定时器

TCP的坚持定时器1.基本概念TCP的接收方指名希望从发送方接收的数据字节(窗口大小)来进行流量控制,如果窗口大小为0,那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗口大小的ACK为止,那么如...
  • Shreck66
  • Shreck66
  • 2015年08月08日 15:02
  • 1120

TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 .

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器保活定时器2MSL定时器 其中坚持定时器用于防止通告窗口为0以后双方互相等...
  • MeetLunay
  • MeetLunay
  • 2012年02月24日 16:30
  • 528

TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器保活定时器2MSL定时器 其中坚持定时器用于防止通告窗口为0以后双方互...
  • CHS007chs
  • CHS007chs
  • 2014年09月03日 19:25
  • 370

TCP/IP详解--学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器保活定时器2MSL定时器 其中坚持定时器用于防止通告窗口为0以后双方互相等...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2013年02月07日 23:31
  • 1519

TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器保活定时器2MSL定时器 其中坚持定时器用于防止通告窗口为0以后双方互...
  • kalman2008
  • kalman2008
  • 2014年08月20日 01:20
  • 251

TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 1.    坚持定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口; 2.    ...
  • u010562250
  • u010562250
  • 2013年08月27日 14:51
  • 523

TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 1.         坚持定时器 2.         保活定时器 3. ...
  • bgc525725278
  • bgc525725278
  • 2016年04月14日 17:17
  • 221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器
举报原因:
原因补充:

(最多只允许输入30个字)