> For the complete documentation index, see [llms.txt](https://afutured.gitbook.io/project_408/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://afutured.gitbook.io/project_408/computer_networks/chapter4.md).

# 第四章 网络层

* 4.1 网络层的功能
  * 4.1.1异构网络互联
    * 网络层所要完成的任务之一就是使这些异构的网络实现互联。
      * 不同的寻址方案、不同的网络接入机制、不同的差错处理方法、不 同的路由选择机制等。
      * 网络互联
        * 指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设 备(即中间设备)相互连接起来,以构成更大的网络系统。
    * 中继系统
      * 1\) 物理层中继系统:中继器,集线器(Hub)&#x20;
      * 2\)  数据链路层中继系统:网桥或交换机。
      * 3\)  网络层中继系统:路由器。
      * 4\)  网络层以上的中继系统:网关。
    * 虚拟互联网络也就是逻辑互联网络,即互联起来的各种物理网络的异构性本来是客观存在 的,但是通过使用IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。
      * 好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样, 而看不见互联的具体的网络异构细节
  * 4.1.2路由与转发
    * 两个功能
      * 一是路由选择(确定哪一条路径)
        * 据特定的路由选择协议构造出路由表,同时经常或定期地和相 邻路由器交换路由信息而不断地更新和维护路由表。
        * 指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑 的变化情况,动态地改变所选择的路由。
      * 二是分组转发(当一个分组 到达时所采取的动作)
        * 处理通过路由器的数据流,关键操作是 转发表查询、转发及相关的队列管理和任务调度等。
        * 指路由器根据转发表将用户的IP数据报从合适的端口转发出去。
    * 路由表与转发表
      * 讨论路由选择的原理时,往往不去 区分转发表和路由表,而是笼统地使用路由表一词。
        * 路由表
          * 根据路由选择算法得出
          * 转发表的结构应当使查找 过程最优化
        * 转发表
          * 从路由表得出的
          * 需要对网络拓扑变化的计算最优化
  * 4.1.3 拥塞控制
    * 因出现过量的分组而引起网络性能下降的现象称为拥塞
    * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FBEotw61SCb.png?alt=media\&token=c7a8019f-0fe4-4ccb-84f0-1565967d8b4b)
    * 判断网络是否进入拥塞状态的方法是
      * 观察网络的吞吐量与网络负载的关系
        * 如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入“轻度拥塞”状态;
        * 如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已进入拥塞状态;
        * 如果网络的负载继续增大,而网络的吞吐量下降到零,那么网络就可能已进入死锁状态
    * 拥塞控制
      * 解决的问题
        * 解决的问题是如何获取同络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现分组的丢失,以及严重拥塞而产生网络死锁的现象。
      * 作用
        * 作用是确保子网能够承载所达到的流量
          * 这是一个全局性的过程,涉及各方面的行为:主机、路由器及路由器内部的转发处理过程等。单一地增加资源并不能解决拥塞。
    * 流量控制和拥塞控制的区别:
      * 流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。
      * 拥塞控制必须确保通信子网能够传送特传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。
    * 方法
      * 1\)开环控制
        * 在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。
        * 一种静态的预防方法
        * 一旦整个系统启动并运行,中途就不再需要修改。
        * 手段
          * 确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度决策等。
          * 在做决定时不考虑当前网络的状态。
      * 2\)闭环控制
        * 事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的I巧题。
        * 闭环控制是基于反馈环路的概念,是一种动态的方法。
