请对nat穿透深入了解的高手进来!qq和浩方是如何实现的穿透?

Megadeth 2007-08-13 12:24:25
我使用网络上面流行的打洞技术,穿透部分网络成功,但是一些网络(甚至为数不少,部分网吧就是这种情况)怎么都没办法穿透,后经过测试发现他们给服务器的是一个端口,给客户端的是另一个端口,而且端口随机分配,无法预测。这个也就是nat中提到的S类型了,几乎所有的文章都说这种网络没有办法穿透。
但是我在测试中又发现一些著名运用软件比如:qq、浩方正常可以正常,通过截包数据分析了解到:他们确实是p2p,没有通过服务器中转,因为他们的目标ip正是彼此的nat网关ip,因此我非常想弄明白,这些成熟的商业软件是如何穿透nat的,他们真的是通过端口预测吗?那个端口是毫无规律的变幻,可能是增加几百,也可能是减小上千,请高手赐教!若问题真能解决,所有分数倾囊相送!再次感谢!
我的qq号:11344970
希望有感兴趣人来与我多多讨论!
...全文
2211 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
wordhmhu 2012-05-08
  • 打赏
  • 举报
回复
NAT穿越,是怎么实现的,现在有好的解决方案了吗?
zhy29565769 2012-03-15
  • 打赏
  • 举报
回复
mark
jokesh 2011-08-12
  • 打赏
  • 举报
回复
udp打洞 在java怎么实现? 谢谢
myfamiliar 2011-07-28
  • 打赏
  • 举报
回复
高深啊,最近自己正在写类似的软件中,在此受小兵一拜
miracle222 2010-12-03
  • 打赏
  • 举报
回复
MARK!请问有人实现了TCP穿越了么?想了解啊。。。有人说STUNT已经被证明无效,不知真假。
ringphone 2010-11-20
  • 打赏
  • 举报
回复
mark
aj3423 2010-08-13
  • 打赏
  • 举报
回复
两个全对称nat也能连浩方对战?成功率100%?
zkj66278006 2010-08-13
  • 打赏
  • 举报
回复
up
期待接分
magic_c 2010-08-13
  • 打赏
  • 举报
回复
07年 =。=!
99263 2010-08-12
  • 打赏
  • 举报
回复
楼主可参考这个平台,也实现了P2P的穿透,可以实现多方语音、视频、文字的交互,是一套SDK包:http://www.anychat.cn/faq/
cqsfd 2010-06-29
  • 打赏
  • 举报
回复
我X
07年的帖子~!
cqsfd 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 toxyboy 的回复:]
Mark 这个有点实际意义。遇到对称NAT的时候,或许猜端口可用,但是NAT会定时检查关闭连接,要重连重新猜,那么客户端的处理逻辑就要很复杂了,这个开销值得吗??如果要内网设置映射,那就需要很高的权限,网管会把权限开给QQ用户吗?楼主所谓的s型因该就是对称nat的说法吧,给服务器的端口和客户端的端口不是同一个。
[/Quote]
同样的疑问
基本不可能让你想干嘛就干嘛

比较赞同54楼所说 用第三个可以打洞的节点转发
但这样不是有安全漏洞?
jasonM2008 2010-06-29
  • 打赏
  • 举报
回复
其实很多情况QQ 根本无法打通,QQ没有用端口预测这种方式,这种方式几率太小。。。。。
gunsand 2010-06-29
  • 打赏
  • 举报
回复
你还没结贴啊
可以用STUN协议或者自己写一个类似的穿透
另外也可以通过第三个节点转发。
dong364 2009-09-14
  • 打赏
  • 举报
回复
lz说“他们给服务器的是一个端口,给客户端的是另一个端口,而且端口随机分配,无法预测”,这里他们指谁啊?
feiyangdn 2009-09-14
  • 打赏
  • 举报
回复
个人理解不知道对不对,抛砖引玉
浩方Server, 用户A,用户B,用户C。。。。
用户A,用户B,用户C。。。。对于程序Proc(假设是魔兽争霸把)而言要构成虚拟局域网。
做法:
1、所有用户利用浩方客户端与浩方Server建立连接,浩方Server为用户建立虚拟局域网规定了哪些用户同属于一个局域网内,其他用户的IP地址等信息可以通过浩方Server通知浩方客户端。
2、当魔兽争霸运行时,所有报文通过浩方客户端进行转发,如原本在进行本地广播通知本地局域网用户改为发送给虚拟局域网的其他用户(其他用户信息通过浩方客户端能获取)。

端口信息可以通过服务器告知,感觉根本没必要端口猜测。
IP地址和端口号是上层通信必须获取的信息,而这些通过客户端都能获取,所以通信没有问题,至于采用Nat还是其他方法,就取决于设计了。
yeyuanzhi2000 2009-09-12
  • 打赏
  • 举报
回复
学习
haolaile 2009-09-12
  • 打赏
  • 举报
回复
关于QQ问题:
两种思路:
1.重用其他软件端口,看上去好像把其他软件的socket复制了,拿来重用
2.直接查找其他软件端口,在QQ自己端口不能用时,直接利用其他软件端口
bjtrue 2008-12-31
  • 打赏
  • 举报
回复
mark
walkbywind 2008-12-15
  • 打赏
  • 举报
回复
mark
加载更多回复(47)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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