1.应用进程调用Close,则该方的TCP发送FIN分节N到被动断开的一方:表示数据发送完毕;
2.被动断开连接的一方的TCP确认FIN:ACK N+1;同时,把它作为文件结束符发送给应用进程;
3.接收到文件结束符的被动关闭一端,调用close关闭它的套接口;导致tcp也发送一个FIN:M给主动关闭的一端;
4.主动关闭的一端接收到FIN后,进行确认ACK:M+1,即完成了TCP四次握手。
TCP 用三个分节建立一个连接,终止一个连接则需要四个分节。
1. 某个应用进程首先调用 close,我们称这一端为执行主动关闭的一端,这一端TCP 发送一个FIN分节 FIN K,表示数据发送完毕。 2. 接收 到FIN的另一端执行被动关闭,这个FIN 由 TCP 确认 ACK K + 1,他的接收也作为文件结束符传输给接收方应用进程,因为FIN的接收意味着应用进程在相应连接上再也接收不到额外数据。 3. 一段时间后,接收到文件结束符的应用进程将调用close关闭他的套接口,这导致它的tcp 也发送一个FIN, FIN J. 4. 接收到这个FIN的原发送方 TCP对他进行确认 ACK J+1.