我对 HTTP 连接关闭有两个问题:
如果客户端使用 Connection: close to HTTP Server 发送 HTTP 请求,客户端收到响应后发送 TCP FIN 是 HTTP Server 还是客户端的责任?
如果客户端发送格式错误的 HTTP 请求,而服务器发送 400 BAD REQUEST,则最好由服务器关闭连接(即使 HTTP 请求具有连接:保持活动)还是保持连接的好习惯还活跃吗?
提前感谢您回答我的问题?
当服务器收到 400 Bad Request 时,它会发送带有 keep-alive 标头的响应,因为如果客户端想发送另一个请求,那么他们可以使用预先存在的连接(此连接在一定时间内关闭时间,它有一个到期日期)。Keep-Alive Header 更多的是关于不使网络因 TCP 连接需求而饱和。你基本上是说“我要跟你谈两分钟,不管你给我发什么,我都会通过这个连接回复你”
服务器只是一个从用户接收命令的对象。你问他,他有没有。TCP FIN 是您发送给服务器以关闭连接的东西,但您选择何时不想再与他通信。客户端发送第一个 FIN,并收到一个 ACK 以确保服务器得到它。然后服务器启动自己的 FIN,并等待 ACK。如果一切正常,你和你的服务器就不再是朋友了。