有一种产品(未命名)存在特殊功能/问题。 如果过载,它将丢弃新的 SYN 数据包。对于某些人来说,这似乎并非没有道理。对于其他人来说,这似乎是不可想象的。就这样吧。
上游 TCP 客户端在放弃之前会重试发送 SYN 多少次?这个数字是基于 RFC 或标准还是只是行业规范?
SCTP 和 INIT 怎么样?
最佳答案
默认的 TCP 连接超时(这是您问题的基本主题)取决于客户端的平台,约为一分钟。这被编码到
connect()
系统调用作为 3 次重试,使用 8、16、32 秒等超时,具体取决于实现。 TCP 堆栈在故障返回到connect()
之前也可能会执行自己的重试。函数,因此在最终的ECONNTIMEOUT.
之前可能需要进行多次尝试平台在过载情况下丢弃 SYN 数据包并没有什么问题。 Unix 已经这样做了三十年,所以它现在不可能突然成为一个问题。这是平台行为,而不是产品行为,所以你提到的 secret 未命名产品不是罪魁祸首,除非它是操作系统。我不明白为什么它不能在这里命名。
关于tcp - 如果 SYN 数据包连续丢失,最大重试次数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927391/