新年到了,请教个关于udp数据传输的问题?

lyfxzzb 2012-01-20 11:11:04
大家帮我看看这个问题如何解决:
我的开发机器在公司的内网,要求公司信息中心的给我做了个内网到外网的映射,想在外网上往我的开发机器上发送udp数据包,但是问题来了:tcp数据包能发送出去,但是udp数据包无论如何也发不出去,不知道什么原因?
测试前提:
1、我用mina框架写了两个socket数据接收程序,一个基于tcp , 另一个基于udp,程序是没有问题的,我在内网里发送数据这两个程序都能接收到;
2、我在外网上发送时:走tcp协议我的内网机器的程序可以成功接收到,udp的程序就是接收不到,不知道为什么(端口上tcp和udp两个协议都是开发的)

急问啊



...全文
150 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyfxzzb 2012-01-30
  • 打赏
  • 举报
回复
好的,谢谢,也就是说基于socket的udp程序是可以做外网向内网的映射的,
如果找到原因了我会发出来
lyfxzzb 2012-01-29
  • 打赏
  • 举报
回复
谢谢ldh911,
问题是这样:我当时只要求映射我的内网机器,开通某个端口:如9090,协议选择TCP和UDP,结果就是tcp的数据包从外网发到内网机器上,而 udp的数据包发送不成功,
我对网络配置这块不熟悉,可能是防火墙策略的原因吗?我想先把原因找到
大家给说说
MiceRice 2012-01-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lyfxzzb 的回复:]
是不是基于udp的socket服务器不能做外网映射,从外部向内部发送数据啊
[/Quote]

不是,技术上不存在这种限制。一定是因为某些安全策略的问题。

你最好能尝试“直接在公司外网的路由同网段向你服务器发送UDP包是否成功”,如果能成功,那么基本上是运营商限制了UDP发送,可以询问网络运营商或者修改外网映射的端口地址进行测试。
lyfxzzb 2012-01-29
  • 打赏
  • 举报
回复
是不是基于udp的socket服务器不能做外网映射,从外部向内部发送数据啊
lyfxzzb 2012-01-29
  • 打赏
  • 举报
回复
谢谢,
我在内部局域网中测试是成功的,如果把服务器做了外网映射,然后从外网发送数据到内网服务器时,收不到数据,不知道为何?是不是udp 不能做这样的外网映射啊
MiceRice 2012-01-29
  • 打赏
  • 举报
回复
要准确定位问题,不是很方便,除非你公司的网管很配合你,比如:
1、先尝试你服务器本机发送UDP包是否成功;
2、再尝试在你服务器向同网段的机器向你服务器发送UDP包是否成功;
3、最后尝试直接在公司外网的路由同网段向你服务器发送UDP包是否成功;
--如果以上三种都成功,那么可能是运营商问题;否则就在以上的网络设备之间缩小范围继续测试。

如果最终确定是运营商问题,那基本无解。
MiceRice 2012-01-20
  • 打赏
  • 举报
回复
防火墙策略呗,一般很多防火墙默认都是彻底屏蔽UDP包的,毕竟常规应用都是走TCP连接。这个安全策略可能一直从内网的网关到外网的路由上都有,任何一个地方都可能彻底屏蔽UDP包。最毙的是,我以前用铁通的网络,这个鸟供应商,丫的直接封杀1024以上端口号的UDP包。

跟你公司信息中心的说一下,安全策略能否在你开放的这个端口上做忽略。


不过客观地说,如果我是管信息中心的,你的要求我肯定不同意,这么搞公司的安全漏洞风险也太大了。。。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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