通俗易懂的理解三次握手和四次挥手
-
三次握手(Three-Way Handshake):
- 这是在客户端和服务器之间建立连接时使用的过程。在这个过程中,客户端和服务器之间进行了三次通信以确保双方都能够正确地建立连接。
- 步骤一:客户端向服务器发送一个SYN(同步)报文,包含一个随机生成的序列号,表示客户端想要建立连接。
- 步骤二:服务器收到客户端的SYN报文后,回复一个ACK(确认)报文,确认收到了客户端的请求,并发送自己的SYN报文作为回应,同时也包含一个随机生成的序列号。
- 步骤三:客户端收到服务器的SYN/ACK报文后,再次发送一个ACK报文,确认收到了服务器的确认,连接建立完成。
这样,通过三次握手,客户端和服务器就能够建立起可靠的连接,开始进行数据传输。
-
四次挥手(Four-Way Handshake):
- 这是在客户端和服务器之间关闭连接时使用的过程。在这个过程中,客户端和服务器之间进行了四次通信以确保双方都能够正确地关闭连接。
- 步骤一:客户端发送一个FIN(结束)报文给服务器,表示客户端不再发送数据,但仍然可以接收数据。
- 步骤二:服务器收到客户端的FIN报文后,回复一个ACK(确认)报文,表示收到了终止请求,并且确认客户端还可以接收数据。
- 步骤三:服务器发送一个FIN报文给客户端,表示服务器也准备关闭连接,不再发送数据。
- 步骤四:客户端收到服务器的FIN报文后,回复一个ACK报文,表示收到了终止请求,连接关闭。
打个比喻
-
三次握手:
想象一下两个人之间建立通话的过程,就好像在打电话之前先与对方进行了三次确认:
- 步骤一:第一个人(客户端)拨打了电话,告诉对方(服务器)“我想与你通话”。
- 步骤二:接收到电话的对方(服务器)回答说“我收到你的请求,并且我也想和你通话”,然后他也给了第一个人一个信号。
- 步骤三:第一个人(客户端)再次确认并且说“我收到了你的信号,我们可以开始通话了”。
这样,两人就能够确认彼此的意愿,并且开始通话。
-
四次挥手:
现在想象一下两个人结束通话的过程,就好像在结束电话通话之前先与对方进行了四次确认:
- 步骤一:第一个人(客户端)告诉对方“我不想再说了”,并且先挂断了电话。
- 步骤二:接收到挂断电话的对方(服务器)回答说“好的,我知道了,但我还有些话要说,稍等一下”,然后继续说了几句。
- 步骤三:对方(服务器)说完了他想说的话后,再次告诉第一个人“我说完了,我们可以挂断电话了”。
- 步骤四:第一个人(客户端)收到对方的消息后,回答说“好的,我知道了,我们可以挂断电话了”。