网络层(三)IP编址
1.编址的对象
编址对象我也不清楚不实现网络层功能的接口是些什么,比如供电电源接口??
2.编址策略
如果编址无规律,每个接口随机分片一个IP标识,路由表需要存下网络内所有的IP,不适合Internet这种巨大的网络。因此将网络进行层次划分,将一个大的网络分成一个个子网,路由表只需记录子网即可。这个策略下,IP地址分成网络部分和主机部分。
3.IPV4地址
image.png通常写成点分十进制的形式
4.IP编址的三个历史阶段
- 有类IP地址。这是最基本的编址方法,1981年就通过了相应的标准协议。
- 子网划分。对有类IP地址的改进,1985年通过相关标准。
- 无类域间路由(CIDR)。IP地址不再分类,1993提出,很快得到推广应用。
1.有类IP地址
将32位IP地址资源,分成5类。IP地址是二级结构:网络号+主机号。当某个单位申请到一个IP时,实际上的获得了具有相同网络号的一块地址,其中的各台主机号由单位自行分配。
- A类:0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
范围:0.0.0.0~127.255.255.255
网络号:前8位 - B类:10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
范围:128.0.0.0~191.255.255.255
网络号:前16位 - C类:110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
范围:192.0.0.0~223.255.255.255
网络号:前24位 - D类:1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
范围:224.0.0.0~239.255.255.255
网络号:不区分网络号和主机号,特殊用途,用来标识一组主机,多播地址 - E类:1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
范围:240.0.0.0~255.255.255.255
网络号:不区分网络号和主机号,保留供研究使用
真正可以分配给主机使用的是ABC三类,但是其中仍有一些特殊的号不能
特殊IP地址除此之外,还保留了一部分作为私有IP地址,只能在内部网络中使用
私有IP这样,当路由器收到一个IP分组时,只需要看它的IP地址,就知道它是ABC哪类网络,进而知道其网络号,然后检索转发表,将分组转发至对应端口。
此时的路由表应该是下面这样:
2.子网与子网划分
- 有类IP地址比较浪费资源。如某大学计算机系需要2000个IP,分配一个C类网络(256个)又不够,于是申请了一个B类(65536-2个)。之后电子工程系需要500个IP,又申请了一个B类,但是明明计算机系申请的还空出62534个。
- 如果只有这ABC三类子网络,整个网络划分将十分粗暴。比如下图中左侧直接是一个A网,内部的所有主机将在其中直接通信(广播),效率会很低。
- 给每一个物理网络分配网络号,路由表会很大,转发效率也会很低。
- 不灵活。比如某单位需要紧急开通一个网络,但是申请新的需要时间,不能快速利用原来的空闲资源。
因此,将有类网络进一步划分成更小的子网,对外仍然表现为一个网络。方式是在原来的网络号基础上,再增加一个子网号。子网号是借用一部分高比特的主机号来充当。二级IP地址变为三级IP地址。
子网划分下面的例子是将一个C类网络划分成4个子网
将一个C类网络划分成4个子网3.子网掩码
有了子网划分之后,问题来了,现在路由器该如何确定一个分组的转发?
一个IP地址,和它的掩码地址按位“与”运算,就能得到它的所属的网络。因为IP分组里没有目的主机的掩码这个字段,所以路由器需要记录的除了网络号和转发端口,现在还要加上每个子网的掩码。
确定转发端口时,目的IP地址要依次和每条记录的掩码进行与运算,然后再看得到的网络号和当前记录的网络号是否一致。结果一致的那条记录就是正确的转发端口。
假如有个路由器R,它的转发表就是上图。现在R收到一个分组,其目的主机是193.193.255.255。经过比对,发现端口2对应的网络号一致,所以就从端口2转发。
4.无类域间路由(CIDR)
有了子网划分之后,IP编址仍然存在一些问题。到了1992年,一些问题日渐凸显:
- B类网络即将用尽。出于某种原因,申请IP时还是只能申请一整个ABC类网络,而不能申请ABC的子网(我猜的),只是自己可以内部把它划分几个子网。所以大小适中的B类,消耗的很快。
- 主干网络的路由表中的项目急剧增长(从几千涨到几万)
- IPV4空间即将耗尽
CIDR不再对IP地址进行分类,IP地址再次变成二级结构。每个IP地址仍然由网络部分+主机部分构成,只是网络部分称网络前缀,其长度可以任意长度。
CIDR- 提高IPV4地址空间分配效率
组织和单位可以自由选择更适合自己的网络大小 - 提高路由效率
路由器也可以将多条路由信息整合在一起,称为路由聚集(其实有类+子网也可以路由聚集)。比如下面三条可以聚合成一条:
几个连续的子网可以聚集成一个较大的子网,比如:
200.23.16.0/23
200.23.18.0/23
200.23.20.0/23
...
200.23.30.0/23
可以聚集成200.23.16.0/20
但由于历史原因,一个ISP可能恰好有个子网不属于它,此时这些子网不再连续,但依然可以聚集。此时路由器按最长前缀匹配即可。
路由最长前缀匹配比如上图中,恰好200.23.18.0/23不属于上方的ISP,现在右侧路由器收到一个分组,目的主机是在200.23.18.0/23内。那应该将该分组交给上下哪个ISP的路由器呢?如果交给上方,就会出现路由黑洞现象。所以需要应该按照最长前缀匹配,交给下方。