HTTP三次握手与四次挥手

三次握手(建立连接)

  1. 第一次握手:客户端向服务器发送一个SYN包(包含客户端的初始序列号seq=x),表示客户端请求建立连接。此时客户端进入SYN_SENT状态。
  2. 第二次握手:服务器收到SYN包后,会发送一个SYN+ACK包(包含服务器的初始序列号seq=y和对客户端SYN的确认号ack=x+1),表示服务器同意建立连接。此时服务器进入SYN_RCVD状态。
  3. 第三次握手:客户端收到SYN+ACK包后,会发送一个ACK包(确认号ack=y+1),表示客户端已收到服务器的响应。此时客户端和服务器都进入ESTABLISHED状态,连接建立完成。
客户端                         服务器
  |                              |
  |         SYN (seq=x)          |
  | ---------------------------> |
  |                              |
  |     SYN+ACK (seq=y, ack=x+1) |
  | <--------------------------- |
  |                              |
  |         ACK (ack=y+1)        |
  | ---------------------------> |
  |                              |
  |        连接建立 (ESTABLISHED) |
  |                              |

四次挥手(断开连接)

  1. 第一次挥手:客户端向服务器发送一个FIN包(包含序列号seq=u),表示客户端请求断开连接。此时客户端进入FIN_WAIT_1状态。
  2. 第二次挥手:服务器收到FIN包后,会发送一个ACK包(确认号ack=u+1),表示服务器已收到断开请求。此时服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。
  3. 第三次挥手:服务器完成数据发送后,会发送一个FIN包(包含序列号seq=v),表示服务器也准备断开连接。此时服务器进入LAST_ACK状态。
  4. 第四次挥手:客户端收到FIN包后,会发送一个ACK包(确认号ack=v+1),表示客户端已收到服务器的断开请求。此时客户端进入TIME_WAIT状态,等待一段时间后关闭连接;服务器收到ACK后立即关闭连接。
客户端                         服务器
  |                              |
  |         SYN (seq=x)          |
  | ---------------------------> |
  |                              |
  |     SYN+ACK (seq=y, ack=x+1) |
  | <--------------------------- |
  |                              |
  |         ACK (ack=y+1)        |
  | ---------------------------> |
  |                              |
  |        连接建立 (ESTABLISHED) |
  |                              |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值