C# 保持活动状态并请求超时
我理解,协议的目的是防止底层TCP连接关闭,以便可以通过同一TCP连接发送多个请求 但是,尚不清楚这如何影响已超时的请求:C# 保持活动状态并请求超时,c#,asp.net,tcp,keep-alive,C#,Asp.net,Tcp,Keep Alive,我理解,协议的目的是防止底层TCP连接关闭,以便可以通过同一TCP连接发送多个请求 但是,尚不清楚这如何影响已超时的请求: 如果在同一TCP连接上处理多个请求,当客户端超时时,ASP.NET如何知道?我不知道如何正确地问这个问题,但我怀疑如果底层TCP连接关闭,这是错误的?如何确定客户端是否已超时?肯定不能再发送响应了吗 由于客户端可以发送保持活动状态消息,因此它对请求有什么影响(如果有的话)?我希望它不会有任何效果,超时等机制将照常工作 感谢您的时间和帮助。HTTP保持活动(不应与TCP保
- 如果在同一TCP连接上处理多个请求,当客户端超时时,ASP.NET如何知道?我不知道如何正确地问这个问题,但我怀疑如果底层TCP连接关闭,这是错误的?如何确定客户端是否已超时?肯定不能再发送响应了吗
- 由于客户端可以发送
消息,因此它对请求有什么影响(如果有的话)?我希望它不会有任何效果,超时等机制将照常工作保持活动状态
对当前请求没有影响。但是客户端必须知道,服务器可能在HTTP响应发送之后和服务器收到新请求之前随时关闭连接。因此,服务器可能恰好在客户端尝试发送新请求时关闭连接。在这种情况下,客户端必须在新连接中重试幂等请求(GET),而其他请求应该失败 谢谢你解释Steffen。根据您的回复,
keep-alive
位于请求HTTP头中是有意义的。为什么客户端需要发送额外的HTTPkeep-alive
数据包?我真的把它们和TCP级别的保持活动包混为一谈了吗?@Pooven:是的,你把HTTP和TCP保持活动包混为一谈了。HTTP keep alive仅在HTTP头中发送,它是客户端向服务器发出的请求,请求在响应完成后不要关闭连接。TCP keep alive用于确保空闲连接(即无数据流)不会因为防火墙等超时而关闭,并且端点将检测到由于路由器断开、服务器关闭等导致的连接丢失。TCP keep alive可用于任何类型的TCP连接,不仅仅是HTTP。谢谢你解释Steffen。根据您的回复,keep-alive
位于请求HTTP头中是有意义的。为什么客户端需要发送额外的HTTPkeep-alive
数据包?我真的把它们和TCP级别的保持活动包混为一谈了吗?@Pooven:是的,你把HTTP和TCP保持活动包混为一谈了。HTTP keep alive仅在HTTP头中发送,它是客户端向服务器发出的请求,请求在响应完成后不要关闭连接。TCP keep alive用于确保空闲连接(即无数据流)不会因为防火墙等超时而关闭,并且端点将检测到由于路由器断开、服务器关闭等导致的连接丢失。TCP keep alive可用于任何类型的TCP连接,而不仅仅是HTTP连接。