网络层/网际层¶
约 2223 个字 6 张图片 预计阅读时间 6 分钟
概述¶
网络层的主要任务是将分组通过多个网络和多段链路传输到目的主机,即分组转发+路由选择
网络层上层提供的服务¶
- 面向连接的虚电路服务
- 先建立网络层链接:虚电路(VC),通信双方沿着 VC 发送分组
- 无连接的数据报服务
- 不需要建立网络层连接,每个分组可走不同的路径
IP 协议¶
异构网络互连¶
单一网络无法满足所有用户的需求,于是网络层采用相同的 IP 协议,貌似一个统一的网络。
IPv4¶
IPv4地址是给因特网(Internet)上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的32比特的标识符。
采用点分十进制表示法:

分类编址¶
IPv4地址分为两部分:网络号(NetID)和主机号(HostID)
- 网络号
- 标志主机(或路由器)的接口所连接到的网络
- 同一个网络中,不同主机(或路由器)的接口的IPv4地址的网络号必须相同,表示它们属于同一个网络。
- 主机号
- 标志主机(或路由器)的接口
- 同一个网络中,不同主机(或路由器)的接口的IPv4地址的主机号必须不同,表示它们是同一网络中的不同主机(或路由器)。
例:C 类地址192.168.0.1,其中192.168.0是网络号,1是主机号;B 类地址 172.16.96.1,其中 172.16 是网络号,96.1是主机号。
怎么判断一个IPv4地址的网络号和主机号的边界在哪里呢?这就要用到分类编址。
分类编址
IPv4地址分为A、B、C、D、E五类。

只有 ABC 类(单播地址)用于分配给主机(或路由器)的接口,且主机号为全 0 (网络地址)或全 1 (广播地址)的地址不能分配.
- A 类
- 最小网络号 0 和最大网络号 127 的地址不能指派,可指派网络数量为 \(2^{8-1}-2 = 126\)
- 最小可指派网络号为 1(IP 地址为 1.0.0.0),最大可指派网络号为 126(IP 地址为 126.0.0.0)
- 主机全 0 全 1 不能分配,每个网络内可分配地址数量为 \(2^{24}-2=16777214\)
- B 类
- 可指派网络数量为 \(2^{16-2}=16384\)
- 最小可指派网络号为 128.0(IP 地址为 128.0.0.0),最大可指派网络号为 191.255(IP 地址为 191.255.0.0)
- 每个网络内可分配地址数量为 \(2^{16}-2=65534\)
- C 类
- 可指派网络数量为 \(2^{24-3}=2097152\)
- 最小可指派网络号为 192.0.0(IP 地址为 192.0.0.0),最大可指派网络号为 223.255.255 (IP 地址为 223.255.255.0)
- 每个网络内可分配地址数量为 \(2^{8}-2=254\)
- DE 类
一般不使用的地址
| 网络号 | 主机号 | IP 地址 | 作为源地址 | 作为目的地址 | 说明 |
|---|---|---|---|---|---|
| 0 | 0 | 0.0.0.0 | 可以 | 不可以 | 在本网络上的本主机 |
| 0 | hostID | 0.hostID | 可以 | 不可以 | 在本网络上的主机 hostID |
| 全 1 | 全 1 | 255.255.255.255 | 不可以 | 可以 | 只在本网络上进行广播 |
| netID | 全 1 | netID.255.255.255(A 类),netID.255.255(B 类),netID.255(C 类) | 不可以 | 可以 | 在网络 netID 上所有主机进行广播 |
| 127 | 非全 0 或全 1 | 127.0.0.1~127.255.255.254 | 可以 | 可以 | 回环测试 |
子网划分编址¶
从IPv4地址的主机号部分借用一些比特作为子网号来区分不同的子网,就可以利用原有网络中剩余的大量IPv4地址,而不用申请新的网络地址了。
使用子网掩码表明主机号部分被借用了几个比特作为子网号。
界定子网号和主机号采用子网掩码(32比特):左起多个连续的比特1对应IPv4地址中的网络号和子网号,之后的多个连续的比特0对应IPv4地址中的主机号。
将划分子网的IPv4地址与相应的子网掩码进行逐比特的逻辑与运算,就可得到该IPv4地址所在子网的网络地址(网络号+子网号与 1 与,被保留,主机号与 0 与,被清零)。

