计算机网络 第四章
网络层
网络层提供的两种服务
电信网:面向连接(真实连接,电话设计简单)
互联网:无连接(计算机有很强的差错处理能力)
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据包服务,不提供服务质量保证。降低了网络造价。
- 网络层提供的两种服务
- 虚电路服务:不需要包含目的地址,分组信息比特数较少,差错可以由网络负责控制
- 数据报服务:网络上报文长度相对较短,主机负责差错、流量控制
网际协议 IP
(Internet Protocol)
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一
与 IP 协议配套使用的三个协议
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control MessageProtocol)
- 网际组管理协议 IGMP (Internet Group ManagementProtocol)
虚拟互连网络
将网络互相连接起来要使用一些中间设备。
中间设备又称为中间系统或中继 (Relay) 系统
有以下五种不同的中继系统:
- 物理层 :转发器 (Repeater)
- 数据链路层:网桥或桥接器 (Bridge)
- 网络层:路由器 (Router)
- 网桥和路由器的混合物:桥路器 (brouter)
- 网络层以上:网关 (Gateway)
网络互连使用路由器
将使用路由器连接起来的网络看成同一个虚拟的 IP 网络(互连网)
意义
使用 IP 协议的虚拟互连网络可简称为 IP 网
互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络
使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节(如编址方案、路由选择协议等)。
如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)
分类的 IP 地址
定义
IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是 唯一的 32 位的标识符(4 字节)
IP 地址现在由 互联网名字和数字分配机构 ICAN (Internet Corporatiofor Assigned Names and Numbers) 进行分配。
分类的 IP 地址将 32 位地址进行了划分
格式
将 IP 地址划分为若干个固定类( A-E 类)
每一类地址都由两个固定长度的字段组成
- 其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络
- 另一个字段则是主机号 host-id ,它标志该主机(或路由器)。
主机号在它前面的网络号所指明的网络范围内必须是唯一的。
由此可见, 一个 IP 地址在整个互联网范围内是唯一的。
分类
- A 类:8-24,0 开始,最大可指派网络数 27−227−2 ,每个网络最大主机数 224−2224−2
- B 类:16-16,10 开始,最大可指派网络数 214−1214−1 ,每个网络最大主机数 216−2216−2
- C 类:24-8,110 开始,最大可指派网络数 221−1221−1 ,每个网络最大主机数 28−228−2
- D 类:1110 开始,多播地址
- E 类:1111 开始,保留今后使用
分类的好处
- 划分成不同类别的考虑
- 各种网络差异很大,有的网络拥有很多主机,而有的网络拥有的主机数目很少。
- 将 IP 地址划分成不同类别 A 、 B 、 C 可以满足不同用户的需求。
- 当一个单位申请到一个 IP 地址时,只是申请了一个网络号 Net id ,具体的主机号由各个单位自行分配。
- D 类和 E 类使用较少
- D 类的多播地址主要留给 IAB (因特网体系结构委员会)使用。
点分十进制记法
常用的三种类别的 IP 地址
三个类别的 IP 地址中, 2 个特殊的 Host id 含义:
- 全 0 的 Host id 表示该 IP 地址是 “本主机” 所连接的单个网络地址。
- 如 IP 地址为 5.6.7.8 ,则网络地址为 5.0.0.0
- 全 1 的 Host id 表示所有 (all),即该网络上的所有主机
一般不使用的 IP 地址
重要特点
- IP 地址是一种分等级的地址结构
- 单位分配主机号,方便单位管理
- 路由器只根据网络号转发分组,减少了路由表所需存储空间
- 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net id
- 所有分配到网络号 net id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
IP 地址与硬件地址
IP 地址与硬件地址是不同的地址。
从层次的角度看
- 硬件地址(或物理地址) 是数据链路层和物理层使用的地址 。
- IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)
主机 H1 与 H2 通信中使用的 IP 地址与硬件地址 HA
地址解析协议 ARP
(Address Resolution Protocol)
通信时使用了两个地址:
IP 地址 (网络层地址)
MAC 地址 (数据链路层地址)
已经知道了一个机器(主机或路由器)的 IP 地址,如何找出其相应的硬件地址?
地址解析协议 ARP 就是用来解决这样的问题的
ARP 解决了同一个局域网上主机或路由器 IP 和 MAC 地址映射问题
要点
每个主机都设有一个 ARP 高速缓存,里面有所在局域网上的主机和路由器 IP 到硬件地址的映射表,并且能动态更新(设有 TTL)
- 如有,则通过局域网将 MAC 帧发送到硬件地址
- 如没有,发送 ARP 请求分组,等待 ARP 响应分组,写入 ARP 高速缓存
ARP 请求/响应分组的内容
- 发送方硬件地址
- 发送方 IP 地址
- 目标方硬件地址(未知填 0)
- 目标方 IP 地址
请求分组广播,响应分组单播
不直接使用硬件地址通信的原因:硬件地址形式不统一
注意
如果所要找的主机和源主机不在同一个局域网上,那么 就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做
从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信, ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成
IP 数据报的格式
一个 IP 数据报由首部和数据两部分组成。
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的
- 版本:占 4 位,指 IP 协议的版本
- 首部长度:占 4 位,可表示的最大数值是 15 个单位,一个单位为 4 字节。因此最大值是 60 字节
- 区分服务:占 8 位,不常用
- 总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。
- 标识:占 16 位,计数器,用来产生 IP 数据报的标识
- 标志:占 3 位,目前只有前两位有意义
- 最低位 MF (more fragment)
- MF = 1 表示后面还有分片;MF = 0 表示最后一个分片。
- 中间位 DF(don’t fragment)
- 只有当 DF = 0 时才允许分片。
- 最低位 MF (more fragment)
- 片偏移:占 13 位,以 8 个字节为偏移单位。
- 指出:较长的分组在分片后某片在原分组中的相对位置
- (以下了解即可)
- 生存时间:占 8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。
- 协议:记录上层协议(TCP 等)
- 占 8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程
- 首部检验和:反码运算求和(高位溢出加低位)
- 占 16 位, 只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
- 源地址和目的地址:都各占 4 字节
- 可选字段:不常用,不足 1 字节需要填充
例
IP 层转发分组的流程
按主机所在的网络地址制作路由表
根据目的网络地址就能确定下一跳路由器,这样做的结果是:
- IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付 )
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
默认路由
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。
这种转发方式在一个网络只有很少的对外连接时是很有用的。
默认路由在主机发送 IP 数据报时往往更能显示出它的好处。
划分子网和构造超网
划分子网
(subnetting)
格式
三级 IP 地址:网络号::子网号::主机号
转发数据报时,仍然先找到本网络上的路由器,路由器根据网络号和子网号找到子网,最后直接交付目的主机
优点
- 减少 IP 地址的浪费
- 使网络组织更加灵活
- 便于维护管理
划分子网对外部网络透明,对外表现仍然是一个网络
子网掩码
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分
全 0 或全 1 的子网号是不使用的
- 规则
- 长度 32 位
- 某位 1:IP 地址中的对应位为网络号和子网号
- 某位 0:IP 地址中的对应位为主机号
子网划分方法
有固定长度子网和变长子网两种子网划分方法。
在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的 。
若使用较少位数的子网号,则每一个子网上可连接的主机数就较多。
划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
例
使用子网时分组的转发
- 用各网络子网掩码和目的 IP 地址相与,结果一致直接交付
- 检查是否有特定主机路由
- 与路由表各项子网掩码相与,寻找匹配目的网络
- 由默认路由转发
无分类编址 CIDR
无分类域间路由选择 CIDR (Classless Inter Domain Routing)
CIDR 消除了传统的 A 类 、 B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间
格式
使用网络前缀(network prefix)代替分类地址中的网络号和子网号
斜线记法(CIDR 记法)
- 即在 IP 地址面加上一个斜线
/
,然后写上网络前缀所占的位数。 这个数值对应于三级编址中子网掩码中 1 的个数 - 例如: 220.78.168.0/24
- 主机号全 0 全 1 一般不使用
CIDR 地址块
将有相同网络前缀的连续 IP 地址组成 CIDR 地址块
路由聚合
也称构成超网(supernetting)
一个 CIDR 地址块表示很多地址,称为路由聚合
可以减少路由信息交换
CIDR 虽然不使用子网了 但仍然使用掩码这一名词,但不叫子网掩码 。
对于 20 地址块,它的掩码是 20 个连续的 1。斜线记法中的数字就是掩码中 1 的个数
最长前缀匹配
使用 CIDR 时,路由表中的每个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果。
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest prefix matching)。
网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。
最长前缀匹配又称为最长匹配或最佳匹配
举例
使用二叉线索存储(字典树)
网际控制报文协议 ICMP
(Internet Control Message)
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP 报文封装在 IP 数据包中,是 IP 层的协议
种类
格式:类型、代码、校验和
种类:ICMP 差错报告报文和 ICMP 询问报文
差错报告报文
向源站点报告错误信息,不需要应答
类型
- 终点不可达
- 时间超过:收到 TTL 为 0 的数据报时
- 参数问题:收到的数据报首部有字段不正确时。
- 改变路由(重定向)
方法
报文的数据部分包含 ICMP 差错报告报文的前 8 个字节,再加上引起错误的 IP 数据报的首部和数据字段的前 8 个字节。
询问报文
采用请求应答方式进行交互用来请求一些消息
分类
- 回答请求和回答报文
- 时间戳请求和回答报文
应用举例
PING (Packet InterNet Groper) 分组网间探测
tranceroute 用来跟踪一个分组从源点到终点的路径。
互联网的路由选择协议
有关路由选择协议的几个基本概念
不存在绝对的最佳路由算法
从路由算法的自适应性考虑
静态路由选择:非自适应路由选择。简单开销小,但不能适应网络动态和变化
动态路由选择:自适应路由选择。适应网络状态的变化,但实现复杂,开销
自治系统 AS
分层次路由选择协议的原因:互联网规模大;许多单位不愿意外接了解内部网络细节
定义: 在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量 。
一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
两大类路由选择协议
这里网关 == 路由器
域间路由选择和域内路由选择
- 内部网关协议 IGP ( Interior Gateway Protocol )
- 在一个自治系统内部使用的路由选择协议。
- 目前这类路由选择协议使用得最多,如 RIP(距离向量) 和 OSPF(链路状态) 协议。
- 外部网关协议 EGP ( External Gateway Protocol )
- 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。 这样的协议就是外部网关协议 EGP 。
- 在外部网关协议中目前使用最多的是 BGP-4
内部网关协议 RIP
RIP (Routing Information Protocol)
定义
RIP 是一种分布式的、基于距离向量的动态路由选择协议
- 分布式:每个路由器独立决定自己的路由表
- 距离、向量:到达目的网络所需费用;一组距离的记录
- 动态:根据拓扑结构、通信量的变化来改变其路由选择
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的唯一最佳距离记录
与相邻路由器交换全部路由表
距离
RIP 协议中的 “距离” 也称为 “跳数” (hop count),因为每经过一个路由器,跳数就加 1。这里的 “距离” 实际上指的是 “最短距离”
RIP 认为一个好的路由就是它通过的路由器的数目少即距离短
RIP 允许一条路径最多只能包含 15 个路由器 。
距离的最大值为 16 时即相当于不可达。 可见 RIP 只适用于小型互联网
RIP 不能在两个网络之间同时使用多条路由
- RIP 选择一个具有最少路由器的路由,即最短路由。
- 哪怕还存在另一条高速低时延但路由器较多的路由 。
特点
- 和哪些路由器交换信息?
- 仅和相邻路由器交换信息。
- 交换什么信息?
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 在什么时候交换信息?
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。若超过 180s 没收到邻居通告,则判定邻居没了并更新路由表。
RIP 路由表的信息
- 路由表的主要信息
- 到某个网络的距离(即最短距离)
- 应经过的下一跳地址
路由表的更新原则是找出到每个目的网络的最短距离
RIP 使用的更新算法称为距离向量算法
路由表的建立
例
距离加一
- 下一跳不同,选择最优路径
- 下一跳相同,覆盖
RIP2 协议的报文格式
应用层协议,使用 UDP 协议传输
RIP2 是 1998 年公布的较新的 RIP 版本。
RIP2 报文由 首部 和 路由部分 组成。
优缺点
- 优点
- 实现简单,开销较小。
- 缺点
- 限制了网络的规模,它能使用的最大距离为 15
- 路由器之间交换的路由信息是路由器中的完整路由表,开销大
- 好消息传播得快,坏消息传播得慢。
内部网关协议 OSPF
OSPF (Open Shortest Path First)(开放最短路径优先协议),是为克服 RIP 的缺点在 1989 年开发出来的。
最短路径的计算使用了迪杰斯特拉算法
特点
- 和哪些路由器交换信息?
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 交换什么信息?
- 发送的信息就是与本路由器相邻的所有路由器的链路状态 ,但这只是路由器所知道的部分信息。
- “链路状态” 就是说明本路由器都和哪些路由器相邻,以及该链路的 “度量” ( metric):费用、距离、时延、带宽等。
- 最终目标是构建一个全网的拓扑结构图
- 在什么时候交换信息?
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
链路状态数据库
所有的路由器最终都能建立一个链路状态数据库
这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的 (这称为链路状态数据库的同步)。
每个路由器都知道全网有多少路由器,哪些路由器是相连的,代价是多少等。
每个路由器根据数据状态数据库,构造出自己的路由表。
OSPF 的链路状态数据库能较快地进行更新, 使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。
分类
- 问候 (Hello) 分组
- 用来发现和维持邻站的可达性。
- 数据库描述 (Database Description) 分组
- 向邻站给出自己的链路状态数据库所有项目的摘要信息。
- 链路状态请求 (Link State Request) 分组
- 向对方请求发送某些链路状态项目的详细信息。
- 链路状态更新 (Link State Update) 分组
- 用洪泛法对全网更新链路状态。 OSPF 协议最核心的部分
- 链路状态确认 (Link State) 分组
- 对链路更新分组的确认。
区域
为了使 OSPF 能用于规模很大的网络, OSPF 将一个自治系统再划分为若干个更小的范围,叫做 区域。
每一个区域都有一个 32 位的区域标识符 (用点分十进制表示)。
区域也不能太大,在一个区域内的路由器最好不超过 200 个。
区域划分的好处
- 将洪泛的范围缩小,减少网络通信量
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况
重要的路由器
- 主干路由器(backbone router):主干区域的路由器
- 区域边界路由器(area border router):连接两个区域的路由器
- 自治系统边界路由器:与其他自治系统交换信息的路由器,也是一种边界路由器
报文格式
OSPF 直接用 IP 数据包报传送,其首部的协议字段值为 89
OSPF 构成的数据报很短
- 可减少路由信息的通信量。
- 不必将长的数据报分片传送。
- 分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF 分组使用 24 字节的固定长度首部
RIP 与 OSPF 的比较
RIP
- 节点告诉相邻节点它所知道的所有路由信息
- 节点根据来自相邻节点的路由信息更新自己的路由表
- 定期交换信息
- 可扩展性差
OSPF
- 节点告诉所有节点它的相邻节点的状态信息
- 每个节点都有一个全局的拓扑结构,并以此计算路由表
- 链路状态变化时才交换信息
- 可扩展性好,可靠
- 与整个互联网的规模无直接联系。没有“坏消息传播得慢”的问题
外部网关协议 BGP
BGP (Border Gateway Protocol) ( 边界网关协议 ) 是不同自治系统的路由器之间交换路由信息的协议,目前使用最多的版本是 BGP-4
为什么不能使用内部网关协议?
- 互联网的规模太大,使得自治系统之间路由选择非常困难。
- 主干网路由器的项目表已超过了 5 万个网络前缀。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的 。
- 当一条路径通过几个不同 AS 时,要想对这样的路径 计算出有意义的代价是不太可能的 。
- 比较合理的做法是在 AS 之间交换“ 可达性 ”信息。例 “到达目的网络 N 可经过自治系统 AS x ”。
- 自治系统之间的路由选择必须考虑有关策略。
- 包括政治、安全或经济方面的考虑。
BGP 致力于寻找一条比较好的路由(并非最佳),采用了路径向量路由选择协议
特点
- 和谁交换信息?
- 与其他 AS 的邻站 BGP 发言人交换信息。
- 每一个自治系统的管理员要选择至少一个 路由器 作为该自治系统的 “BGP 发言人” (BGP speaker)
- 通常,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器 ,但也不一定
- 与其他 AS 的邻站 BGP 发言人交换信息。
- 交换什么信息?
- 路径向量。也就是网络可达性的信息,即到达某个网络所要经过的一系列 AS
- 在什么时候交换信息?
- 发生变化时更新有变化的部分
连通图
也就是网络可达性信息
报文格式
封装在 TCP 报文中
路由器
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组
结构
路由选择部分
- 根据所选定的路由选择协议构造出路由表
- 相邻路由器交换路由信息,更新和维护路由表。
分组转发部分
- 一组输入端口
- 交换结构:根据转发表对分组进行处理
- 一组输出端口
核心功能
- 控制层:运行各种路由协议
- 数据层:将收到的 IP 分组转发
交换结构
交换结构是路由器的关键构件
交换方法
- 通过存储器
- 通过总线
- 通过纵横交换结构
IP 多播
基本概念
多播 (multicast ,以前曾译为组播 ) 是一种一对多通信: 一个源点发送到许多个终点
能够运行多播协议的路由器称为多播路由器 (multicast router)
在互联网上进行多播就叫做 IP 多播
IP 多播分为两种
- 一种是只在本局域网上进行硬件多播
- 另一种是在互联网的范围内进行多播
多播 IP 地址
IP 多播所传送的分组需要使用多播 IP 地址。
在多播数据报的目的地址写入多播组的标识符 。
多播组的标识符就是 IP 地址中的D 类地址(多播地址)
D 类 IP 地址的前四位是 1110 ,因此范围是 224.0.0.0 到 239.255.255.255 。
每一个 D 类地址标志一个多播组。
多播地址只能用于目的地址, 不能用于源地址
多播数据报
多播数据报和一般 IP 数据报的区别就是它使用 D 类 IP 地址为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP
多播数据报也是“ 尽最大努力交付 ”,不保证一定能够交付多播组内的所有成员。
对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。
在局域网上进行硬件多播
MAC 地址开头:01-00-5E,表明其为多播地址
网际组管理协议 IGMP 和多播路由选择协议
这是 IP 多播需要的两种协议
网际组管理协议 IGMP
IGMP 使多播路由器知晓多播组成员信息
多播路由选择协议
大概不考