* 4.2路由算法
  * 4.2.1 静态路由与动态路由
    * 静态路由算法(又称非自适应路由算法)
      * 概念
        * 由网络管理员手工配置的路由信息。
        * 当网络的 拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。&#x20;
      * 适用范围
        * 广泛用于高度安全的军事系统和较小的商业网络
        * 大型和复杂的网络环境通常不宜采用静态路由。
      * 优点
        * 简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好
      * 缺陷
        * 一方面,网络管理员难以全面了解整个网络的拓扑结构;
        * 另一方面,当网络的拓扑结构和链路状态发生变化时,路由器中的静态路由信息需要大 范围地调整,这一工作的难度和复杂程度非常高。
    * 动态路由算法(又称自适应路由算法)
      * 概念
        * 路由器上的路由表项是通过相互连接的路由器之 间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更 新,以适应不断变化的网络,随时获得最优的寻路效果。
      * 优点
        * 能改善网络的性能并有助于 流量控制;
      * 缺点
        * 算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起振荡,或反应 太慢而影响网络路由的一致性,
      * 常用的算法
        * 距离-向量路由算法和链路状态路由算法。
  * 动态路由算法
    * 4.2.2 距离-向量路由算法
      * 原理
        * 所有结点都定期地将它们的整个路由选择表传送给所有与之直接相 邻的结点。
          * 路由选择表包含
            * •每条路径的目的地(另一结点)。
            * •路径的代价(也称距离)。
              * 距离是一个抽象的概念
        * 实质
          * 迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。
          * Bellman-Ford或者Ford-Fulkerson算法
      * 更新路由选择表的条件
        * 1\)  被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的 路由。
        * 2\)  发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离(较小的代价)。
          * 此种情况下,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由。
      * 缺点
        * 容易出现路由环路的情况
        * 更新报文的大小与通信子网的结点个数成正比,大的通信子网将导致很大的更新报文。由于更新报文发给直接邻接的结点,所以所有结点都将参加路由选择信息交换。基于
        * 这些原因,在通信子网上传送的路由选择信息的数量很容易变得非常大。
      * 最常见的距离-向量路由算法
        * RIP算法
    * 4.2.3 链路状态路由算法
      * 原理
        * 每个参与该算法的结点都具有完全的网络拓扑信息
        * 执行两项任务。
          * 主动测试所有邻接结点的状态。
            * 两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。
          * 定期地将链路状态传播给所有其他结点 (或称路由结点)
        * 报文处理
          * 每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态“视 野图〃,一旦链路状态发生变化,结点就对更新的网络图利用Dijsktra最短路径算法重新计算路由, 从单一的源出发计算到达所有目的结点的最短路径。
      * 典型的链路状态算法
        * OSPF算法
      * 链路状态路由算法主要有三个特征:
        * 1\)  向本自治系统(见424节)中所有路由器发送信息,这里使用的方法是泛洪法,即路由 器通过所有端口向所有相邻的路由器发送信息。
        * 2\)  发送的信息是与路由器相邻的所有路由器的链路状态
          * 只是路由器所知道的部分信 息。
          * 所谓“链路状态",是指说明本路由器与哪些路由器相邻及该链路的“度量〃。
        * 3\)  只有当链路状态发生变化时,路由器才向所有路由器发送此消息。
      * 使用范围
        * 可以用于大型的或路由信息变化聚敛的互联网环境。
      * 优点
        * 每个路由结点都使用同样的原始状态数据独立地计算路 径,而不依赖中间结点的计算;
        * 链路状态报文不加改变地传播,因此采用该算法易于查找故障。
        * 当一个结点从所有其他结点接收到报文时,它可以在本地立即计算正确的通路,保证一步汇聚。
        * 由于链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点 数目无关,因此链路状态算法比距离-向量算法有更好的规模可伸展性。
  * 距离-向量路由算法与链路状态路由算法的比较:
    * 距离-向量路由算法
      * 每个结点仅与它的直接邻居交谈
      * 它为它的邻居提供从自己到网络中所有其他结点的最低费用估计。
    * 链路状态路由算法
      * 每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。
        * 创建拓扑图
          * 链路状态路由协议会创建拓扑图，即SPF树，而距离矢量路由协议没有网络的拓扑图，仅有一个网络列表，其中列出了通往各个网络的开销（距离）和下一跳路由器（方向）。
          * 因为链路状态路由协议会交换链路状态信息，所以SPF算法可以构建网络的SPF树，有了SPF树，路由器可独立确定通向每个网络的最短路径。
        * 快速收敛
          * 收到一个链路状态数据包（LSP）后链路状态路由协议便立即将该LSP从除接收该LSP的接口以外的所有接口泛洪出去。
          * 使用距离矢量路由协议的路由器需要处理每个路由更新，并且在更新完路由表后才能将更新从路由器接口泛洪出去，即使对触发更新也是如此。
        * 事件驱动更新
          * 在初始LSP泛洪之后，链路状态路由协议仅在拓扑发生改变时才发出LSP。
          * 与某些距离矢量路由协议不同的是，链路状态路由协议不会定期发送更新。
        * 层次式设计
          * 链路状态路由协议，如OSPF和IS-IS使用了区域的概念。多个区域形成了层次化的网络结构，这有利于路由聚合（汇总），还便于将路由问题隔离在一个区域内。
  * 4.2.4 层次路由
    * 背景
      * 当网络规模扩大时,路由器的路由表成比例地增大。这不仅会消耗越来越多的路由器缓冲区 空间,而且需要用更多CPU时间来扫描路由表,用更多的带宽来交换路由状态信息。
    * 两大类协议
      * 每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信, 那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。
      * 1\)  一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP),也称域内路由选择, 具体的协议有RIP和OSPF等
        * OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道在本 区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。
        * 采用分层次划分区域的方法虽然会使交换信息的种类增多,但也会使OSPF协议更加复杂。&#x20;
          * 但这样做却能使每个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。
      * 2\)  自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称域间路由选择,用 在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最 优的路径。具体的协议有BGPo
