stun技术原理与实现(一)——背景

原创 2015年07月07日 22:25:22

目前支持我们互联网的基石,IPv4网络地址最初定义于1981年,至今也没有什么变化。当时全世界的计算机不过几百台,IPv4毫无压力,但其32位的地址结构早已不足以支撑现在庞大的互联网。

虽然出现了解决这一问题的IPv6,但是很难平滑过度,而今解决时间上数十万终端连入互联网的,是NAT技术。NAT技术在缓解ipv4不足,以及带来安全性提升的好处的同时,也带来了一些问题。下面就来对NAT的原理、好处以及带来的问题做简略的介绍。


1.1. NAT的实现原理

NATNetwork Address Translation的简写,即网络地址转换,一般在网关设备上实现,比如我们家里常用的小路由器,其实里面就实现了NAT。其作用是将网关内部的私有ip地址与网关外部的共有ip地址进行映射,修改数据包中的源IP与目的IP。这样主机的IP地址就不会暴露在外网中,而是隐藏在网关的后面,网关就帮助内部主机阻挡住了大多数的网络攻击。

NAT的实现方式有三种:

1. 静态转换:将内部的一个私有IP固定的映射为外部的一个公有IP。这要求公网IP的数量足够映射内网的主机数量,同时要求网关设备上要配置静态NA映射,所以这种应用一般用在服务器端,用于网络隔离。

2. 动态转换:将内部的私有IP随机转换为一个外部公有IP,同时上网设备的数量仍然不能大于已有的公有IP数量。

端口多路复用(Port Address Translation, PAT):也叫网络端口地址转换(Network Address Port Translation),这是我们目前应用最多的一种NAT实现方式,家中的小路由器用的就是这种,这种实现方式可以将内部不同的私有IP转换为同一公有IP,从而实现了大家用一个公有IP共同上网,节约IP的作用。那么NAT设备怎么区分内部不同私有IP与外部连接的对应能,使用的是端口号。具体的映射过程见图1

1 NAT转换过程

图中,内部有两台PC,内部私有ip分别为Ai1Ai2,但是他们经过NAT设备访问外网的公有ip只有一个Ao2,于是NAT设备做了一个上面第三种实现所说的端口多路复用,过程如下:

nat内部终端经nat设备发送出去的数据包被nat设备替换了数据包的源ip和源端口号,在图1中,PC1发出的一个数据包源ip和源端口号Ai1 Pi1被替换为外网的一对源ip和源端口号Ao1 Po1,于是因特网上其他设备收到的PC1上发来的数据包就隐藏了PC1的身份,转而变成NAT设备发来的了。当网上的设备回复数据包给PC1时,其目的ip和目的端口号就成了Ao1Po1,于是NAT设备接到了这个数据包。NAT设备给句内部存储的映射关心,将该数据包的目的ip和目的端口号替换为Ai1Pi1,于是PC1收到了来自外网的数据包。同样的,来之内部另外一台终端PC2的数据包也会被映射为外网的ip和端口号Ao1Po2,公有ip相同,但是公有端口号不同,于是实现了内部不同私有ip通过同一公有ip访问外网。

在这一映射的过程中,一切内幕都掌握在NAT设备的手中,它在向外转发的过程中偷偷替换了源ip和端口号,在向内转发的过程中又根据记录下来的映射关系将目的ip和目的端口号替换回去。内网终端不知道这个过程,以为自己是直接与外网的服务器进行通信;外网的服务器也不知道有内部终端的存在,以为与自己通信的就是那台NAT设备。这时一个问题出现了,如果外网想要主动连接内网的设备怎么办。

这种应用时存在的,比如一台服务器要集中管理NAT下面的设备,比如现在流行的终端对终端的多媒体实时聊天,比如各种p2p应用,都需要跨越NAT访问内网。本文介绍其中比较古老的一种——STUNSimple Traversal of UDP Through NATsNatUDP简单穿越)。

1.2. NAT的四种类型

要想穿透NAT,还要了解NAT(后面我们提到NAT,专指端口多路复用这种实现方式)的几种类型。

NAT根据NAT处理UDP数据包的行为细分为四种类型分别是:完全圆锥形(Full Cone),受限圆锥形(Restricted Cone),端口受限圆锥形(Port Restricted Cone)和对称形(Symmetric)。他们的特性如下:

1. 完全圆锥形:

来自内部同一IP地址和端口号的所有请求都会映射为相同的外部IP地址和端口号,所有的外部主机都可以通过这个映射后的IP地址和端口号向内部主机发送数据包。

