TCP是一种面向连接可靠的字节流通信协议,其中的可靠稳定主要是对数据的确认无误。
三次握手机制
TCP建立连接时要传输三个数据包,俗称三次握手
1、首先要向服务器发送请求报文
2、服务器收到后对本地回复确认(ack)报文,并分配资源
3、本地收到后也向服务器发送ack报文,这样tcp链接就建立了
四次断开机制
TCP的四次断开确保计算机的资源释放干净否则会导致数据传输错误还会占用资源,其工作原理是:
1、本地发送一个FIN,关闭本地到服务器的数据传送,服务器进入FIN_WAIT_1状态
2、服务器收到后,发送一个ack确认给本地,服务器进入CLOSE_WAIT状态
3、服务器发送一个FIN,用来关闭服务器和本地的数据传送,服务器进入LAST_ACK状态
4、本地收到后,本地进入TIME_WAIT状态,并发送ack给服务器,服务器进入CLOSED状态,从而完成四次握手
因为当服务器收到本地的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的所以建立连接只需要三次,而关闭连接时,当服务器收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉本地,“你发的FIN报文我收到了”只有等到我服务器所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送,故需要四步握手。