TCP/IP——TCP连接的建立与终止、TCP超时、TCP状态变迁、TCP复位

TCP/IP协议中,TCP连接的建立和终止涉及三次握手与四次挥手。文章详细阐述了TCP连接的建立过程、超时重传机制、半关闭与半打开状态以及TCP状态变迁,特别是2MSL等待状态的重要性。同时讨论了SYN攻击、FIN_WAIT_2状态和RST报文段的应用,强调了TCP选项如MSS和积压值在连接管理和优化中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

TCP是一个面向连接的协议。无论哪一方想另一方发送数据之前,都必须现在双方之间建立一条连接。这种两端间连接的建立与无连接协议如UDP不同。一端使用UDP想另一端发送数据报时,无需任何预先的握手。
MSS:表示TCP传往另一端的最大块数据的长度。
窗口大小决定发送多少个MSS
而UDP中,大于MTU是需要分片

二、TCP连接的建立和终止的时间

在这里插入图片描述
在这里插入图片描述
发起连接(报文段1)的一方是主动打开,接受连接(报文段2)的一方是被动打开。

其中,双方的序号(ack)的初始值(ISN)都是根据自身主机的时钟随机生成的,这也可以在一定程度上防止通信数据被伪造。

无论是建立连接还是终止连接,都会消耗一个序号,这从SYN包中seq值及对SYN应答包中的ack值、FIN包的seq值及对FIN应答包中的ack值可以看出来。

注意:对于报文段2(服务端的SYN+ACK),同样会存在超时重传。

服务端在发送该报文段(报文段2)时,会启动超时重传定时器,定时器一到,就会重传。

报文段7,是对被动关闭一方的FIN包的确认包,发送该包的同时,主动关闭方进入time_wait状态,并启动2MSL定时器。

2MSL定时器是针对最后一个报文段(报文段7)而设置的。报文段7是客户端对服务端FIN包的确认,发送报文段7的时候,启动2MSL定时器,同时客户端进入time_wait状态。如果在2MSL超时之前未再收到任何数据包,则该连接进行释放。
为什么是2倍的MSL的时间 ?

MSL是指报文段的最大生存时间。发送报文段7时启动2MSL定时器,一方面是报文段7到达服务端的最长时间是1个MSL,另外,如果服务端在一定时间内未收到针对FIN包的应答,会再次发送一个FIN包,该FIN包到达客户端的最长时间也是1个MSL。因此,客户端设置了2MSL的定时器,如果这段时间内没有再收到FIN包,说明服务端已经接收到了对上次FIN包的应答。如果又收到了一个FIN包,说明上次发送的FIN包应答延时或丢失了。

为什么是2倍的MSL的时间?

假设A和B建立了连接。传送数据完成后,A主动关闭到B的连接,B回复A关闭连接的ACK。B发起断开连接,A收到B的断开连接请求后,发送ACK。之所以要2MSL的时间,是因为对于A发送给B断开连接的ACK,有可能会丢失,如果B收不到ACK,将会再次发送一个断开连接的包。这时A的ACK到B,和B重传的断开连接的包到A,其时间和最大值不超过2个MSL。所以是2MSL。在A发送给B的ACK后,启动2MSL定时器,如果在2MSL时间内未收到B重传的断开连接包,A就关闭该连接。这时连接才彻底释放。
另外,一定要弄明白2MSL定时器,是在A发送给B的FIN包ACK后启动的。


发送第一个SYN的一端将执行主动打开(active open)。接收这个SYN并发回下个一SYN的另一端执行被动打开(passive open)

建立一个连接需要三次握手,而终止一个连接要经过四次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接时全双工,因此每个方向必须单独的进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。发送FIN通常是应用层进行关闭的结果。

收到一个FIN只意味着在这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。而这对利用半关闭的应用来说是可能的,尽管在实际应用中只有很少的TCP应用程序这样做。

首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。通常一方完成主动关闭而另一方完成被动关闭。

发送FIN将导致应用程序关闭它们的连接,这些FIN的ACK是由TCP软件自动产生的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值