三次握手和四次挥手的过程原因,通俗的解释

三次握手,四次挥手

三次握手的过程和原因

通俗的讲,就是通信的双方在发送数据之前,必须要建立一个连接,就是将客户端和服务端的内存里面保存一份关于对方的端口号和ip地址之类的一些数据(客户端和服务端,每一个程序,都会占用当前机器的一个端口号)

**第一次握手:**客户端发送一个网络包(这个网络包就是一个初始化连接的序列号)

服务端接受到了这个序列号的时候,服务端可以得出结论就是,客户端的***发送能力***和服务端的***接收能力***是正常的,还能获取一些客户端的的一些信息,比如说ip地址端口号之类的。

但是客户端不知道自己的***发送能力和接收能力***是否正常,所以需要第二次握手

**第二次握手:**服务端发送一个数据包,客户端接受服务端发送的数据包

这个时候,客户端知道了自己的***发送能力,接收能力***,也知道了服务端的***接收能力***和***发送能力***都是正常的,服务端知道自己的***发送和接收能力***以及客户端的***发送能力***是正常,但是却不知道客户端的***接收能力***是否正常,这就是为什么要有第三次握手。

第三次握手:客户端发送一条网络包给服务端,服务端接收到了客户端发送的网络包以后,就能确认了客户端的接收能力**是否正常了。

四次挥手的过程和原因

第一次挥手:关闭方(可以是客户端也可以是服务端)发送一个包,表示自己没有要发送的数据了,这个时候开始等待被关闭方返回的消息

第二次:被关闭方接收到了关闭方发送的报文以后,也会发送数据包,告诉关闭方,他收到了关闭方发送的关闭连接的请求,但是这个时候,服务端可能还有没有发送的数据,这个时候可以发送数据。

第三次握手:被关闭方告诉关闭方,它数据发送完成,它也要关闭了

第四次:关闭方,告诉被关闭方,它知道了。

如果挥手是三次会怎么样?

第一次:关闭方发送数据,告诉被关闭方要关闭了

第二次:关闭方开始发送最后的数据,并且发送确认收到的报文。

第三次:关闭方发送报文,告诉被关闭方收到了它发送的数据。

咋一看,好象也行,但是有一个问题。

第二次挥手的时候,无法确定被关闭方还有多少数据没有发送,这个时候,关闭方就会一直等待着被关闭方发送数据,会占用资源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章