求助大牛:不同网络环境下,mina服务器端收不到数据
最近在做一个文件传输的项目用到mina框架,碰到一个很诡异的问题,在我们这边的网络环境下连接公网的服务器收发数据都没有问题。但是在别人的网络环境下连接服务器,能连接上,但是发送数据,服务器一个也收不到,用log4j可以看到客户端的连接已经建立而且数据已经发送出去,服务器端也显示了连接建立Created和Session Opened,但是数据就是收不到。一开始怀疑是他们家里机器的问题,但是用一台在我们这边能正常收发数据的机器放到他们家里也不行,后来怀疑是他们网络的问题,但是用普通的FTP工具他们家里能正常收发数据,我们的程序走的也是21端口。请大牛帮忙啊~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
原因多种
1:防火墙检查包是不是ftp数据包,drop掉
2:如果使用udp,可能公网交换机和路由器设置的mtu导致丢包
3:未知,自己抓包看看,跟踪数据包
我们没有用ftp协议来传输文件,是自己设计的协议,服务器端使用了F5映射做的公网ip,后来发现换成其他端口就好了,所以只能怀疑是使用了21端口造成的问题。
为什么会限制21号口呢,如果你的系统是类unix系统,可能是你的权限不够,1024以下的端口都不可以;否则只能说明你的防火墙配置的有问题,注意安全吧!
如果您的mina在含有NAT的网络环境中应用,请将您的ftp服务开启在passive模式,否则服务可以收到客户端的请求,也会处理这个请求,而数据会传递给NAT中的那台机子的对应端口号,也就是说数据发送了,可是真正的客户端没有收到数据.这不是mina的问题,这是你对ftp协议的理解问题。
谢谢你的帮忙,先在确定应该是21端口被限制了,换了其他端口好像就好了。
服务端抓包。。。
如果抓不到,就不是应用(mina)的问题,检查网络防火墙设备,比如有些高档货,发现在21端口上流动的数据不符合ftp协议,会把数据包drop掉