计算机网络 - NAT的工作基本原理

Posted 灯火阑处

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络 - NAT的工作基本原理相关的知识,希望对你有一定的参考价值。

计算机网络

内容目录

开篇

上一章我们以宽泛的形式介绍了计算机网络的数据传递,知道了一份数据是如何从一台计算机传输到另一台计算机。很粗略,并且忽视了很多重要细节和专有名词。以至于留下了很多谜团,这次我们就穿越层层迷雾继续更加深入探究计算机网络这个庞大的世界。

回顾

有必要回顾下IP地址分类网段区分 的知识。上一章我们讲了通常由32位构成的的IPv4地址配合子网掩码,从而确定ip的网络部分主机部分的组成。进而确定传输的数据的两台计算机是否同处一个子网中。这里可以看看我之前的文章

计算机网络 - (一)计算机之间的网络互通

这里我们进一步加深 公网子网的概念。
我们都知道IP地址分类 有以10 、 172192开头的区别,即ABC三类IP地址的常见IP段。可用以判断是否处于同一网段。

InterNIC(因特网信息中心)将IP地址分为五类:
A类保留给政府或大型企业(二进制第一位必须是0,但是由于全0和全1的地址用作特殊用途,实际可指派的第一个字段范围是1~126)
例如:10.0.0.1==00001010-00000000-00000000-00000001 二进制第一位是0
1.0.0.0-127.255.255.255,默认子网掩码为255.0.0.0,最多可容纳16777215台计算机

B类分配给中等规模的公司(二进制前两位必须是10128.0.0.0-191.255.255.255,默认子网掩码为255.255.0.0,最多可容纳65535台计算机)

C类分配给小公司或个人(二进制前三位必须是110192.0.0.0-223.255.255.255,默认子网掩码是255.255.255.0,最多可容纳254台计算机 )

D类用于组播

E类用于实验

这里需要提一下IP地址中保留地址:主机部分全为0的IP地址保留用于网络地址,主机部分全为1的IP地址保留为广播地址,224–255部分保留作为组播和实验目的。
主机部分为0和255即二进制全0,全1的时候,上一章我们详细说了广播,目的地址的主机部分就为255时,发送的封包将被发送给该网段的所有计算机。当主机部分为0时,则是这个子网的网络号。

IP地址由InterNIC(因特网信息中心)统一分配,以保证IP地址的唯一性,但有一类IP地址是不用申请可直接用于企业内部网的,这就是IP私有地址 (Private Address)Private Address不会被INTERNET上的任何路由器转发,欲接入INTERNET必须要通过NAT/PAT转换,以公有IP的形式接入

IP私有地址: 就是我们在3类地址中常见到内网的IP段。
10.0.0.0–10.255.255.255(一个A类地址)
172.16.0.0–172.31.255.255(16个B类地址)
192.168.0.0–192.168.255.255(256个C类地址)

起因-IPV4

在网络诞生之初,为了方便网络的数据传输和人们的沟通,发明了IP地址,在经过激烈讨论,综合当时的设备和网络环境考虑了人口,成本,速度等多个因素后,确定了IP地址有32位二进制数构成,2^32大约40亿个IP地址,觉得这个数量完全够用了,也降低了成本,这第四版的IP地址叫做IPV4

NAT

但是,计算机的发展速度太快了,各个国家对IP地址的需求量很多,IP地址成了宝贵的资源,全球43亿IPv4地址资源,绝大多数掌握在美国手中,北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国只有2.5亿。如果将IPV4升级成128位IP地址的IPV6,这意味着要将现有的所有不支持128位的IPV4路由器全部更换,这注定是个漫长且昂贵的过程。

如果我们采取这样的策略:例如对于一个公司来说,每个公司都会有一个属于自己公司的内网(局域网)

NAT(Network Address Translation)即网络地址转换协议。可以将 私有地址 转化为 公有地址

上面说过三个分别A、B、C类的地址段的IP私有地址保留,不向特定的用户分配。这些地址可以在任何组织或企业内部使用,且仅能在内部使用,不能作为全球路由地址

NAT的工作原理

所以假如在公司A的内网里面有2台电脑,如果这两台电脑要上网的话,我们需要给他分配一个IP,那么每个在这个子网下的电脑的IP就会从这个IP私有地址保留对应地址类型中的网络段中选取IP。

NAT后面的主机H1主机H2使用的是内网地址,也叫本地地址,是主机上内网上的标识,外网是无法直接访问的。内网主机要跟公网通信,必须经过NAT中转,NAT会自动为经过的网络包做内外网地址转换(这也是NAT的含义),公网地址是主机在互联网上的标识

如果主机H1要去访问百度,由于百度和主机H1不在同一个网络环境(局域网),所以主机H1要访问百度必须经过网关转发,而网关这个地址是真是存在的的全球IP,所以就能访问百度。

