答案1
TCP 连接是双向的,单个 Fin 只能关闭一个方向。当您在客户端取消请求时,您会发送一个 Fin,服务器的 TCP 堆栈会对其进行 Ack,这确认客户端到服务器方向现已关闭。因此,您的客户端现在在该连接上向服务器发送更多数据是不合法的。但由于服务器从未发送过 Fin,因此服务器到客户端方向仍然打开。因此,服务器继续在该连接上发送数据是合法的,它确实这样做了:HTTP 响应。
如果您想强制立即关闭两个方向,您应该发送 TCP Reset (Rst) 而不是 Fin。
TCP 连接是双向的,单个 Fin 只能关闭一个方向。当您在客户端取消请求时,您会发送一个 Fin,服务器的 TCP 堆栈会对其进行 Ack,这确认客户端到服务器方向现已关闭。因此,您的客户端现在在该连接上向服务器发送更多数据是不合法的。但由于服务器从未发送过 Fin,因此服务器到客户端方向仍然打开。因此,服务器继续在该连接上发送数据是合法的,它确实这样做了:HTTP 响应。
如果您想强制立即关闭两个方向,您应该发送 TCP Reset (Rst) 而不是 Fin。