🌐 网络层
📖 概述
网络层的主要任务是什么?
网络层的主要任务是将分组从源主机经过多个网络和多个链路传输到目的主机,该任务可划分为分组转发和路由选择两个重要功能。
分组转发
分组转发是指路由器将接收的分组从适当的接口转发到下一跳路由器或目的主机的过程。为此,每个路由器都需要维护一份转发表(Forwarding Table),当路由器接收到一个分组时,它会根据分组首部中的转发标识,在自身的转发表中查找并确定相应的转发接口。
在以下示例中,路由器R1的G1接口接收到了一个分组,R1根据该分组首部中的转发标识A,在自身的转发表中进行查询,最终确定由R1的G2接口负责转发该分组。
tip: 分组首部中包含的转发标识信息依赖于所采用的网络层协议,有可能是分组的目的地址,也有可能是分组所属连接的指示。
路由选择
源主机与目的主机之间可能存在多条路径。在上述示例中,主机H1和主机H2之间存在两条路径:一条是H1→R1→R2→H2
,另一条是H1→R1→R4→R3→R2→H2
。而路由选择是指网络通信中确定分组传送路径的过程,即选择决定由哪一条路径来传送分组。
路由选择方式主要有以下三种。
- 集中式路由选择:由某个网络控制中心统一管理和执行路由选择,并将最新的路由信息下发到每个路由器。
- 分布式路由选择:在每个路由器上运行相互兼容的路由选择协议,各路由器相互交换路由信息,并各自计算路由。
- 人工路由选择:由特定人员(通常为网络运维人员)配置路由。
路由表(Routing Table)是由路由选择生成的,通常情况下,路由表仅包含从目的网络到下一跳的映射。路由表利用先进的算法动态适应网络拓扑变更,以计算出最佳路由路径。基于路由表生成的转发表,则通过采用高效的数据结构来优化查找速度。
网络层提供的服务是什么?
网络层可以为其上层提供以下两种服务。
①面向连接的虚电路服务
面向连接的虚电路服务的核心思想为:可靠通信应由网络自身来保证。当两台主机进行通信时,首先需要建立网络层的连接,即建立一条虚电路(Virtual Circuit)。其次,双方主机沿着已建立的虚电路发送分组。最后,在通信结束后,虚电路会被释放。
在虚电路通信中,分组首部仅在连接建立阶段使用完整的目的主机地址,之后的每个分组首部只需携带一个虚电路编号即可。因此,虚电路通信方式再结合可靠传输的网络协议,就能保证发送方发送的分组最终正确(无差错按序到达、不丢失、不重复)到达接收方。
tip: 不同于物理连接的电路交换,分组交换的虚电路是一种逻辑上的连接。
许多分组交换网络都使用了基于连接的虚电路模式,例如X.25、帧中继(Frame Relay,FR)、异步传输模式(Asynchronous Transfer Mode,ATM)。然而,因特网的先驱者并没有采用这种方式,而是采用了无连接的数据报服务。
②无连接的数据报服务
无连接的数据报服务的核心思想为:可靠通信应由用户主机来保证。当两台主机进行通信时,无需建立网络层的连接,每个分组可沿着不同的路径进行传送,通信结束后也无需释放连接。
在数据报通信中,每个分组首部都必须携带完整的目的主机地址。由于网络自身不提供端到端的可靠传输服务,因此这种通信方式所传送的分组可能会误码、丢失、重复和失序。
因特网的设计思想为:将复杂的网络处理功能置于因特网的边缘,而将相对简单、尽最大努力(不可靠)的分组交付功能置于因特网的核心。这种设计思想的好处有:网络造价大大降低、运行方式灵活、能够适应多种应用方式。正是基于这种设计思想,因特网在设计之初采用了无连接的数据报服务模型。而因特网能够发展至今日的规模,也充分证明了当初采用这种设计思想的正确性。
以下总结归纳了虚电路服务和数据报服务的主要区别。
📡 网际协议(IP)
什么是网际协议?
网际协议(Internet Protocol)也被称为IP协议,它是TCP/IP体系结构网络层中的核心协议。IP协议主要分为IPv4和IPv6两个版本,其中IPv4是目前主流的版本。但在未来,随着IPv4地址资源枯竭和对互联网连接设备数量需求的增加,IPv6将逐渐取代IPv4成为主流的IP协议版本。
因特网是由全球范围内数以百万计的不同网络通过路由器互连而成。由于这些网络在接入机制、差错恢复方法、路由选择技术、寻址方案、最大分组长度和服务类型等方面都有可能会不尽相同,因此这些网络也被称为异构网络。
虽然因特网中的各个异构网络在具体实现细节上存在差异,但它们在网络层上使用了统一的IP协议。因此,从网络层的角度来看,因特网中的各个异构网络互连并构成了一个统一的网络,这个网络通常被称为IP网。
在以下示例中,多个异构网络互连组成了因特网的一小部分。
以上示例中的多个异构网络互连,构成了一个IP网。当IP网中的主机进行通信时,主机之间就好像是在同一个网络上进行通信一样,尽管实际上它们连接在多个异构网络上。
IPv4地址是什么?
IPv4地址是一个由32位比特组成的标识符,用于唯一标识IP网中的主机(或路由器)接口。
因特网中的IPv4地址由因特网名字和数字分配机构(Internet Corporation for Assigned Names and Numbers,ICANN)进行分配。我国用户可向亚太网络信息中心(Asia Pacific Network Infomation Center,APNIC)申请IPv4地址,这需要支付一定的费用,通常不接受个人申请。
2011年2月3日,因特网号码分配管理局(Internet Assigned Numbers Authority,LANA)宣布,IPv4地址已分配完毕。其中,LANA的职能由ICANN行驶。而我国也在2014~2015年逐步停止了向新用户和应用分配IPv4地址,同时全面开展商用部署IPv6。
IPv4地址如何表示?
我们熟知的IPv4地址127.0.0.1
,其32位比特表示为01111111000000000000000000000001
。可见,32位比特的IPv4地址不便于阅读、记录以及输出,因此IPv4地址通常采用点分十进制的形式表示,从而便于用户使用。
IPv4地址的点分十进制形式的具体表示方法为:首先将32比特的IPv4地址以8比特为一组,共分为4组,其次将每组的8比特转换为对应的十进制数,最后将这四个十进制数拼接,并用.
符号分隔。
IPv4地址如何编址?
IPv4地址的编址方法经历了以下三个历史阶段。
- 分类编址:最基本的编址方法,其标准在1981年通过。
- 划分子网:对分类编址的改进,其标准在1985年通过。
- 无分类编址:目前因特网正在使用的编址方法,它消除了分类编址和划分子网这两个概念,于1993年提出并迅速得到广泛应用。
分类编址
分类编址方法将32比特的IPv4地址划分成了以下两部分。
- 网络号:用于标识主机(或路由器)接口所连接的网络。
- 主机号:用于标识一个网络中的主机(或路由器)接口。
在一个网络中,各个主机(或路由器)接口的IPv4地址必须拥有相同的网络号,以标识它们属于同一网络。同时,为了确保能够唯一识别网络内的每个主机(或路由器)接口,它们的主机号也必须是唯一的。
在以下示例中,路由器R1的接口G1、主机H1、主机H2都连接到到了网络①,它们各自的IPv4地址的网络号是相同的,都为192.168.0
,但主机号各不相同。同样地,路由器R1的接口G2、主机H3、主机H4都连接到了网络②,它们各自的IPv4地址的网络号也是相同的,都为192.168.1
,而主机号也各不相同。
根据分类编址标准,IPv4地址被划分为了以下五个类别。
- A类地址:网络号占8比特,主机号占24比特,网络号的前一位固定为
0
。 - B类地址:网络号和主机号各占16位,网络号的前两位固定为
10
。 - C类地址:网络号占24比特,主机号占8比特,网络号的前三位固定为
110
。 - D类地址:多播地址,地址前四位固定为
1110
。 - E类地址:保留地址,地址前四位固定为
1111
。
当给网络中的主机(或路由器)接口分配分类编址的IPv4地址时,需遵守以下几点规定。
- 只有A类、B类和C类地址才可以分配给网络中的主机(或路由器)接口⭐。
- 主机号为全0的地址为网络地址,这种地址不能分配给网络中的主机(或路由器)接口⭐。
- 主机号为全1的地址为广播地址,这种地址也不能分配给网络中的主机(或路由器)接口⭐。
A类地址的网络号占8比特,且网络号的前1位固定为0
。
当8比特的网络号的低7位全部取0时,就是A类网络的最小网络号,十进制值为0
,但该网络号被保留,不能指派。因此,A类网络最小可指派的网络号为:最高位固定为0
,低7位为0000001
,即十进制值为1。将24比特的主机号全部取0,就可以得到该网络的网络地址,其点分十进制为1.0.0.0
。
当8比特的网络号的低7位全部取1时,就是A类网络的最大网络号,十进制值为127
,但该网络号被用于本地软件环回测试,也不能指派。因此,A类网络最大可指派的网络号为:最高位固定为0
,低7位为1111110
,即十进制值为126。将24比特的主机号全部取0,就可以得到该网络的网络地址,其点分十进制为126.0.0.0
。
tip: 本地软件环回测试网络用于本主机内的进程通信,若主机发送一个目的地址为环回地址(例如127.0.0.1)的IP数据报,则本主机的协议软件就能处理数据报中的数据,而不是把数据报发送到外部网络。本地环回测试网络的网络号为
127
,网络地址为127.0.0.0
,最小可分配地址为127.0.0.1
,最大可分配地址为127.255.255.254
。
根据上述内容可得出以下两个结论。
可指派的A类网络的数量为:
。由于A类网络的网络号占8比特,且前一位固定为 0
,所以网络号共有个组合。其中,最小网络 0
和最大网络号127
不能指派,因此可指派的A类网络数量为总组合数减去2。每个A类网络中可分配的地址数量为:
。由于A类网络的主机号占24比特,所以主机号共有 个组合。其中,主机号为“全0”的网络地址和主机号为“全1”的广播地址不能分配,因此每个A类网络中可分配的地址数量为总组合数减去2。
B类地址的网络号和主机号各占16比特,且网络号的前2位固定为10
。
当16比特的网络号的低14位全部取0时,就是B类网络的最小网络号,点分十进制为128.0
,该网络也是B类网络的最小可指派网络号。将16比特的主机号全部取0,就可以得到该网络的网络地址,其点分十进制为128.0.0.0
。
当16比特的网络号的低14位全部取1时,就是B类网络的最大网络号,点分十进制为191.255
,该网络也是B类网络的最大可指派网络号。将16比特的主机号全部取0,就可以得到该网络的网络地址,其点分十进制为191.255.0.0
。
tip: 在最初的分类编址标准中,
128.0
是保留的网络号,不能指派,B类最小可指派的网络号为128.1
。但根据2002年9月发表的[RFC 3330]
文档,目前128.0
这一网络号已经能够指派使用了。
根据上述内容可得出以下两个结论。
- 可指派的B类网络的数量为:
。由于B类网络的网络号占16比特,且前一位固定为 10
,所以网络号共有个组合。其中,每个网络号都能够指派,因此可指派的B类网络数量就等于总组合数。 - 每个B类网络中可分配的地址数量为:
。由于B类网络的主机号占16比特,所以主机号共有 个组合。其中,主机号为“全0”的网络地址和主机号为“全1”的广播地址不能分配,因此每个B类网络中可分配的地址数量为总组合数减去2。
C类地址的网络号占24比特,且网络号的前3位固定为110
。
当24比特的网络号的低21位全部取0时,就是C类网络的最小网络号,点分十进制为192.0.0
,该网络也是C类网络的最小可指派网络号。将24比特的主机号全部取0,就可以得到该网络的网络地址,其点分十进制为192.0.0.0
。
当24比特的网络号的低21位全部取1时,就是C类网络的最大网络号,点分十进制为223.255.255
,该网络也是C类网络的最大可指派网络号。将24比特的主机号全部取0,就可以得到该网络的网络地址,其点分十进制为223.255.255.0
。
tip: 在最初的分类编址标准中,
192.0.0
是保留的网络号,不能指派,C类最小可指派的网络号为192.0.1
。但根据2002年9月发表的[RFC 3330]
文档,目前192.0.0
这一网络号已经能够指派使用了。
根据上述内容可得出以下两个结论。
- 可指派的C类网络的数量为:
。由于C类网络的网络号占24比特,且前一位固定为 110
,所以网络号共有个组合。其中,每个网络号都能够指派,因此可指派的C类网络数量就等于总组合数。 - 每个C类网络中可分配的地址数量为:
。由于C类网络的主机号占8比特,所以主机号共有 个组合。其中,主机号为“全0”的网络地址和主机号为“全1”的广播地址不能分配,因此每个C类网络中可分配的地址数量为总组合数减去2。
以下总结了分类编址中IPv4地址的指派范围。
以下列举了一些IPv4地址示例,并详细说明了它们所属的类别以及是否可分配给主机。
需要注意的是,有些IPv4地址一般不会被使用,因为这些地址只能在特定的情况下使用。以下列出了这些“特殊”的IPv4地址。
划分子网
划分子网是在IPv4分类编址基础上的改进,分类编址方法存在以下弊端。
- 编址方法不够灵活。
- 容易造成大量IPv4地址资源的浪费。
例如,某单位有一个局域网需要连接到因特网,该局域网中的主机数量为500台。若申请一个C类网络号,则其可分配的IPv4地址数量仅为254个,不够使用。因此该单位需申请一个B类网络号