http请求期间的连接超时是多少

时间:2018-04-07 06:45:33

标签: javascript http timeout connection-timeout

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

  1. 服务器在客户端未发送时关闭套接字连接 在[timeout] seconds期间服务器的任何字节。它与HTTP头有一些关系(Connection:keep-alive)。

  2. 如果套接字连接无法建立,客户端会在[timeout]秒后停止连接服务器。

  3. 所以我对这个定义感到困惑。什么是连接超时?它是客户端和服务器端之间的区别吗?

    TimeToLive,连接超时和请求超时之间有什么区别?

2 个答案:

答案 0 :(得分:8)

连接超时(客户端)与请求超时(服务器端)

连接超时是一个常见错误,只要客户端等待太长时间才能从任何服务器(对于API调用或浏览器请求页面)获得响应,就会发生。由于我们只能同时保留有限数量的打开连接,因此会在客户端生成此错误以终止连接。

通常,开发人员可以确定要在内部引发此错误之前等待响应的“秒数”。大多数HTTP客户端允许我们指定:

  • 打开超时:要等待多长时间与服务器建立连接(第一次握手)。

  • 读取超时:您要等待多长时间才能获得任何给定请求的响应。


另一方面,如果您是服务器而不是客户端,那么您可能会对“请求超时”更感兴趣。

请求超时与连接超时不同,在连接超时中,客户端不愿意等待服务器的响应时间太长。服务器也不愿意将未使用的连接保持太长时间。

建立连接后,客户端必须通过定期发送信息来不断通知服务器它仍然存在。如果客户端在指定时间内失败,则服务器会终止此连接,因为它认为客户端不再存在。

此行为旨在避免浪费资源。发生超时时,服务器将返回状态代码为Request Timeout的{​​{1}}响应。

答案 1 :(得分:5)

我会尝试非正式地回答它。

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

请求超时 - 如前一种情况,客户端不愿意等待服务器响应太长时间,服务器也不愿意将未使用的连接保持活动太长时间。一旦建立了服务器和客户端之间的连接,客户端必须通过向该服务器发送信息来定期通知服务器它仍然存在。如果客户端未能在指定时间内向服务器发送任何信息,则服务器只会丢弃此连接,因为它认为客户端不再与之通信(为什么浪费资源无意义)。

生存时间(TTL) - 是在数据包内部指定的值,该数据包在创建数据包时设置(通常为255),告知数据包可以在数据包中保留多长时间网络。当该数据包通过网络时,它到达位于数据包的起源和目的地之间的路径上的路由器。每次路由器重新发送数据包时,它也会将其TTL值减1,如果该值下降到0,则路由器只是丢弃它,而不是重新发送数据包,因为数据包不再存在。这种机制用于防止网络被数据泛滥,因为每个数据包只能在有限的“时间”内生存。