* 4.3 IPv4
  * 4.3.1 IPv4 分组
    * 内容
      * IP定义数据传送的基本单元— —IP分组及其确切的数 据格式。
      * IP也包括一套规则,指明分组如何处理、错误怎样控制。
      * 特别是IP还包含非可靠投递 的思想,以及与此关联的分组路由选择的思想。
    * 1. IPv4分组的格式
         * 由首部和数据两部分组成。
         * 首部
           * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FBVrin40Z7D.png?alt=media\&token=6285049b-04d4-4b57-99c8-d59385e52df7)
           * 前一部分的长度固定,共20B,是所有IP分组 必须具有的。
           * 后面是一些可选字段,其长度可变,用来提供错误检测及安全等 机制。
           * 重要字段含义
             * 1\)  版本
               * 指IP的版本,目前广泛使用的版本号为4。
             * 2\)  首部长度
               * 占4位。
               * 以32位（8B）为单位
               * 最大值为60B ( 15x4B) 。最常用的首部长度是20B
             * 3\)  总长度
               * 占16位。
               * 指首部和数据之和的长度,单位为字节,因此数据报的最大长度为2况-1 = 65535B。
               * 以太网帧的最大传送单元(MTU) 为1500B,因此当一个IP数据报封装成帧时, 数据报的总长度(首部加数据)一定不能超过下面数据链路层的MTU值。
             * 4\)  标识
               * 占16位。
               * 它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。
               * 当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。
             * 5\)  标志
               * 占3位。
               * 标志字段的最低位为MF(More Fragmaent), MF = 1表示后面还有分片,MF = 0表示最后 一个分片。
               * 标志字段中间的一位是DF,只有当DF = 0时才允许分片。
             * 6\)  片偏移
               * 占13位。
               * 以 8B 为偏移单位,
               * 它指出较长的分组在分片后,某片在原分组中的相对位置。
             * 7\)  首部校验和
               * 占16位。
               * IP数据报的首部校验和只校验分组的首部,而不校验数据部分。
             * 8\)  生存时间 ( TTL)&#x20;
               * 占8位。
               * 数据报在网络中可通过的路由器数的最大值,标识分组在两 络中的寿命,以确保分组不会永远在网络中循环。
               * 路由器在转发分组前,先把TTL减1。&#x20;
                 * 若TTL被减为0,则该分组必须丢弃。
             * 9\)  协议
               * 占8位。
               * 指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传 输层协议,如TCP、UDP等。其中值为6表示TCP,值为17表示UDP。
             * 10\)  源地址字段
               * 占4B,
               * 标识发送方的IP地址。
             * 11\)  目的地址字段
               * 占4B
               * 标识接收方的IP地址。
    * 1. IP数据报分片
         * 最大传送单元(MTU)
           * 一个链路层数据报能承载的最大数据量
         * 分片
           * 当IP数据报的总长度大于链路MTU时,就需要将 IP数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为片。
             * 片在目的地的网络层被重新组装。
               * 目的主机使用IP首部中的标识、标志和片偏移字段来完 成对片的重组。
         * IP分片涉及的计算
           * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FGRv_nTTI2g.png?alt=media\&token=bcef4809-e36a-48ef-95c3-06ea8dbec6bc)
    * 1. 网络层转发分组的流程
         * 分组转发算法
           * 1\)  从数据报的首部提取目的主机的IP地址D，得出目的网络地址N。
           * 2\)  若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直 接交付;否则是间接交付,执行步骤3) 。
           * 3\)  若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则;执行步骤4) 。
           * 4\)  若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则, 执行步骤5) 。
           * 5\)  若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则, 执行步骤6) 。
           * 6\)  报告转发分组出错。
         * 注意
           * 得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将该 IP地址转换成MAC地址,将其放到MAC帧首部中,然后才艮据这个 MAC地址找到下一跳路由器。
  * 4.3.2 IPv4 地址与 NAT
    \*
    1. IPv4地址
       * 32比特的全球唯一标识符
       * 组成
         * IP地址::={<网络号>,<主机号>}
       * IP划分
         * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FJRZA_wMA-z.png?alt=media\&token=1a871200-1c27-45d2-beb6-da2d84edbf2f)
         * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FMCBStOk66l.png?alt=media\&token=0e27480f-73e6-432c-9662-d991c635aa0b)
         * 特殊地址
           * 主机号全为0表示本网络本身
           * 主机号全为1表示本网络的广播地址，又称直接广播地址
           * 127.0.0.0保留为环路自检( LoopbackTest) 地址,此地址表示任意主机本身,目的地址为 环回地址的IP数据报永远不会出现在任何网络上。
           * 32位全为0,即0.0Q0表示本网络上的本主机。
           * 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。
             * 实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。
       * 特点
         * 1\)  每个IP地址都由网络号和主机号两部分组成,因此IP地址是一种分等级的地址结构。
           \*
           1. IP地址管理机构在分配IP地址时只分配网络号(第一级),而主机号 (第二级)则由得到该网络的单位自行分配,方便了 IP地址的管理;
           * 1) 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。
         * 2\)  IP地址是标志一台主机(或路由器)和一条链路的接口。
           * 当一台主机同时连接到两个网 络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络 的网络号相同,且这两个IP地址的网络号是不同的。
           * IP网络上的一个路由器必然至 少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)。
         * 3\) 用转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域),因 此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同。
         * 4\)  在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN) 都是平等的。
         * 5\)  在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。
           * 路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址。
    * 2。网络地址转换(NAT)
      * 指通过将专用网络地址(如Intranet)转换为公用地址(如Internet), 从而对外隐藏内部管理的IP地址。
      * 作用
        * 使得整个专用网只需要一个全球IP地址就可以与因特网连 通,由于专用网本地IP地址是可重用的,所以NAT大大节省了 IP地址的消耗。
        * 它隐藏了 内部网络结构,从而降低了内部网络受到攻击的风险。
      * 私有IP地址
        * 只用于LAN,不用 于WAN连接
        * 因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转 换为Internet中合法的全球IP地址后才能用于Internet
        * A 类:1 个 A 类网段,即 10.0.0.0〜10.255.255.255
        * B 类:16 个 B 类网段,艮P 172.16.0.0—172.31.255.255
        * C 类:256 个 C 类网段,即 192.160.0—192.168.255.255
      * 要求
        * 需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个 有效的外部全球地址。
      * NAT转换表
        * 可让多个私有IP地址映射到同一个全球IP地址。
        * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FMLjvGAPhGd.png?alt=media\&token=df8a9526-cd53-49b9-b05f-5f028c25ea65)
      * 注意
        * 普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址。而NAT路由器 在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。
        * 普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。
  * 4.3.3 子网划分与子网掩码、CIDR
    \*
    1. 子网划分
       * 两级IP地址的缺点
         * IP地址空间的利用率有时很低;
         * 每个物理网络分配一个网络号会使 路由表变得太大而使网络性能变坏;
         * 两级的IP地址不够灵活。
       * 基本思路
         * 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
         * 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。
           * 三级IP地 址的结构如下:IP地址={〈网络号〉,〈子网号〉,〈主机号>}。
         * 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号, 先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号 和子网号找到目的子网。最后把IP数据报直接交付给目的主机。
       * 注意点
         * 划分子网只是把 IP 地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。
           * 因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分。
         * 对分类的IPv4地址进行于网划分时,子网号不能为全1或全0。
           * 但随着 CIDR的广泛使用,现在全1和全0的子网号也可使用,但一定要谨慎使用,要弄清你的 路由器所用的路由选择软件是否支持全0或全1的子网号。
         * 不论是分类的IPv4地址还是CIDR,其子网中的主机号为全0或全1的地址都不能被指 派。
    * 2.子网掩码
      * 为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。
      * 是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。&#x20;
        * 其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。
        * 计算机只需将IP地址和其对 应的子网掩码逐位“与”(逻辑AND运算),就可得出相应子网的网络地址。
      * 默认子网掩码
        * A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0。&#x20;
      * 路由器在相互之间交换路由信息时, 必须把自己所在网络(或子网)的子网掩码告诉对方。路由表中的每个条目,除要给出目的网络 地址和下一跳地址外,还要同时给出该目的网络的子网掩码。
      * 使用子网掩码的情况
        * 1\)  一台主机在设置IP地址信息的同时,必须设置子网掩码。
        * 2\)  同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
        * 3\)  路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址。
      * 使用子网掩码时路由器的分组转发算法
        * 1\)  从收到的分组的首部提取目的IP地址,记为D。
        * 2\)  先判断是否为直接交付。
        * 对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与",看结果是否和相应的网络地址匹配。若匹配,则将分组直接交付,否 则间接交付,执行步骤3) 。
        * 3\)  若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳 路由器;否则,执行4) 。
        * 4\)  对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相“与，其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下 一跳路由器;否则,执行步骤5) 。
        * 5\)  若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执 行步骤6)&#x20;
        * 6\)  报告转发分组出错
    * 1. 无分类域间路由选择(CIDR)
         * 是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分, 并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。
         * 主要特点
           * 1\) 消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空 间。CIDR使用“网络前缀〃的概念代替子网络的概念。
             * 因此,IP地址的无分类两级编址 为：IP::={< 网络前缀〉,<主机号>}。
             * CIDR还使用“斜线记法〃(或称CIDR记法),即IP地址/网络前缀所占比特数。
               * 例如,对 于128.14.32.5/20这个地址,它的掩码是20个连续的1和后续12个连续的0,通过逐位 相“与“的方法可以得到该地址的网络前缀
               * Subtopic
           * 2\) 将网络前缀都相同的连续IP地址组成“CIDR地址块七
             * 一个CIDR地址块可以表示很多 地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项 目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交 换,从而提高网络性能。
           * CIDR地址块中的地址数一定是2的整数次慕,实际可指派的地址数通常为2^n-2, N表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。
             * 网络前缀越短,其地址块所包含 的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
         * 最长前缀匹配(最佳匹配)
           * 使用CIDR时,路由表中的每个项目由“网络前缀”和“下一 跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具 有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。
         * CIDR查找路由表的方法
           * 为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表 存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二 叉线索C
  * 4.3.4 ARP、DHCP ICMP
    \*
    1. IP地址与硬件地址
       * IP地址是网络层使用的地址,它是分层次等级的。
       * 硬件地址是数据链路层使用的地址(如 MAC地址),它是平面式的。
       * 田于路由器的隔商,IP网络中无法通过厂播方式依靠MAC地址来完成跨网络的寻址,因此在IP网络的网络层只使用IP地址来完成寻址。
         * 寻址时,每个路由器依据其路由表选择到目标网络需要转发到的下一跳,而IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址。这样可以提高路由选择的效率。
    * 2.地址解析协议(ARP)
      * 无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所 以需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析协议(Addiess Resolution ProtocoL ARP)。
      * 从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。
      * ARP表
        * ARP高速缓存
        * 存放本局域网上各主机和路由器的IP 地址到MAC地址的映射表
        * 使用ARP来动态维护
      * 工作原理
        * 先在其ARP高速缓存中查看有无主机B的IP地址。
        * 如有,就可查出其对应的硬件地址,再 将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
        * 如果没有,那么就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,使同一个局域网里的所有主机收到ARP请求。
        * 主机B收到该ARP请求后,向主机A发出响应ARP分组,分 组中包含主机B的]IP与MAC地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后 按查询到的硬件地址发送MAC帧。
      * 4种典型情况总结
        * 1\)  发送方是主机时,要把IP数据报发送到本网络上的另一台主机。这时用ARP找到目的主 机的硬件地址。
        * 2\)  发送方是主机时,要把IP数据报发送到另一个网络上的一台主机。这时用ARP找到本网 络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。
        * 3\)  发送方是路由器时,要把IP数据报转发到本网络上的一台主机。这时用ARP找到目的主 机的硬件地址。
        * 4\)发送方是路由器时,要把IP数据报转发到另一个网络上的一台主机。这时用ARP找到木 网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成。
    * 3.动态主机配置协议(DHCP)
      * 常用于给主机动态地分配 IP地址,它提供了即插即用联网的机制
      * 允许一台计算机加入新的网络和获取IP地址 而不用手工参与。DHCP 是应用层协议,它是基于UDP 的。
      * 工作原理
        * 使用客户/服务器方式。
        * 需要IP地址的主机在启动时就向DHCP服 务器广播发送发现报文,这时该主机就成为DHCP客户。
        * 本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。
        * DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。
        * DHCP服务器的回答报文称为提供报文
      * 聚合DHCP客户端的交换过程
        * 1\) DHCP客户机广播“DHCP发现〃消息,试图找到网络中的DHCP服务器,以便从DHCP 服务器获得一个IP地址。
        * 2\) DHCP服务器收到“DHCP发现”消息后,向网络中广播“DHCP提供"消息,其中包括 提供DHCP客户机的IP地址和相关配置信息。
        * 3\) DHCP客户机收到“DHCP提供〃消息,如果接收DHCP服务器所提供的相关参数,那 么通过广播“DHCP请求乃消息向DHCP服务器请求提供IP地址。
        * 4\) DHCP服务器广播“DHCP确认〃消息,将IP地址分配给DHCP客户机。
      * 当DHCP客户机发出DHCP请求时,有可能收 到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。
      * DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时 间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器 自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求。
    * 1. 网际控制报文协议(ICMP)
         * 为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(mternet Control Message ProtocoL ICMP)来让主机或路由器报告差错和异常情况。
         * ICMP是IP层协议
         * 种类
           * ICMP差错报告报文
             * 用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况
             * 1\)  终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
             * 2\)  源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
             * 3\)  时间超过。当路由器收到生存时间( TTL) 为零的数据报时,除丢弃该数据报外,还要向 源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报 片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
             * 4\)  参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃 该数据报,并向源点发送参数问题报文。
             * 5\)  改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发 送给另外的路由器(可通过更好的路由)。
             * 不应发送ICMP差错报告报文的几种情况
               * 1\)  对ICMP差错报告报文不再发送ICMP差错报告报文。
               * 2\)  对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
               * 3\)  对具有组播地址的数据报都不发送ICMP差错报告报文。
               * 4\)  对具有特殊地址(如127.0.0.0或0.0.0.0) 的数据报不发送ICMP差错报告报文。
           * ICMP询问报文
             * 回送请求和回答报文
             * 时间戳请求和回答报文
             * 掩码地址请求和回答报文
             * 路由器询问和通告报文
         * 常见应用
           * 分组网间探测PING
             * PING使用了 ICMP回送请求和回答报文
             * PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDPO&#x20;
           * Traceroute
             * 使用了 ICMP时间超过报文
             * Traceroute/Tracert 工作在网络层
