# 网络层概述

网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输

要实现网络层任务,需要解决以下主要问题:

  • 网络层向运输层提供怎样的服务("可靠传输服务" 还是 "不可靠传输服务")

  • 网络层寻址问题

  • 路由选择问题

因特网是目前全世界用户数量最多的互联网,它使用 TCP/IP 协议线

由于 TCP/IP 协议线的网络层使用网际协议 IP 它是整个协议栈的核心协议,因此在 TCP/IP 协议栈中网络层常称为网际层

# 网络层提供的两种服务

面向连接的虚电路服务

可靠通信应由网络来保证

必须建立网络层的连接 —— 虚电路 VC

通信双方沿着已建立的虚电路发送分组

目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)

这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)

通信结束后,需要释放之间所建立的虚电路

很多广域分组交换网都是用面向连接的虚电路服务

无连接的数据报服务

可靠通信应当由用户主机来保证

不需要建立网络层连接

每个分组可走不同的道路

这种通信方式所传送的分组可能误码、丢失、重复和失序

由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)

因特网采用这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心

对比方面虚电路服务数据报服务
思路可靠通信应当由网络来保证可靠通信应当由用户主机来保证
连接的建立必须建立网络层连接不需要建立网络层的连接
终点地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址
分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组可走不同的路由
当结点出故障时所有通过出故障的结点的虚电路均不能工作出故障的结点可能丢失分组,一些路由可能会发生变化
分组的顺序总是按发送顺序到达终点到达终点时不一定按发送顺序
服务质量的保证可以将通信资源提前分配给每一个虚电路,容易实现很难实现

TCP/IP 体系结构的因特网的网际层提供的是简单灵活、无连接的、尽最大努力交付的数据报服务

# IPv4 地址概述

IPv4 地址就是给因特网上每一台主机(或路由器)的每一个接口分配一个全世界范围内是唯一的 32 比特的标识符

IP 地址由因特网名字和数字分配机构 ICANN 进行分配

  • 我国用户可向亚太网络信息中心 APNIC 申请 IP 地址,需要缴费
  • 互联网号码分配管理局 IANA(由 ICANN 行使职能)宣布 IPv4 地址已经分配完毕
  • 我国逐步停止了向新用户和应用分配 IPv4 地址。同时全面开展商用部署 IPv6

IPv4 地址的编址方法经历三个阶段:

  • 分类编址
  • 划分子网
  • 无分类编址

32 比特的 IPv4 地址不方便阅读、记录以及输入等,因此 IPv4 地址采用点分十进制表示方法以方便用户使用

练习

请将以下这些 32 比特用户的 IPv4 地址转换为点分十进制形式

  • 00001010 11111110 00001111 11110000->10.254.15.240
  • 10101100 00010000 10111111 11110111->172.16.191.247
  • 11000000 10101000 10100101 00000111->192.168.165.7

# 分类编址的 IPv4 地址

  • A 类地址
    • 网络号(8 比特)+ 主机号(24 比特)
    • 网络号最高位固定为 0
    • 最小网络号 0,保留不指派
    • 第一个可指派的网络号为 1,网络地址为 1.0.0.0
    • 最大网络号为 127,作为本地环回测试地址,不指派
      • 最小的本地环回测试地址为 127.0.0.1
      • 最大的本地环回测试地址为 127.255.255.254
    • 最后一个可指派的网络号为 126,网络地址为 126.0.0.0
    • 可指派的 A 类网络数量为2(8−1)−2=1262^{(8-1)}-2=126,减 2 是除去最小网络号 0 和最大网络号 127
    • 每个网络可分配的 IP 地址数量为224−2=167772142^{24}-2=16777214,减 2 是除去主机号为全 0 的网络地址和全 1 的广播地址
  • B 类地址
    • 网络号(16 比特)+ 主机号(16 比特)
    • 网络号最高两位固定为 10
    • 最小网络号也是第一个可指派的网络号 128.0,网络地址为 128.0.0.0
    • 最大网络号也是最后一个可指派的网络号 191.255,网络地址为 191.255.0.0
    • 可指派的网络数量:216−2=163842^{16-2}=16384
    • 每个网络可分配的 IP 地址数量为:216−2=655342^{16}-2=65534,减 2 是除去主机号为全 0 的网络地址和全 1 的广播地址
  • C 类地址
    • 网络号(24 比特)+ 主机号(8 比特)
    • 网络号最高三位固定为 110
    • 最小网络号也是第一个可指派的网络号 192.0.0,网络地址为 192.0.0.0
    • 最大网络号也是最后一个可指派的网络号 223.255.255,网络地址为 223.255.255.0
    • 可指派的网络数量:224−3=20971522^{24-3}=2097152
    • 每个网络可分配的 IP 地址数量为:28−2=2542^{8}-2=254,减 2 是除去主机号为全 0 的网络地址和全 1 的广播地址
  • D 类地址
    • 多播地址(32 比特)
    • 最高四位固定为 1110
  • E 类地址
    • 保留为今后使用
    • 最高四位固定为 1111

