【发布时间】:2011-05-01 07:20:32
【问题描述】:
我正在尝试创建从嵌入式控制器到 Windows Vista 服务器的 TCP 连接。我正在编写应用程序的 Windows 服务器部分。
当控制器尝试连接时,可能需要多次尝试才能建立连接。我已使用 Wireshark 调试问题,但似乎 Windows TCP 堆栈未遵循正确的握手协议。
Wireshark 转储:
"No","Time","Source","Destination","Protocol","Info"
尝试1:
"39","9.025322","10.0.0.252","10.0.0.92","TCP","49153 > xinuexpansion4 [SYN] Seq=0 Win=127 Len=0"
"40","9.025377","10.0.0.92","10.0.0.252","TCP","xinuexpansion4 > 49153 [ACK] Seq=1 Ack=1 Win=2048 Len=0"
"47","10.031750","10.0.0.252","10.0.0.92","TCP","49153 > xinuexpansion4 [RST] Seq=0 Win=127 Len=0"
尝试2:
"55","12.193941","10.0.0.252","10.0.0.92","TCP","49154 > xinuexpansion4 [SYN] Seq=0 Win=127 Len=0"
"56","12.194045","10.0.0.92","10.0.0.252","TCP","xinuexpansion4 > 49154 [ACK] Seq=1 Ack=1 Win=2048 Len=0"
"57","13.200431","10.0.0.252","10.0.0.92","TCP","49154 > xinuexpansion4 [RST] Seq=0 Win=127 Len=0"
尝试 3:
"67","18.529871","10.0.0.252","10.0.0.92","TCP","49156 > xinuexpansion4 [SYN] Seq=0 Win=127 Len=0"
"68","18.529957","10.0.0.92","10.0.0.252","TCP","xinuexpansion4 > 49156 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460"
"69","18.536318","10.0.0.252","10.0.0.92","TCP","49156 > xinuexpansion4 [ACK] Seq=1 Ack=1 Win=127 Len=0"
10.0.0.252 是发起连接的控制器,10.0.0.92 是 Windows PC。
据我了解,正确的顺序是 SYN、SYN+ACK、SYN。我大部分时间得到的是 SYN、ACK、RST(即 Windows 用 ACK 而不是 SYN+ACK 响应)。在上面的转储中,它显示了 3 次连接尝试,第 3 次有效。
我可以做些什么来“修复”Windows 以使其正确响应?
编辑 - 2 个数据包捕获
【问题讨论】:
标签: windows windows-vista tcp