音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

NAT的四种类型及类型检测
日期:2015-02-02 20:50:27   来源:佚名

考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考虑网络连接无状态所带来复杂性。

NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。

这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。在RFC 1632中有对NAT的说明。

用语定义

1.内部Tuple
:指内部主机的私有地址和端口号所构成的二元组,即内部主机所发送报文的源地址、端口所构成的二元组
2.外部Tuple:指内部Tuple经过NAT的源地址/端口转换之后,所获得的外部地址、端口所构成的二元组,即外部主机收到经NAT转换之后的报文时,它所看到的该报文的源地址(通常是NAT设备的地址)和源端口
3.目标Tuple:指外部主机的地址、端口所构成的二元组,即内部主机所发送报文的目标地址、端口所构成的二元组

详细释义

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方式,其不仅体现在转换关系的建立上,而且还体现在对外部报文来源的限制方面。

P2P的NAT研究
第一部分:NAT介绍
第二部分:NAT类型检测

第一部分: NAT介绍
各种不同类型的NAT(according to RFC)
Full Cone NAT:
   内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort),以后用这个socket向外面任何主机发送数据都将使用这对(PublicIP:PublicPort)。此外,任何外部主机只要知道这个(PublicIP:PublicPort)就可以发送数据给(PublicIP:PublicPort),内网的主机就能收到这个数据包
Restricted Cone NAT:
   内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort),以后用这个socket向外面任何主机发送数据都将使用这对(PublicIP:PublicPort)。此外,如果任何外部主机想要发送数据给这个内网主机,只要知道这个(PublicIP:PublicPort)并且内网主机之前用这个socket曾向这个外部主机IP发送过数据。只要满足这两个条件,这个外部主机就可以用自己的(IP,任何端口)发送数据给(PublicIP:PublicPort),内网的主机就能收到这个数据包
Port Restricted Cone NAT:
    内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort),以后用这个socket向外面任何主机发送数据都将使用这对(PublicIP:PublicPort)。此外,如果任何外部主机想要发送数据给这个内网主机,只要知道这个(PublicIP:PublicPort)并且内网主机之前用这个socket曾向这个外部主机(IP,Port)发送过数据。只要满足这两个条件,这个外部主机就可以用自己的(IP,Port)发送数据给(PublicIP:PublicPort),内网的主机就能收到这个数据包
Symmetric NAT:
    内网主机建立一个UDP socket(LocalIP,LocalPort),当用这个socket第一次发数据给外部主机1时,NAT为其映射一个(PublicIP-1,Port-1),以后内网主机发送给外部主机1的所有数据都是用这个(PublicIP-1,Port-1),如果内网主机同时用这个socket给外部主机2发送数据,第一次发送时,NAT会为其分配一个(PublicIP-2,Port-2), 以后内网主机发送给外部主机2的所有数据都是用这个(PublicIP-2,Port-2).如果NAT有多于一个公网IP,则PublicIP-1和PublicIP-2可能不同,如果NAT只有一个公网IP,则Port-1和Port-2肯定不同,也就是说一定不能是PublicIP-1等于 PublicIP-2且Port-1等于Port-2。此外,如果任何外部主机想要发送数据给这个内网主机,那么它首先应该收到内网主机发给他的数据,然后才能往回发送,否则即使他知道内网主机的一个(PublicIP,Port)也不能发送数据给内网主机,这种NAT无法实现UDP-P2P通信。

第二部:NAT类型检测

前提条件:有一个公网的Server并且绑定了两个公网IP(IP-1,IP-2)。这个Server做UDP监听(IP-1,Port-1),(IP-2,Port-2)并根据客户端的要求进行应答。

第一步:检测客户端是否有能力进行UDP通信以及客户端是否位于NAT后?