* 4.4 IPv6
  * 4.4.1 IPv6的主要特点
    * 解决IP地址耗尽问题的措施
      * 采用无类别编址CIDR
      * 采用网络地址转换(NAT) 方法以节省全球IP地址;
      * 采用具有更大地址空间的新版本 的IPv6。
    * 主要特点
      * 1\)  更大的地址空间。IPv6将地址从IPv4的32位增大到了 128位。IPv6的字节数( 16B) 是 IPv4字节数( 4B) 的平方。
      * 2\)  扩展的地址层次结构。
      * 3\)  灵活的首部格式。
      * 4\)  改进的选项。
      * 5\)  允许协议继续扩充。
      * 6\)  支持即插即用(即自动配置)。
      * 7\)  支持资源的预分配。
      * 8\)  IPv6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从 一般意义上说,IPv6不允许分片(不允许类似IPv4在路由分片)。
      * 9\)  IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。
      * 10\)  增大了安全性。身份验证和保密功能是IPv6的关键特征。
  * 4.4.2 IPv6 地址
    * IPv6数据报的目的地址可以是以下三种基本类型地址之一:
      * 1\) 单播。单播就是传统的点对点通信。
      * 1\) 单播。单播就是传统的点对点通信。
      * 2\)  多播。多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。
      * 3\)  任播。这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交 付其中的一台计算机,通常是距离最近的一台计算机。
    * 表示法
      * 每4位用一个十六进制数 表示,并用冒号分隔每 16 位,如 4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170。
      * 缩写成更紧凑的形式
        * 当16位域的开头有一些0时,可以采用一种缩写表 示法,但在域中必须至少有一个数字。例如,可以把地址4BF5:0000:0000:0000:BA5F:039A:000A:2176 缩写为 4BF5:0:0:0:BA5F:39A:A:2176。
        * 当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号缩写(::)。
          * 4BF5::BA5F:39A:A:2176。
    * 扩展了 IPv4地址的分级概念
      * 为了使路由器能够更快地查找路由。
        * 第一级(顶级)指明全球都知道 的公共拓扑;
        * 第二级(场点级)指明单个场点;
        * 第三级指明单个网络接口。
    * IPv4向IPv6过渡
      * 采用逐步演进的办法,同时还必须使新安装的IPv6系统能够向后兼容。&#x20;
      * IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
      * 两种策略:
        * 双协议栈技术
          * 双协议栈技术是指在一台设备上 同时装有IPv4和IPv6协议栈,那么这台设备既能和IPv4网络通信,又能和IPv6网络通信。
        * 隧道技术
          * 隧道技术是将整个IPv6数据报封装到 IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输。
