什么是 TCP 的连接超时时间

什么是连接超时时间

linux curl 访问 ip:80,假设 ip 机器 并没有开机,超时时间设置为 120s

第 10s 的时候,开机了,webserver 启动了成功了。此时能成功建立连接吗

前提:没有tcp syn retry、tcp重传。

问题核心:一个SYN包,发送一个一个不存在的对端对象是怎么处理的

问题缘由:
如果我有个需求,访问某个接口获取数据,不在乎任何客观因素无所谓用多长时间。 是否意味着我 curl 无视超时时间,最终是一定能拿到结果的

阅读 3.3k
1 个回答
第 10s 的时候,开机了,webserver 启动了成功了。此时能成功建立连接吗

存在理论上的可能性。

  1. 最简单的做法。报文路径上的网络设备添加一个延时,让路过的 SYN 包可以多在路径上消耗时间,让路径时间超过 10s。
  2. 你肯定要 hack 网络协议栈,因为主流的 TCP 实现,RTO 初始值都是 1s~3s,RFC6298 建议是 1s 吧,超过这个时间就会重传,你要把这个改大才能不重传。
  3. 或者不用 2 也行,你让防火墙丢掉后续的重传 SYN

当然,如果你不采用 1 的话,基本不可能,你要让这个 SYN 一直在网络中,TTL 还不能减少到 0.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进