# 网络层
知识结构
- 网络层的功能
- 异构网络互联;路由和转发;拥塞控制
- 路由算法
- 静态路由与动态路由;距离-向量路由算法;链路状态路由算法;层次路由
- IPv4
- IPv6
- 路由协议
- 自治协议;域内路由与域间路由;RIP 路由协议;OSPF 路由协议;BGP 路由协议
- IP 组播
- 组播的概念;IP 组播地址
- 移动 IP
- 移动 IP 的概念;移动 IP 通信过程
- 网络层设备
- 路由器的组成和功能;路由表与路由转发
# 4.1 网络层的功能
# 4.1.1 异构网络互联
所谓网络互联,是指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备相互连接起来,以构成更大的网络系统。
中间设备又称中间系统或中继系统,根据所在层次,分为以下 4 种:
- 物理层中继:中继器,集线器
- 数据链路层:网桥或交换机
- 网络层中继:路由器
- 网络层以上的中继系统:网关
网络互联通常是指用路由器进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。
虚拟互联网络也就是逻辑互联网络,即互联起来的的各种物理网络的异构性本来是客观存在的,但是通过使用 IP 就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用 IP 的虚拟互联网络可简称为 IP 网络。
# 4.1.2 路由与转发
路由器主要完成两个功能:一是路由选择,二是分组转发。
前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。
路由表和转发表
路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化。路由表则需要对网络拓扑变化的计算最优化。
# 4.1.3 拥塞控制
在通信子网中,因出现过量的分组而引起网络性能下降的现象称为拥塞。
为避免拥塞现象的出现,要采用能防止拥塞的一系列方法对子网进行拥塞控制。拥塞控制主要解决的问题使如何获取网络中发生拥塞的信息,从而利用这些信息进行控制。
拥塞控制的作用使确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的行为:主机、路由器及路由器内部的转发处理过程等。单一的增加资源并不能解决拥塞。
流量控制和拥塞控制的区别:流量控制只关注相邻的发送端和接收端的点对点问题,拥塞控制要解决的是一个全局性的问题,要让整个通信子网的传输效率达到最优。
# 4.2 路由算法
# 4.2.1 静态路由与动态路由
路由算法可分为如下两大类
静态路由算法。指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中的静态路由信息。
动态路由算法。指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最后的寻路效果。
静态路由的优点是简便,可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好。动态路由算法能改善网络的性能并有助于流量控制,单算法复杂,会增加网络的负担。常见的动态路由算法可分为两类:距离-向量路由算法和链路状态路由算法。
# 4.2.2 距离向量路由算法
在距离向量路由算法中,所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点。
距离向量路由算法的实质是,迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短通路。
最常见的距离向量路由算法是 RIP 算法,它采用“跳数”作为距离的度量。
# 4.2.3 链路状态路由算法
TIP
基于 Dijkstra 算法,它是以图论作为理论基础,用图来表示网络拓扑结构,用图论中的最短路径算法来计算网络间的最佳路由,因此链路状态算法又被称作最短路径优先算法 SPF。
链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行下述两项任务。
- 第一,主动测试所有邻接结点的状态。两个共享一条链路的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。
- 第二,定期地将链路状态传播给所有其他结点。
典型的链路状态算法是 OSPF 算法。
# 4.2.4 层次路由
当网络规模扩大时,路由器的路由表成比例地增大。这不仅会消耗越来越多的路由器缓冲区空间,而且需要更多 CPU 时间来扫描路由表,需要用更多的带宽来交换路由状态信息。
因特网将整个互联网划分为许多较小的自治系统,每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。
# 4.3 IPv4
# 4.3.1 IPv4 分组
IPv4 是现在最普遍使用的 IP。IP 定义数据传送的基本单元——IP 分组及其确切的数据格式。
IP 也包括一套规则,指明分组如何处理、错误怎样控制。特别是 IP 还包含非可靠投递的思想,以及于此关联的分组路由选择的思想。
# 4.3.2 IPv4 地址与 NAT
- IPv4 地址
连接到因特网上的每台主机都分配一个 32 比特的全球唯一标识符,即 IP 地址。传统的 IP 地址是分类的地址,分为 A、B、C、D、E 五类。
无论那类 IP 地址,都由网络号和主机号组成。常用的局域网地址为 C 类地址(192~223)
有些 IP 地址具有特殊用途,不用做主机的 IP 地址:
- 主机号全为 0,表示本网络本身,如 192.168.42.0
- 主机号全为 1,表示本网络的广播地址,又称直接广播地址,如 192.168.0.255
- 127.0.0.0 保留为环路自检地址,此地址表示任意主机本身,目的地址为环回地址的 IP 数据包不会出现在任何网络上
- 32 位全为 0,即 0.0.0.0 表示本网络上的本主机
- 32 位全为 1,即 255.255.255.255 表示整个 TCP/IP 网络的广播地址,又称广播受限地址。
- 网络地址转换
网络地址转换是指通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的 IP 地址。它使得整个专用网只需要一个全球 IP 地址就可以与因特网连通,由于专用网本地 IP 地址是可重用的,所以 NAT 大大节省了 IP 地址的消耗。
此外为了网络安全,划分了部分地址为私有 IP 地址。私有 IP 地址只能用于 LAN,并且可以重复使用。这有效的解决了 IP 地址补足的问题。
私有 IP 地址网段如下:
- 1 个 A 类网段,即 10.0.0.0 ~ 10.255.255.255
- 16 个 B 类网段,即 172.16.0.0 ~ 172.31.255.255
- 256 个 C 类网段,即 192.168.0.0 ~ 192.168.255.255
# 4.3.3 子网划分与子网掩码,CDIR
- 子网划分
两级 IP 地址的缺点:IP 地址空间的利用率优势很低;给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;两级的 IP 地址不够灵活。
从 1985 年起,在 IP 地址中又增加了一个“子网号字段”,使两级 IP 地址变成了三级 IP 地址。这种做法称为子网划分。
两级 IP 地址的结构如下:IP 地址 = {<网络号>,<主机号>}
三级 IP 地址的结构如下:IP 地址 = {<网络号>,<子网号>,<主机号>}
- 子网掩码
为了告诉主机或路由器对一个 A 类、B 类、C 类地址进行了子网划分,使用子网掩码来表达原网络中主机号的借位。
子网掩码中,1 对应 IP 地址中的网络号,0 对应主机号,计算机将 IP 地址和子网掩码进行按位“与”的操作就可以得出相应子网的网络地址。
A、B、C 类地址的默认子网掩码分别为 255.0.0.0、255.255.0.0、255.255.255.0.
- CDIR
无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统 A、B、C 类网络划分,并且可以在软件的支持下实现超网构造的一种 IP 地址的划分方法。
如何把一个 CIDR 地址转化为 IP 地址范围段
如 172.16.0.0/27 的 IP 范围是多少 27 = 8 + 8 + 8 + 3 11100000 = 128 + 64 + 32 = 224 得出
- 子网掩码为 255.255.255.224
0000000 ~ 00011111
的出 - 可表示地址 172.16.0.0 ~ 172.16.0.31
- 网络地址为 172.16.0.0
- 可使用 IP 地址 172.16.0.1 ~ 172.16.0.30
- 广播地址为 172.16.0.31
# 4.3.4 ARP、DHCP 与 ICMP
- IP 地址与 MAC 地址
IP 地址是网络层使用的地址,它是分层次等级的。MAC 地址是数据链路层使用的地址,它是平面式的。在网络层及网络层之上使用 IP 地址,IP 地址放在 IP 数据报的首部,而 MAC 地址放在 MAC 帧的首部。通过数据封装,把 IP 数据报分组封装为 MAC 帧。
寻址时,每个路由器依据其路由表选择到目标网络需要转发的下一跳,直到到达目标网络,在目标 LAN 中通过数据链路层的 MAC 地址以广播方式进行寻址,最终找到目标主机。这样可以提高路由选择的效率。
- 地址解析协议 ARP
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成 IP 地址到 MAC 地址的映射,这就是地址解析协议。
在 LAN 中的每台主机都设有一个 ARP 告诉缓存,用来存放本局域网上各主机和路由器的 IP 地址到 MAC 地址的映射表,称为 ARP 表。
- 动态主机配置协议 DHCP
动态主机配置协议常用于给主机动态地分配 IP 地址。
DHCP 是应用层协议,它是基于 UDP 的。
- 网际控制报文协议 ICMP
为了提高 IP 数据报交付成功的机会,在网络层使用了网际控制报文协议来让主机或路由器报告差错和异常情况
ICMP 依靠 IP 来完成它的任务,它是 IP 的主要部分
# 4.4 IPv6
# 4.5 路由协议
# 4.5.1 自治系统
自治系统:单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的度量来确定分组在该 AS 内的路由。
# 4.5.2 域内路由与域间路由
# 4.5.3 路由信息协议(RIP)
# 4.5.4 开放最短路径优先协议(OSPF)
# 4.5.5 边界网关协议(BGP)
# 4.6 IP 组播
# 4.6.1 组播的概念
为了能够支持像视频点播和视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。
理论上可以使用多个单播来仿真组播,但这会引起主机上大量的处理开销和网络上太多的交通量。人们需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收。
需要注意的是,主机组播时仅发送一份数据,只有数据再传送路径出现分叉时才将分组复制后续集转发。组播需要路由器的支持才能实现,能运行组播协议的路由器称为组播路由器。
# 4.6.2 IP 组播地址
IP 组播使用 D 类地址格式,D 类地址范围是 224.0.0.0 ~ 239.255.255.255。每个 D 类 IP 地址标志一个组播组。
# 4.6.3 IGMP 与组播路由算法
要使路由器知道组播组成员的信息,需要利用因特网组管理协议(Internet Group Management Protocol)。连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同共组,以便把组播数据用最小代价传送给所有组成员,这就需要使用组播路由选择协议。
# 4.7 移动 IP
# 4.7.1 移动 IP 的概念
支持移动性的因特网体系结构与协议共称为移动 IP,它是为了满足移动结点在移动中保持其连接线而设计的。
# 4.7.2 移动 IP 通信过程
移动 IP 技术的基本通信流程如下
- 移动结点在本地网时,按照传统的 TCP/IP 方式进行通信
- 移动结点漫游到一个外地网络时,仍使用固定的 IP 地址进行通信。 移动结点需要像本地代理注册当前的位置地址。
- 本地代理接收来自转交地址的注册后,会构建一条通向转交地址的隧道
- 在转交地址处解除隧道封装,恢复原始的 IP 分组,最后送到移动结点。
- 移动结点回到本地网时,移动结点向本地代理注销转交地址。
# 4.8 网络层设备
# 4.8.1 路由器的组成和功能
路由器是一种具有多个输入、输出端口的专用计算机,其任务是连接不同的网络并完成路由转发。在多个逻辑网络互联时必须使用路由器。此外路由器也可以作为最基础的包过滤防火墙应用。
路由器隔离了广播域。可以连接不同的 LAN,VLAN,WAN 或者把 LAN 和 WAN 互联起来。
从结构上看,路由器由路由选择和分组转发两部分组成。
从模型上看,路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。
当源主机要向目标主机发送数据报时,路由器检查两主机是否在同一个网络,如果是那么直接交付数据分组,如果不是那么按照转发表指出的路由将数据报转发给下一个路由器。
# 4.8.2 路由表与路由转发
路由表是根据路由选择算法得出的,主要用途是路由选择。
标准的路由表有 4 个项目:目的网络 IP 地址,子网掩码、下一跳 IP 地址,接口。
> netstat -r
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 eth0
172.17.0.0 0.0.0.0 255.255.192.0 U 0 0 0 eth0
_gateway 0.0.0.0 255.255.255.255 UH 100 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-30252fc51559
转发表是从路由表得出的,其表项和路由表有直接的对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化。
TIP
在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,但要注意路由表不等于转发表。