三次握手四次挥手

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议,它在互联网中广泛应用于数据传输。TCP确保了数据的可靠传输,主要通过三次握手建立连接和四次挥手关闭连接来实现。

三次握手(Three-Way Handshake)

三次握手是在客户端和服务器之间建立TCP连接时所采用的步骤,具体过程如下:

  1. 客户端发送SYN(同步)报文: 客户端向服务器发送一个SYN报文,其中包含客户端的初始序列号(ISN),并设置SYN标志位。

  2. 服务器响应SYN: 服务器接收到客户端的SYN报文后,会发送一个SYN-ACK报文作为响应,其中包含了确认号(ACK),确认客户端的初始序列号,同时也发送自己的初始序列号(ISN),并设置SYN和ACK标志位。

  3. 客户端确认SYN-ACK: 客户端接收到服务器的SYN-ACK报文后,会发送一个ACK报文作为确认,确认服务器的初始序列号,同时也发送自己的确认号(ACK),表示已经收到了服务器的响应。

经过这三次握手,客户端和服务器建立了连接,可以开始进行数据传输。

四次挥手(Four-Way Handshake)

四次挥手是在客户端和服务器之间关闭TCP连接时所采用的步骤,具体过程如下:

  1. 客户端发送FIN报文: 当客户端需要关闭连接时,会发送一个FIN报文,表示客户端不再发送数据。

  2. 服务器响应ACK: 服务器收到客户端的FIN报文后,会发送一个ACK报文作为确认,表示已经收到了客户端的关闭请求。

  3. 服务器发送FIN报文: 服务器在关闭连接前,可能还有未发送完的数据需要传输完毕,传输完成后,服务器会发送一个FIN报文给客户端,表示服务器也不再发送数据。

  4. 客户端响应ACK: 客户端收到服务器的FIN报文后,会发送一个ACK报文作为确认,表示已经收到了服务器的关闭请求,并且客户端也不再发送数据。

总结

  • 客户端发送第一次挥手,之后由 ESTABLISHED 状态转为 FIN_WAIT1 状态
  • 服务器收到客户端的第一次挥手之后,发送第二次挥手给服务器,服务器进入 CLOSE_WAIT 状态,等待服务器自身的 SOCKET 关闭等处理
  • 客户端收到服务器的第二次挥手,进入 FIN_WAIT2 状态,等待服务器关闭
  • 服务器发送第三次挥手,然后进入 LAST_ACK 状态
  • 客户端收到第三次挥手,发送第四次挥手,客户端进入 TIME_WAIT 状态;
  • 服务器收到第四次挥手,进入 CLOSED 状态,客户端等待 2MSL 后,进入 CLOSED 状态

 

经过这四次挥手,客户端和服务器完成了关闭连接的过程,释放了资源,结束了通信。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值