注意事项:

  • 只有 A 类、B 类、C 类地址可分配给网络中的主机或路由器的各接口
  • 主机号为全 0 的地址是网络地址,不能分配给主机或路由器的各接口
  • 主机号为全 1 的地址是广播地址,不能分配给主机或路由器的各接口

一般不使用的 IP 地址

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

练习

1、请填写以下两个表格的内容

分类的 IP 地址类别是否可以指派给主机
0.1.2.3A 类否(保留的网络号)
1.2.3.4A 类是
126.255.255.255A 类否(广播地址)
127.0.0.1A 类否(本地环回测试地址)
128.0.255.255B 类否(广播地址)
166.16.18.255B 类是
172.18.255.255B 类否(广播地址)
191.255.255.252B 类是
192.0.0.255C 类否(广播地址)
196.2.3.8C 类是
218.75.230.30C 类是
223.255.255.252C 类是

2、下列 IP 地址中,只能作为 IP 分组的源 IP 地址但不能作为目的 IP 地址的是(A)

A.0.0.0.0 B.127.0.0.1 C.20.10.10.3 D.255.255.255.255

解析:地址 0.0.0.0 为特殊的 IPv4 地址,只能作为源地址使用,表示 "本网络上的本主机"。封装有 DHCP Discovery 报文的 IP 分组的源地址 0.0.0.0;以 127 开头且后面三个字节非 "全 0" 或 "全 1" 的 IP 地址是一类特殊的 IPv4 地址,即可作为源地址使用,也可作为目的地址使用,用于本地软件环回测试;地址 255.255.255.255 是一个特殊的 IPv4 地址,只能作为目的地址使用,表示 "只在本网络上进行广播(各路由器均不转发)"。综上 A 正确

# 划分子网的 IPv4 地址

为新增网络申请新的网络号会带来以下弊端:

  • 需要等待时间和花费更多的费用
  • 会增加其他路由器中路由表记录的数量
  • 浪费原有网络中剩余的大量 IP 地址

从主机号部分借用一部分作为子网号

32 比特的子网掩码可以表明分类 IP 地址的主机号部分被借用了几个比特作为子网号

  • 子网掩码使用连续的比特 1 来对应网络号和子网号
  • 子网掩码使用连续的比特 0 来对应主机号
  • 将划分子网的 IPv4 地址与相应的子网掩码进行逻辑与运算就可得到 IPv4 地址所有子网的网络地址

默认子网掩码

默认子网掩码是指在未划分子网的情况下使用的子网掩码

  • A 类地址:255.0.0.0
  • B 类地址:255.255.0.0
  • C 类地址:255.255.255.0

例子

已知某个网络的地址为 218.75.230.0,使用子网掩码 255.255.255.128 对其进行子网划分,请给出划分细节

解析:C 类网络地址 218.75.230.0,子网掩码 255.255.255.10000000,子网掩码借用了主机号的 1 位来表示子网号,因此可以划分出 2 个子网,每个子网可以有27−2=1262^{7}-2=126 个可分配地址

习题

1、已知某个网络的地址为 218.75.230.0,使用子网掩码 255.255.255.192 对其进行子网划分,请给出划分细节

