1. IPv4
在互联网的世界中只有 0 和1 ,所以每个人都有一个由 0 和 1 组成的地址来让别人找到你。
这段由 0 和 1 组成的地址叫 IP 地址,这是互联网的基础资源,可以简单的理解为互联网的土地。
IP 地址是由一串 32 位的二进制数构成,每台设备都需要独立的 IP 地址才能进入互联网。
为了方便阅读和记忆,IP 地址在我们的设备上通常显示为点分十进制。那就是
点分十进制
就是使用三个
.
把 32 位 4 字节的数字给分割开,也就是分成 4 个部分,每个部分分别使用 0~255 十进制整数表示。
比如上述的一串二进制数就变成了,
192.168.1.255
IPv4 使用简单、可靠。大家互信,但是它有一个致命的缺点:
那就是
数量
是有限的。
IPv4 地址是一个 32 位的二进制数,意味着 IP 地址在逻辑上的最大总数为
2^32-1
个,也就是
4294967295
个。
在互联网发展之初,这是一个天文分数字,但是随着互联网的发展速度越来越快,比如智能手机、计算机、路由器…
互联网发展的速度超乎了所有人的想象,IP 地址被迅速地消耗。
全球有 70 亿人口,但是 IP 地址只有 43 亿个。一旦这些 IP 地址用完,后来者将无法进入互联网。
为了防止 IP 地址耗光,出现了 IPv6。
2. IPv6
IPV6 从根本上解决了 IP 不够用的问题,是使用 16 字节来表示的。
和 IPV4 不同,IPV6 的地址长度扩张到了 128 位,是前者的 4 倍。
上述图片就是一串 IPV6 的地址。
长度增加后原有的点分十进制也不够用了,于是 IPV6 改用十六进制表示。
上述图片就是改用的十六进制表示的。
IPv4 有 43 亿的地址,IPv6 的长度是它的 4 倍,是不是意味着 IPv6 的地址个数也是它的 4 倍,也就是 172 个地址?
答案是不是,IPv6 的地址空间是
2^128-1
,IP地址 总数为 3402823… 总之是很多的。
多到可以给地球上的每粒沙子都分配一个 IP 地址。
IPV6 虽然地址个数足够使用,但是当前世界上仍然是 NAT + IPV4 + 动态分配 来进行网络组建的,
真正使用 IPV6 的地方非常少。
这主要是因为 IPV6 不是 IPV4 协议的升级,而是一个全新的协议。
两个协议之间无法兼容,如果要使用 IPV6 ,那全世界的互联网设备都要同步更换硬件设备,更换硬件设备需要花更多的资金。
3. NAT
这个方案的本质是使用一个 IP 代表一批设备,也是可以提高 IP 地址的利用率,只不过要使用端口号来区分不同的设备。
在 NAT 背景下,就把所有的 IP 地址分为两个大类:
1、
内网 IP(私有 IP)
:以 10.* 、172.16.* ~ 172.31.* 、192.168.* 开头的都是属于
私网
。
例如:我的笔记本的 IPV4 地址是
192.168.21.1
,这就是一个私网 IP。
2、
外网 IP (公网 IP)
:除了私网剩下的都是公网。
NAT 要求公网 IP 必须是唯一的,而私网 IP 可以在不同的局域网中重复出现。
如果某个私网里的设备想要访问公网的设备,就需要对应的 NAT 设备(路由器),把 IP 地址进行映射,从而完成网络访问。
反之,公网的设备无法直接访问私网的设备,不同的局域网的私网设备无法直接访问相互访问。
举个例子
每个人相当于是一个独立的 IP 地址,快递员必须要知道这个人的 IP 地址,才能找到这个人。
NAT 技术就是把每个 IP 地址变成一个小区,快递员只需要把包裹交给门卫(相当于是 NAT),
门卫再将包裹交给住户。小区之内就是
私网
,小区之外就是
公网
。
打开自己电脑的 cmd 键入
ipconfig
,就可以看到自己电脑的 IP 地址,而且这个 IP 地址基本上都是私有 IP。
内网 IP 只要在局域网内部不重复即可,而不同局域网中则是允许重复的。
源 IP 地址就是 192.168.21.2
,
目的 IP 就是 1.2.3.4
。
我的 IP 数据报经过 NAT(运营商路由器)设备之后,此时就会把我的 源 IP 给改了。
此时源 IP 就是 NAT 设备的 IP,
61.185.187.142
,而目的 IP 还是 1.2.3.4。
站在服务器的视角,看到的我的电脑的 IP 地址就是这个运营商路由器的地址。
当有其他的电脑接入运营商路由器的时候,去访问外部服务器都会被路由器替换成路由器自己的 外网 IP。
因此服务器只能拿到路由器的 IP ,不能拿到我的电脑的内网 IP 。
如果我的电脑不主动和服务器联系,服务器也就不知道我的端口,从而就无法主动找到我的电脑。
只要电脑是经过运营商路由器转发给服务器的,服务器看到的源 IP 就都一样。
如果是多个电脑同时访问同一个服务器,服务器的响应就会先发给路由器,路由器根据这些电脑不同的端口号来区分,决定先发给哪个设备。
NAT 机制能够有效地解决 IP 地址不够用的问题,但是带来的副作用就是网络环境更加的复杂了。
4. 动态分配 IP 地址
动态分配 IP 地址,就是在网络设备使用的时候再分配 IP 地址,不使用的时候就不分配。
这样不仅提高了 IP 地址的利用率,还可以节约有限的资源。
但是这个方案没有从根本上增加 IP 地址,只是提高了利用率,属于治标不治本。