* 4.5 路由协议
  * 4.5.1 自治系统
    * 单一技术管理下的一组路由器,这些路由器使用一种 AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的 路由选择协议来确定分组在AS之间的路由。
    * 一个自治系统内的所有网络都由一个行政单位(如一家公司、一所大学、一个政府部门等) 管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的。
  * 4.5.2 域内路由与域间路由
    * 自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择。
    * 两大类路由选择协议
      * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FSPEpDXcnrQ.png?alt=media\&token=b01c8a5e-3ce6-4e08-86b3-83eb9b3bf34e)
      * 1. 内部网关协议内 ( Interior Gateway Protocol， IGP)
           * 在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用 什么路由选择协议无关。
           * 使用得最多
             * RIP和OSPF
      * 1. 外部网关协议( External Gateway Protocol, EGP)
           * 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时(两个自治系 统可能使用不同的IGP),就需要使用一种协议将路由选择信息传递到另一个自治系统中。
           * 使用最多
             * BGP-4
  * 4.5.3 路由信息协议(RIP)
    * 内部网关协议( IGP) 中最先得到广泛 应用的协议。RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。
    * 1. RIP规定
         * 1\)  网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这是一组 距离,称为距离向量)。
         * 2\)  距离也称跳数( Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而 每经过一个路由器,距离(跳数)加1。
         * 3\)  RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径。
         * 4\)  RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离等于16时, 它表示网络不可达。
         * 5\)  RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自 动建立并维护路由表(动态维护)。
         * 6\)  在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但在 新的RIP2中,支持变长子网掩码和CIDRO
    * 1. RIP的特点
         * 1\)  仅和相邻路由器交换信息。
         * 2\)  路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表。
         * 3\)  按固定的时间间隔交换路由信息,如每隔30秒。
    * 1. 距离向量算法
         * 每个路由表项目都有三个关键数据:<目的网络N, 距离d, 下一跳路由器X〉。
         * 步骤
           * 1\)  对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳” 字段中的地址都改为X,并把所有“距离,'字段的值加lo
           * 2\)  对修改后的RIP报文中的每个项目,执行如下步骤:
             * 1 当原来的路由表中没有目的网络N时,把该项目添加到路由表中。
             * 2 当原来的路由表中有目的网络N，且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目。
             * 3 当原来的路由表中有目的网络N, 且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路中表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做。
           * 3\)  如果180秒(RIP默认超时时间为180秒)还没有收到相邻路由器的更新路由表,那么把 此相邻路由器记为不可达路由器,即把距离设置为16( 距离为16表示不可达)。
           * 4\)  返回。
         * 缺点
           * 1\)RIP限制了网络的规模,它能使用的最大距离为15 ( 16表示不可达)。
           * 2\)  路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。
           * 3\)  网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器), 俗称“坏消息传得慢与使更新过程的收敛时间长。
         * 特点
           * RIP是应用层协议,它使用UDP传送数据(端口 520) 0
           * RIP选择的路径不一定是时间最短 的,但一定是具有最少路由器的路径。因为它是根据最少的跳数进行路径选择的。
  * 4.5.4 开放最短路径优先(OSPF)协议
    * 1。 OSPF 协议的基本特点
      * 使用分布式链路状态路由算法的典型代表,也是内部网 关协议( IGP) 的一种。
      * 与RIP相比有以下4点主要区别:
        * 1\) OSPF向本自治系统中的所有路由器发送信息,这里使用的方法是洪泛法。而RIP仅向自己相邻的几个路由器发送信息。&#x20;
        * 2\)  发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分 信息。“链路状态”说明本路由器和哪些路由器相邻及该链路的“度量”(或代价)。而在 RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表。
        * 3\)  只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过 程收敛得快,不会出现RIP “坏消息传得慢〃的问题。而在RIP中,不管网络拓扑是否 发生变化,路由器之间都会定期交换路由表的信息。
        * 4\)  OSPF是网络层协议,它不使用UDP或TCP,而直接用IP数据报传送(其IP数据报首 部的协议字段为89) 。而RIP是应用层协议,它在传输层使用UDP。
      * OSPF还有以下特点
        * 1\)  OSPF对不同的链路可根据IP分组的不同服务类型( TOS) 而设置成不同的代价。因此, OSPF对于不同类型的业务可计算出不同的路由,十分灵活。
        * 2\)  如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。&#x20;
          * 这称为多路径间的负载平衡。
        * 3\)  所有在OSPF路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器 之间交换链路状态信息。
        * 4\)  支持可变长度的子网划分和无分类编址CIDRO
        * 5\)  每个链路状态都带上一个32位的序号,序号越大,状态就越新。
    * 2。 OSPF的基本工作原理
      * 由于各路由器之间频繁地交换链路状态信息,因此所有路由器最终都能建立一个链路状态数 据库。
      * 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(称为链路状态数据 库的同步)
      * 每个路由器根据这个全网拓扑结构图,使用Dijkstra最短路径算法计算从自己 到各目的网络的最优路径,以此构造自己的路由表。
        * 晏然使用Dijkstra 算法能计算出完整的最优路径;但路由表中不会存储完整路径,而 只存储“下一跳”(只有到了下一跳路由器,才能知道再下一跳应当怎样走)。
      * 当链路状态发生变化时,每个路由器 重新计算到各目的网络的最优路径,构造新的路由表。
    * 3。OSPF的五种分组类型
      * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FEGTt9_sSLL.png?alt=media\&token=536915d0-1de9-4d77-ba12-0d95e8aa9065)
      * 1\)  问候分组,用来发现和维持邻站的可达性。
        * 通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达。
      * 2\)  数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
      * 3\)  链路状态请求分组,向对方请求发送某些链路状态项目的详细信息。
      * 4\)  链路状态更新分组,用洪泛法对全网更新链路状态。
      * 5\)  链路状态确认分组,对链路更新分组的确认。
    * 区域
      * 为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围
      * 划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自 治系统,减少了整个网络上的通信量。
      * 在一个区域内部的路由器只知道本区域的完整网络拓扑, 而不知道其他区域的网络拓扑情况。
      * 这些区域也有层次之分。处在上层的域称为主干区域歹负责 正通其他下层的区域,并且还连接其他自治域。
  * 4.5.5 边界网关协议(BGP)
    * 是不同自治系统的路由器之间交换路由信息 的协议,是一种外部网关协议。
    * 常用于互联网的网关之间。
    * 路由表包含已知路由器 的列表、路由器能够达到的地址及到达每个路由器的路径的跳数。
    * BGP 的使用环境
      * 1\)  因特网的规模太大,使得自治系统之间路由选择非常困难。
      * 2\)  对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
      * 3\)  自治系统之间的路由选择必须考虑有关策略。
    * 只能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子), 而并非寻找一条最佳路由。
    * 采用的是路径向量路由选择协议
    * BGP是应用层协议,它是基于TCP的
    * 工作原理
      * 每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该 自治系统的“BGP发言人”。
        * 每个BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议,如OSPF或 RIPo
      * 一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息, 就要先建立TCP连接
      * 然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息。
      * 所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的 较好路由。
      * 一个BGP发言人交换路径向量的例子
        * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FowXwORL-iX.png?alt=media\&token=8c78de29-26a8-4ca9-9b67-58baeb7ee300)
    * 特点
      * 1\)  BGP交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少 很多。
      * 2\)  每个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之 间的路由选择不致过分复杂。
      * 3\)  BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及 到达该目的网络所要经过的各个自治系统序列。
      * 4\)  在RGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需在发生变化时更新有 变化的部分。
    * BGP-4 共使用4种报文
      * 1\) 打开(Open) 报文。用来与相邻的另一个BGP发言人建立关系。
      * 2\)  更新( Update) 报文。用来发送某一路由的信息,以及列出要撤销的多条路由。
      * 3\)  保活(Keepalive) 报文。用来确认打开报文并周期性地证实邻站关系。
      * 4\)  通知(Notification) 报文。用来发送检测到的差错。
