TCP关闭时为啥需要4次握手
有些问题的解释就像考试题目的答案,看到后觉得是对的,也能看明白,并且觉得好巧妙,但还是不理解。
不理解的后果就是过后就忘,不能举一反三。
TCP协议中的三次握手和四次挥手(图解)_Simple life-CSDN博客_三次握手
这篇文章对TCP握手的解释,我觉的就是这样的。
有配图,有文字说明,说的也对,但就是无法理解为什么这样设计,过后就忘,没个整体的理解。
下面是我的理解。
建立连接的目的就是为了传输数据,在数据没传完之前是不能断开连接的,不论是发送的数据还是回复的数据。
接收端是服务提供方,是被动的,是没有权利发起终止请求的,只能等待和配合。
发送端是主动方,谁主动谁负责,它就得负责发起最开始的终止请求以及最后给接收端一个明确的可终止信号。
这个终止信号其实是对接收端的回复,它必须明确回复,否则接收端可不敢私自终止连接。
所以前两次握手就是发送端告诉接收端:我这边没事了,你那边也收收尾,要是没事了就向我报告,我通知你可以关闭。
接收端把最后的数据发送完后,给发送端发消息:我这边完事了,请指示。
发送端收到消息立马回复好的,然后进入等待状态。
那为什么要进入等待状态呢?因为你是主动方啊,你得为被动的接收端负责。
它要是没收到最后这个好的,会傻等的(当然不会一直傻等下去,应该会有超时机制进行把控),并且一会儿还会再来问:我这边完事了,请指示。
发送端和接收端根据接收到的信号按照约定的顺序流转自己的状态,从而达到上述目的。