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,并且接收方发送的窗口通告确认丢失了,那接收方等待接收数据,而发送方在等待允...

TCP坚持定时器

TCP通过让接收方指明希望从发送方接收的数据字节数(即窗口大小)来进行流量控制。如果窗口大小为0会发生什么情况呢?这将有效阻止发送方传送数据,直到窗口变为非0为止。 ACK的传输并不可靠,也就是...

9.6 坚持(Persist)定时器

9.6.1 Why          数据发送方收到接收方的通告窗口为0时,就不能再发送数据,一直等到对方发送窗口更新为止。但对端发送的窗口更新报文可能会丢失,如果发送方只是等待的话会导致数据传输会一...

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

主要内容:保活定时器的实现,TCP_USER_TIMEOUT选项的实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   原理   HTTP有Keep...

TCP的四种定时器

TCP使用四种定时器(Timer,也称为“计时器”):重传计时器:Retransmission Timer坚持计时器:Persistent Timer保活计时器:Keeplive Timer时间等待计...

解读TCP 四种定时器

一.TCP的四种定时器 TCP使用四种定时器(Timer,也称为“计时器”): 重传计时器:Retransmission Timer 坚持计时器:Persistent Timer 保活计时器:Kee...

TCP/IP详解--tcp/ip协议栈中实现的几种定时器

这节讨论TCP的定时处理函数。在前面的讨论中,我们看到了与TCP的各种定时器,包括重传定时器、持续定时器和保活定时器,此外TCP中还有几个定时器我们还未涉及。这里总的来看看TCP中的各个定时器。TCP...

TCP的定时器系列 — 超时重传定时器

主要内容:TCP定时器开篇,超时重传定时器、ER延迟定时器、PTO定时器的实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   Q:一条TCP连接会...
  • zhangskd
  • zhangskd
  • 2015年03月30日 22:53
  • 11836

TCP的定时器系列 — SYNACK定时器

主要内容:SYNACK定时器的实现,TCP_DEFER_ACCPET选项的实现。 内核版本:3.15.2 Author:zhangskd @ csdn blog   在上一篇博客中,已经连带介绍了SY...

《LeetBook》leetcode题解(7): Reverse Integer[E]——处理溢出的技巧

007. Reverse Integer[E]——处理溢出的技巧 Reverse IntegerE处理溢出的技巧 题目 思路 思路1用long 思路2变化前后对比 思路3提前停止操作 题目Revers...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器
举报原因:
原因补充:

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