* 4.6 IP组播
  * 4.6.1 组播的概念
    * 让源计算机一次发送的单个分组可以抵达用一个组地址标识 的若干目标主机,并被它们正确接收。
    * 组播一定仅应用于UDP,它对将报文同时送往多个接收者的应用来说非常重要。
    * 缘由
      * 有的应用程序要把一个分组发送给多个目的地主机
      * 不是让源主机给每 个目的地主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地 址标识一组地址。
    * IP组播也使用组播组的概念,每个组都有一个特别分配的地址,要给该组发送 的计算机将使用这个地址作为分组的目标地址。在IPv4中,这些地址在D类地址空间中分配, 而IPv6也有一部分地址空间保留给组播组。
    * 主机使用一个称为IGMP (因特网组管理协议)的协议加入组播组。
      * 使用该协议通知本 地网络上的路由器关于要接收发送给某个组播组的分组的愿望。
      * 通过扩展路由器的路由选择和转 发功能,可以在许多路由器互联的支持硬件组播的网络上面实现因特网组播。
    * 组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播 路由器。
  * 4.6.2 IP组播地址
    * IP组播使用D类地址格式。
      * D类地址的前四位是1110,因此D类地址范围是224.000〜 239.255255.255 o每个D类IP地址标志一个组播组。
    * 组播数据报和一般的IP数据报的区别是,前者使用D类IP地址作为目的地址,并且首部中 的协议字段值是2,表明使用IGMP。
    * 注意
      * 1\) 组播数据报也是“尽最大努力交付",不提供可靠交付。
      * 2\) 组播地址只能用于目的地址,而不能用于源地址。
      * 3\) 对组播数据报不产生ICMP差错报文。因此,若在PING命令后面键入组播地址,将永远 不会收到响应。
      * 4\)  并非所有的D类地址都可作为组播地址。
    * IP组播可以分为两种:
      * 一种只在本局域网上进行硬件组播;
      * 另一种则在因特网的范围内进行 组播。
        * 在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播 组的所有成员
    * 硬件组播
      * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2F-xrKN3DbYu.png?alt=media\&token=2c80a3f2-c1e3-47fa-af69-8ddb7bb511ea)
      * 硬件地址的映射关系不是唯一的,因此收到组播数据报的主机,还要在IP层利用软件进行过滤, 把不是本主机要接收的数据报丢弃。
      * 在每个地址中,只有23位可用作组播。这只能和D类IP地址中的23位有— —对应关系。D类 IP地址可供分配的有28位,可见在这28位中,前5位不能用来构成以太网的硬件地址,
      * IANA拥有的以太网组播地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF。
  * 4.6.3 IGMP与组播路由算法
    * 要使路由器知道组播组成员的信息,需要利用因特网组管理协议(Internet Group Management ProtocoL IGMP) 。
    * 连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作, 以便把组播数据报用最小代价传送给所有组成员,这就需要使用组播路由选择协议。
    * IGMP并不是在因特网范围内对所有组播组成员进行管理的协议。
    * IGMP不知道IP组播组包 含的成员数,也不知道这些成员分布在哪些网络上。
    * IGMP让连接到本地局域网上的组播路由器 知道本局域网上是否有主机参加或退出了某个组播组。
    * IGMP应视为TCP/IP的一部分,其工作可分为两个阶段。
      * 第一阶段:当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报 文,声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后,将组成员关系转发给因 特网上的其他组播路由器。
      * 第二阶段:因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机, 以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应,那么组播路由器就认 为这个组是活跃的。但一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成 员关系转发给其他的组播路由器。
    * 组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路 上只传送一次
      * 不同的多播组对应于 不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
    * 三种路由算 法
      * 第一种是基于链路状态的路由选择;
      * 第二种是基于距离-向量的路由选择;
      * 三种可以建立在 任何路由器协议之上,因此称为协议无关的组播( PIM)&#x20;
