http - 什么是 http 请求期间的连接超时

标签 http timeout connection-timeout

我找到了两种关于“连接超时”的解释:

  1. 如果客户端在 [timeout] 秒内未向服务器发送任何字节,服务器将关闭套接字连接。它似乎与 HTTP header (Connection: keep-alive) 有某种关系。

  2. 如果在此期间未建立套接字连接,则客户端会在 [timeout] 秒后停止尝试连接到服务器。

所以我对这个定义感到困惑。什么是连接超时?客户端连接超时和服务器端连接超时有什么区别?

TimeToLive、连接超时和请求超时有什么区别?

最佳答案

我会尽量用非正式的方式回答。

连接超时 - 是客户端和服务器之间必须建立连接的时间段。假设您将浏览器(客户端)导航到某个网站(服务器)。发生的情况是您的浏览器开始监听来自该服务器的响应消息,但由于各种原因(例如服务器离线),该响应可能永远不会到达。因此,如果 X 秒后服务器仍然没有响应,您的浏览器将“放弃”等待,否则它可能会永远卡住。

请求超时 - 在之前的案例中,客户端不愿意等待服务器的响应太久,服务器也不愿意让未使用的连接保持事件太久。一旦建立了服务器和客户端之间的连接,客户端必须通过向服务器发送信息来定期通知服务器它仍然存在。如果客户端在指定时间内未能向服务器发送任何信息,服务器会简单地断开此连接,因为它认为客户端不再在那里与它通信(为什么会无意义地浪费资源)。

生存时间 (TTL) - 是在创建数据包时设置的数据包内部指定值(通常为 255),表示数据包在网络。当此数据包通过网络时,它会到达位于数据包来源和目的地之间路径上的路由器。每次路由器重新发送数据包时,它也会将其 TTL 值减 1,如果该值下降到 0,路由器不会重新发送数据包,而是简单地丢弃它,因为数据包不应该再存在了。这种机制用于防止网络被数据淹没,因为每个数据包只能在有限的“时间”内存在。

关于http - 什么是 http 请求期间的连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49704708/

相关文章:

android - 改造 2 : Catch connection timeout exception

java - OkHttp3 从不在慢速互联网上超时

c# - 超时过期异常;找不到哪个连接保持打开状态或者是否有其他问题

wordpress - 使用 RCurl 登录 WordPress

jquery - 如何取消 jquery.load()?

java - 没有库的 Google Calendar API 示例

javascript - Mouseout 事件在鼠标实际离开之前触发

Angular 6 - HTTP 拦截器和 net::ERR_TIMED_OUT

http - 我应该使用什么HTTP错误代码来未经授权访问 protected 图像?

http - 如何避免一些网站拒绝 HTTP get 使用 go