在服务器和客户端之间的标准 TCP 连接上,我遇到了这个问题:客户端未收到 SYN-ACK,而服务器发送了 SYN-ACK。我可以在服务器和客户端的 Wireshark 上看到这个问题。
使用来自客户端 PC 的不同 TCP 客户端(例如 telnet),SYN-ACK 被接收,连接正常。更改路由器也适用于第一个客户端。
我不确定,但这两个客户端之间的主要区别在于 SYN 请求。在第一种情况下,len=0
Wireshark 中有一个,而使用 telnet 时 len 不为零。
有什么方法我可以使用吗任何路由器与服务器(java)和第一个客户端,用 C# 编写(也许会更改一些选项)?
编辑:服务器和客户端位于两个不同的网络上,我可以检查两者。两者之间没有防火墙。len=0
我唯一担心的是 SYN 中的防火墙。我认为这是不允许的。
答案1
如果没有看到实际捕获,很难说出您正在读取的 LEN 字段。Wireshark 可能在某个时候切换了解析器,您现在读取的长度与您预期的不一样。
当您尝试编写应用程序时,我不会太深入地进行协议跟踪。如果您可以通过 telnet 连接,则网络层可以正常工作,问题很可能出在您的代码中。
尝试创建另一个应用程序,将方程简化为一个套接字,看看它是否可以连接。即使它不发送/接收有用的内容,任何连接都是进步。