解析:C 类网络地址 218.75.230.0,子网掩码 255.255.255.11000000

子网掩码借用了主机号的 2 位来表示子网号,因此可以划分出 4 个子网,每个子网可以有26−2=622^6-2=62 个可分配地址

2、某主机的 IP 地址为 180.80.77.55,子网掩码为 255.255.252.0,如该主机向其所在子网发送广播分组,则目的地址可以是(D)

A.180.80.76.0 B.180.80.76.255 C.180.80.77.255 D.180.80.79.255

解析:B 类网络地址:180.80.77.55,子网掩码为 255.255.11111100.0,子网掩码借用了主机号的 6 位来表示子网号,该主机属于 01001100 子网,其余 4 个均属于 01001100 子网,发送广播分组,因此目的地址应该为 180.80.79.255,选 D

# 无分类编址的 IPv4 地址

划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的 C 类网因为其他地址空间太小并没有得到充分使用,而因特网的 IP 地址仍在加速消耗,整个 IPv4 地址面临全部耗尽的威胁

为此,因特网工程任务组 IETF 又提出了采用无分类编址的方法来解决 IP 地址紧张的问题,同时还专门成立 IPv6 工作组负责研究新版本 IP 以彻底解决 IP 地址耗尽问题

无分类域间路由选择 CIDR 发布

  • CIDR 消除了传统的 A 类、B 类、C 类地址,以及划分子网的概念
  • CIDR 可以更加有效地分配 IPv4 的地址空间,并且可以在新的 IPv6 使用之前允许因特网的规模继续增长

CIDR 使用斜线记法,或称 CIDR 记法,即在 IPv4 地址后面加上斜线 /,在斜线后面写上网络前缀所占的比特数量

如:128.14.35.7/20 表名网络前缀占用的比特数量为 20,后面 12 位为主机号

CIDR 实际上是将网络前缀都相同的连续的 IP 地址组成一个 CIDR 地址块

只要知道 CIDR 地址块中任何一个地址,就可以直到该地址块的全部细节

  • 地址块的最小地址
  • 地址块的最大地址
  • 地址块中的地址数量
  • 地址块聚合某类网络(A 类、B 类或 C 类)的数量
  • 地址掩码(也可称为子网掩码)

例题

请给出 CIDR 地址块 128.14.35.7/20 的全部细节(最小地址,最大地址,地址数量,聚合 C 类网数量,地址掩码)

解析:128.14.35.7/20->128.14.00100011.00000111,其中 128.14.0010 为网络前缀,0011.00000111 为主机号

地址块最小地址为 128.14.00100000.00000000=128.14.32.0;地址块最大地址 128.14.00101111.11111111=128.14.47.255

地址数量为2122^{12};聚合 C 类网数量:212/28=162^{12}/2^8=16,一个 C 类网数量为282^8

子网掩码:255.255.11110000.00000000=255.255.240.0

路由聚合(构造超网)

路由器将路由信息传递给另一个路由器,路由聚合就是将多条路由信息聚合成一条路由信息

网络前缀越长,地址块越小,路由越具体

若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体

习题

1、在子网 192.168.4.0/30 中,能接收目的的地址为 192.168.4.3 的 IP 分组的最大主机数为(C)

A.0 B.1 C.2 D.4

解析:192.168.4.0/30 中,一个子网能够分配 4 个地址,其中 2 个地址为网络地址与广播地址,只有两个地址可分配给主机,因此只有两台可收到。192.168.4.3 为广播地址,子网所有主机都可以收到

2、某路由表中有转发接口相同的 4 条路由表项,其目的网络地址分别为 35.230.32.0/21、35.230.40.0/21、35.230.48.0/21 和 35.230.56.0/21,将 4 条路由聚合后的目的网络地址为(C)

A.35.230.0.0/19 B.35.230.0.0/20 C.35.230.32.0/19 D.35.230.32.0/20

解析:35.230.32.0->35.23.00100000.0;35.230.40.0->35.230.00101000.0;35.230.48.0->35.230.0011000.0;35.230.56.0->35.230.00111000.0,因此路由聚合后为 35.230.32.0/19

