tcp - 如果 SYN 数据包连续丢失,最大重试次数是多少?

标签 tcp

有一种产品(未命名)存在特殊功能/问题。 如果过载,它将丢弃新的 SYN 数据包。对于某些人来说,这似乎并非没有道理。对于其他人来说,这似乎是不可想象的。就这样吧。

上游 TCP 客户端在放弃之前会重试发送 SYN 多少次?这个数字是基于 RFC 或标准还是只是行业规范?

SCTP 和 INIT 怎么样?

最佳答案

  1. 默认的 TCP 连接超时(这是您问题的基本主题)取决于客户端的平台,约为一分钟。这被编码到 connect()系统调用作为 3 次重试,使用 8、16、32 秒等超时,具体取决于实现。 TCP 堆栈在故障返回到 connect() 之前也可能会执行自己的重试。函数,因此在最终的 ECONNTIMEOUT. 之前可能需要进行多次尝试

  2. 平台在过载情况下丢弃 SYN 数据包并没有什么问题。 Unix 已经这样做了三十年,所以它现在不可能突然成为一个问题。这是平台行为,而不是产品行为,所以你提到的 secret 未命名产品不是罪魁祸首,除非它是操作系统。我不明白为什么它不能在这里命名。

关于tcp - 如果 SYN 数据包连续丢失,最大重试次数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927391/

相关文章:

c# - 如何从 telnet 或 SSH 访问 c# 套接字服务器?

http - panic : close of closed channel during persistent http call in GO(golang)

networking - ppp、tcp、rtp 和 tls 中哪个是面向连接的协议(protocol)?

c++ - send() 没有传送所有字节?

c# - 如何区分 Socket 对象

c++ - 6 字节 MACID 的表示

tcp - http层嗅探器的写法

php - 仅在读取有用数据后关闭套接字,我真的可以节省带宽吗?

mysql - 打开 MS SQL TCP 端口(安全)

Java 枚举值