那么流程应该是这样的,让网关去帮助 主机H1 访问,然后百度把结果传递给网关,而网关再把结果传递给主机H1。不过 主机H1、主机H2都可能拜托网关去帮忙访问百度,而百度返回的结果的目的IP都是网关的IP=1.2.3.4,那么网关该如何进行区分这结果是局域网中谁的呢?

端口多路复用

它是通过修改外出数据包的源IP和端口。如上一个图主机H1主机H2位于NAT之后

H1通过本地地址10.0.0.1:port1给公网主机X发送数据包,在经过NAT的时候,该数据包的IP:PORT 被修改为NAT的外网地址1.2.3.4:2222

H2通过本地地址10.0.0.2:port2向公网主机X发送数据包,在经过NAT的时候,该数据包的IP:PORT 被修改为NAT的外网地址1.2.3.4:3333

这里我们应该就能明白了虽然H1H2的IP都被映射到了相同的NAT外网IP(1.2.3.4),但NAT为它们分配了不同的端口(2222和3333),所以可以通过端口区分处于同一内网中的H1H2。同理公网主机X向内网主机H1发送网络包的时候,只需要把1.2.3.4:2222作为目标地址:端口,就可以由NAT自动完成转换,正确转交到主机H1

这便是基于端口复用的NAT方式(NPAT)的工作原理。通过将内网不同连接(主机到NAT)映射到同一公网IP的不同端口,从而实现公网IP的复用和解复用,这种一对多的方式也叫做端口转换PAT或IP伪装。

而像主机H1主机H2这样的IP地址我们也称之为内网IP,即私有IP;而像网关,百度这样的IP我们称之为外网IP,即全球IP。而这种私有地址转公有地址的办法,就叫做NAT,每个路由器都会维护这么一个表,表中记录着内网主机映射到公网的公网IP和端口。关于网关我们也会接下来稍微了解下。

总结

公有IP跟私有IP

之前我们经常提到全球 IP(外网)和私有 IP(子网),上面我们也回顾了IP地址分类,A类子默认子网掩码是255.0.0.0所以只有一个A类IP私有地址,同理B类是16个,C类是256个。也就是说如果一个公司组件一个C类IP地址子网(局域网),在这个子网下最大可连接256台计算机设备,去掉一个广播地址和网络地址实际则是254台。

静态IP与动态IP

一些公司企业可以购买一定数量的公有IP地址,这些地址是固定的,或者说是静态的。而我们普通用户不需要购买IP后者说根本不需要,就像现在拨打电话和聊天工具通话,不需要记住对方IP地址,也就是现在我们的IP地址随意的由网络运营商更改,所以我们的IP地址是动态IP地址

1、对于全球IP,很明显要求每个IP必须是唯一的,而对于私有IP在同一个网络环境下也必须是唯一的,但是在不同的局域网中可以有重复的IP地址。这也解释了假如两台主机IP重复了的这两种情况下分析。

2、在局域网中信息传递过程中没必要地址转换,而需要访问外网经过网关转发才需要地址转换。

实际上我们也可将这种地址转换的技术称之为一种代理,我们通过网关去上网,外网也就只能知道当前是网关访问了他。现在很多上网工具协议也是这种原理,通过能访问的境外服务器访问国外网站,获取到数据经过这台境外服务器代理到源主机。

实际中,不仅只有一级NAT配置在路由器中,还有两级甚至更多。之前我们说到的通过定义4组专用网络可以实现多级地址转换。比如上大学时候,我们实验室的IP地址是192.168.0.1~192.168.0.254。路由器的网关IP是172.16.168.154,很明显这也是个专有IP,说明我们学校存在至少两级的地址转换。也许我们学校只有一个全球IP,通过几级的地址转换,才有那么多的实验室的IP地址,甚至学校一个全球IP都没有,所有的IP都是可能是有某个全球IP地址转换过来的

验证:为什么我的两个上网设备是用的同一个IP地址

应该上面的介绍,我们来论证下,比如在同一个网络环境下,我们在PC端和移动端的浏览器中百度输入IP。这也就验证了我们上面介绍的知识,利用上面的知识也就能解释通了我们内网中的上网设备的上网IP相同但是能正常上网的问题了。其实这个IP也就是网络运营商最层网关的最终的全球IP地址。


下一章

用IP不可以访问知乎,而百度却可以?

网关和路由器

DHCP基本原理

以上是关于计算机网络 - NAT的工作基本原理的主要内容,如果未能解决你的问题,请参考以下文章

nat路由器的工作原理

NAT的工作原理啥

NAT基本原理

NAT基本原理

NAT基本原理

网络地址转换(NAT)原理和功能是啥?