# 路由器

:Router 。

  • 工作在网络层。
  • 路由器可以通过转换下面两层的协议、转发 IP 数据包,将不同类型的局域网连接起来,还可以让局域网连接到广域网。
  • 路由器可以通过多个端口连接多个网络,每个端口都会被分配独立的 IP 地址。

# 基本职责

  • 路由选择:是指路由器接收到一个数据包后,在路由表中查找通往目的 IP 地址的目的端口和下一跳路由器的 IP 地址。
  • 分组转发:分为直接转发和间接转发两种。
    • 当源主机和目的主机位于同一个网段时路由器将 IP 分组直接转发给目的主机,否则转发给下一跳路由器,由它间接转发。
    • 分组转发的第一步是把下一跳路由器的 IP 地址解析成 MAC 地址,然后把 IP 分组的目的 MAC 地址改为该地址,在数据链路层进行转发。所以 IP 分组在转发时目的 MAC 地址总在变化(每经过一跳路由器就改一次源 MAC 地址和目的 MAC 地址,但经过交换机等下层设备时 MAC 地址不变),而目的 IP 地址保持不变。

# 路由表

  • 路由表中的主要几列信息:目的 IP 地址、目的地址所连接的端口号、下一跳路由器的 IP 地址、缺省路由。
  • 缺省路由是一条特殊的静态路由,指向该路由器的缺省网关。当路由表中查找不到某个数据包的路由时,就把该数据包转发给缺省网关,由它选择路由。
    • 缺省路由的 IP 地址和子网掩码全为 0 ,用 IPv4 地址表示是 0/0 ,用 IPv6 地址表示是::/0 。
  • 路由规则的分类:
    • 静态路由:由用户手动设置。
    • 动态路由:由路由器自动建立和维护。
      • 静态路由的优先级最高,当动态路由与静态路由冲突时,路由器会优先采用静态路由。

# 路由选择算法

路由选择算法是路由选择的核心,用于生成路由表。分类如下:

  • 静态路由选择算法:计算量小,灵活性差。有固定路由法、最短路径法、随机路径法、扩散路径法等。
  • 动态路由选择算法:又称为自适应路由选择算法,能根据网络拓扑结构和通信量的变化改变路由,计算量大,灵活性好。常见的几种:
    • 距离矢量算法
      • :选出距离矢量最短的路径作为最优路径。
      • 各个路由器把自己路由表中改变的路由发送到相邻的路由器,所有路由器的路由表会逐渐趋于统一。
      • 每条路由以(距离,方向)的矢量格式发送,例如(5 ,RouterA)表示到路由器 A 还有 5 跳的距离。
      • 收敛速度慢,计算量小,适用于小型网络。
    • 链路状态算法
      • :又称为最短路径算法。用结点表示路由器,用边表示路由器之间的物理链路,选出最小代价的链路作为最优路径(链路的代价主要由带宽决定)。
      • 各个路由器把链路状态分组 LSP(包括自身所连接的链路状态、链路费用、链路两端的路由器等信息)发送到相邻的路由器,使得每个路由器都知道整个网络的拓扑结构,可以建立以该路由器为根、通往其它路由器的生成树,从而独自计算出路由表。
      • 收敛速度快,当网络结构发生变化时能更快地改变路由表,计算量大,适用于大型网络。
    • 混合型路由算法

# 动态路由协议

  • 动态路由协议能在网络的状态变化时自动改变路由表。
  • 自治系统(Autonomous system ,AS):指由某个组织管理的某个网络,包含一组 IP 地址和路由器。
    • 互联网中的各个 AS 采用内部网关协议自治,而 AS 之间采用外部网关协议进行路由。
  • 内部网关协议(Interior Gateway Protocol ,IGP)
    • 路由信息协议(RIP)
      • :比较简单,根据跳数选择最优路径,最多支持 15 跳的距离。每隔 30 秒广播一次路由信息,容易造成广播风暴。
    • 开放最短路径优先协议(OSPF)
      • :将网络分成多个区域,不同区域之间不传递 LSP ,从而减少路由器的负担。
      • 使用 IP 协议传递 LSA(链路状态通告)。
    • IGRP
      • :专用于 CISCO 路由器,其增强版为 EIGRP 。
  • 外部网关协议(Exterior Gateway Protocol ,EGP)
    • 边界网关协议(Border Gateway Protocol ,BGP)
      • 属于应用层协议,默认监听 TCP 179 端口。
      • 可以在 AS 之间通告路由信息,根据某个策略来更新本地的路由表。
      • 在目前的互联网很常用。
      • RIP、IGRP、EIGRP、BGP 都采用距离矢量算法,而 OSPF 采用链路状态算法。

# 访问控制列表

:Access Control List(ACL),用于对通过路由器端口的 IP 数据包进行过滤。