TCP/IP详解 卷一(第十八章 TCP连接的建立和终止)
建立连接
建立一个TCP连接时会发生下述情况
1.客户TCP发送一个SYN(同步)分节,它告诉服务器将在(待建立)连接中发送的数据的初始序列号。
2.服务器确认(ACK)客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送数据的初始序列号。
3.客户确认服务器的SYN。
终止连接
TCP终止一个连接需要4个分节
1.某个应用进程首先调用close,我们称该端执行主动关闭。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
2.接受到这个FIN的对端执行被动关闭。这个FIN由TCP确认。它的接收也作为一个文件结束符传递给接收端应用程序。
3.一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
4.接收这个最终FIN的原发送端TCP确认这个FIN。
连接建立的超时
有很多情况导致无法建立连接,一种情况是服务器主机没有处于正常状态。
TCP连接超时会进行SYN重传,第2个SYN与第1个的间隔是5.8秒,而第3个与第2个的间隔是24秒。大多数伯克利系统将建立一个新连接的最长时间限制为75秒。
TCP的半关闭
TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。