【网络】网络地址转换(NAT)
现在大家都是在家里弄一个路由器,然后手机、电脑都通过路由器上网(WiFi或有线连接等)。这个过程中用到的一个技术就是NAT,网络地址转换。网络地址转换技术一开始出现是为了解决IP地址不够用的问题。在上个世纪末随着网络的发展,连接到网络的设备越来越多,IP地址空间越来越少(IP地址本来可以表示4294967295个地址,可是全世界的电脑总数恐怕是会突破这个数字的)。因此出现了一种能复用IP地址的技术,就是多台电脑使用一个IP地址来上网。这个和现在大家的情况差不多——大家都通过路由器来上网,而路由器能让大家的设备之间能互相传递数据,就是用的NAT技术。
NAT有很多种。。首先就是最基本的,静态NAT(Basic NAT),直接给用户的电脑分配公网IP。
如图中所示每个用户都有一个独立的公网IP地址。。路由器给帮分配的。
但是这种方法并不能用来实现IP地址的复用。因此就有以下的方法了。
网络地址端口转换(NAPT)
支持端口转换的NAT又可以分为两类:源地址转换和目的地址转换NAT。
前一种情形下发起连接的计算机的IP地址将会被重写,使得内网主机发出的数据包能够到达外网主机。
后一种情况下被连接计算机的IP地址将被重写,使得外网主机发出的数据包能够到达内网主机。
实际上,以上两种方式通常会一起使用以支持双向通信。
但是这样的NAT(刚才我们所说的NAPT)又分为很多种。
[*]Full cone NAT,亦即著名的一对一(one-to-one)NAT
局域网电脑通过路由器发送包到外部机器,路由器取得了局域网电脑发出的包后,根据转发规则将包的地址改为路由器的地址,然后把端口根据规则改为预设的端口,发送到指定的外部机器。
外部机器发送一个包到路由器,然后路由器就会按照转发规则,根据端口号来决定发送到局域网的特定地址和端口号。通讯是双向的。
[*]Address-Restricted cone NAT
和上面的Full cone NAT相比,这个的区别是,只有内部机器先发包到外面一次后(只需要一次,一次就够了……“破处”(误)),外面机器才能发包给内部机器。否则外面机器是不能直接发包到内部机器的。
这是因为,路由器限制了从外部向内部发起连接,但支持从内部向外部发起连接。内部发包出去后,路由器会从空闲的端口列表里找出可用的,分配一个用于把外部发来的包转发给内部。
[*]Port-Restricted cone NAT,类似受限制锥形NAT(Restricted cone NAT),但是有端口限制。
和上面的Address-Restricted cone NAT相比,这个的区别是,端口是限制的。内部机器必须先发一个包到外部机器的某个端口,外部机器才能发包给内部机器的某个端口。也就是说内部机器只能向外部机器的指定端口发起连接(如果是有连接的网络协议的话)。
[*]Symmetric NAT(对称NAT)
和上面的Port-Restricted cone NAT相比,这个的区别是,地址也有限制!
说白了外面每个机器要发包到局域网机器都必须先让局域网机器先发送包到这个外部机器才行(于是就有了“墙”)。
参考资料:
https://en.wikipedia.org/wiki/Network_address_translation
https://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2
如果有错欢迎勘误! 学习了. 解决了一直以来的疑惑. 已更新插图。 可以可以!!
页:
[1]