对http稍有了解的人都知道,http的发起连接是三次握手,关闭连接是四次挥手,那具体的流程是怎样的的呢?今天 用两个小例子看懂三次握手和四次挥手
三次握手
三次握手可以理解为客户端和服务端相互确认发送和接收功能的过程
客户端:server你注意下,我发过去了一个信息,收到请回复
服务端收到信息,此时确认自己的接收功能是可以工作的
就给客户端回复信息说:好的,已收到,现在测试我的发送功能是否可用,收到请回复
然后客户端也收到了消息,知道了自己发送的消息,服务端收到了,以此确认发送功能可用,又收到了服务端的回复,确认了自己接收功能可用。
然后客户端回复说:ok收到了你发的消息。
服务端收到之后,也就确认了自己发送功能可用,三次交互,确认了双方的 发送和接收功能可以work,三次握手结束,建立连接
四次挥手
在客户端服务端数据传输完成之后,客户端想要断开连接,就又向服务端发送了一条消息说:我这边工作结束了,想要断开链接,收到请回复
服务端在收到这一条带有特殊标志的信息之后,立马回复了一条说:收到,但是我这还有一点信息需要传输给你,你等我信儿再关闭。
然后服务端将剩余的未发送的业务数据传输完毕之后,主动向客户端发送了一条信息称:ok,我这边发完了,可以关闭了,收到请回复
客户端在收到之后,回复了服务端:收到,那我这边关闭了。进入了TIME-WAIT(时间等待)状态
而服务端在收到这一条ack消息之后,关闭了链接
客户端在经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态
为何要三次握手?
确认双方的发送和接收功能都好使
为何要四次挥手?
保证数据可以完成传输