如题!
解决方案 »
- 如何让install shield安装程序在安装过程中变化背景图面?
- 请问各位大虾,怎样实现在编辑框中输入数学表达式?
- 加载皮肤后CPU使用率急速上升!
- VC->Build->configuration->Win32 Release被我Remove掉了,怎样才能恢复设置
- 请问SetScrollSizes应该在那里调用啊?
- 在多文档程序中如何动态的获取主框架窗口客户区的大小?
- weasea(尘一笑) 请进。开帖晚了一些,sorry.
- 怎么样启动图片隐去??
- 怎样才能删除一个目录?
- 在服务程序中怎么得到服务的程序的名字和路径?
- 求Programming Windows with MFC程序代码
- 初学VC,这是我编写的一个简单的弹球游戏,但有问题,请高手帮忙?
B NAT -- 简称BN
S 服务器A 192.168.0.2 AN 218.133.155.190:3000 <--------+
|--------> S 61.21.160.18:8000
B 192.168.0.2 BN 218.133.155.200:4000 <--------+假若A要连接B,A首先向S发出一个请求,S通知B要求向A发出一个打洞的包,AN收到BN这个打洞包肯定会丢掉,因为在AN的记录中找不到与BN连接过的session,虽然AN没有理会BN发过来的那个包,但BN那里已打开一个新的session(218.133.155.200:4001--218.133.155.190:3000)4001这个端口只是猜测的,许多NAT都是不规则分配的.好了这时再由AN向BN发一个打洞包,当然BN也不会理AN发过这来的这个包.在这里AN也分配了一个新的session(218.133.155.190:3001--218.133.155.200:4000)3001也是猜测的,当然这次连接就没有成功.我来分析一下:
BN新分配的session(218.133.155.200:4001)向AN(218.133.155.190:3000)打洞
AN新分配的session(218.133.155.190:3001)向BN(218.133.155.200:4001)打洞BN(218.133.155.200:4001) ------> AN(218.133.155.190:3000)
BN(218.133.155.200:4000) <------ AN(218.133.155.190:3001)刚好是阴差阳错,两个人都无法碰面.我的问题是在这里有没有办法遇测得到对方NAT将要分配的新端口,如果是用猜测端口的话成功率几乎是很低的,或是用线性搜索(就是用穷举)这种暴力方法成功率也不高.--------------大家有没有什么好的方法,或是谈谈自已的看法,谢谢!!!
-----------------------------------------------
我来分析一下:
BN新分配的session(218.133.155.200:4001)向AN(218.133.155.190:3000)打洞
AN新分配的session(218.133.155.190:3001)向BN(218.133.155.200:4000)打洞
-------------------------------------------------------------
不知道你说的转发是什么意思,到底能不能穿透?
http://sourceforge.net/projects/bittorrent
谢谢,可是下不了!有的开源项目并没有把它关键的技术开源,所以有时看别人写的代码也很难理解
你能穿透对称NAT吗?
--------------------------------------
那么多资料有穿透对称NAT的吗?TO:HuangRG(.....) ( ) 信誉:94
---------------------------------------
可有的NAT不是按规律性来分配端口
BN新分配的session(218.133.155.200:4001)向S,S记住session(218.133.155.200:4001)并告诉AN
AN新分配的session(218.133.155.190:3001)向S,S记住session(218.133.155.190:3001)并告诉
BNBN(218.133.155.200:4001)向AN(218.133.155.190:3001)打洞
AN(218.133.155.190:3001)向BN(218.133.155.200:4001)打洞不知道我的方法可不可以。
------------------------------------
Symmetric 类型的NAT不行!
------------------------------------
Symmetric 类型的NAT是什么样的,为什么不行,那要怎样做?
----------------------------------------------
如果实在不行,我会考虑你的意见的,谢谢!TO:yespie(yespie) ( ) 信誉:100
---------------------------------------------
这跟VC没啥关系!
欢迎大家继续讨论这个问题,相信也有很多人想被这个问题所困绕着...
是这样的,A B ,要与C服务器相连,但C通过 传输层 验证(修改TCP定义,增加了一部份头字节)A与C已经连接上了,但是B为通过验证,因此希望能够通过A代理与C连接,但是,代理的时候,这部分头字节没有了,因此无法通过C的验证,怎么办?
情况也发送到对方,但是对方同样会拒绝得呀~~
没折了,期待达人出现指点!
2、如果可能,必须使用地址欺骗,也就是你伪造B的请求应答包,这样BN才能将此包放行穿越BN
3、如果你仅仅只能控制A,那么AN你无法控制发出欺骗包
4、根据路由协议,你用暴力方法获得SESSION肯定是不可行的,因为BN上注册的SESSION和你的这个很难应对,而且会不定时更新。
-------------------------------------------
非常感谢你的回答,再次感谢!!我也曾想过用地址欺骗,但是有个问题你在NAT后面做手脚是没用的,NAT转换后的这个地址还是还是你原来的地址.
能留个MSN,QQ吗?
怀疑有一边为对称NAT,所以通讯没有成功,只是现在不知道怎么判断对称NAT
-----------------------------------------
谢谢!难道连语音也是转发的吗?
vivimimi(asm_asm) ( ) 信誉:100
-----------------------------------------
谢谢!你那个跟本无穿透对称NAT.
我对这个了解不多,不过网上有篇文章(只有摘要),可以不能看全文,要钱哦
http://www.wanfangdata.com.cn/qikan/Periodical.Articles/njydxyxb/njyd2006/0601/060117.htm
http://www.wanfangdata.com.cn/qikan/Periodical.Articles/njydxyxb/njyd2006/0601/060117.htm
------------------------------------------------------------------------------------
fuck这种人,国外一些人写的技术文章比他们牛多了都是大家可以免费学习的,他们还来
这套,垃圾!
其实穿透对称NAT设备的难点就是怎么知道对方的端口,也就是怎么可以让对方
知道你打的洞在什么地方,这样P2P有效会话才可以建立起来,要是能够知道对称
NAT设备分配端口的策略,根据以前的情况也许可以建立合适的算法进行尝试的吧。
我感觉问题是要知道对称NAT设备怎么为每个会话分配端口的
知道的都来讨论,不要不回贴,肯定会有结果的!
原文连接:http://www.it46.se/wsis/show_entry.php?id=31
以前做过对称NAT穿透的简单分析,一直没有解决思路就放弃了
希望楼主能够尽快找到方法
能不能通过收到的包解析出新的端口呢?
我的想法是这样的,先讨论一个sym一个cone的情况:
client b(cone)向client a(sym)发包,这样a的包b就能够接受了,所以这个时候client a用新的端口发出的包client b就能够就受到,解析出该包的a新端口可以不?
楼主不能用Cone NAT吗?
--------------
可以说详细点吗?saince(搜猫) ( ) 信誉:100
--------------
我也想用Cone NAT啊,不可能所有的用户都是Cone NAT吧!
通过STUN协议就可以搞定。
2。UPNP影射能解决一部分内网互连
3。一般的NAT可使用STUN协议,进行UDP PUNCH HOLE。。
--------------
你说得有道理我接受,我只是想证实一下道底能不能穿透.
如A要跟B通:
A->B B连服务器的端品为20000,如果NAT之后开的端口映射是递增的,那可以这样
分别给B的20000 - 20200发打洞包.
如 A本地端口 B端端口 A端NAT端口
2000 20001 30001
2000 20002 30002
2000 20003 30003
2000 20004 30004
....同样 B->A A连服务器的端品为30000,
分别给B的30000 - 30200发打洞包.
如 B本地端口 A端端口 B端NAT端口
5000 30001 20001
5000 30002 20002
5000 30003 20003
5000 30004 20004
....
这样来回扫描几次的话,运气好有可能会碰上吧.如果NAT的映射是没有规律的,那基本上就没有办法了