HTTP三次握手四次挥手

455 2月之前 HTTP

答案

1-http-hello-min

  • 第一次握手:Client 发送位码SYN=1到 Server,Server 由SYN=1知道,Client 要求建立联机;
  • 第二次握手:Server 收到请求后,要确认联机信息,向 Client 发送SYN=1, ACK=1
  • 第三次握手:Client 收到后回复确认信息ACK=1,Server 收到后确认信息后连接建立成功。

2-http-goodbye-min TCP断开链接的过程和建立链接的过程比较类似,只不过中间的两步并不总是会合成一步走,所以它分成了4个动作。

  • 第一次挥手:Client 发送一个FIN结束信号,请求关闭 Client 到 Server 的连接。
  • 第二次挥手:Server 收到这个FIN,就发回一个确认信号ACK。此时 Client 向 Server 的方向就释放了,客户端已经没有数据要发送了,但是若 Server 还在发送剩余的未发完的数据,Client 依然要接受。
  • 第三次挥手:Server 所有数据发送完成后,向 Client 发送一个FIN结束信号,并释放到 Client 方向的连接。
  • 第四次挥手:Client 收到 Server 的结束信号后,发送ACK报文确认,Server 收到 ACK 后关闭连接,Client 则等待 2 MSL(也即4分钟)后关闭连接。

答案解析

其实,Client和Server在发码的时候,会同时发送一个随机产生的SEQ序列号给对方,对方收到后会将SEQ加1再返回,这样发送方收到接收方返回的SEQ后,就能够校验接收方响应的是否是自己发送的那次请求。 http-with-seq

参考资料