首页 新闻 会员 周边

关于P2P打洞一些细节的问题

0
悬赏园豆:50 [已解决问题] 解决于 2010-05-18 16:11

小弟在网上找了很多相关打洞的技术文章,原理是懂了,但是具体实现起来又遇到一些问题。

1.在两台主机都在不同内网的情况下,假设两台电脑都登陆了服务器,服务器知道两台电脑的内网和公网地址和端口,这时A往B打洞,A要发送三个消息,分别是服务器、对方公网地址和内网地址,我不知道顺序是什么,按道理是A发给服务器,然后服务器发给B,让B发给A,A才能直接发给B,还是A直接发给B(有可能会被丢弃),然后让B发给A,哪位达人做过相关项目的能不能告诉我下具体顺序。

2.就是UDP情况下keepalive包,是A发给B,还是发给服务器,求解

 

Rick.Hunter的主页 Rick.Hunter | 初学一级 | 园豆:150
提问于:2010-05-18 14:20
< >
分享
最佳答案
0

A与 B都可以与服务器通信了。如果 A此时想直接发送信息给 B,那么他可以从服务器那儿获得B的公网地址187.34.1.56:40000(假设),这个时候A是不能向B发送信息的,因为如果这样发送信息,NAT B会将这个信息丢弃(因为这样的信息是不请自来的,为了安全,大多数NAT都会执行丢弃动作)。现在我们需要的是在NAT B上打一个方向为202.187.45.3(假设为A的外网地址)的洞,那么 A发送到187.34.1.56:40000的信息, B就能收到了。这个打洞命令由谁来发呢,呵呵,当然是服务器。

总结一下这个过程:

如果 A想向B发送信息,那么 A发送命令给服务器,请求服务器命令 B向 A方向打洞。

收获园豆:50
小柳 | 菜鸟二级 |园豆:280 | 2010-05-18 15:52
恩,我基本上懂了,虽然代码感觉还是没穿透
Rick.Hunter | 园豆:150 (初学一级) | 2010-05-18 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册