1

我对我的客户端程序无法与远程 Web 服务器建立 TCP 连接的问题感到困惑。

[场景]

基于 ubuntu server 12.04 LTS 的客户端程序。

192.168.1.118(客户端程序)<--------TCP---------> sync.oncecode.com(网络服务器)

[现象]

客户端发送 SYN,Web 服务器回复 SYN/ACK,客户端立即发送 RST。我在 TCP/IP 标头中看不到任何异常。有人可以告诉我这里可能发生的事情吗?我已经没有想法了......

[ Tcpdump 日志]

21:31:31.622576 IP 192.168.1.118.51441 > sync.oncecode.com.http: Flags [S], seq 3468888759, win 5360, options [mss 536,sackOK,TS val 40855676 ecr 0,nop,wscale 7], length 0

        0x0000:  4500 003c 537d 4000 4006 ee75 c0a8 0176  E..<S}@.@..u...v
        0x0010:  2a79 0c32 c8f1 0050 cec3 0ab7 0000 0000  *y.2...P........
        0x0020:  a002 14f0 f8f7 0000 0204 0218 0402 080a  ................
        0x0030:  026f 687c 0000 0000 0103 0307            .oh|........

21:31:31.690808 IP sync.oncecode.com.http > 192.168.1.118.51441: Flags [S.], seq 1535159088, ack 3468888760, win 5792, options [mss 1440,sackOK,TS val 971694021 ecr 40830368,nop,wscale 6], length 0

        0x0000:  4500 003c 0000 4000 3606 4bf3 2a79 0c32  E..<..@.6.K.*y.2
        0x0010:  c0a8 0176 0050 c8f1 5b80 ab30 cec3 0ab8  ...v.P..[..0....
        0x0020:  a012 16a0 6d6e 0000 0204 05a0 0402 080a  ....mn..........
        0x0030:  39ea dfc5 026f 05a0 0103 0306            9....o......
21:31:31.690826 IP 192.168.1.118.51441 > sync.oncecode.com.http: Flags [R], seq 3468888760, win 0, length 0

        0x0000:  4500 0028 0000 4000 4006 4207 c0a8 0176  E..(..@.@.B....v
        0x0010:  2a79 0c32 c8f1 0050 cec3 0ab8 0000 0000  *y.2...P........
        0x0020:  5004 0000 145a 0000  

[附加] 防火墙似乎已关闭,我检查了它

olele@ubuntu:~$ sudo iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination


Chain FORWARD (policy ACCEPT)

target     prot opt source               destination


Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination
4

1 回答 1

1

tihuBird,如果我误解了以下任何内容,请纠正我:

数据包捕获显示客户端的SYNTimestamp选项值为 ,40855676而服务器的SYN+ACK回复包含 的 Timestamp Echo Reply 40830368

查询的第一行必须是服务器已经回复了一个SYN不是数据包捕获中的那个。

正确的 TCP 协议栈会在握手期间检查 TSecr 是否有效?

并非完全不合理:回显回复已返回过去的时间戳值。

谁能给点建议,为什么重启路由器后问题仍然存在。但是重启了客户端服务器,问题就解决了。是什么原因导致Web Server 响应缓慢。

因此,您重新启动了正在为客户端执行 NAT 的路由器(?),问题仍然存在。您重新启动客户端并解决问题?

我会建议您在路由器的客户端和面向 Internet 的一侧运行数据包捕获。如果没有这些证据,其他任何事情都只是猜测,您将不得不等到问题再次出现。

我怀疑服务器的响应速度可能并不慢,并且客户端计算机上的网络接口卡/驱动程序存在问题。客户端+路由器的数据包捕获应该能够反驳这个假设。

请记住,大多数现代网卡都有各种与性能相关的 TCP“卸载”选项,可能其中一个被巧妙地破坏了,重新启动可以清除这种情况。禁用卸载功能(并让操作系统管理更多 TCP 细节)可能也解决了问题,并证明 NIC 是原因。

于 2012-11-16T10:13:39.230 回答