夜间模式暗黑模式
字体
阴影
滤镜
圆角
第 4 章 网络层


第 4 章 网络层

第 4 章 网络层

4.1 网络层概述

4.1.1 功能

  1. 异构网络互联
  2. 路由与转发
    1. 路由选择
      • 由路由算法去认定一个进来的分组应该被传送到哪一条输出线路上。
    2. 分组转发
      • 路由器根据转发表将用户的IP数据报从何时的端口转发出去。
      • 路由表根据路由选择算法得出,转发表由路由表得出。
      • 转发表的结构应该是查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。
  3. 拥塞控制
  4. 因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。

4.1.2 服务

  1. 虚电路
  2. 数据报

image-20200419162427475

4.2 路由算法

4.2.1 静态路由与动态路由

  1. 静态路由选择策略(非自适应路由选择),其特点是简单和开销较小,但不能及时适应网络状态的变化。
  2. 动态路由选择策略(自适应路由选择),其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
    1. 距离-向量路由算法
      • 所有节点都定期地将他们整个路由选择表传送给所有与之直接相邻的节点。
      • RIP算法
    2. 链路状态路由算法
      • 要求参与该算法的节点都有完全的网络拓扑信息。
        1. 主动测试所有邻接节点的状态。
        2. 定期的将链路状态传播给其他所有节点。
      • 三大特性
        1. 向本自治系统中所有路由器发送信息
        2. 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器知道的部分信息。
        3. 只有当链路状态发生改变时,路由器采用洪泛法向所有路由器发送信息。
      • OSPF算法

4.2.1 层次路由

  • 自治系统 AS (Autonomous System):在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。

4.3 IPv4

4.3.1 IP 数据报的格式

image-20200419165904339

  • ipv4数据报首部长度默认为20B,因为后面21B~60B是可选+填充。不是4B的整数倍,要填充。
  • 首部长度的基本单位为4B总长度的基本单位是1B片偏移的基本单位是8B
  • 版本 : 有 4(IPv4)和 6(IPv6)两个值;
  • 首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为固定部分长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
  • 区分服务 : 用来获得更好的服务,一般情况下不使用。
  • 总长度 : 包括首部长度和数据部分长度。
  • 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
  • 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
  • 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
  • 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符,只有前两位有意义MF & DF。
    • MF (More Fragment): MF = 1, 后面还有分片。合并时要将首部的20B删掉。除了最后一片,其他MF均为1;
    • DF (Don’t Fragment): DF = 1, 不能分片。过大则丢弃。
  • 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的基本单位为 8 字节
    • IP数据报分片

4.3.2 IPv4地址

  1. 分类image-20200419184353377
    • 由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。
    • IP 地址 ::= {< 网络号 >, < 主机号 >}
    • 分类:
      • A类地址:1~126.
      • B类地址:128.1 ~ 191.255
      • C类地址:192.0.1 ~ 223.255.255
  2. 6类特殊地址:
    • 直接广播地址:主机号全为1, 目的地址
    • 受限广播地址:255.255.255.255,目的地址(只可查找该网络下的所有主机)
    • 环回地址:127.0.0.1,源地址或目的地址
    • 特定主机:网络号全0,主机号特定
    • 这个网络上的主机:全0,表示源地址或默认目的地址
    • 网络地址:网络号特定,主机号全0
  3. NAT
    • 专用地址
      • 10.0.0.0 ~ 10.255.255.255
      • 172.16.0.0 ~ 172.31.255.255
      • 192.168.0.0 ~ 192.168.255.255
    • NAT技术:将专用网内部使用的本地IP地址转换成有效的外部全球IP地址,使得整个专用网只需要一个全球IP地址就可以与因特网通信。
    • NAT协议就是利用端口域来解决内网到外网的地址映射问题。

4.3.3 子网划分和子网掩码

  • 通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。
  • IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}要使用子网,必须配置子网掩码。
    • 子网掩码是为了获取网络号
  • 主机号全为0/ 1,不能用。

4.3.4 无分类编制 CIDR

  • 无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。
  • IP 地址 ::= {< 网络前缀号 >, < 主机号 >}
  • CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀。
  • CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为网络前缀的长度。
  • 一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为构成超网 。
  • 在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个,越长越具体。

4.3.5 三种分类总结

研究对象 主要表项
没划分子网前的路由表 目的网络地址、下一跳地址
划分子网后的路由表 目的网络地址、子网掩码、下一跳地址
使用CIDR后的路由表 网络前缀、下一跳地址
  1. 划分子网后的路由表
    1. 从收到的分组首部提取目的IP地址D。
    2. 先判断是否为直接交付,用那些和路由器直接相邻的网络的子网掩码和D逐位相与,看是否和相应的网络地址匹配。匹配就直接交付,不匹配就间接交付。
    3. 若路由表中有目的地址为D的特定路由主机,则将分组传送给指明的下一跳路由主机。转4
    4. 对路由表中的每一行的子网掩码和D逐位与。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器。转5
    5. 若路由表中有一个默认路由,将分组转发给默认路由。转6
    6. 报告转发分组错误;
  2. 使用CIDR后的路由表
    • 查找路由表时会得到不止一个匹配结果,选择最长前缀匹配。

