TCP/IP协议中的四次挥手

与上文相对比,四次挥手比三次握手多了一次,这是为什么呢?为什么断开连接的时候一定要四次沟通呢?下面我将用通俗的话解释下这个过程。

首先,我们可以知道,如果双方想断开连接,那一定是双方都没有数据想发送给对方了,这时就存在着一个问题,我知道我自己没有数据发送了,但是我没有办法知道对方是否还有数据要发,所以我们可以将这多余的一次沟通看成是这个多余的步骤的补偿。下面详细的说明一下这个问题,我们同样假设客户端想要断开连接。

第一次挥手。客户端发送断开请求,表示我没有数据要发了,可以断开了。此时客户端处于断开等待环节

第二次挥手。服务器收到后,表示我收到了你的请求了,但是请等一下,我还有数据要发。此时服务器进入半关闭状态(表示我只能发缓存区的数据,不能增加新的数据了)。同样进入关闭等待环节。

第三次挥手,服务器再次发送,表示我也没有数据要发了,可以断开了。

第四次挥手,客户端收到第三次挥手的请求后,发送确认,然后等待关闭。

上面有几个点需要注意,第四次挥手步骤后的等待关闭的时间一般为2MSL,MSL表示信息传递过程中不会丢失的最大时间,之所以2MSL时间,是因为客户端需要确定服务器收到了我的确认信息。TCP/IP协议中有一个规定,如果对方没有收到我的信息,那么在2MSL时间后就会有一个超时重传命令,如果2MSL时间后没有收到任何命令,表示我也可以关闭连接了。

如果按照标准的流程来描述的话,那么

第一次挥手,客户端发送FIN报文段,表示请求

第二次挥手,服务器收到后,用ACK报文段回应,表示已知晓

第三次挥手,服务器发送FIN报文段,表示请求

第四次挥手,客户端发送ACK报文段,表示已知晓

所以根据标准流程也可以看出,由于FIN报文段和ACK报文段没有办法同时发送,所以导致着想要断开连接的双方需要4次挥手才能实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/IP协议的三次握手和四次挥手是在建立和终止TCP连接时使用的过程。 三次握手是指在建立TCP连接时,客户端服务器之间进行的三个步骤: 1. 第一步:客户端服务器发送一个SYN(同步)包,其包含自己的初始序列号(ISN)。 2. 第二步:服务器收到SYN包后,回复一个SYN-ACK(同步-确认)包,其包含确认号(ACK)和自己的初始序列号。 3. 第三步:客户端收到服务器的SYN-ACK包后,再回复一个ACK包,确认连接已建立。此时,双方可以开始进行数据传输。 这个三次握手的过程是为了确保客户端服务器都能够正常接收和发送数据,以建立可靠的连接。 四次挥手是指在终止TCP连接时,客户端服务器之间进行的四个步骤: 1. 第一步:当客户端想要关闭连接时,发送一个FIN(结束)包给服务器。 2. 第二步:服务器收到FIN包后,回复一个ACK包确认收到,并进入半关闭状态。此时服务器仍可以发送数据给客户端。 3. 第三步:当服务器也想要关闭连接时,发送一个FIN包给客户端。 4. 第四步:客户端收到FIN包后,回复一个ACK包确认收到。此时连接关闭。 这个四次挥手的过程是为了确保客户端服务器都能够完成数据的传输,并安全地关闭连接。 总结起来,三次握手用于建立连接,而四次挥手用于终止连接。通过这些步骤,TCP连接可以在客户端服务器之间建立起来,并在不需要时安全地关闭。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值