TCP三次握手和四次挥手
TCP的三次握手指的是TCP在传输连接的时候所发生的三个阶段中的第一个阶段(连接建立,数据传送,连接释放)。也就是在客户端和服务器建立链接的时候。
第一次握手:客户端会发送一个syn包给服务器,然后同步于已发送的状态,等待服务器的确认。
第二次握手:服务器会收到客户端发来的syn包,然后确认并返回一个syn+ack包给客户端,并进入已回复状态
第三次握手:客户端收到服务器的syn+ack包后,会把ack包发送回去给服务器,确认连接,该包发送完毕之后客户端和服务器就建立了连接,可以传输数据了。
三次握手的机制有利于防止客户端和服务器建立连接的时候出现失效的连接请求报文,也就是没有收到服务器确认的客户端发出的信号,会因为网络延迟,两点之间的延迟导致不断产生新连接和旧连接,导致资源浪费。而三次握手可以防止服务器的资源浪费。
A为客户端,B为服务器
在建立好连接后,开始传输数据,传输数据也完成了之后会进行四次挥手的操作用于断开连接。
第一次挥手:数据传输结束后,客户端会发出连接释放报文,然后停止发送数据
第二次挥手:服务器收到了该连接释放报文,发出确认释放报文,然后进入半关闭状态,客户端不会给服务器发送数据了,而服务器仍然会继续发送。
第三次挥手:服务器发送的数据没有了,进程就会通知服务器释放TCP连接,然后服务器发出最后的报文。
第四次挥手:客户端收到连接释放报文之后,发出确认,在再第三次挥手结束之后对TCP连接的释放做出确认,双方的通信就结束了。