* 4.7移动IP
  * 4.7.1移动IP的概念
    * 是指移动结点以固定的 网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生 任何改变。
    * 目标是把分组自动地投递给移动结点。
    * 使用移动IP, 一个移动结点可以在不改变其IP地址 的情况下改变其驻留位置。
    * 三种功能实体
      * 1\)  移动结点。具有永久IP地址的移动结点。
      * 2\)  本地代理。在一个网络环境中,一个移动结点的永久“居所”被称为归属网络,在归属 网络中代表移动结点执行移动管理功能的实体称为归属代理(本地代理),它根据移动用 户的转交地址,采用隧道技术转交移动结点的数据包。
      * 3\)外部代理。在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理。
    * 移动IP技术使漫游的主机可以用多种方式连接到因特网, 移动IP的核心网络功能仍然是基于固定互联网中一直使用的各种路由选择协议,
  * 4.7.2 移动IP通信过程
    * 过程
      * 1\)  移动结点在本地网时,按传统的TCP/IP方式进行通信(在本地网中有固有的地址)。
      * 2\)  移动结点漫游到一个外地网络时,仍然使用固定的IP地址进行通信。
        * 为了能够收到通信 对端发给它的IP分组,移动结点需要向本地代理注册当前的位置地址,这个位置地址就 是转交地址
      * 3\)  本地代理接收来自转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给 移动结点的IP分组通过隧道送到转交地址处。
      * 4\)  在转交地址处解除隧道封装,恢复原始的IP分组,最后送到移动结点,这样移动结点在 外网就能够收到这些发送给它的IP分组。
      * 5\)  移动结点在外网通过外网的路由器或外部代理向通信对端发送IP数据包。
      * 6\)  移动结点来到另一个外网时,只需向本地代理更新注册的转交地址,就可继续通信。
      * 7\)  移动结点回到本地网时,移动结点向本地代理注销转交地址,这时移动结点又将使用传 统的TCP/IP方式进行通信。
    * 特点
      * 移动IP为移动主机设置了两个IP地址,即主地址和辅地址(转交地址)。移动主机在本地网 时,使用的是主地址。当移动到另一个网络时,需要获得一个临时的辅地址,但此时主地址仍然 不变。从外网移回本地网时,辅地址改变或撤销,而主地址仍然保持不变。
