社区
网络编程
帖子详情
如何穿透 Symmetric NAT 啊
helloooo
2005-01-05 12:53:19
如何穿透 Symmetric NAT 啊
向各位请教!!!!!!
...全文
1414
17
打赏
收藏
如何穿透 Symmetric NAT 啊
如何穿透 Symmetric NAT 啊 向各位请教!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
helloooo
2005-02-26
打赏
举报
回复
顶
sdsuper
2005-02-16
打赏
举报
回复
mark
tide2355
2005-02-16
打赏
举报
回复
Mark
iorikingdom
2005-02-15
打赏
举报
回复
UP,来讨论一下这个问题
iorikingdom
2005-02-09
打赏
举报
回复
没有见过Symmetric NAT,
不过我想如果是UDP的话可以这样实现例如公网服务器C,IP:(61.127.45.25)
公网NAT(61.128.45.55)内的客户机B(192.168.0.75),内网NAT(61.129.58.47)的A(192.168.0.82)
首先B和A进行通信前都向公网服务器发送心跳包,这样客户机B和客户机A就拿到了一个端口对照表
假设是B(192.168.0.75:2000<->61.128.45.55:5000)和A(192.168.0.82<->61.129.58.47)
这样B要跟A通信的话,就用raw socket也好,winpcap也好都伪造公网服务器C的IP地址来发包(包里面可以把来源地址和端口写进去,这样对方就知道是跟哪个IP通信)虽然源IP用的是公网的IP,但是经过解包了以后,一样可以解决问题啊,这样A就可以收到B的包了,同理B也可以这样跟A通信,从此B和A都就可以同心跳包来维持这个端口,这样算不算穿透?
iorikingdom
2005-02-09
打赏
举报
回复
用UDP不算穿透?
shootingstars
2005-02-08
打赏
举报
回复
同意 skykeen(天佑神州)的。
楼上的一些说可以使用http隧道过NAT的可能还没有理解NAT到底完成的什么工作。http隧道一般是用来骗过允许http协议通过的防火墙。
我想穿透Symmetric NAT或许只能通过端口猜测,其实这个原理倒不是很难,前提是这个Symmetric NAT的端口分配是按规律增长的,并且这个网络不是太繁忙。
gaooo
2005-02-08
打赏
举报
回复
gz
gdy119
2005-02-06
打赏
举报
回复
让所有的数据包经过HHTP(80或者8080)的端口出去,伪装成HHTP协议的TCP包
就能实现穿透
hjunxu
2005-02-06
打赏
举报
回复
学习
sharkhuang
2005-02-06
打赏
举报
回复
学习Symmetric NAT
skykeen
2005-02-06
打赏
举报
回复
http://www.codeguru.com/Cpp/I-N/internet/http/article.php/c6209/ http Tunnel能部分通过FW(防火墙),但解决不了Symmetric NAT穿越的问题。
www.artdio.com.tw/tw/download/faqs/IPF_2000_FAQ.pdf 中stun依然只能解决Cone NAT,对Symmetric NAT也是无能为力的。
p2p通信至少面临着两个障碍1:NAT(网络地址转换,地址映射) 2:FW(防火墙)
先看看NAT,NAT存在意义1:解决ipv4里地址溃乏,2:网络安全:
NAT分Cone NAT,Symmetric NAT两类;其中Cone NAT又分1:不受限,2:ip受限,3:ip port受限三类
而Symmetric(对称) NAT对于不同的外网结点,内网port映射到外网时会发生改变,甚至是ip;也就是说通过Symmetric情况会是这样:内网里结点A 192.168.0.100::1500--(Symmetric)-->66.27.51.88::18000 与公网211.120.121.10::5000通信,但是该结点A 192.168.0.100::1500-|(Symmetric)|->与公网187.120.121.10::5000(或者211.120.121.10::6000)通信时,其外网地址将不再是66.27.51.88::18000(也就是说在与187.120.121.10::5000 通信前其外网地址是不可知,这一点与Cone不一样,Cone NAT只是在某程度使外网地址与内网地址受限,但A与外网ps1通信和与ps2通信时地址一样的),与不同通信对象通信,其映射地址也不一样,这就是穿越Symmetric NAT的真正难点,而穿越Cone NAT可以参考 shootstars那个贴子。我知道有人用动态预测法解决穿越Symmetric NAT问题,但是成功率并不是100%,如果你能100%穿越Symmetric NAT,
看看FW,FW存在意义:网络安全:
FW与NAT根据是两码事,其没有网络地址转换的概念,只有网络安全意义,但与NAT实现不一样,NAT的安全性是由地址映射和映射访问受制造成的,而FW的网络安全是FW过滤外网访问者发过来某种(防火墙可以设置)诸如协议类型(如http,ftp,udp,tcp,icmp etc)数据(解决方法:把受限协议包装成不受限协议发给),或者过滤某些特定端口的数据(解决方法:使用其开放端口)。
综上:p2p(我指:允许公网server中转信令,两个不同内网里的两个结点直接进行媒体通信)要同时穿越NAT和FW,难度不小。如果你的p2p能够在两个内网间通信,并不见得你完成了p2p,那得看你穿越了Symmetric NAT,穿越了FW没有。在有些环境中使用p2p同时穿越Symmetric NAT,FW是不可能的,你不要说使用什么public server中转(代理)技术,我讲的是两个不同内网里的两个结点允许public server中转信令,但是两者要直接进行媒体通信(p2p);
关于NAT:根据我的测试,网吧里,小公司使用的都是Cone NAT,只有对安全要求很高的公司,组织或个人才使用Symmetric NAT;如果网吧用Symmetric NAT,我想这个网吧肯定要破产,因为很多p2p游戏和工具过不了Symmetric NAT;也就是说:对于一般P2P应用,大家可以只考虑Cone NAT,因为在安全要求很高的公司使用p2p是不被允许,也就是说:即使你实现了穿越Symmetric NAT,也不会有多大市场,因为你的BOSS不公许你使用,这也是对安全要求很高公司的定义。
再次对一些声称能成功穿越NAT的人说一句:你那个玩意只是穿越了Cone NAT,但你没遇到Symmetric NAT,或许你根本不知道这个东西。
要测试你的NAT类型,可以写两个socket程序,一个Client,一个Server;或者简单点,在baidu上搜索一个叫stun的测试工具(包括Client ,Server),注意client动行在内网上,NAT在内网与外网间,server要运行在两个外网址址上;
helloooo
2005-01-08
打赏
举报
回复
^
kingzai
2005-01-05
打赏
举报
回复
www.artdio.com.tw/tw/download/faqs/IPF_2000_FAQ.pdf
HunterForPig
2005-01-05
打赏
举报
回复
HTTP Tunnel 的例子
http://www.codeguru.com/Cpp/I-N/internet/http/article.php/c6209/
BruceJiang
2005-01-05
打赏
举报
回复
能不能讲详细点
zhujianping_es
2005-01-05
打赏
举报
回复
Use HTTP Tunnel
一种TCP协议
穿透
Sym
metric
_
NAT
方案
一种TCP协议
穿透
Sym
metric
_
NAT
方案
UDP穿越
Sym
metric
NAT
(对称型
NAT
)的端口猜测方法
然而,
Sym
metric
NAT
的存在阻碍了P2P通信,因为每个内网主机的出站连接在
NAT
后面看起来都是唯一的,这使得传统的端口反射或
NAT
穿透
技术如STUN(简单Traversal of UDP through
NAT
s)和ICE(Interactive Connectivity...
基于端口准随机猜测的UDP穿越
Sym
metric
_
NAT
的方法
-
Sym
metric
NAT
:对称性
NAT
,为每个新连接创建不同的端口映射,是一种相对较为严格和复杂的
NAT
类型。 3. UDP
穿透
NAT
的问题: 由于
NAT
只允许从内部到外部的主动访问,而对由外部主动发送到内部的报文会进行丢弃,...
NAT
穿透
之
NAT
类型检测.pdf
- **应用场景**:
Sym
metric
NAT
是最难
穿透
的
NAT
类型之一,因为它为每次通信分配了不同的公网IP地址和端口号。通常需要借助于中继服务器或其他复杂机制来实现
穿透
。 #### 结论
NAT
类型检测是P2P通信中的一个重要...
A New Method for
Sym
metric
NAT
Traversal in UDP and TCP
标题中提到了“
Sym
metric
NAT
Traversal in UDP and TCP”,这指的是网络地址转换(
NAT
)穿越技术。
NAT
穿越是一种网络技术,它允许位于不同
NAT
后面(即处于私有网络中的主机)的主机之间建立直接的通信连接。尤其是...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章