【答案解析】 TCP是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。TCP使用三次握手(Three-way Handshake)协议来建立连接,图1描述了三次握手的报文序列。

图1 三次握手报文序列
当TCP连接建立起来后,就可以在两个方向传送数据流。当TCP的应用进程再没有数据需要发送时,就发送关闭命令。TCP通过发送控制位FIN=1的数据片来关闭本方数据流,但还可以继续接收数据,直到对方关闭那个方向的数据流,连接就关闭。
TCP协议使用修改的三次握手协议来关闭连接,即终止一个连接要经过4次握手。这是由于TCP的半关闭(Half-close)造成的。由于一个TCP连接是全双工(即数据在两个方向上能同时传递)的,因此,每个方向必须单独地进行关闭。关闭的原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。当一端收到一个FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。发送FIN通常是应用层进行关闭的结果。过程如图2所示。