* 4.8 网络层设备
  * 4.8.1路由器的组成和功能
    * 任务：是连接不同的网络(连接异构网 络)并完成路由转发。
    * 功能：隔离广播域；互联广播域
    * 工作过程
      * 如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器。
      * 如果源主机和 目标主机不在同一个网络上,那么路由器按照转发表(路由表)指出的路由将数据报转发给下一 个路由器,这称为间接交付。
        * 网络通信 必须通过路由器进行转发。
    * 结构
      * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FHde8FN7Iug.png?alt=media\&token=9a097242-bb7c-4e81-845b-4191210ae87a)
      * 控制部分
        * 核心构件是路由选择处理机
        * 任务是根据 所选定的路由选择协议构造出路由表,同时经常或定期地和其他相邻路由器交换路由信息而不断 更新和维护路由表。
      * 分组转发
        * 输入端口在从物理 层接收到的比特流中提取出链路层帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相 反的操作。
        * 交换结构是路由器的关键部件,它根据转发表对分组进行处理,将某个输入端口进入 的分组从一个合适的输出端口转发出去。
        * 三种常用的交换方法
          * 通过存储器进行交换
          * 通过总 线进行交换
          * 通过互联网络进行交换
        * 一个存储转发设备实现了某个层次的功能
          * 可以互联两个在该层次上使 用不同协议的网段(网络)
          * 网桥实现了物理层和数据链路层,那么网桥可以互联两个物理 层和数据链路层不同的网段;
          * 中继器实现了物理层后,却不能互联两个物理层不同的网段,这 是因为中继器不是存储转发设备,它属于直通式设备。
    * 两个功能
      * 分组转发
        * 处理通过路由器的数据流，关键操作是转发表杳询、转发及相关的队列管理和任务调度等:
      * 路由计算
        * 通过和其他路由器进行基于 路由协议的交互,完成路由表的计算。
    * 路由器和网桥的重要区别是:
      * 网桥与高层协议无关,而路由器是面向协议的,它依据网络地 址进行操作,并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制等。
  * 4.8.2 路由表与路由转发
    * 路由表
      * 路由表是根据路由选择算法得出的,主要用途是路由选择。
      * 标准 的路由表有4个项目
        * 目的网络IP地址、子网掩码、下一跳IP地址、接口。
        * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FtIAgfZQg71.png?alt=media\&token=d4e5dfff-138f-4a8a-9dc5-38644ea51e4b)
    * 转发表
      * 转发表是从路由表得出的,其表项和路由表项有直接的对应关系。
      * 结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)
      * 含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际 为MAC地址)。
      * 可以使用一个默认路由代替所有具有相同“下一跳“ 的项目,并将默认路由设置得比其他项目的优先级低,
      * ![](https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FAFuture%2FLE1_30bcnZ.png?alt=media\&token=25c4b43e-7763-4c40-832e-6be7de828c36)
    * 转发和路由选择的区别
      * “转发〃是路由器根据转发表把收到的IP数据报从合适的端口 转发出去,它仅涉及一个路由器。
      * 而“路由选择"则涉及很多路由器,路由表是许多路由器协同 工作的结果。
