当前位置: 首页 > news >正文

【TCP/IP】7. IP 路由

7. IP 路由

  • 7. IP 路由
    • 概述
    • 7.1 直接传递与间接传递
    • 7.2 IP 路由核心机制
    • 7.3 路由表
      • 7.3.1 路由表的构成
      • 7.3.2 信宿地址采用网络地址的好处
      • 7.3.3 下一跳地址的优势
      • 7.3.4 特殊路由表项
      • 7.3.5 路由算法
    • 7.4 静态路由
      • 7.4.1 特点
      • 7.4.2 自治系统(AS)
      • 7.4.3 配置命令
      • 7.4.4 问题
    • 7.5 动态路由
      • 7.5.1 路由算法分类
      • 7.5.2 路由协议分类
    • 本章要点

7. IP 路由

概述

IP 路由(路由选择)是为数据报从信源到信宿寻找最佳 / 较佳路径的过程,核心依据是网络拓扑结构,通过路由表实现。路由表存在于主机和路由器中,反映局部网络拓扑,其使用频率远高于刷新频率(路由表由 IP 模块使用,由路由协议负责建立和刷新)。

7.1 直接传递与间接传递

数据报从信源到信宿的传递分为两种方式:

  • 直接传递:数据报直接发送到最终信宿(信源与信宿位于同一物理网络)。
  • 间接传递:信源与信宿位于不同物理网络,数据报需经过中间路由器转发(由多个中间传递组成)。

关系:完整的数据传递过程由 “1 次直接传递 + 0~ 多次间接传递” 构成。

7.2 IP 路由核心机制

  • 路由选择依据:网络拓扑结构(抽象为 “点 - 线” 模型:点表示路由器,线表示网络)。
  • 表驱动路由:主机和路由器均通过路由表进行路由选择,路由表反映局部网络拓扑,所有路由表的集合反映整体拓扑。
  • 路由表操作:
    • 使用:IP 模块根据数据报目的 IP 地址和路由表选择下一跳(高频操作,每秒可达数百次)。
    • 建立与刷新:由专门的路由协议负责(低频操作,每隔十秒至数十秒一次)。
  • 路由表维护:ICMP 可对主机路由表进行重定向;动态路由协议(如 OSPF)负责动态刷新路由表,确保其及时反映网络结构变化。

7.3 路由表

路由表是主机和路由器中反映网络拓扑的数据集,核心功能是指明去往某信宿的路径,由多个字段构成。

7.3.1 路由表的构成

路由表为二维表,每个表项包含以下核心字段:

字段含义
信宿地址通常为目标网络的 IP 地址(而非单主机地址,减小路由表规模)。
子网掩码用于提取数据报目的 IP 地址对应的网络地址(与目的 IP “与” 操作后匹配信宿地址)。
下一跳地址数据报通往信宿的 “下一步” 地址(可为路由器 IP 或本地接口,将多个路由器串联成完整路径)。
输出接口路由器发送数据报的接口 IP 地址。
度量衡量路径优劣的指标(通常为跳数,即途经路由器数量,取最小值)。

7.3.2 信宿地址采用网络地址的好处

  1. 减小路由表规模:网络数量远少于主机数量,简化表结构。
  2. 匹配网络抽象结构:抽象拓扑中仅关注网络,不关注单主机。
  3. 增强适应性:主机增减不影响路由表(信息隐藏)。
  4. 降低开销:减少路由表维护和路由选择的计算量。

7.3.3 下一跳地址的优势

  • 路由表中仅存储 “下一跳” 而非完整路径,可:
    1. 大幅减小路由表规模;
    2. 消除路径冗余信息;
    3. 简化路由表维护。

7.3.4 特殊路由表项

  1. 特定主机路由
    • 信宿地址为单主机 IP,子网掩码为255.255.255.255
    • 用途:为特定主机指定特殊路径(如安全性测试、网络管控)。
  2. 默认路由
    • 信宿地址和子网掩码均为0.0.0.00.0.0.0/0)。
    • 用途:当路由表中无匹配的网络 / 主机地址时,默认使用此路径(通常指向自治系统外的出口路由器)。
    • 限制:一个路由表最多只能有一条默认路由。

7.3.5 路由算法

IP 模块根据数据报目的 IP 地址和路由表选择路径的步骤:

  1. 提取数据报目的 IP 地址;
  2. 将路由表中各表项的子网掩码与目的 IP 进行 “与” 操作,得到目标网络地址;
  3. 匹配规则:
    • 优先匹配特定主机路由(最长掩码匹配原则);
    • 其次匹配网络地址
    • 若均不匹配,使用默认路由
    • 若无默认路由,丢弃数据报并发送 “网络不可达” ICMP 差错报告。

7.4 静态路由

静态路由是通过手工配置建立和维护路由表的方式,适用于小型、拓扑稳定的网络。

