有一种产品(将保持未命名)存在特殊功能/问题。如果过载,它将丢弃新的 SYN 数据包。在某些人看来,这似乎并非不合理。在其他人看来,这可能是不可想象的。是因为它可能。
上游 TCP 客户端在放弃之前将重试发送 SYN 多少次?这个数字是基于 RFC 或标准,还是只是行业规范?
SCTP 和 INIT 怎么样?
有一种产品(将保持未命名)存在特殊功能/问题。如果过载,它将丢弃新的 SYN 数据包。在某些人看来,这似乎并非不合理。在其他人看来,这可能是不可想象的。是因为它可能。
上游 TCP 客户端在放弃之前将重试发送 SYN 多少次?这个数字是基于 RFC 或标准,还是只是行业规范?
SCTP 和 INIT 怎么样?
默认的 TCP 连接超时,这是您问题的基本主题,在客户端上取决于平台,大约一分钟左右。这被编码到connect()
系统调用中,使用 8、16、32 秒的超时重试 3 次,具体取决于实现。TCP 堆栈也可能在故障返回该函数之前进行自己的重试connect()
,因此在最终返回之前可能会有很多尝试ECONNTIMEOUT.
平台在过载情况下丢弃 SYN 数据包并没有错。Unix 已经做了 30 年了,所以它现在不可能突然变成一个问题。是平台动作,不是产品动作,所以你提到的秘密未命名产品不是罪魁祸首,除非是操作系统。我不明白为什么它不能在这里命名。