我有两个关于HTTP连接关闭的问题:
-
如果客户端发送了一个Connection: close to HTTP Server的HTTP请求,在客户端收到响应后,是HTTP Server还是客户端负责发送TCP FIN ?
-
如果客户端发送了一个格式不好的HTTP请求,服务器发送了一个400 bad request,关闭服务器的连接(即使HTTP请求有连接:keep-alive)是最好的做法,还是保持连接仍然活跃?
提前感谢你回答我的问题?
-
当服务器接收到400 Bad Request时,它将发送带有keep-alive头的响应,因为如果客户端想要发送另一个请求,那么他们可以使用预先存在的连接(此连接在一定时间内关闭,它有一个截止日期)。Keep-Alive报头更多的是关于不让TCP连接需求使网络饱和。你可以说"我要和你聊两分钟,不管你发什么,我都会通过这个连接回答你"
-
服务器只是一个接收用户命令的对象。你问他,他会不会。TCP FIN是您发送给服务器以关闭连接的东西,但您可以选择何时不想再与他通信。客户端发送第一个FIN,并接收一个ACK,以确保服务器收到它。然后服务器启动自己的FIN,并等待ACK。如果一切正常,你和你的服务器不再是朋友。