7.4.1 特点

  • 路由器初始仅知晓直连网络,非直连网络需手工添加路由表项;
  • 路由表为本地文件,网络结构变化时需人工调整。

7.4.2 自治系统(AS)

  • 定义:由独立管理机构控制的一组网络和路由器的集合,内部拓扑、路由机制自主选择。
  • 静态路由应用:自治系统内网络需手工添加到路由表,去往外部的网络通过默认路由转发。

7.4.3 配置命令

  • Windows 系统route命令):
    • 添加:route add 目的网络 mask 子网掩码 下一跳 [metric 度量]
    • 删除:route delete 目的网络 mask 子网掩码
    • 显示:route print
    • 选项:-p(重启后保留路由)。
  • Cisco 路由器
    • 添加:ip route 目的网络 子网掩码 下一跳/出口接口
    • 删除:no ip route 目的网络 子网掩码 下一跳/出口接口
    • 显示:show ip route

7.4.4 问题

  • 大型网络中手工配置工作量极大;
  • 无法动态适应网络拓扑变化(如链路故障);
  • 可能产生冗余路径,增加管理复杂度。

7.5 动态路由

动态路由通过路由协议自动建立和维护路由表,适用于大型、拓扑动态变化的网络。核心原则是 “最短路径优先”(以跳数、时延等为度量)。

7.5.1 路由算法分类

  1. 距离 - 向量算法(V-D 算法)
    • 思想:路由器周期性向相邻路由器广播 “(信宿,距离)” 序偶(V 为信宿,D 为跳数),根据最短路径优先原则刷新路由表。
    • 优点:简单易实现。
    • 缺点:收敛速度慢(网络变化后,所有路由器同步拓扑信息耗时久);信息交换量大(每次广播近完整路由表)。
  2. 链路 - 状态算法(L-S 算法 / SPF 算法)
    • 思想:路由器通过 “链路状态通告(LSA)” 交换邻接链路状态,构建全局拓扑图,使用 Dijkstra 算法生成以自身为根的最短路径树(SPF 树),再构造路由表。
    • 优点:收敛速度快(局部变化仅扩散相关信息);信息交换量小(仅广播链路状态变化)。

7.5.2 路由协议分类

动态路由协议分为内部网关协议(IGP)(自治系统内)和外部网关协议(EGP)(自治系统间)。

1. 路由信息协议(RIP)—— IGP,基于距离 - 向量算法

  • 核心机制:以跳数为度量(1 跳 = 1 个路由器),最大有效跳数为 15(16 表示不可达)。
  • 解决的问题
    • 路由环路:限制最大跳数为 15,避免无限循环。
    • 相同距离路径:先入为主(保留首次收到的路径)。
    • 失效路径:为路由表项设定时器(180 秒无更新则标记为 “不可达”,120 秒后删除)。
    • 慢收敛(计数到无穷):
      • 水平分割 + 毒性逆转:从某接口收到的路由信息,再从该接口发出时将距离设为 16(不可达),避免环路。
      • 触发刷新:网络变化时立即广播更新,加速收敛。
  • RIPv1 与 RIPv2 的对比
特性RIPv1RIPv2
子网支持不支持(无子网掩码字段)支持(含子网掩码字段,兼容 VLSM 和 CIDR)
鉴别机制支持(明文口令 / 加密鉴别)
通告方式广播(255.255.255.255)组播(224.0.0.9)
报文格式无路由标记、下一跳字段含路由标记(区分路由源)、下一跳字段
  • 报文与封装:
    • 报文类型:请求(类型 1)、响应(类型 2),响应报文含多个(信宿,距离)序偶。
    • 封装:UDP 数据报(端口 520),最大报文长度 504 字节(含 25 个路由项)。

2. 开放最短路径优先(OSPF)—— IGP,基于链路 - 状态算法

  • 核心机制:自治系统划分为区域(减少路由信息量),主干区域(0.0.0.0)连接所有区域,边界路由器汇总区域信息。路由器通过 LSA 交换链路状态,构建链路状态数据库(LSDB),生成 SPF 树,再构造路由表。
  • 关键特性
    1. 支持服务类型路由(根据数据报 TOS 字段选择路径)。
    2. 可为接口指派费用(基于吞吐率、时延等,影响路径选择)。
    3. 负载均衡(相同费用的路径平均分配流量)。
    4. 层次化结构(区域隐藏内部拓扑,支持大规模网络)。
    5. 支持多种鉴别机制(不同区域可采用不同方式)。
    6. 组播通告(减少无关主机开销)。
  • 报文类型
    • 共 5 种,均含 24 字节标准首部(版本、类型、长度等):
      1. Hello 分组(类型 1):发现 / 维护邻机关系,周期发送。
      2. 数据库描述分组(类型 2):交换 LSDB 概要,同步拓扑信息。
      3. 链路状态请求分组(类型 3):请求缺失的 LSA 细节。
      4. 链路状态更新分组(类型 4):泛洪 LSA(核心报文)。
      5. 链路状态确认分组(类型 5):确认 LSA 接收,保证可靠性。
  • 封装:直接封装在 IP 数据报中(协议字段 = 89)。

