三次握手是建立连接的过程,当客户端和服务端发起连接时,会发一包连接请求数据,询问能否与你连接,这包我们称为SYN包,如果对方同意连接,则回复一包SYN+ACK包,客户端收到后回复ACK包,连接建立,此次过程发送了三次包,所以成为三次握手。三次握手就是为了解决网络信道不可靠的问题
处于连接的客户端和服务端都可以发起关闭连接请求,此时就需要四次挥手来进行连接关闭。
第一次挥手、假设客户端主动发起连接关闭请求,它需要向服务端发起一份FIN包,表示关闭连接。自己进入终止等待1状态
第二次挥手、服务端收到FIN包,发送一份ACK包,表示自己进入了关闭等待状态,客户端进入终止等待2状态
第三次挥手、服务端此时还可以发送未发送的数据,而客户端也还可以接受数据,待服务端发送完数据后,发送一份FIN包,进入最后确认状态
第四次挥手、客户端收到之后回复ACK,进入超时等待状态,经过超时时间后关闭连接。而服务端收到ACK包后,立即关闭连接