客户端先关闭套接字,当服务器没有太多数据时,tcp连接关闭是可以的,例如:
FIN -->
<-- ACK
<-- FIN, ACK
ACK -->
当服务器忙于发送数据时:
FIN -->
<-- ACK,PSH
RST -->
并且服务器连接进入 CLOSE_WAIT 状态并挂在那里很长时间。
这里有什么问题?客户端相关还是服务器相关?这发生在 Redhat5 的本地套接字上。
这篇文章讲了为什么会发送“RST”,但是不知道为什么服务器连接卡在CLOSE_WAIT上,并且不发送FIN。
[编辑]我忽略了最重要的信息,这发生在 qemu 的 slirp 网络仿真上。处理紧密连接似乎是 slirp bug 的问题。