简述 TCP 连接中的 half-close 状态
TCP Half-close 状态可以通过指定shutdown() 函数的第二个参数,SHUT_WR 或者是 SHUT_RD 来实现 而不是使用close() 函数, 但这个特性很少被应用程序使用。 为什么需要half-close
举个例子
sun % rsh bsdi sort < datafile
上面一行命令的的意思是从 sun 机器上连接到 bsdi ,
然后在 bsdi 上执行 sort 命令, 而datafile则是从 本地(sun)传到bsdi上的。
因为sort 程序需要等到datafile 全部传到bsdi 上之后才可以执行排序操作
所以当sun 把文件传完之后(到达end-of-file),
就可以对这个TCP连接执行half-close 操作了(shutdown, 发送一个FIN)
因为执行half-close 操作之后还是可以读 从bsdi上发来的结果。 所以sort 结束之后把结果发送给sun,
结果发送完毕之后,bsdi就可以执行close()操作(发送FIN),这样TCP连接就完全被断开了