TCP协议中的计时器

说明:  本文仅供学习交流,转载请标明出处,欢迎转载!

本文是以下文献相关内容的总结

[1] 《TCP/IP详解 卷1:协议》

[2] 《TCP/IP协议族 第4版》

[3] 《计算机网络 第5版》

TCP协议通常包括4种计时器:重传计时器、持续计时器、保活计时器和时间等待计时器

重传计时器:Retransmission Timer,该计时器用于整个连接期间,用于处理RTO(重传超时)。当一个报文从发送队列发出去后,就启动该计时器。若在RTO之内收到了该报文的ACK,则停止该重传计时器;若t>=RTO都还没有收到报文的ACK,则重传该报文,并重置该重传计时器。

    注意:若ACK报文捎带其他信息,则不会为该报文设置重传计时器。

持续计时器:Persistent Timer,用于处理零窗口值的通过。若接收端的TCP要命令发送端的TCP停止发送报文段时,就向发送TCP发送一个报文段,该报文的窗口大小字段为0,称为零值窗口。发送端的TCP收到该零值窗口值报文后,就会停止向接收端的TCP发送报文,直到接收端的TCP发送一个窗口大小非0的ACK报文。若接收端TCP向发送TCP发送ACK报文,以通知其发送窗口的大小(非0)后,接收端的TCP便等待发送端发送数据,若该ACK回去的路上丢失了,则发送端的TCP并没收到ACK报文,便不会向接收端发送报文,而接收却以为自己的ACK报文发成功了,便傻乎乎的瞎等待(别忘了,ACK报文是永远不会被设置重传计时器的),这样两个人便陷入了“死锁状态”。为了防止该死锁状态的出现,TCP为发送TCP设置了一个持续计时器,一旦发送TCP收到了“零值窗口报文”,该计时器便启动。启动后,在为超时期间,若收到了接收端的非0窗口的通知,则停止该计时器;若该持续计时器超时了,则发送TCP就发送一个特殊的探测报文段,该报文段仅包含1B的新数据,该报文不需要确认,探测报文的作用在于提醒对方(目的可以记录在数据部分),重传下上次发送发送的那个ACK报文(即那个非0值窗口的报文)。

   注意:TCP规定,接收窗口的rwnd=0,也必须接收这三种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段。

保活计时器:Keeplive Timer,防止两端的TCP在连接期间长时间处于空闲状态。可以为服务器设置一个保活计时器。每当服务器收到客户的信息,就把该计时器复位,表示该通话还活着,超时通常设置为2小时。当服务器超过了2H还没有收到客户的任何信息时,服务器就向客户发送过一个探测报文段。若连续发送了10个探测报文段(没个75s一个)还没有响应,就认为客户出了故障,并终止这个连接。

时间等待计时器:Time-Wait timer,(超时时间=2MSL,max segment lifetime),该计时器为客户端设置。该计时器是为还记得4次挥手中的第三次挥手吗?在第三次挥手中,客户端收到服务器发送的FIN报文后,客户端就启动Timer-Wait计时器,时间设置为2MSL,并发送最后一个ACK。两个作用:(1)保证在2MSL时间内,服务器端能够收到最后一个ACK;(2)能够保证之前某些在网络中滞留很久的发给服务器的报文不会在本次连接连接关闭后再去骚扰服务器。值得注意的是:最后两次挥手期间,启动了两种计时器,服务器向客户端发送FIN后启动重传计时器,客户端收到FIN后,向服务器发送ACK,同时启动Time-Wait计时器(时间长度为2MSL)。

TCP协议中的计时器

时间: 2024-07-30 06:38:12

TCP协议中的计时器的相关文章

TCP协议中RTO的计算

说明:  本文仅供学习交流,转载请标明出处,欢迎转载! 本文是以下文献相关内容的总结 [1] <TCP/IP详解 卷1:协议> [2] <TCP/IP协议族 第4版> [3] <计算机网络 第5版> TCP协议中经常会发生超时重传的情况,我们知道超时重传中的"时"是即RTO.RTO是Retransmission Time-OutD的缩写,该时间决定了发送方在发送数据后,在多长时间内如果没有收到ACK,就重置重传计时器,并重传上次发送失败的报文.那么R

