【发布时间】:2011-08-28 05:47:25
【问题描述】:
我正在使用的 Mac OSX 网络客户端有时无法连接到 HTTPS 端口。查看网络跟踪,我们看到:
T0.0 client:port -> server:443 SYN
T0.1 server:443 -> client:port SYN, ACK
T3.1 server:443 -> client:port SYN, ACK
T6.1 server:443 -> client:port RST
3 秒延迟与重试失败的 SYN/ACK 的 TCP 超时相匹配,因此这是意料之中的。但这里令人难以置信的是客户端从不响应 ACK 或 RST。当客户端尝试第二次登录时,它是成功的。此问题在许多第一次尝试连接时重现。该程序还有其他 HTTPS 连接同时进行,并且在网络跟踪中它们似乎很好。
我的怀疑是存在导致套接字有时被错误管理的竞争条件。但到目前为止,除了受影响的客户端(这是一个非常庞大且复杂的软件)之外,我无法在任何代码中重新创建它。即使使用nmap 和hping3 手工制作数据包,客户端总是至少发送一个RST。
有什么方法可以(有意或无意地)在用户空间代码中配置这样的套接字,使其不响应 SYN/ACK?
【问题讨论】:
标签: networking tcp