TCP三次握手、四次挥手的详解

三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。

四次挥手:即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。

一、三次握手(建立连接)

第一次握手:客户端发送一个SYN(同步序列编号)报文到服务器,并进入SYN_SENT状态,等待服务器确认。

第二次握手:服务器接收到客户端的SYN报文后,需要确认客户端的SYN(确认号ACKnum = 客户端的SYN序号+1),同时自己也发送一个SYN报文(服务器的SYN序号)。这个报文和服务器的SYN一起发送给客户端,服务器此时进入SYN_RECEIVED状态。

第三次握手:客户端收到服务器的SYN-ACK报文后,会确认服务器的SYN(确认号ACKnum = 服务器的SYN序号+1),并将确认ACK发送回服务器,此时客户端和服务器都进入ESTABLISHED状态,连接建立成功。。

三次握手图解为:

二、四次挥手(断开连接)

第一次挥手:当连接的一端完成数据传输后,它需要发送一个FIN(结束)报文到另一端,并进入FIN_WAIT_1状态,等待对方确认。

第二次挥手:接收到FIN报文的另一端,会发送一个ACK报文作为确认,并将确认号设置为对方的FIN序号+1,此时对方进入FIN_WAIT_2状态。

第三次挥手:在发送了ACK报文并确认了对方的FIN报文后,这一端也发送一个FIN报文,请求关闭连接。发送完FIN报文后,该端进入LAST_ACK状态。

第四次挥手:最初发送FIN报文的那一端收到对方的ACK报文后,进入TIME_WAIT状态。收到最后的FIN报文后,发送最后的ACK报文,并进入CLOSED状态。在TIME_WAIT状态持续的时间(通常是2倍的最大报文生存时间MSL)过后,确保对方收到了最后的ACK报文,连接最终关闭。

四次挥手图解为:

三、疑问解答 

1.为什么要进行三次握手而不是两次或四次?

答:三次握手能够确保双方都具备发送和接收数据的能力,并同步初始的序列号。两次握手可能会导致旧的连接请求再次被服务器接收,而四次挥手则是确保双方都明确地知道连接已经关闭。

2.为什么要进行四次挥手而不是三次或两次?

答:四次挥手是因为TCP连接是全双工的,意味着数据可以在两个方向上独立地同时传输。每个方向的连接单独进行关闭,因此需要两个步骤来终止每个方向的连接,总共四个步骤来确保连接完全关闭。如果使用两次挥手,那么可能一方已经关闭了发送通道,但另一方仍然在发送数据,这样就不会正确地关闭连接。

3.为什么确认(ACK)报文要放在三次握手的第二个步骤?

答:这样做是为了确保双方都能发送和接收数据。在第一步中,客户端发送SYN报文,如果服务器不能响应,那么客户端无法知道服务器是否能够接收数据。在第二步中,服务器发送SYN-ACK报文,既确认了客户端的SYN报文,又发送了自己的SYN报文。这样,客户端就能在第二步确认服务器的状态。

4.为什么TIME_WAIT状态需要持续一段时间?

答:在TIME_WAIT状态期间,确保旧的连接请求或响应不会被错误的方接收。这是通过确保足够的时间让网络中可能延迟的旧的TCP段被丢弃来实现的。这样,当新的连接请求到来时,就不会与旧的连接信息发生冲突。

5.为什么TIME_WAIT状态持续的时间通常是2倍的最大报文生存时间(MSL)?

答:MSL是决定一个TCP段在网络中可以存在多久的时间。在TIME_WAIT状态期间,系统必须等待足够长的时间,以确保任何在连接断开前发送的、可能延迟的TCP段都有机会被网络丢弃。通常是2倍MSL,但这个值可以根据特定的网络环境进行调整。

四、11种状态名词解析

LISTEN:等待从任何远端TCP 和端口的连接请求。
 
SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。
 
SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。
 
ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。
 
FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。
 
FIN_WAIT_2:等待远端TCP 的连接终止请求。
 
CLOSE_WAIT:等待本地用户的连接终止请求。
 
CLOSING:等待远端TCP 的连接终止请求确认。
 
LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)
 
TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。
TIME_WAIT 两个存在的理由:
          1.可靠的实现tcp全双工连接的终止;
          2.允许老的重复分节在网络中消逝。
 
CLOSED:不在连接状态(这是为方便描述假想的状态,实际不存在)

总结来说,TCP协议通过三次握手建立连接,确保双方都能正常通信,并通过四次挥手断开连接,确保双方都能正确地结束通信会话。这些机制保证了TCP连接的可靠性和稳定性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值