关于P2P通信中双方位于同一个NAT之后的情况的疑问

sct 2005-08-27 09:50:57
shootingstars(有容乃大,无欲则刚)在 《P2P 之 UDP穿透NAT的原理与实现(附源代码)》中提到:

如果两个客户端运行在一个NAT后,本程序很可能不能运行正常,
这取决于你的NAT是否支持loopback translation,
详见http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt,
当然,此问题可以通过双方先尝试连接对方的内网IP来解决。

当NAT不支持loopback translation的时候,该怎么解决呢?

尝试连接对方的内网IP的方法应该只能用于一层NAT的情况吧?
如果是下面这种情况

Server
|
NAT c
|
| |
NAT a NAT b
| |
A B
A如果尝试连接B的内网IP,可能就会连到与A同处NAT a之后的D去了,是这样吧?

当NAT不支持loopback translation的时候,该怎么解决呢?

请大家指点,多谢!
...全文
420 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
skfox 2005-11-02
  • 打赏
  • 举报
回复
mark一下
luxingjyp 2005-11-01
  • 打赏
  • 举报
回复
再顶
sct 2005-10-12
  • 打赏
  • 举报
回复
探索
sct 2005-09-03
  • 打赏
  • 举报
回复
应该是有什么办法才是的?
gohappy_1999 2005-09-03
  • 打赏
  • 举报
回复
不懂,帮你顶
zhxk 2005-09-03
  • 打赏
  • 举报
回复
你这种情况啊,要具体问题具体分析喽,办法是有滴.
哥们儿,你的情况太特殊了吧,所以你的软件要得到更多的信息,才能更好的解决这个问题哦.
理想的情况:已知NATc分配给NATa,与NATB的IP
你先Ping通对方NAT(你会知道这一步可以增大通用性滴,"Ping通"不一定指得到对方响应哦)
然后你就在两边向对方的NAT发起随机端口扫描,注意对方可能的端口范围.
为了不至于让网络充满你的测试包
你要确定一个一次测试的最大次数,
可以计算一下这个数,让它使命中率达到95%就可以了
---------------------------------------------------------------------------------
弱弱的猜一下,你一定是在做UDP的P2P,哈哈
crystal_heart 2005-08-31
  • 打赏
  • 举报
回复
Internet
|
|NATx |NATy |NATz
---------ISP----------
|NATa |NATb
---------USER---------
| |
U1 U2

天威的网络是这样的。
softrain 2005-08-30
  • 打赏
  • 举报
回复
有的P2P实现会附带的告之对方的内网IP和内网端口,判断公网IP一样,说明在一个NAT,然后连内网地址和端口就可以了。
sct 2005-08-29
  • 打赏
  • 举报
回复
应该是有方法的吧,
或者我们网络中的NAT大多都是支持loopback translation的?
要不然我们局域网里的用户用QQ互传文件就都得由服务器转了,不太可能
super852 2005-08-28
  • 打赏
  • 举报
回复
我和楼主遇到了同样的问题。
如果是文本消息的话,就由服务器转发吧。
菲斯可儿 2005-08-27
  • 打赏
  • 举报
回复
NAT
|
| |
A B
这是A、B同一lan下的情况,A、B向server打洞后,A、B发现得到的对方ip和自己是一样的。
楼主所说的情况,NATa和NATb的ip不可能相同哦,A和B不是在同一lan下滴。

还有,就是P2P并不是100%成功的。
PS:弱弱的问一下,这种网络模式真的存在吗?
sct 2005-08-27
  • 打赏
  • 举报
回复
To fisker0303(天塌了,地陷了,小花狗不见了.) :



Server
|
NAT c
|
| |
NAT a NAT b
| |
A B


A、B是在同一NAT(NAT c)下啊
它们将从Server获知对方的IP都是C的公网IP啊
(下面的资料就有这么一个情况
Peer-to-Peer (P2P) communication across middleboxes(翻译4)
http://www.p2psky.com/Article/2004-12-17/791103254615.html

mynamelj 2005-08-27
  • 打赏
  • 举报
回复
这种问题应该有解决的办法,就象QQ一个样在一个NAT下的电脑挂好几个QQ照样可以相互通讯.

18,363

社区成员

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

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