目录
为什么要三次握手?是为了保证建立一个安全可靠的链接
第一次握手是由客户端发起,向服务端发送一个报文1,表示发起新的连接。(第一次握手)
服务端收到报文1后知道客户端要请求建立一个新的连接,再向客户端回应一个确认信息包,表示确认客户端发起的第一次连接请求(第二次握手)
对于客户端来说,已经确定了能给服务端发送消息,也能收到服务端的回应。对于服务端来说,只收到一次消息,还不知道第二次握手响应给客户端的消息能不能收到,所以还要进行第三次握手。
当客户端收到服务端的响应信息时,再继续给服务端进行回应(第三次握手)
此时通过以上三次连接,不管是服务端还是客户端,都知道我能给对方发消息,也能收到对方的回应。
为什么要四次挥手? 为了保证断开连接前,消息传输都能够完成
第一次挥手由客户端发起一个断开连接报文,服务端收到报文后,知道客户端想要断开连接(第一次挥手)
由于服务端不一定立马做好断开准备,可能还有未发送完的消息,或者正在发送中的消息,服务端此时只能先做一个消息确认,告诉客户端已经知道你要断开连接了,但是服务端还没准备好,需要等待一会(第二次挥手)
在第二次挥手后,服务端可能把手里的消息发送完了,就会给客户端发送一个断开连接的报文,表示服务端已经做好断开连接的准备了(第三次挥手)
客户端接收到服务端的消息,也要给服务端一个消息确认(第四次挥手)
通过四次的连接,不管是服务端还是客户端都做好了断开连接的准备