gpt4 book ai didi

http - HTTP Keep Alive时长与TCP超时时长的关系

转载 作者:可可西里 更新时间:2023-11-01 02:29:26 31 4
gpt4 key购买 nike

我试图了解 TCP/IP 和 HTTP 超时值之间的关系。这两个超时值是不同的还是相同的?大多数 Web 服务器允许用户通过一些配置来设置 HTTP Keep Alive 超时值。 Web 服务器如何使用该值?此值是否仅在底层 TCP/IP 套接字上设置,即 HTTP 保持事件超时和 TCP/IP 保持事件超时是否相同?还是区别对待?

我的理解是(可能不正确):Web 服务器在底层 TCP 套接字上使用默认超时(即无限期),而不管配置的 HTTP Keep Alive 超时如何,并创建一个工作线程来对指定的 HTTP 超时间隔进行倒计时。当工作线程达到零时,它会关闭连接。

编辑:我的问题是关于两个超时持续时间之间的关系或差异,即当 HTTP 保持事件超时持续时间和 Web 服务器使用的套接字 (SO_TIMEOUT) 上的超时不同时会发生什么?我什至应该担心这两个是否相同?

最佳答案

开放的 TCP 套接字不需要双方(我们称他们为 Alice 和 Bob)之间的任何通信,除非正在发送实际数据。如果 Alice 已收到对她发送给 Bob 的所有数据的确认,则她无法区分以下情况:

  1. Bob 已被拔掉电源,或者 Alice 无法访问。
  2. Bob 已重新启动,或者以其他方式忘记了他与 Alice 建立的开放 TCP 套接字。
  3. Bob 已连接到 Alice,并且知道他有一个开放的连接,但他没有任何想说的。

如果 Alice 有一段时间没有收到 Bob 的消息并且想要区分上述情况,她可以重新发送她的最后一个字节数据,包裹在一个合适的 TCP 帧中以被识别为重新传输,基本上假装她没有听到确认。如果 Bob 的电源被拔掉了,她将什么也听不到,即使她在几秒钟内重复发送数据包也是如此。如果 Bob 重启或忘记连接,他会立即回复说连接无效。如果 Bob 对连接感到满意并且无话可说,他将以确认重传作为响应。

Timeout 表示 Alice 在发送一个需要回复的数据包时愿意等待回复的时间。 Keepalive 时间表示在她重新传输她的最后一位数据并要求确认之前应该允许流逝的时间。如果 Bob 丢失,Keepalive 和 Timeout 值的总和将指示 Alice 收到她的最后一位数据和她决定 Bob 已死之间的最坏情况时间。

关于http - HTTP Keep Alive时长与TCP超时时长的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735883/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com