caf*_*caf 12
FIN当该方的应用程序请求关闭连接时发送.这不一定是在FIN从另一方接收到之后立即发生的- 一方可以发送一个FIN,然后另一方可以在发送自己之前发送更多数据FIN.
一旦TCP连接启动,它就完全对称 - 任何一方都不能区分为"服务器"或"客户端".这意味着任何一方都可以发送第一个FIN.由于主机在发送之后不能再在连接上发送数据FIN,因此通常是首先知道它没有更多数据要发送的那一方.
设计网络协议有一个很好的实际原因,以便客户端首先关闭连接 - "第一个关闭"最终处于TIME_WAIT状态,最长段寿命的两倍,即几分钟.这占用了几分钟的少量资源 - 但如果这发生在服务器端,服务器每秒处理数百个连接,那么这些TIME_WAIT套接字将很快加起来.最好在客户中分配这种负担.