1、简述:
三次握手和四次挥手是tcp协议重要的内容,也是客户端和服务器建立连接和断开连接的重要过程。
2、握手过程
1)客户端向服务器发起握手请求(SYN)。
2)服务器收到请求报文后,向客户端发送请求连接报文(SNY),并通知客户端(ACK)已经收到 1)请求报文。
3)客户端通知服务器(ACK)收到了2)的请求报文。
3、挥手过程
1)客户端向服务器发送断开连接请求(FIN)
2)服务器通知客户端(ACK)已经收到1)断开请求
3)服务器向客户端发送断开连接请求(FIN)
4)客户端通知服务器(ACK)已经收到2)断开请求
4、问题
1)为什么是三次握手四次挥手,而不是四次握手六次挥手?
要在保证可靠的情况下尽量少的报文来往。三次握手四次挥手可保证客户端与服务器都收到握手或者挥手的报文请求,并且确认对方收到了自己的请求报文。当然也有可能回复(ACK)报文没收到,那就没办法咯,只能握手或者回收失败咯。
2)为什么握手三次,而挥手是四次
握手的时候服务器和客户端之间没有要传输的数据,两个都处于空闲状态,在握手的1)报文到服务器之后,服务器同一个报文将SYN和ACK返回客户端。
在挥手的过程中,当服务器收到1)请求,服务器和客户端可能还在传输数据,2)的确认报文服务器可以立马返回,而服务器的请求报文3)只有在处理完之后,才会发给客户端,因此需要异步返回,就比握手多了一步。