3. 增强型内部网关路由协议(EIGRP)—— IGP,Cisco 私有

  • 核心机制:结合距离 - 向量和链路 - 状态特性,使用扩散更新算法(DUAL) 计算路由。
  • 路由表结构
    • 邻机表:存储邻机状态信息。
    • 拓扑表:存储可行后继路由(备用次佳路由)。
    • 路由表:存储后继路由(最佳路由,用于转发)。
  • 报文类型
    • Hello:发现 / 维护邻机关系。
    • Update:发送路由更新信息。
    • Query:路由失效且无备用路由时,向邻机查询。
    • Reply:响应 Query 报文。
    • Ack:确认收到报文(通过其他报文承载,或单播 Hello 报文)。
  • 封装:直接封装在 IP 数据报中(协议字段 = 88)。

4. 边界网关协议(BGP)—— EGP,基于路径 - 向量算法

  • 核心机制:用于自治系统间交换路由信息,路径以 “自治系统号(ASN)序列” 表示,支持基于策略的路由(考虑政治、经济、安全等因素)。
  • 报文类型
    1. 打开报文(类型 1):建立邻机关系(TCP 连接建立后发送)。
    2. 更新报文(类型 2):通告新路由或删除无效路由(核心报文)。
    3. 保持活动报文(类型 3):定期发送,维持邻机连接。
    4. 通告报文(类型 4):报告错误或关闭连接。
  • 封装:通过 TCP 传输(端口 179),保证可靠性。
  • 防环机制:路由更新时,若路径中已包含本地 ASN,则拒绝该路径。

本章要点

  • 数据传递分为直接传递(同一网络)和间接传递(跨网络,经路由器转发)。
  • 路由表是路由选择的核心,含信宿地址、子网掩码、下一跳、输出接口、度量,特殊表项包括特定主机路由(255.255.255.255)和默认路由(0.0.0.0/0)。
  • 静态路由手工配置,适用于小型稳定网络;动态路由通过协议自动维护,适用于大型动态网络。
  • 路由算法分为距离 - 向量(如 RIP)和链路 - 状态(如 OSPF),前者简单但收敛慢,后者复杂但收敛快。
  • 主要路由协议:
    • RIP(IGP,V-D 算法,跳数度量,适用于小型网络);
    • OSPF(IGP,L-S 算法,区域划分,适用于大规模网络);
    • EIGRP(Cisco 私有 IGP,DUAL 算法,复合度量);
    • BGP(EGP,路径 - 向量算法,AS 间路由,支持策略路由)。
http://www.dtcms.com/a/272687.html

相关文章:

  • xml 知识总结: xsd,xsi:schemaLocation,xmlns,xmlns:xsi
  • SpringBoot系列—MyBatis(xml使用)
  • codeforeces Round1032 - Round 1036
  • 【node后端】搭建项目(Express+Ts+Typeorm+Mysql一步到位)
  • 深入浅出 Python Asynchronous I/O:从 asyncio 入门到实战
  • Arc Institute提出首个AIVC虚拟细胞模型STATE
  • 上海交大医学院张维拓老师赴同济医院做R语言训练营培训
  • 从Debug中学习MiniGPT4
  • 在Vue中如何对组件进行销毁在进行挂载
  • 模型训练之数据标注-Labelme的使用教程
  • 5款工具高效制作插图,PPT设计新选择!
  • 货车车架和悬架设计cad【7张】+设计说明书
  • leetcode 3440. 重新安排会议得到最多空余时间 II 中等
  • 《PyQt6-3D:开启Python 3D编程新世界 2》
  • 【TCP/IP】8. 传输层协议
  • hive小文件问题
  • 二层环路避免-STP技术
  • Linux【大数据运维】下制作Redis绿色免安装包(一)
  • 企业网络安全的“金字塔”策略:构建全方位防护体系的核心思路
  • upload-labs靶场通关详解:第20关 /.绕过
  • 以下哪种类型在Golang中不是内置类型?
  • zookeeper etcd区别
  • Keepalived+LVS实现LNMP网站的高可用部署
  • 登录为图片验证时,selenium通过token直接进入页面操作
  • Java 导出word 实现饼状图导出--可编辑数据
  • CIEDE2000 色差公式C++及MATLAB实现
  • 【零基础学AI】第35讲:策略梯度方法 - 连续控制任务实战
  • Swift 图论实战:DFS 算法解锁 LeetCode 323 连通分量个数
  • 快速搭建服务器,fetch请求从服务器获取数据
  • ReentrantLock 与 Synchronized 的区别