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

《TCP/IP详解 卷1:协议》之第九章:IP选路

目录

一、IP选路之IP层工作流程

二、选路原理

三、路由表中的五种不同的标志(flag)

四、路由表的初始化

1、静态路由表初始化

①、手动配置

②、默认网关配置

2、动态路由表初始化

①、路由协议的作用

②、直接连接网络的自动发现

五、没有到达目的地的路由

六、ICMP重定向差错

七、ICMP路由器发现报文


一、IP选路之IP层工作流程

IP层工作流程如下图所示:

1、当收到一个IP分组后,送到IP输入队列,在不考虑指定源站选路的情况下,会判断IP地址是不是为本机地址或者广播地址,如果是则送入本机的上层协议栈(如TCP、UDP)进行处理;如果不是则送入转发处理模块处理,根据路由决策判断是否进行相应的转发。

如果收到的是 ICMP IP重定向,则更新路由表中的路由策略。

二、选路原理

搜索路由表的基本操作为:

1、搜索匹配的主机地址;

2、搜索匹配的网络地址;

3、搜索默认表项;

值得一提的是,IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。

IP执行选路机制,而路由守护程序则一般提供选路策略。

三、路由表中的五种不同的标志(flag)

五种标志代表的含义:

U:该路由可以使用。
G:该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。
H:该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
D:该路由是由重定向报文创建的。
M:该路由已被重定向报文修改。

特别地对G、H这两种标志进行补充说明。

1、当设置了G标志时,说明这是一个间接路由。采用这一项路由的分组其IP地址是最终的目的,但是其链路层地址必须对应于路由器IP地址。

2、当设置了H标志时,表明目的地址是一个完整的主机地址。(而不是一个网络地址)

四、路由表的初始化

1、静态路由表初始化

①、手动配置

网络管理员根据网络拓扑结构和需求,手动输入路由信息到路由表中。这种方式适用于网络结构相对简单且稳定的情况。

②、默认网关配置

在计算机或一些简单的网络设备上,通常会配置一个默认网关地址。默认网关可以看作是一种特殊的静态路由。

例如,在一个家庭网络环境中,计算机的网络设置中会指定一个默认网关地址,通常是路由器的IP地址。当计算机要访问外部网络(如互联网)时,它会将数据包发送到默认网关。默认网关会根据自己的路由表来转发数据包。

在计算机的路由表中,会有一条默认路由(目标网络为0.0.0.0/0,下一跳为默认网关地址),指示所有未知目的地的数据包都发送到默认网关。

2、动态路由表初始化

①、路由协议的作用

动态路由表是通过运行路由协议自动构建的。常见的路由协议有RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、BGP(Border Gateway Protocol)等。这些协议可以让路由器之间自动交换路由信息,从而动态地更新路由表。

②、直接连接网络的自动发现

当路由器的接口被激活并且配置了IP地址后,路由器会自动将直接连接的网络添加到路由表中。
例如,路由器的一个接口被配置为192.168.1.1/24,那么这个路由器会自动在路由表中添加一条直连路由,目标网络为192.168.1.0/24,接口为该接口。这是因为路由器可以通过本地接口直接访问这个子网,无需通过其他路由器转发。

五、没有到达目的地的路由

当没有到达目的地的路由时,会返回一个ICMP差错报文。

1、当数据报是由本地主机产生的,那么就给发送该数据报的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。

2、如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文。

六、ICMP重定向差错

ICMP重定向报文是ICMP的一种消息类型,用于优化网络路径。当一个路由器发现数据包可以通过另一条更优的路径到达目的地时,它会向发送数据包的主机发送ICMP重定向报文,提示主机更新其路由表,从而直接使用更优路径。

①、ICMP重定向报文格式如下

字段长度(字节)含义
类型(Type)1ICMP消息类型,值为5,表示重定向报文
代码(Code)1

重定向的具体类型:

0 = 对网络重定向

1 = 对主机重定向

2 = 对服务类型和网络重定向

3 = 对服务类型和主机重定向

校验和(Checksum)2用于检验ICMP报文的完整性和正确性
网关地址(Gateway Internet Address)4新的下一跳地址,即建议主机使用的更优网关地址
原始IP头和数据部分前64比特(8字节)可变包含触发重定向的原始IP数据报的IP头和数据部分的前64比特,用于主机匹配和识别
  • 类型(Type):固定为5,表示这是一个ICMP重定向报文。

  • 代码(Code):根据重定向的范围和对象不同,分为对网络、对主机、对服务类型和网络、对服务类型和主机的重定向。

  • 网关地址(Gateway Internet Address):这是ICMP重定向报文的核心字段,告诉发送方主机一个新的、更优的下一跳地址。

  • 原始IP头和数据部分前64比特:这部分信息用于帮助主机识别是哪个数据报触发了重定向,以便正确更新路由表。

注:ICMP重定向报文的接收者必须查看三个IP地址

1、从原始IP头获取得到的:源 IP 地址

2、从原始IP头获取得到的:目的 IP 地址

3、从网关地址获取得到的:新的下一跳 IP 地址

七、ICMP路由器发现报文

ICMP路由器发现(Router Discovery)报文是基于ICMP协议的一种机制,用于主机发现网络中的默认网关(路由器)。它有两种主要类型的报文:路由器通告(Router Advertisement) 和 路由器请求(Router Solicitation)。

  • IPv4路由器发现:虽然IPv4中定义了路由器发现机制,但在实际应用中,大多数主机通过静态配置或DHCP获取默认网关。

  • IPv6路由器发现:IPv6中,路由器发现是邻居发现协议的一部分,广泛应用于无状态地址自动配置(SLAAC)和默认网关发现。

http://www.xdnf.cn/news/3344.html

相关文章:

  • 湖仓一体化介绍
  • 数据库基本概念:数据库的定义、特点、分类、组成、作用
  • 详解TypeScript中的类型断言及其绕过类型检查机制
  • 【Vue bug】:deep()失效
  • 如何提升自我执行力?
  • 拆解 browser-use 项目——深入理解 Agent 层
  • Linux 环境下 Mysql 5.7 数据定期备份
  • Kotlin-运算符重载函数
  • 生产级RAG系统一些经验总结
  • HTN77A0原理图提供聚能芯半导体禾润一级代理技术支持免费送样
  • 1295.统计位数为偶数的数字
  • SWIG 和 JNA / JNI 等 C 接口封装工具及进行 C 接口的封装
  • AnimateCC基础教学:二次贝塞尔曲线的绘制。
  • Android 动态权限申请
  • 多通道经颅电刺激器的主流厂家介绍
  • hadoop集群建立
  • 【keil使用】无法打开keil工程,只有空白界面的解决方法
  • rk3568安全启动功能实践
  • 介绍一下Files类的常用方法
  • 车辆检测新突破:VFM-Det 如何用大模型提升识别精度
  • LVGL -按键介绍 上
  • Nginx 重写与重定向配置
  • SpringBoot集成Druid启动报错testWhileIdle is true, validationQuery not set
  • 【功能】根据时区获取开服天数
  • 4:机器人目标识别无序抓取程序二次开发
  • 深度学习正则化:原理、方法与应用深度解析
  • 【Linux服务器安装杀毒软件】
  • 利用v0与Cursor优化开发流程和效率
  • Unity 粒子同步,FishNet
  • 高等数学-第七版-下册 选做记录 习题9-6