logo头像
Snippet 博客主题

跟着彤哥学网络-网络层之IPv4

1 IPv4组成与分类

1.1 IPv4组成

我们把整个互联网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的32位的标识符。

IP 地址现在由互联网名字和数字分配机构ICANN (Internet Corporation for Assigned Names and Numbers)进行分配,我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)缴费申请IP地址。

在国内实际上都是ISP网络运营商统一申请,最终分配到企业以及家庭个人用户。以前在IP地址不稀缺的情况下,个人有可能分配到公网的IP地址,现在几乎不可能了,IP地址资源有限,不可能每台主机都分配一个公网IP。

有关IP最重要的协议文档就是互联网的正式标准RFC 791

1.2 IPv4现状

我们常常说的IP,其实就是IPv4,即IP的第四个版本,该版本地址空间有限,到某个阶段IP地址将会耗尽。

该过程自80年代以来就已预见到,顶级地址实际上已经在2012年耗尽。那时,所有IPv4地址空间已分配给五大区域互联网注册机构,非洲网络信息中心 (AFRINIC)针对非洲,北美网络信息中心(ARIN)针对南极洲、加拿大、部分加勒比海地区和美国,亚太互联网络信息中心(APNIC)针对东亚、大洋洲、南亚和东南亚,拉丁美洲网络信息中心(LACNIC)针对加勒比海的大部分地区和整个拉丁美洲,以及欧洲网络信息中心(RIPE NCC)针对欧洲、中亚、俄罗斯和西亚。

那些区域性Internet注册很快就开始耗尽。2011年4月15日,亚太互联网络信息中心(APNIC)在2012年9月14日为欧洲,欧洲网络信息中心(RIPE NCC)分配了最后一个IPv4区块,在2014年6月10日为拉丁美洲和加勒比海(LACNIC)分配了最后一个IPv4区块。2015年9月24日为北美分配IPv4区块,直到今天,欧洲RIPE NCC终于耗尽了存储。

该消息是在2019年11月25号在一封电子邮件(由Nikolas Pediaditis发布)中宣布的,内容为:

IPv4耗尽

大概译文如下:

亲爱的同事们,

今天,在2019年11月25日UTC + 1 15:35,我们从可用池中的最后剩余地址进行了最终的/22 IPv4分配。现在,我们已经用完了IPv4地址。

对于网络运营商来说,我们的宣布并不令人惊讶– RIPE社区早就预料到并计划IPv4耗尽。实际上,正是由于社区对这些资源的负责任管理,我们才能够在2012年达到最后一个/8后,向我们服务区域内的数千个新网络提供/22分配。

从理论上讲,IPv4地址耗尽应该意味着不能将任何新的IPv4设备添加到Internet,但是实际上,许多因素会进行缓解。
首先是ISP可以重用和回收未使用的IPv4地址。第二个原因是由于NAT(网络地址转换),因此可以在ISP路由器后面私下使用相同的IP地址。当然,最后是向IPv6的过渡,现在应该建立良好的秩序,从而可以通过具有3.4×10^38巨大地址空间的Internet直接进行对等连接。

1.3 IPv4地址编址方法

  • 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。
  • 子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。
  • 构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。

    1.4 IPv4基本分类

    IP地址(32位) = 网络号 + 主机号

每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。

主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个 IP 地址在整个互联网范围内是唯一的。

IP地址分5类。A、B、C是常用的地址。IP地址的编码规定全0表示是本地地址,即本地网络或本地主机。全1表示广播地址,任何网站都能接收。所以,除去全0和全1地址外,A类有126个网络地址,1600万个主机地址;B类有16382个网络地址,64000个主机地址;C类有200万个网络地址,254个主机地址。
image-20191231151754492
image-20191231155000727

image-20191231160055476

IP地址的范围指派:

网络类别 最大可指派的网络数 第一个可指派的网络号 最后一个可指派的网络号 每个网络中最大主机数
A 126 (2^7– 2) 1 126 16777214
B 16383 (2^14 – 1) 128.1 191.255 65534
C 2097151 (2^21– 1) 192.0.1 223.255.255 254

一般不使用的特殊的IP地址:

网络号 主机号 源地址使用 目的地址使用 代表的意思
0 0 可以 不可 在本网络上的本主机
0 host-id 可以 不可 在本网络上的某台主机host-id
1 1 不可 可以 只在本网络上进行广播(各路由器均不转发)
net-id 1 不可 可以 对net-id上的所有主机进行广播
127 非全 0或全1的任何数 可以 可以 用于本地软件环回测试

例如常见的特殊IP:

  • 127.0.0.1,本地回环地址,其实只要是127开始的任意地址,你在本地计算机都可以ping通。如果ping不通说明你的物理层网卡有问题,如果物理层没问题,那么TCP/IP协议栈有问题。
  • 169.254.0.0 ,Windows主机特殊的地址,当Windows主机找不到DHCP服务器的时候,会默认分配169.254.X.X的IP地址。
  • 10.0.0.0,保留的A类私网地址,一般用于政府、企业、学校网络。我大学校园网都是一个10.x.x.x的A类网络。
  • 172.16.0.0 - 172.31.0.0 ,保留的C类私网地址
  • 192.168.0.0 - 192.168.255.0,保留的C类私网地址

    1.5 IP 地址的一些重要特点

  1. IP 地址是一种分等级的地址结构。分两个等级的好处是:
    第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
    第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
  2. 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
    当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)。
    由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
  3. 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id。
  4. 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。

    2. 子网划分和构造超网

2.1 划分子网

2.1.1 从两级 IP 到三级 IP

在 ARPANET 的早期,IP 地址的设计确实不够合理:
(1) IP 地址空间的利用率有时很低。
(2) 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
(3) 两级的 IP 地址不够灵活。

