概述
三次握手是指Client端和Server端建立连接的过程,而四次挥手是指Client端和Server端断开连接的过程。
三次握手
过程:
为了准确无误的将数据发送到指定IP处,TCP协议采用了三次握手的策略,如下步骤所示:
- 1、客户端采用TCP协议将带有SYN标志的数据包发送给服务器,等待服务器的确认。
- 2、服务器端在收到SYN的数据包后,必须确认SYN,即自己发送的ACK应答信息,同时,自己也将会向客户端发送一个SYN标志。
- 3、客户端在接收到服务器短的SYN+ACK包后,自己会向服务器发送ACK包,完成三次握手。那么客户端和服务器正式建立了连接,开始传输数据。
四次握手
过程:
- 客户端发送一个FIN报文给服务器,表示我将关闭客户端到服务器端这个方向的连接。
- 服务器收到报文后,发送一个ACK应答信息给客户端,表示我还有数据需要进行传输,传输完成后通知您。
- 服务器发送一个FIN报文给客户端,表示自己也将关闭服务器端到客户端这个方向的连接。
- 客户端收到报文后,发回一个ACK报文给服务器,同时将自己设置成等待状态。
拓展性问题
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
网友评论