4.3.6 地址解析协议 ARP: Address Resolution Protocol

  1. 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。
  2. ARP 用于解决在同一局域网内的主机或路由器的 IP地址和 MAC地址映射问题。
  3. 每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。
  4. 如果主机 A知道主机 B的 IP地址,但是 ARP高速缓存中没有该 IP地址到 MAC地址的映射,此时主机 A通过广播的方式发送 ARP请求分组,主机 B收到该请求后会发送 ARP响应分组(单播)给主机 A告知其 MAC地址,随后主机 A向其高速缓存中写入主机 B的 IP地址到 MAC地址的映射。

4.3.7 网际控制报文协议 ICMP: Internet Control Message Protocol

  1. 简介ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。
  2. ICMP 报文的种类
    1. ICMP 差错报告报文
      • 终点不可达:无法交付数据报。
      • 源点抑制(Source quench):拥塞。
      • 时间超过:
          1. TTL减为0,丢弃报文并向源点发送时间超过报文;
          2. 当终点在规定时间内不能收到一个数据报的全部分片时,丢弃所有,并向源点发送一个时间超过报文;
      • 参数问题 :当收到的数据报首部中有字段不对
      • 改变路由(重定向)(Redirect):让主机知道把数据报发送给比当前更好的路由。
    2. ICMP 询问报文
      • 回送请求和回答报文
      • 时间戳请求和回答报文
  3. 格式
    • ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
  4. 应用
    1. Ping(应用层)
      • 用来测试两台主机之间的连通性。
      • Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
    2. Traceroute(网络层)
      • 用来跟踪一个分组从源点到终点的路径。
      • Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。
      • 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
      • 接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
      • 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
        源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。

4.4 IPv6

4.4.1 简介

  1. IPv4:32位,IPv6:128位
  2. 扩展的地址层次结构
  3. IPv6的首部长度必须是8B的整数倍
  4. 简化了IP分组的首部
  5. IPv6更好的支持选项

4.4.2 格式

4.5 路由协议

4.5.1 协议分类

  1. 内部网关协议 IGP:Interior Gateway Protocol
    • 在一个自治系统内部使用的路由选择协议。
    • RIP、OSPF
  2. 外部网关协议 EGP:External Gateway Protocol
    • 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。
    • BGP-4

4.5.2 RIP

  1. RIP 是一种基于距离向量的路由选择协议。
  2. 距离-向量算法
    1. 距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。
    2. 三要点
      1. 仅和相邻路由器交换信息。
      2. 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
      3. RIP 按固定的时间间隔交换陆游信息。
    3. 算法简介
      1. 相邻路由器 X发来的 RIP报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1;
      2. 对修改后的 RIP 报文中的每一个项目,进行以下步骤:
        if (项目中的目的网络不在路由表中) {
          加入路由表中;
        }
        else if (下一跳字段中给出的路由器地址相同) {
          把收到的项目替换原路由表中的项目;
        }
        else if (收到项目中的距离小于路由表中的距离) {
          更新;
        }
        else {
          nothing;
        }
        
      3. 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。若其后120s内仍未收到更新包文,就将这些路由从路由表中删除。
    4. 特点
      • RIP 协议实现简单,开销小,手链过程较快。
      • 但是 RIP 能使用的最大距离为 15,限制了网络的规模。
      • 交换的信息是完整的路由表,随着网络规模的扩大,开销也会增大。
      • 并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。

4.5.3 OSPF

  1. 开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。
    • 开放表示 OSPF不受某一家厂商控制,而是公开发表的;
    • 最短路径优先表示使用了 Dijkstra提出的最短路径算法 SPF。
  2. 特点:
    • 仅在网络拓扑发送变化时,才会向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
    • 发送的信息就是与相邻路由器的链路状态(链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示)。
    • 相邻路由器会根据此信息修改自己的路由表,并将其发送给自己的相邻路由器。
    • 所有路由器都具有一模一样的网络拓扑结构。
    • 相比于 RIP,OSPF 的更新过程收敛的很快。
    • 虽然用最短路径可以算出最优路径,但在路由表中只会存储“下一跳”。
    • OSPF路由表中表示目的网络的参数为费用。

4.5.4 外部网关协议 BGP

  1. 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。
    • AS 之间的路由选择很困难,主要是由于:
      • 互联网规模很大;
      • 各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;
      • AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。
    • BGP 只能寻找一条比较好的路由,而不是最佳路由。
  2. 基本原理
    • 每个 AS 都必须配置 至少BGP发言人(路由器);
    • 通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息;
    • 在此连接上交换BGP报文以建立BGP绘画,再利用BGP会话交换路由信息。
    • 交换信息后,即可选择较好的路径。
  3. 特点
    • BGP交换路由信息的节点数量级是自治系统数的量级,比自治系统中的网络数少了很多。
    • BGP发言人很少,找起来简单。
    • 支持CIDR。
    • 只需要更新有变化的部分,开销小。

4.6 网络层设备

4.6.1 路由器

  • 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
  • 路由器从功能上可以划分为
    • 路由选择
    • 分组转发

4.6.2 路由表和路由转发

  1. 分组转发组成
    • 交换结构
    • 一组输入端口
    • 一组输出端口
  2. 分组转发算法

image-20200419184517396

  • (1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
  • (2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
  • (3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
  • (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
  • (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
  • (6) 报告转发分组出错。
暂无评论

发送评论 编辑评论


				
上一篇