TCP协议中的三次握手和四次挥手(图解)【转】

建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. [更新于2017.01.04 ]该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好.这么久才来更新,抱歉!! 错误配图如下: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?

TCP 协议中的 Window Size与吞吐量

原地址:http://blog.sina.com.cn/s/blog_c5c2d6690102wpxl.html TCP协议中影响实际业务流量的参数很多,这里主要分析一下窗口的影响. ?TCP窗口目的 为了获得最优的连接速率,使用TCP窗口来控制流速率(flow control),滑动窗口就是一种主要的机制.这个窗口允许源端在给定连接传送数据分段而不用等待目标端返回ACK,一句话描述:窗口的大小决定在不需要对端响应(acknowledgement)情况下传送数据的数量.?官方定义:"The am

TCP协议中的SO_LINGER选项

TCP协议中的SO_LINGER选项 SO_LINGER选项用来设置延迟关闭的时间,等待套接字发送缓冲区中的数据发送完成.没有设置该选项时,在调用close()后,在发送完FIN后会立即进行一些清理工作并返回.如果设置了SO_LINGER选项,并且等待时间为正值,则在清理之前会等待一段时间. 以调用close()主动关闭为例,在发送完FIN包后,会进入FIN_WAIT_1状态.如果没有延迟关闭(即设置SO_LINGER选项),在调用tcp_send_fin()发送FIN后会立即调用sock_or

TCP协议中是如何保证报文可靠传输的

1.什么是TCP的可靠传输 它向应用层提供的数据是无差错的.有序的.无丢失的,换言之就是:TCP最终递交给应用层的数据和发送者发送的数据是一模一样的. 2.TCP保证可靠传输的办法有哪些? TCP采用了流量控制.拥塞控制.连续ARQ等技术来保证它的可靠性. 3.停止等待协议 AQR协议:当请求失败时它会自动重传,直到请求被正确接收为止.这种机制保证了每个分组都能被正确接收.停止等待协议是一种ARQ协议. 停止等待协议的原理 无差错的情况:A向B每发送一个分组,都要停止发送,等待B的确认应答:A只

TCP协议中的标志位

TCP/IP协议通常放在一起来说,但是它们是两个不同的协议,所起的作用也不一样. IP协议是用来查找地址的,对应于网际互联层. TCP协议是用来规范传输规则的,对应着传输层. IP协议只负责找到地址,具体传输的工作交给TCP来完成. TCP在传输之前会进行三次沟通,一般称为“三握手”:传输数据断开的时候需要进行四次沟通,一般称为“四挥手”. 要理解这个过程首先需要理解TCP中的两个序号和三个标志位的含义: seq:sequence number的缩写,表示所传数据的序号.TCP传输时每一个字节都

TCP 协议中MSS的理解

在介绍MSS之前我们必须要理解下面的几个重要的概念.MTU: Maxitum Transmission Unit 最大传输单元MSS: Maxitum Segment Size 最大分段大小PPPoE: PPP Over Ethernet(在以太网上承载PPP协议),就是因为这个协议的出现我们才有必要修改我们的MSS或者是MTU值.MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,EthernetII帧的结构DMAC+SMAC+Type+Data+CRC          

tcp协议中mss的理解

在介绍MSS之前我们必须要理解下面的几个重要的概念.<blockquote>MTU: Maxitum Transmission Unit 最大传输单元MSS: Maxitum Segment Size 最大分段大小PPPoE: PPP Over Ethernet(在以太网上承载PPP协议),就是因为这个协议的出现我们才有必要修改我们的MSS或者是MTU值.</blockquote>MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,EthernetII帧的结构&l

对于TCP协议中IOCP模型的一些简单的理解

请不要觉得这一篇没有代码的文章没意义,对IOCP模型的代码,百度搜索可以得到很多,但是后续很多需要纠结的地方,很多人都经历过,如果你已经在尝试写IOCP服务端了,那么你很可能会对写代码之外的一些设计问题很纠结,那么本文很可能是对你有所帮助的,这一个帖子是我开的讨论帖,我不是很懂CSDN的帖子分数的意义,我觉得那对于我这种1年难得发1贴的人来说估计也没什么作用,但我很希望大家能一起参与进来讨论:http://bbs.csdn.net/topics/390890567?page=1#post-398