# IPv4 地址的应用规划

定长的子网掩码 FLSM

使用同一个子网掩码来划分子网

每个子网所分配的 IP 地址数量相同,造成 IP 地址的浪费

子网划分方式不灵活:只能划分出2n2^n 个子网(n 是从主机号部分借用的用来作为子网号的比特数量)

每个子网所分配的 IP 地址数量相同,容易造成 IP 地址浪费

变长的子网掩码 VLSM

使用不同的子网掩码来划分子网

每个子网所分配的 IP 地址数量可以不同,尽可能减少对 IP 地址的浪费

子网划分方式灵活:可以按需分配

分配原则:每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点

# IP 数据报的发送和转发过程

IP 数据报的发送和转发过程包含以下两部分:

  • 主机发送 IP 数据报
    • 判断目的主机是否与自己在同一个网络(用子网掩码和 IP 地址相与获得网络地址进行判断)
      • 若在同一个网络,则属于直接交付
      • 若不在同一个网络,则属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发
  • 路由器转发 IP 数据报
    • 检查 IP 数据报首部是否出错
      • 若出错,则直接丢弃该 IP 数据报并通告主机
      • 若没有出错,则进行转发
    • 根据 IP 数据报的目的地址在路由表中查找匹配的条目(用目的地址 IP 与路由表中的每个子网掩码相与,得到目的网络地址,比较目的网络地址与网络地址是否相同)
      • 若找到匹配的条目,则转发给条目中指示的下一跳
      • 若找不到,则丢弃该 IP 数据报并通告源主机

习题

1、下列网络设备中,能够抑制广播风暴的是(D)

I. 中继器 II. 集线器 III. 网桥 IV. 路由器

A. 仅 I 和 II B. 仅 II C. 仅 III 和 IV D. 仅 IV

解析:中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域。网桥和交换机(多端口网络)工作在数据链路层,可以隔离冲突域不能隔离广播域。路由器工作在网络层,既隔离冲突域,也隔离广播域

2、下列关于 IP 路由器概念的描述中,正确的是(C)

I. 运行路由协议,设置路由表

II. 监测到阻塞时,合理丢弃 IP 分组

III. 对收到的 IP 分组头进行差错校验,确保传输的 IP 分组不丢失

IV. 根据收到的 IP 分组的目的 IP 地址,将其转发到合适的输出线路上

A. 仅 III、IV B. 仅 I、II、III C. 仅 I、II、IV D.I、II、III、IV

解析:IP 路由器工作在 TCP/IP 体系结构的网际层(或称 IP 层),TCP/IP 体系结构的网际层并不负责可靠传输,也就是不能确保传输的 IP 分组不丢失。IP 路由器对收到的 IP 分组头进行差错校验,当发现错误时会丢弃该 IP 分组并向源主机发送 ICMP 差错报告报文(类型为参数错误)。

习题

解析:主机 1 可以访问 WWW 服务器,从 IP 地址与子网掩码配置以及福利连接方面看,主机 1 和 WWW 服务器在同一网络中。但主机不能访问 Internet,因为主机 1 的网关配置成了 DHCP 服务器,DHCP 服务器不具备路由器的功能,无法将 IP 分组转发到 Internet

# 静态路由配置及其可能产生的路由环路问题

静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表

  • 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化
  • 一般只在小规模网络中采用

使用静态路由配置可能出现以下导致产生路由环境的错误

  • 配置错误
  • 聚合了不存在的网络
  • 网络故障

路由条目的类型:

  • 直连网路
  • 静态路由(人工配置)
  • 动态路由(路由选择协议)

特殊的静态路由条目

  • 默认路由(目的网络为 0.0.0.0,地址掩码为 0.0.0.0)
  • 特定主机路由(目的网络为特定主机的 IP 地址,地址掩码为 255.255.255.255)
  • 黑洞路由(下一跳为 null0)

为了防止 IP 数据报在路由环路中永久兜圈,在 IP 数据报首部设有生存时间 TTL 字段

IP 数据报进入路由器后,TTL 字段值减 1,若 TTL 的值不等于 0,则被路由器转发,否则被丢弃