2.1.2 三级IP

从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。
这种做法叫做划分子网 (subnetting) 。
划分子网已成为互联网的正式标准协议。

(1) 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
(2) 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。

IP地址=网络号+(子网号+主机号)

凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
最后就将 IP 数据报直接交付目的主机。

假设以下为一个未划分子网的B类网络145.13.0.0,网络号是145.13,后面两位是主机号,即凡是地址为145.13.x.x的数据报文都被送到这个网络上的路由器R1。

image-20200103105603931

若子网号占8位,将上述的网络划分为三个子网后,主机号就只有8位,所以划分的三个子网是145.13.3.0、145.13.7.0、145.13.21.0,在划分子网后,整个网络对外部仍然表现为一个网络,其网络地址仍为145.13.0.0。但是网络145.13.0.0上的路由器R1在收到外来的数据后,再根据数据报的目的地址把它转发到相应的子网。
image-20200103110217937
划分子网后的优点:

  • 减少了 IP 地址的浪费
  • 使网络的组织更加灵活
  • 更便于维护和管理

2.2 子网掩码

我们来思考一个问题:假设有一个数据报,其目的地址是145.13.3.10已到达了路由器R1。那么这个路由器如何把它转发到子网145.13.3.0呢?

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。
规则:

  • 子网掩码长度 = 32 位
  • 子网掩码左边部分的一连串 1,对应于网络号和子网号
  • 子网掩码右边部分的一连串 0,对应于主机号
  • (IP 地址) 与运算 (子网掩码) = 子网的网络地址

使用子网掩码的好处:

不管网络有没有划分子网,只要把子网掩码和IP地址进行与运算,就立即得出网络地址。

145.13.0.0是一个普通的B类网络,其子网掩码为16个连续1+16个连续0,数据报进入到这个网络后到路由器层,就可以知道有许多子网,此时可以计算此时的网络地址为:145.13.x.0,其x表示不同的子网号

2.2.1 默认的子网掩码

image-20200103161009075

子网掩码是一个网络或一个子网的重要属性。
路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码。

2.2.2 子网划分方法

  • 有固定长度子网和变长子网两种子网划分方法。
  • 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
  • 虽然根据已成为互联网标准协议的 RFC 950 文档,子网号不能为全 1 或全 0,但随着无分类域间路由选择 CIDR 的广泛使用,现在全 1 和全 0 的子网号也可以使用了,但一定要谨慎使用,确认你的路由器所用的路由选择软件是否支持全 0 或全 1 的子网号这种较新的用法。
  • 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。

2.2.3 B类地址的子网划分选择(使用固定长度子网)

子网号的位数 子网掩码 子网数 每个子网的主机数
2 255.255.192.0 2 16382
3 255.255.224.0 6 8190
4 255.255.240.0 14 4094
5 255.255.248.0 30 2046
6 255.255.252.0 62 1022
7 255.255.254.0 126 510
8 255.255.255.0 254 254
9 255.255.255.128 510 126
10 255.255.255.192 1022 62
11 255.255.255.224 2046 30
12 255.255.255.240 4094 14
13 255.255.255.248 8190 6
14 255.255.255.252 16382 2

注意:表中的“子网号的位数”中没有 0, 1, 15 和 16 这四种情况,因为这没有意义。

其实可以总结为:子网数=2^子网号的位数-2,主机部分全0和全1的不能用

已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址?

划分步骤:

  1. 点分十进制表示的IP地址,将十进制的IP段用二进制表示;
  2. 将子网掩码也用二进制表示;
  3. 两者进行与运算得出网络地址为141.14.64.0

若子网掩码改为 255.255.224.0,试求网络地址,讨论所得结果?

按照上述步骤,其实算下来的网络地址还是141.14.64.0。

由此可见:不同的子网掩码得出相同的网络地址。但不同的掩码的效果是不同的。

2.3 各类IP子网划分示例

2.3.1 等分子网划分

背景:

某公司有两个部门,每个部门各有100台主机,并且都在使用192.168.0.0C类网络,该网络子网掩码是255.255.255.0,连接局域网的路由器接口可配置的第一个可用IP地址是192.168.0.1

需求:

现在公司提出等分成两个子网将不同部门的网络隔离出来,即将一个C类地址等分为两个网段。两个网络之间通过路由器进行网络转发,目的是为了局域网安全(比如技术部门的主机不能够查看财务部门的共享资料)。

划分步骤:

  1. 主机位往往后移动1位
  2. 此时A子网的IP段就是192.168.0.0(子网位) 1111111(主机位),B子网的IP段就是192.168.0.1(子网位) 0000000(主机位)
  3. 最终得出子网掩码为255.255.255.128
  4. A子网主机部分是全0或全1的IP地址不能用,即192.168.0.0(没有意义,只代表网络号)和192.168.0.127(广播地址),所以A的有效地址为192.168.0.1 - 192.168.0.126
  5. B子网主机部分是全0或全1的IP地址不能用,即192.168.0.128(没有意义,只代表网络号)和192.168.0.255(广播地址),所以A的有效地址为192.168.0.129 - 192.168.0.254

总结

子网掩码往后移N位,则每个子网是原来的1/2^N。

子网划分的个数只能是偶数,不能是奇数

2.3.2 变长子网划分

需求:

判断192.168.0.101/26所属的子网

分析思路:

  1. 192.168.0.101/24子网掩码为255.255.255.0,那么192.168.0.101/26其实就是子网掩码往后移两位
  2. 整个网络被分为了4部分,主机位归0,子网掩码为255.255.255.64
  3. 那么最终101所在的子网有效地址为192.168.0.1-192.168.0.63
支付宝打赏 微信打赏

请作者喝杯咖啡吧