HTTP请求响应的连接关闭

HTTP请求响应的连接关闭,http,rfc2616,Http,Rfc2616,关于HTTP连接关闭,我有两个问题: 如果一个客户端发送了一个HTTP请求,连接:接近HTTP服务器,那么在客户端收到响应后,HTTP服务器还是客户端负责发送TCP FIN 如果客户机发送了一个格式错误的HTTP请求,而服务器发送了一个400错误的请求,那么最好的做法是通过服务器关闭连接(即使HTTP请求有connection:keep-alive),还是保持连接处于活动状态 提前谢谢你回答我的问题 当服务器收到400个错误请求时,它将发送带有keep-alive头的响应,因为如果客户端想要发送

关于HTTP连接关闭,我有两个问题:

  • 如果一个客户端发送了一个HTTP请求,连接:接近HTTP服务器,那么在客户端收到响应后,HTTP服务器还是客户端负责发送TCP FIN

  • 如果客户机发送了一个格式错误的HTTP请求,而服务器发送了一个400错误的请求,那么最好的做法是通过服务器关闭连接(即使HTTP请求有connection:keep-alive),还是保持连接处于活动状态

  • 提前谢谢你回答我的问题

  • 当服务器收到400个错误请求时,它将发送带有keep-alive头的响应,因为如果客户端想要发送另一个请求,那么他们可以使用预先存在的连接(此连接在一定时间内关闭,它有一个过期日期)。Keep-Alive报头更多的是关于不让网络因TCP连接需求而饱和。你基本上会说“我会和你谈两分钟,不管你送我什么,我都会通过这个连接回答你”

  • 服务器只是从用户接收命令的对象。你问他,他有没有。TCP FIN是您发送到服务器以关闭连接的东西,但您可以选择何时不再与他通信。客户机传输第一个FIN,并接收ACK以确保服务器得到它。然后服务器启动自己的FIN,并等待ACK。如果一切正常,您和您的服务器将不再是朋友


  • 您是否在知名服务器上使用Fiddler(或类似工具)尝试过这些功能?感谢您的详细回复。所以,如果请求或响应的标题为“Connection:Close”,则客户端负责向服务器发送TCP FIN以启动连接关闭。不管怎样,这个头是由客户机在请求中发送的,还是由服务器在响应中发送的。我的理解是正确的吗?Connection:Close头包含在请求和响应中,无论何时请求关闭连接。你说得对!不,我用了tcpdump,发现不像你说的那样。我发现总是有服务器发送FIN。我不确定,你是否回答了第一个问题?如果出现以下情况,谁将关闭连接(或启动关闭连接):1。HTTP请求的头中有“连接:关闭”吗?2.HTTP响应的头中有“连接:关闭”吗?