客户端建立UDP socket然后用这个socket向服务器的(IP-1,Port-1)发送数据包要求服务器返回客户端的IP和Port, 客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms),防止无限堵塞. 重复这个过程若干次。如果每次都超时,无法接受到服务器的回应,则说明客户端无法进行UDP通信,可能是防火墙或NAT阻止UDP通信,这样的客户端也就 不能P2P了(检测停止)。
当客户端能够接收到服务器的回应时,需要把服务器返回的客户端(IP,Port)和这个客户端socket的 (LocalIP,LocalPort)比较。如果完全相同则客户端不在NAT后,这样的客户端具有公网IP可以直接监听UDP端口接收数据进行通信(检 测停止)。否则客户端在NAT后要做进一步的NAT类型检测(继续)。

第二步:检测客户端NAT是否是Full Cone NAT?

客户端建立UDP socket然后用这个socket向服务器的(IP-1,Port-1)发送数据包要求服务器用另一对(IP-2,Port-2)响应客户端的请求往回 发一个数据包,客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms),防止无限堵塞. 重复这个过程若干次。如果每次都超时,无法接受到服务器的回应,则说明客户端的NAT不是一个Full Cone NAT,具体类型有待下一步检测(继续)。如果能够接受到服务器从(IP-2,Port-2)返回的应答UDP包,则说明客户端是一个Full Cone NAT,这样的客户端能够进行UDP-P2P通信(检测停止)。

第三步:检测客户端NAT是否是Symmetric NAT?

客户端建立UDP socket然后用这个socket向服务器的(IP-1,Port-1)发送数据包要求服务器返回客户端的IP和Port, 客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms),防止无限堵塞. 重复这个过程直到收到回应(一定能够收到,因为第一步保证了这个客户端可以进行UDP通信)。
用同样的方法用一个socket向服务器的(IP-2,Port-2)发送数据包要求服务器返回客户端的IP和Port。
比 较上面两个过程从服务器返回的客户端(IP,Port),如果两个过程返回的(IP,Port)有一对不同则说明客户端为Symmetric NAT,这样的客户端无法进行UDP-P2P通信(检测停止)。否则是Restricted Cone NAT,是否为Port Restricted Cone NAT有待检测(继续)。

第四步:检测客户端NAT是否是Restricted Cone NAT还是Port Restricted Cone NAT?

客户端建立UDP socket然后用这个socket向服务器的(IP-1,Port-1)发送数据包要求服务器用IP-1和一个不同于Port-1的端口发送一个UDP 数据包响应客户端, 客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms),防止无限堵塞. 重复这个过程若干次。如果每次都超时,无法接受到服务器的回应,则说明客户端是一个Port Restricted Cone NAT,如果能够收到服务器的响应则说明客户端是一个Restricted Cone NAT。以上两种NAT都可以进行UDP-P2P通信。

