免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2274 | 回复: 5
打印 上一主题 下一主题

一个UDP穿透NAT的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-13 12:43 |只看该作者 |倒序浏览
最近写了一个很小的程序来实现UDP穿透NAT,结果如下:

1. 两台分布在不同内网的机器,可以穿透。(但UDP包好像可能被防火墙挡住)

2. 一台机器在内网,一台机器拥有外网地址,可以穿透。

现在的问题是,如果两台机器处在同一内网中,似乎就不能连接了。这是为什么?

论坛徽章:
0
2 [报告]
发表于 2006-07-13 13:05 |只看该作者
方便把你的代码贴出来研究研究吗

论坛徽章:
0
3 [报告]
发表于 2006-07-13 13:36 |只看该作者
不太方便,大致的原理是:两台机器,A和B,发UDP包给一台拥有公网地址的服务器,这样服务器就能知道它们的公网地址了,将两者的公网地址再发给对方,A和B收到对方的公网地址后,向对方不停的发包(其中有些包会被对方的NAT设备丢弃),然后接受对方的消息,这样就能穿透了。

大致是这样

论坛徽章:
0
4 [报告]
发表于 2006-07-13 13:37 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2006-07-13 14:55 |只看该作者
两台都在内网应该可以连接啊
要不sip电话不就完了
sip电话原理不也一样的嘛.通过在服务器注册自己的地址.当有人呼叫时.服务器就会转发信令.有的服务器就返回对方地址.主叫自己去连接.这样就可以穿透了

论坛徽章:
0
6 [报告]
发表于 2006-07-13 15:35 |只看该作者
P2P的话,假设A和B在不同的内网,A和B获得对方的公网地址后,A或B单方面的发包,对方是收不到的。

我将两个程序运行在同一内网,它们还是先通过拥有公网地址的服务端告知对方自己的IP和端口,注意此时对方获得的IP是公网IP,即NAT设备映射后的IP,然后向对方发包,接受,好像是失败的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP