什么是tcp的三次握手和四次断开

本文详细解析了TCP连接中的三次握手过程,包括客户端和服务端之间的交互,以及为何需要三次握手以防止旧报文问题。同时介绍了四次断开的机制,展示了从关闭请求到连接完全断开的完整流程。
摘要由CSDN通过智能技术生成

      首先,三次握手的意思是在建立TCP连接时,需要客户端和服务端相互之间总共发送3个包以确认连接是否建立;而四次断开的意思是在终止TCP连接时,需要客户端和服务端相互之间总共发送4个包以确认连接是否断开。

       然后,详解三次握手和四次断开:

      1.三次握手,第一次握手时,客户端会向服务端发送一个带有SYN标志的数据包,该数据包包含客户端的初始化序列号ISN。这个SYN不会携带数据包,但会占用一个序号。此时,客户端处于SYN-SEND状态,而服务器处于LISTEN状态;第二次握手时,服务器收到客户端发来的SYN后,会回复一个带有SYN+ACK标志的数据包,其中包含了服务端的ISN。这代表着服务端已成功接收到了客户端的SYN并告诉客户端它的ISN。此时,服务端处于SYN-RCVD状态,客户端处于SYN-SAND状态;第三次握手时,客户端在接收到服务端的SYN+ACK数据包之后,会再次发送一个带有ACK标志的数据包,这个时候ACK标志着都完成了SYN的确认,从而建立了TCP连接。此时,客户端处于ESTABLISHED状态,服务端同样处于ESTABLISHED状态。

(注:为什么要三次握手,其实原因是为了防止已失效的报文再次传到服务器从而引发错误)

      2.四次断开,第一次断开时,客户端主动发起连接关闭请求,向服务端发送FIN包,表示要关闭连接状态,自己进入FIN-WAIT-1状态;第二次断开时,服务端收到了客户端发送的FIN包,然后发送ACK包给客户端表示自己进入了CLOSE-WAIT状态,客户端进入了FIN-WAIT-2状态;第三次断开时,服务端会发送FIN包给客户端,进入最终确认状态,即LAST-ACK状态;第四次断开时,客户端收到来自服务端的FIN包后回复ACK包给服务端,进入TIME-WAIT状态,最终会关闭连接,而服务端收到了ACK包后立即关闭连接状态。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值