上图由wireshark抓取,并显示了TCP状态图
根据上图可以看到建立一个TCP连接的过程为(三次握手的过程):
客户端向服务器端发送一个SYN请求,同时传送一个初始序列号(ISN);
服务器发回包含客户端初始序列号的SYN报文段作为应答,同时将ACK序号设置为ISN+1;
客户端向服务器发送一个ACK确认,ACK序号为ISN+1.
终止一个TCP连接需要4次握手,这是由于TCP的半关闭(当一方调用shutdown关闭连接后,另一端还是可以发送数据,典型的例子为rsh)导致的:TCP连接是全双工的,连接的每一端在关闭连接时都向对方发送一个FIN来终止连接,同时对方会对其进行确认(回复ACK)。通常,都是一方完成主动关闭,另一方来完成被动关闭:
以上面的抓包为例,客户端向服务器发送了一个FIN(NO. 6);
服务器端对上面的FIN进行确认(NO.7),同时向客户端发送一个FIN(这儿其实是两个动作,一个是对上面FIN的ACK,另一个是发送一个FIN,但由于TCP的捎带ACK机制,两者放在一个包里发送了);
客户端对服务器端的FIN进行确认(NO. 8)。
Vecloud是一家面向企业提供云交换网络服务为核心业务的技术创新企业,公司有24*7专业运维团队支撑,可以快速定位客户使用中遇到的问题,最快解决问题。http://www.vecloud.com