TCP建立连接的过程需要双方进行三次通信,其目的是为了同步信息,如指定连接服务器的端口号,双方的初始序列号。由于信道是不可靠的,为了保证数据传输的可靠性,就需要在建立连接时就双方的初始序列号达成一致,以便于在后续的数据传输中对收到的数据进行确认
从CLOSED到ESTABLISHED需要经历的过程:
第一次握手,连接发起方A发送A端的序列号; 第二次握手,连接接收方B确认并返回B的序列号; 第三次握手,A端确认收到B端回应的信息;
缺少第三次握手则就无法确认连接发起端是否收到接收端的信息,因此为了保证数据传输的可靠性,必须经过三次握手
从ESTABLISHED到CLOSED需要经历的过程:
TCP连接的关闭需要四次通信,因为TCP连接是全双工(数据在两个方向能同时传递),所以每个方向必须进行单独的关闭。一方完成了它的数据发送任务后可以发送FIN来终止这个方向的连接,当一方收到FIN后,应该通知应用层另一端已经终止了那个方向的数据传送,但仍然可以继续发送数据。
第一次握手,发起方A发送FIN,说明A端已经发送完数据,终止了这个方向数据传送; 第二次握手,接收方B发送ACK,说明B端已经接收完A发送的数据; 第三次握手,接收方B发送FIN,说明B端也已经发送完数据,并终止了这个方向的数据传送; 第四次握手,发起方A发送ACK,确认A端已经接收完B发送的数据
(任何一方发送结束信息,对方都得回复它 ’知道了’ )