子网划分示例
已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节。
255.255.255.128 ->(前三个字节全1,展开最后一个字节) 255.255.255.10000000,表示从主机号部分借用了1比特作为子网号。
于是划分的子网数量为 \(2^1=2\),每个子网内主机数量为 \(2^{7}-2=126\)。
如图,显然有 256-4 = 126 * 2

在未划分子网的情况下采用默认子网掩码(即子网掩码对应主机号的位置全为0,网络号的位置全为1,显然做逻辑与之后得到的子网网络地址就是原先的网络地址):
- A 类:
255.0.0.0 - B 类:
255.255.0.0 - C 类:
255.255.255.0
无分类编址¶
地址分为网络前缀和主机号两部分;网络前缀是不定长的,需要类似子网掩码,使用32位的地址掩码
- 左起多个连续的比特1对应IPv4地址中的网络前缀
- 之后的多个连续的比特0对应IPv4地址中的主机号
斜线记法:ipv4 addr / #bits of network prefix
实际上,无分类域间路由选择CIDR是将网络前缀都相同的、连续的多个无分类IPv4地址,组成一个CIDR地址块,只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的以下全部细节:
- 地址块中的最小地址
- 地址块中的最大地址
- 地址块中的地址数量
- 地址块中聚合某类网络的数量
- 地址掩码
无分类域间路由选择示例
给定的无分类编址的IPv4地址为128.14.35.7/20,请给出该地址所在CIDR地址块的全部细节。
网络前缀位数为20,将后两个比特展开(前两个比特占16字节,全都属于网络前缀),得到 128.14.0010|0011.00000111(竖线分隔网络前缀和主机号)。
- 最小地址:将主机号部分全清零,得到 128.14.00100000.00000000 -> 128.14.32.0
- 最大地址:将主机号部分全置1,得到 128.14.00101111.11111111 -> 128.14.47.255
- 地址数量:主机号部分有12比特,\(2^{12}=4096\)
- 聚合 C 类网络数量:C 类网络地址中主机号占8比特,即 \(2^8 = 256\) 个地址;因此聚合的数量为 \(2^12 / 2^8 = 4096 / 256 = 16\)
- 地址掩码:前20比特为1,后12比特为0,即 11111111.11111111.11110000.00000000 -> 255.255.240.0
- 无分类编址可以只分配所需大小的 CIDR 块,因此更有效地利用了 IPv4 地址空间
- 还有路由聚合的好处
IPv4 的应用规划¶
这一段看PPT例题
TBD:PPT练习题
- FLSM(固定长度子网掩码)
- VLSM(可变长度子网掩码)
- 每个子块的起点位置不能随便选取,只能选取主机号部分是块大小整数倍的地址作为起点。(具体看PPT例题)
IPv4 <=> MAC 地址¶
via ARP(地址解析协议)
Packet 传输过程中,源/目标 IP 地址不变,但源/目标 MAC 地址会随着每一跳的变化而变化。
仅使用 MAC 地址的缺点:
- 因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的MAC地址
- 手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的MAC地址信息而严重占用通信资源。
- 包含海量MAC地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延。
ARP(Address Resolution Protocol)
主机维护一个 ARP 缓存表,记录 IP 地址和 MAC 地址的映射关系;通过发送 ARP 请求报文,接收 ARP 响应报文来更新 ARP 缓存表。
IP 多播¶
Multicast 是一种实现“一对多”通信的技术,可以极大地节省网络资源。
网际组管理协议 IGMP¶
IGMP 中有三种报文:成员报告报文,成员查询报文和离开组报文。
一般工作原理分为两部分:
- 加入多播组(Node 发送成员报告报文,被多播路由器接收后添加到其多播组列表中)
- 监视多播组的成员变化
- 退出多播组
多播路由选择协议¶
疑似不考
移动 IP 技术¶
移动主机在各网络之间漫游时,仍然能够保持其原来的IP地址不变。

