三次握手中,客户端收不到服务器应答,服务器却直接收到了客户端的RST.

shit_happens 2015-05-11 06:20:35

以上是服务端的情况

这是客户端的情况
服务端放在了远端一个内网机器上,但是做了端口映射,为了得到外网ip
本想用udp连接,发现远端服务器能收报,但是返回的包(已发出) 无法到达本地客户端

再尝试用tcp连接,发现了上述情况,由于两端表现不一致,目前怀疑是中间哪个路由器
切断了这次连接,导致无论udp还是tcp都无法连接,
怀疑是本地路由干的,只是好奇,这个路由器为啥能放过qq这样的udp程序,却总是切断我的程序。

不知道自己的判断是否恰当,特来此地求助大神~~
...全文
679 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
a5978445 2016-02-26
  • 打赏
  • 举报
回复
想问一下楼主解决了没有 我也遇到同样问题
shit_happens 2015-06-08
  • 打赏
  • 举报
回复
朋友的机器是长城宽带的机器,不知道是否会有影响 目前还是服务端能收到,但是发出的消息找不到,有没有大神啊~~ 人工再置顶一下。。
羽飞 2015-05-14
  • 打赏
  • 举报
回复
引用 8 楼 shit_happens 的回复:
[quote=引用 7 楼 hnwyllmm 的回复:] 看看能不能支持HTTP,是不是某些端口不支持,或者某些协议被过滤掉了
目前手头没有这类程序。 你是指本地客户端的路由过滤了某些协议? 貌似qq也是走udp的,一般内网qq都能上吧。[/quote] 你说的对,确实没有理由过滤,毕竟那么多程序都是用自定义协议实现的 HTTP服务器网上有很多开源的,直接架设到服务器就行了,客户端就是浏览器了,不过楼主说这些,感觉挺有道理,HTTP不测也罢
shit_happens 2015-05-13
  • 打赏
  • 举报
回复
引用 7 楼 hnwyllmm 的回复:
看看能不能支持HTTP,是不是某些端口不支持,或者某些协议被过滤掉了
目前手头没有这类程序。 你是指本地客户端的路由过滤了某些协议? 貌似qq也是走udp的,一般内网qq都能上吧。
zuxi 2015-05-12
  • 打赏
  • 举报
回复
客户端连接的公网IP和服务器SYN包的源IP都不是同一个,可能是101.39.36.71和58.251.170.47中间做了代理,而58.251.170.47与你内网服务器建立不起TCP连接,所以你要看看那个RST是什么原因导致的,可能是跟配的ACL有关
FightForProgrammer 2015-05-12
  • 打赏
  • 举报
回复
偶也感觉是防火墙的原因......
羽飞 2015-05-12
  • 打赏
  • 举报
回复
看看能不能支持HTTP,是不是某些端口不支持,或者某些协议被过滤掉了
shit_happens 2015-05-12
  • 打赏
  • 举报
回复
另外:本人用sockettool 这类工具测试的时候也是同样效果 远端那台机器能收到消息,但是从远端发回的消息,就不见了。
shit_happens 2015-05-12
  • 打赏
  • 举报
回复
引用 3 楼 wangzuxi 的回复:
客户端连接的公网IP和服务器SYN包的源IP都不是同一个,可能是101.39.36.71和58.251.170.47中间做了代理,而58.251.170.47与你内网服务器建立不起TCP连接,所以你要看看那个RST是什么原因导致的,可能是跟配的ACL有关
服务端 暂时借用了朋友一台内网机器,所以服务端的源ip是个内网ip,但是这个机器做了到路由101.39.36.71的端口映射 这样应该可以吧?反正能正常收到数据, 就是服务端返回的数据,如石沉大海,毫无音讯, 101.39.36.71和58.251.170.47中间的路由就全是公网的范围了,我肯定碰不到。(远端的这个ip101.39.36.71是通过拨号直接得到的)。 而这个58.251.170.47就是本地(客户端)的公网IP,本人目前所处内网,至少有两层路由(上层10.0.0.1,下层192.168.1.1) 我目前的怀疑是本地的路由做了啥设置,但是qq是如何穿过来的呢? 为了,测试是否是我这里网络的特殊性,叫另一个地方的朋友做过测试,发现也是同样问题,服务端能收,客户端收不到返回的消息。这又把问题指向了服务端,难道是服务端那个路由? 头疼啊。。
shit_happens 2015-05-12
  • 打赏
  • 举报
回复
引用 1 楼 hnwyllmm 的回复:
看看防火墙是不是不允许那个IP段的数据通过 还有路由器的设置,是不是也有防火墙 对跨网的通讯不太了解,不能帮到楼主
把本地(客户端)和远端的防火墙都关了,也是同样问题, 中间路由的防火墙我就没办法了,而且程序的目的也是为了穿透内网, 服务器本人可以架到外网去,但没法要求用户(客户端)也都用公网IP吧。 唯一能控制的路由就是服务端做端口映射的那个路由,我再去检查下那个路由吧
羽飞 2015-05-11
  • 打赏
  • 举报
回复
看看防火墙是不是不允许那个IP段的数据通过 还有路由器的设置,是不是也有防火墙 对跨网的通讯不太了解,不能帮到楼主

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