计算机网络 网络层(三)内外部网关协议

计算机网络(九)

学习计算机网络过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。

—— 网络层 ——

文章目录

  • 计算机网络(九)
    • —— 网络层 ——
  • 上接《计算机网络 网络层(二)》
      • 4. 网际控制报文协议 ICMP
        • 4.1 ICMP 报文的种类
          • 4.1.1 ICMP 差错报告报文共有 4 种
          • 4.1.2 ICMP 询问报文有两种
        • 4.2 ICMP 的应用举例
          • 4.2.1 PING (Packet InterNet Groper)
          • 4.2.2 Traceroute 的应用举例
      • 5. 互联网的路由选择协议
        • 5.1 有关路由选择协议的几个基本概念
          • 5.1.1 从路由算法的自适应性考虑
          • 5.1.2 分层次的路由选择协议
            • 5.1.3 自治系统 AS (Autonomous System)
          • 5.1.4 互联网有两大类路由选择协议
        • 5.2 内部网关协议 RIP
          • 5.2.1 RIP 协议的三个特点
          • 5.2.2 2. 距离向量算法
          • 5.2.3 RIP2 协议的报文格式
          • 5.2.4 RIP 协议的特点和优缺点
        • 5.3 内部网关协议 OSPF
          • 5.3.1 1. OSPF 协议的基本特点
          • 5.3.1 链路状态数据库 (link-state database)
          • 5.3.2 OSPF 的区域 (area)
          • 5.3.2 OSPF 的其他特点
          • OSPF 的五种分组类型
        • 5.4 外部网关协议 BGP
          • 5.4.1 BGP 协议的特点
          • 5.4.2 BGP-4 共使用四种报文
        • 5.5 路由器的构成
          • 5.5.1 路由器的结构
          • 5.5.2 “转发”和“路由选择”的区别
          • 5.5.3 输入端口对线路上收到的分组的处理
          • 5.5.4 交换结构
  • 后续内容查看《计算机网络 网络层(四)》

上接《计算机网络 网络层(二)》

计算机网络 网络层(二)》

4. 网际控制报文协议 ICMP

  • 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
  • ICMP 是互联网的标准协议。
  • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
  • 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。

计算机网络 网络层(三)内外部网关协议_第1张图片

4.1 ICMP 报文的种类
  • ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
  • ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型代码检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
4.1.1 ICMP 差错报告报文共有 4 种
  • 终点不可达
  • 时间超过
  • 参数问题
  • 改变路由(重定向)(Redirect)

ICMP 差错报告报文的数据字段的内容
计算机网络 网络层(三)内外部网关协议_第2张图片
不应发送 ICMP 差错报告报文的几种情况

  • 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
  • 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
  • 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
  • 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
4.1.2 ICMP 询问报文有两种
  • 回送请求和回答报文
  • 时间戳请求和回答报文

下面的几种 ICMP 报文不再使用:

  • 信息请求与回答报文
  • 掩码地址请求和回答报文
  • 路由器询问和通告报文
  • 源点抑制报文
4.2 ICMP 的应用举例
4.2.1 PING (Packet InterNet Groper)
  • PING 用来测试两个主机之间的连通性。
  • PING 使用了 ICMP 回送请求与回送回答报文。
  • PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

计算机网络 网络层(三)内外部网关协议_第3张图片

4.2.2 Traceroute 的应用举例
  • 在 Windows 操作系统中这个命令是 tracert。
  • 用来跟踪一个分组从源点到终点的路径。
  • 它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。

计算机网络 网络层(三)内外部网关协议_第4张图片

5. 互联网的路由选择协议

5.1 有关路由选择协议的几个基本概念
  • 理想的路由算法

    • 算法必须是正确的和完整的。
    • 算法在计算上应简单。
    • 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
    • 算法应具有稳定性。
    • 算法应是公平的。
    • 算法应是最佳的。
  • 不存在一种绝对的最佳路由算法。

  • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

  • 实际的路由选择算法,应尽可能接近于理想的算法。

  • 路由选择是个非常复杂的问题

  • 它是网络中的所有结点共同协调工作的结果。

  • 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

5.1.1 从路由算法的自适应性考虑
  • 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
  • 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
5.1.2 分层次的路由选择协议
  • 互联网采用分层次的路由选择协议。这是因为:
    • (1) 互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
    • (2) 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。