注:以上检测过程中只说明了可否进行UDP-P2P的打洞通信,具体怎么通信一般要借助于Rendezvous Server。另外对于Symmetric NAT不是说完全不能进行UDP-P2P达洞通信,可以进行端口预测打洞,不过不能保证成功。

    大家在看的文章

    腾讯天籁行动一周年 那个佩戴人工耳蜗的

    从无数噪音中找到重要的声音有多难?来自广东佛山的宋晓婷对此深有体会。患有先天神经性耳聋的她,在13岁植入人...

    腾讯 天籁

    移动端也能音频编辑? HMS Core音频编辑能力全新开放

    移动端也能音频编辑? HMS Core音频编辑能

    音频编辑服务(Audio Editor Kit)是华为为开发者开放的各类场景音频处理能力的集合,汇聚了华为在音乐、语音等相关...

    音频编辑 也能 能力 开放 HMS

    十大国产投影仪排行:数码粉揭晓家用投影仪排名前十的品牌

    十大国产投影仪排行:数码粉揭晓家用投

     要说现在最火的数码产品是什么,智能投影仪自然是逃不过的一款产品,拥有百寸大屏,轻松满足日常观影追剧的...

    投影仪 十大 揭晓 前十 排名

    小米众筹上新:米家智能多功能养生壶仅售149元

    小米众筹上新:米家智能多功能养生壶仅

    11月18日,小米商城众筹平台将上线一款米家智能多功能养生壶新品,零售价169元,众筹仅售149元。这款产品拥有100...

    多功能 小米 仅售 养生 上新

    三星Galaxy Z Flip3 5G玩法升级 助力社交新体验

    三星Galaxy Z Flip3 5G玩法升级 助力社交新体

    8月11日,三星正式推出新一代折叠屏手机,分别是三星Galaxy Z Fold3 5G和三星Galaxy Z Flip3 5G。两款新机均沿用了之前的经...

    三星 玩法 助力 社交 新体验

    联手打造球场好声 Sonos 正式成为利物浦足球俱乐部官方音响合作伙伴

    联手打造球场好声 Sonos 正式成为利物浦足

    2021 年 8 月 10 日 – 随着新赛季的到来,Sonos 即将与利物浦足球俱乐部展开合作,在球队主场安菲尔德体育场为世界各...

    利物浦 球场 足球俱乐部 联手 音响

    助力职场青年打造A+生产力 全新荣耀MagicBook锐龙版上市后倍受好评

    助力职场青年打造A+生产力 全新荣耀Mag

    自7月20日迎来首销后,新上市的全新荣耀MagicBook 14/15锐龙版热度一直居高不下。在过去的近两个星期时间,不仅赢得...

    荣耀 职场 倍受 助力 生产力

    云手机批量运行一人成军 多多云性能功能产能三好生

    云手机批量运行一人成军 多多云性能功能

    信息时代飞速发展,5G网络普及应用,人们生产生活的效率也随之不断提升。过去需要耗费众多人力物力才能完成的事...

    一人 好生 产能 批量 性能

    小米穿戴APP全新升级:正式开启1000万千卡全民挑战

    小米穿戴APP全新升级:正式开启1000万千卡

    作为Redmi品牌的第一款智能手表产品——Redmi Watch小方屏的推出正式将智能手表品类带入到300元档位内,而Redmi Watch小...

    穿戴 小米 全民 开启 挑战

    新晋全球第二的小米迈向高端的方式 打开MIX FOLD你就懂了

    新晋全球第二的小米迈向高端的方式 打开

    今天凌晨Canalys发布了第二季度全球智能手机市场份额的报告,小米市场份额17%,智能手机销量超越了苹果,晋升全球...

    你就 小米 迈向 新晋 打开

    从主动降噪耳机到旗舰桌面音响,杰士多款新品中国上市

    从主动降噪耳机到旗舰桌面音响,杰士多

    2021年9月9日,传奇音响品牌杰士在中国上市多款新品。其中,T5 II ANC是杰士首款真无线主动降噪耳机产品,在传承杰...

    中国 旗舰 降噪 耳机 音响

    母亲节送礼清单来了!送妈妈最好的数码礼物都在京东电脑数码

    母亲节送礼清单来了!送妈妈最好的数码

      母亲节将至,你准备好礼物了吗?岁月如梭,为了养育子女成长,妈妈半生操劳。“你陪我长大,我陪你变老”...

    来了 数码 都在 最好的 母亲节

    局域网网络中怎么限制别人的上网网速?局域网限制别人网速的方法

    局域网网络中怎么限制别人的上网网速?

    局域网是封闭型的,那么局域网网络中怎么限制别人的上网网速?下面就整理了关于局域网限制别人的网速的方法,...

    限制网速 局域网

    保存在计算机上的设置与网络要求不匹配的解决办法

    保存在计算机上的设置与网络要求不匹配

    计算机上的网络连接连不上网络该怎么办呢?点击连接的时候发现提示:用于网络的保护在计算机上的设置与网络的...

    网络配置 网络连接

    中软国际与金蝶达成全面战略合作 共创数

    2021年9月,中软国际与金蝶软件(中国)有限公司(以下简称“金蝶”)签署战略合作协议。此次战略合作,双方将聚焦...

    金蝶 中软 国际

    新品三连发,Nokia C20 Plus 让简单好用更进一步

    新品三连发,Nokia C20 Plus 让简单好用更进

    2021 年 6 月 11 日——诺基亚手机的新家 HMD Global 今日发布 3 款新品,分别为全新智能手机 Nokia C20 Plus、真无线耳机 ...

    连发 好用 新品 简单 Nokia

    + 更多文章 +
    业界电商杂谈