2. 受限圆锥形:

来自内部同一IP地址和端口号的所有请求都会映射为相同的外部IP地址和端口号,不同于完全圆锥形,一个外部主机(假设其IP地址为X),只有当内部主机已经向IP地址X发送过数据包了,该外部主机才能向内部主机发送数据包。

3. 端口受限圆锥形:

跟受限圆锥形相似,但是端口受限圆锥形还限制了外部主机的端口,即只有当内部主机向外部某一IP和端口发送过数据包后,该IP和端口才能向内部主机发送数据包。

4. 对称形:

从同一内部IP地址和端口发往一个特定目的的IP地址和端口号的请求映射为同一外部IP地址和端口。如果同一主机用同一地址和端口向不同的目的地址发送数据包,将使用一个不同的映射,而且,只有当外部主机收到一个来自内部的包时,才能向该内部主机发送数据包。

stun最早定义在2003年发布的RFC3489中,之后该协议被2008年发布的RFC5389所取代。但是鉴于仍有老的stun的应用场景,我们这里介绍老版stun,并把它称为classic stunclassic stun并不能完全满足上面四种,其中对称形NAT就无法使用classic stun进行穿透,所以,判断NAT类型是进行classic stun NAT穿透的重要部分。



版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012515915/article/details/46795193

图像分割原理

1.分析图像处理中“相关”和“卷积”的原理,基于卷积的原理讲解各种滤波器的原理并提供案例代码。 2.剖析形态学处理中膨胀、腐蚀、开闭运算、帽运算的原理,并给出案例代码。 3.分类讲解图像分割方法的原理:基于阈值的分割、基于区域的分割(风水岭)、基于图论的分割(graph cut)、基于边缘提取的分割。
  • 2017年12月30日 22:10

NAT穿越原理——STUN

STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在ANT穿透中占有一席之地。 STUN的探测过程需...
  • rudyn
  • rudyn
  • 2014-05-07 17:23:26
  • 4688

p2p打洞stun的原理

我觉得以下这篇文章写得挺易懂的,但是好像不够全面吧。 原文:STUN在SIP中的工作原理及过程   STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口...
  • u012220260
  • u012220260
  • 2015-04-01 14:50:13
  • 1877

P2P通信标准协议(一)之STUN

前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则, 当然如果这套程序只有自己在使用是没什么问题的。可是在现实生活中,我们的程序往...
  • Runningzyx
  • Runningzyx
  • 2016-11-16 11:04:59
  • 1819

NAT原理分类和STUN在SIP中的工作原理及过程

NAT原理分类    转自::http://blog.csdn.net/wcl0715/article/details/676070    1、NAT        NAT是Net Ad...
  • seven407
  • seven407
  • 2012-01-17 16:47:24
  • 1713

STUN和TURN技术浅析

转载自:http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Five/Home/Catalog/201206/747038...
  • u012377333
  • u012377333
  • 2015-03-19 11:40:08
  • 1120

高性能stun服务器搭建

项目中使用WebRtc,需要使用stun服务器,网上倒是有仁人志士共享了许多免费可用的stun服务地址,但是不知道稳定性如何, 所以提前预研了一下; 使用Stuntman搭建,地址:http://ww...
  • zhenzhen2014
  • zhenzhen2014
  • 2015-05-20 15:23:57
  • 5701

公开的免费STUN服务器

http://blog.sina.com.cn/s/blog_683d26990100oucy.html 公开的免费STUN服务器 当SIP终端在使用私有IP地址时,可能需要配置stun服...
  • suer0101
  • suer0101
  • 2012-05-14 09:19:15
  • 30917

P2P在NAT和STUN

概述 本文主要讨论关于P2P通信的一些常见问题和解决方案。主要内容包含:P2P通信与网络设备的关系、不同的网络设备特征对P2P产生的影响、网络地址转换(NAT)的类型、NAT类型的检测方法、...
  • A1989A132
  • A1989A132
  • 2013-12-05 13:34:52
  • 6462

FreeSWITCH关于穿越NAT的那点事儿

1、NAT的种类:Full Cone NAT(全锥型NAT)、R
  • liang12360640
  • liang12360640
  • 2014-07-25 10:21:51
  • 12360
收藏助手
不良信息举报
您举报文章:stun技术原理与实现(一)——背景
举报原因:
原因补充:

(最多只允许输入30个字)