5.1.3 自治系统 AS (Autonomous System)
  • 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
  • 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略

计算机网络 网络层(三)内外部网关协议_第5张图片

5.1.4 互联网有两大类路由选择协议
  • 内部网关协议 IGP (Interior Gateway Protocol)
    • 在一个自治系统内部使用的路由选择协议。
    • 目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
  • 外部网关协议 EGP (External Gateway Protocol)
    • 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。
    • 在外部网关协议中目前使用最多的是 BGP-4。
      计算机网络 网络层(三)内外部网关协议_第6张图片
  • 内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。
  • 外部网关协议 EGP:目前使用的协议就是 BGP。
    计算机网络 网络层(三)内外部网关协议_第7张图片
5.2 内部网关协议 RIP
  • 工作原理
    • 路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。
    • RIP 是一种分布式的、基于距离向量的路由选择协议
    • RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

“距离”的定义

  • 从一个路由器到直接连接的网络的距离定义为 1。

  • 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。

  • RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。

  • 这里的“距离”实际上指的是“最短距离”。

  • RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。

  • RIP 允许一条路径最多只能包含 15 个路由器。

  • “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。

  • RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

5.2.1 RIP 协议的三个特点
  • (1) 仅和相邻路由器交换信息。
  • (2) 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  • (3) 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
5.2.2 2. 距离向量算法
  • 路由器收到相邻路由器(其地址为 X)的一个 RIP 报文:

    • 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
    • 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
    若项目中的目的网络不在路由表中,则把该项目加到路由表中。
        	 否则
          	   	若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
          	      	否则 
        	            	若收到项目中的距离小于路由表中的距离,则进行更新,
       	       否则,什么也不做。
    
    • 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
  • 距离向量算法的基础就是 Bellman-Ford 算法(或 Ford-Fulkerson 算法)。

  • 这种算法的要点是这样的:
    设X是结点 A 到 B 的最短路径上的一个结点。
    若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。

5.2.3 RIP2 协议的报文格式

计算机网络 网络层(三)内外部网关协议_第8张图片

  • RIP2 报文由首部和路由部分组成。
  • RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
  • 路由标记填入自治系统的号码,这是考虑使RIP 有可能收到本自治系统以外的路由选择信息。
  • 再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
  • 一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是4  20  25  504 字节。如超过,必须再用一个 RIP 报文来传送。
  • RIP2 具有简单的鉴别功能
    • 若使用鉴别功能,则将原来写入第一个路由信息(20字节)的位置用作鉴别。
    • 在鉴别数据之后才写入路由信息,但这时最多只能再放入 24 个路由信息。
5.2.4 RIP 协议的特点和优缺点
  • RIP协议特点:好消息传播得快,坏消息传播得慢
  • RIP存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。
  • 优点:
    • 实现简单,开销较小。
  • 缺点:
    • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
    • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
    • “坏消息传播得慢”,使更新过程的收敛时间过长。
5.3 内部网关协议 OSPF
  • 开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在1989年开发出来的。
  • OSPF 的原理很简单,但实现起来却较复杂。
5.3.1 1. OSPF 协议的基本特点
  • “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF
  • 采用分布式的链路状态协议 (link state protocol)。
  • 注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。

三个要点:

  • 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法
  • 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
  • “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
  • 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
5.3.1 链路状态数据库 (link-state database)
  • 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
  • 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
  • OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。
  • OSPF 的更新过程收敛得快是其重要优点。
5.3.2 OSPF 的区域 (area)
  • 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域
  • 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
  • 区域也不能太大,在一个区域内的路由器最好不超过 200 个。

OSPF 划分为两种不同的区域
计算机网络 网络层(三)内外部网关协议_第9张图片

  • OSPF 不用 UDP 而是直接用 IP 数据报传送。
  • OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
  • 数据报很短的另一好处是可以不必将长的数据报分片传送。
  • 但分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
5.3.2 OSPF 的其他特点
  • OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
  • 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡。
  • 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
  • 支持可变长度的子网划分和无分类编址 CIDR。
  • 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
  • OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
  • 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多
  • OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
OSPF 的五种分组类型

