注:三次握手和四次挥手本身并不复杂,但却可以从很多角度理解这两个过程,本文仅取一个比较有趣的视点解释
为什么要三次握手?
答:三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。
- 第一次握手,client:你准备好了吗?
- 第二次握手,server: 我准备好了,你呢?
- 第三次握手,client: 我也准备好了.我们开始吧!
注:核心思想就是,客户端和服务器分别确认
对方是否准备好建立连接,并且每一次的确认信息都要得到对方的回应,两次确认和两次回应本应该是四次,但是第二次握手时,服务器将发出的确认信息和对客户端的回应做成一条信息发送了,所以就是三次握手.
问题1: 为什么要四次挥手?
答:根本原因是,一方发送FIN只表示自己发完了所有要发的数据,但还允许对方继续把没发完的数据发过来。
举个例子:A和B打电话,通话即将结束后,A说“我没啥要说的了”,B回答“我知道了”,但是B可能还会有要说的话,A不能要求B跟着自己的节奏结束通话,于是B可能又巴拉巴拉说了一通,最后B说“我说完了”,A回答“知道了”,这样通话才算结束。
- 第一次挥手,client:我说完了
- 第二次挥手,server:我知道了(但此时server可能还有话要说)
- 第三次挥手,server:我也说完了
- 第四次挥手,client:我知道了,(双方挂了电话)