LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: newroot

Internet上不可见的两个client如何建立连接

[复制链接]
 楼主| 发表于 2007-10-23 18:52:49 | 显示全部楼层
Post by tjuprogram
的确不是很通用, 而且不同厂家的router进行端口转换的规则可能不相同,所以就需要大量测试, 收集各个厂家的规则.
NAT打洞是P2P的难题!
有一个问题就是A或是B主机跟公网主机C相连时,如何获取NAT给A或是B的端口.

难道只能通过你所说的获取router的规则来实现吗?
回复 支持 反对

使用道具 举报

发表于 2007-10-23 19:07:11 | 显示全部楼层
Post by newroot
有一个问题就是A或是B主机跟公网主机C相连时,如何获取NAT给A或是B的端口.

难道只能通过你所说的获取router的规则来实现吗?



应该是这样的.
回复 支持 反对

使用道具 举报

发表于 2007-10-24 08:47:34 | 显示全部楼层
Post by tjuprogram
应该是这样的.

不是。
这些应该是通过STUN来取回来的, STUN的mapped-address属性中既包括public IP也包括port。 这个IP + port对就是NAT为内部发送该STUN消息的主机所分配的IP + port 对。
回复 支持 反对

使用道具 举报

发表于 2007-10-24 09:33:52 | 显示全部楼层
Post by Arthur.Echo
不是。
这些应该是通过STUN来取回来的, STUN的mapped-address属性中既包括public IP也包括port。 这个IP + port对就是NAT为内部发送该STUN消息的主机所分配的IP + port 对。


router不一定支持STUN, 就算支持, 也只能用于非对称.
回复 支持 反对

使用道具 举报

发表于 2007-10-24 09:45:57 | 显示全部楼层
Post by tjuprogram
router不一定支持STUN, 就算支持, 也只能用于非对称.

router不一定支持STUN是什么意思阿?你的意思是router不提供NAT的功能还是说它提供的NAT功能不在那四种已知的NAT类型之中?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-25 11:37:50 | 显示全部楼层
参考信息四种NAT类型:

1. Full Cone NAT:所有来自同一个内部 Tuple X的请求均被NAT转换至同一个外部Tuple Y,而不管这些请求是不是属于同一个应用或者是多个应用的。除此之外,当X-Y的转换关系建立之后,任意外部主机均可随时将Y中的地址和端口作为目标地址和目标端口,向内部主机发送UDP报文,由于对外部请求的来源无任何限制,因此这种方式虽然足够简单,但却不那么安全

2. Restricted Cone NAT:它是Full Cone的受限版本:所有来自同一个内部Tuple X的请求均被NAT转换至同一个外部Tuple Y,这与Full Cone相同,但不同的是,只有当内部主机曾经发送过报文给外部主机(假设其IP地址为Z)后,外部主机才能以Y中的信息作为目标地址和目标端口,向内部主机发送UDP请求报文,这意味着,NAT设备只向内转发(目标地址/端口转换)那些来自于当前已知的外部主机的UDP报文,从而保障了外部请求来源的安全性

3. Port Restricted Cone NAT:它是Restricted Cone NAT的进一步受限版。只有当内部主机曾经发送过报文给外部主机(假设其IP地址为Z且端口为P)之后,外部主机才能以Y中的信息作为目标地址和目标端口,向内部主机发送UDP报文,同时,其请求报文的源端口必须为P,这一要求进一步强化了对外部报文请求来源的限制,从而较Restrictd Cone更具安全性

4. Symmetric NAT:这是一种比所有Cone NAT都要更为灵活的转换方式:在Cone NAT中,内部主机的内部Tuple与外部Tuple的转换映射关系是独立于内部主机所发出的UDP报文中的目标地址及端口的,即与目标Tuple无关;在Symmetric NAT中,目标Tuple则成为了NAT设备建立转换关系的一个重要考量:只有来自于同一个内部Tuple 、且针对同一目标Tuple的请求才被NAT转换至同一个外部Tuple,否则的话,NAT将为之分配一个新的外部Tuple;打个比方,当内部主机以相同的内部Tuple对2个不同的目标Tuple发送UDP报文时,此时NAT将会为内部主机分配两个不同的外部Tuple,并且建立起两个不同的内、外部 Tuple转换关系。与此同时,只有接收到了内部主机所发送的数据包的外部主机才能向内部主机返回UDP报文,这里对外部返回报文来源的限制是与Port Restricted Cone一致的。不难看出,如果说Full Cone是要求最宽松NAT UDP转换方式,那么,Symmetric NAT则是要求最严格的NAT方式,其不仅体现在转换关系的建立上,而且还体现在对外部报文来源的限制方面。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-4 23:11:23 | 显示全部楼层
等待一个高手来拍板!!! wait ...
回复 支持 反对

使用道具 举报

发表于 2007-11-6 16:47:53 | 显示全部楼层
A,B 的网关是什么网关?
如果是 ip 网关(即router),那么就是说连到 C 不需要代理,在 C 上开个 VPN Server, A,B 都连到 C 上的 Server,那么 A,B 其实就在一个 vpn 里面了。

如果是应用层网关(如代理服务器),这时A,B可以通过各自代理服务器的协议,分别连接到 C, C 做一个 connect, 就可以做 ip over tcp。(也可以使用透明代理: transconnect)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-23 14:09:21 | 显示全部楼层
Post by rickxbx;1778181
A,B 的网关是什么网关?
如果是 ip 网关(即router),那么就是说连到 C 不需要代理,在 C 上开个 VPN Server, A,B 都连到 C 上的 Server,那么 A,B 其实就在一个 vpn 里面了。

如果是应用层网关(如代理服务器),这时A,B可以通过各自代理服务器的协议,分别连接到 C, C 做一个 connect, 就可以做 ip over tcp。(也可以使用透明代理: transconnect)



目前不支持VPN, 我需要的是通过中继服务器建立internet上不可见的主机的连接。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表