计算机网络 网络层(三)内外部网关协议_第10张图片

  • 类型1,问候 (Hello) 分组。
  • 类型2,数据库描述 (Database Description) 分组。
  • 类型3,链路状态请求 (Link State Request) 分组。
  • 类型4,链路状态更新 (Link State Update) 分组,
    用洪泛法对全网更新链路状态。
  • 类型5,链路状态确认 (Link State Acknowledgment)
    分组。

OSPF 的基本操作

计算机网络 网络层(三)内外部网关协议_第11张图片

5.4 外部网关协议 BGP
  • BGP 是不同自治系统的路由器之间交换路由信息的协议。

  • BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278。

  • 可以将 BGP-4 简写为 BGP。

  • 互联网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。

  • 当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。

  • 比较合理的做法是在 AS 之间交换“可达性”信息。

  • 自治系统之间的路由选择必须考虑有关策略。

  • 因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

发言人:

  • 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” (BGP speaker) 。
  • 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。

BGP 交换路由信息:

  • 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
  • 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。
  • 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站(neighbor)对等站(peer)
    计算机网络 网络层(三)内外部网关协议_第12张图片
5.4.1 BGP 协议的特点
  • BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
  • 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
  • BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
  • 在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处
5.4.2 BGP-4 共使用四种报文
  • (1) 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。
  • (2) 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
  • (3) 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
  • (4) 通知 (NOTIFICATION) 报文,用来发送检测到的差错。

计算机网络 网络层(三)内外部网关协议_第13张图片

5.5 路由器的构成
  • 路由器是一种典型的网络层设备。
  • 路由器是互联网中的关键设备。
  • 路由器的主要作用是:
    • 连通不同的网络。
    • 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。
5.5.1 路由器的结构
  • 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
  • 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
  • 路由器的转发分组正是网络层的主要工作。
    计算机网络 网络层(三)内外部网关协议_第14张图片
  • 整个的路由器结构可划分为两大部分:
    • 路由选择部分
    • 分组转发部分
  • 路由选择部分
    • 也叫作控制部分,其核心构件是路由选择处理机。
    • 路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
  • 分组转发部分:
    • 交换结构 (switching fabric):又称为交换组织,其作用是根据转发表 (forwarding table) 对分组进行处理。
    • 一组输入端口
    • 一组输出端口
      (请注意:这里的端口就是硬件接口)
5.5.2 “转发”和“路由选择”的区别
  • 转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
  • 路由选择”(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
  • 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
  • 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。
5.5.3 输入端口对线路上收到的分组的处理
  • 路由器的输入端口里面装有物理层、数据链路层和网络层的处理模块。
  • 数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。
  • 输入端口中的查找和转发功能在路由器的交换功能中是最重要的

计算机网络 网络层(三)内外部网关协议_第15张图片

5.5.4 交换结构
  • 交换结构是路由器的关键构件。
  • 正是这个交换结构把分组从一个输入端口转移到某个合适的输出端口。
  • 实现交换有多种方法。常用交换方法有三种:
    • 通过存储器
    • 通过总线
    • 通过纵横交换结构

通过存储器

  • 当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。
  • 路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。
  • 若存储器的带宽(读或写)为每秒 M 个分组,那么路由器的交换速率(即分组从输入端口传送到输出端口的速率)一定小于 M/2。

通过总线

  • 数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。
  • 因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。
  • 现代的技术已经可以将总线的带宽提高到每秒吉比特的速率,因此许多的路由器产品都采用这种通过总线的交换方式。

通过纵横交换结构 ( crossbar switch fabric)

  • 这种交换结构常称为互连网络 (interconnection network)。
  • 它有2N条总线,可以使N个输入端口和N个输出端口相连接。
  • 当输入端口收到一个分组时,就将它发送到与该输入端口相连的水平总线上。
  • 若通向所要转发的输出端口的垂直总线是空闲的,则在这个结点将垂直总线与水平总线接通,然后将该分组转发到这个输出端口。
  • 但若该垂直总线已被占用(有另一个分组正在转发到同一个输出端口),则后到达的分组就被阻塞,必须在输入端口排队。

计算机网络 网络层(三)内外部网关协议_第16张图片

后续内容查看《计算机网络 网络层(四)》

《计算机网络 网络层(四)》

你可能感兴趣的:(计算机网络基础,路由器,网络,网关)