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

路由表与IP数据报转发:基础小白指南

目录

1. 路由表的基本概念

2. 路由表中的默认路由

3. IP数据报的转发流程

4. 路由聚合

5. 最长前缀匹配

总结


在网络世界中,IP数据报的转发是如何进行的? 这篇文章将带你深入了解路由表的基本概念和IP数据报的转发流程。我们会用简洁明了的语言和实际例子,帮助你快速掌握这一重要的网络知识。


1. 路由表的基本概念

什么是路由表?
路由表是路由器用来决定如何转发IP数据报的核心。一个IP路由表通常包含以下主要信息:

  • 目的网络地址:表示数据报要到达的目标网络。
  • 地址掩码:用于确定目的网络的范围。
  • 下一跳路由器:数据报需要转发到的下一个路由器的地址。
  • 接口:数据报通过哪个接口发送。

图示例
图4—23(a)展示了一个简单的路由表例子,有四个网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想象,若按目的地址来制作路由表,则所得出的路由表就会过于庞大(如果每一个网络有1万台主机,四个网络就有4万台主机,因而每一个路由表就有4万个项目)。但若按目的主机所在网络的地址来制作路由表,那么每一个路由器中的路由表就只包含4个项目。

以路由器R2的路由表为例,由于R2同时连接在网络2和网络3上,因此只要目的主机在这两个网络上,就可通过接口0或接口1由路由器R2直接交付,不需要下一跳路由器的地址。若目的主机在网络1中,则下一跳路由器应为R1,其IP地址为128.0.2.7。同理,若目的主机在网络4中,则路由器R2应把分组转发给IP地址为128.0.3.1的路由器R3。

注意
用一个IP地址并不能准确标识一个网络,因此路由表中除了目的网络地址外还要有一个地址掩码(合起来等价于一个网络前缀)。

图4—23(a)所示的整个网络拓扑可简化为图4—23(b)所示的链路。使用这样的简化图,可以使我们不用关心某个网络内部的具体拓扑及有多少台计算机连接在该网络上,因为这些与分组转发问题并没有什么关系。这样的简化图强调了在互联网上转发数据报时,是从一个路由器转发到下一个路由器。

总结
由于路由器是根据路由表中的目的网络地址来确定下一跳路由器的,因此有以下结论:

  1. IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
  1. 只有最后一个路由器才试图向目的主机进行直接交付

2. 路由表中的默认路由

什么是默认路由?
默认路由是一种特殊的路由条目,用于减少路由表的大小和查找时间。当一个网络只有少量的对外连接时,默认路由非常有用。

示例
在图4—24中,主机H的路由表只需要三个项目:到本网络的路由、到网络N的路由和默认路由

默认路由的优势

  1. 减少路由表的大小:默认路由可以避免为每个可能的目的地址添加一条路由条目,从而简化路由表。
  1. 提高查找效率:使用默认路由可以加快路由查找的速度,尤其在网络边缘或主机发送数据报时。

具体例子
在图4—24所示的例子中,连接在网络N上的主机H的路由表只需要3个项目。第一个项目就是到本网络主机的路由,其目的网络就是本网络N,因而不需要路由器转发,而是直接交付。第二个项目是到网络N的路由,对应的下一跳路由器是R2。第三个项目就是默认路由,只要目的网络不是N1和N2,就一律选择默认路由,把数据报先间接交付路由器R1,让R1再转发给下一个路由器,一直转发到目的网络上的路由器,最后进行直接交付。


3. IP数据报的转发流程

IP数据报是如何转发的?
我们用一个例子来说明IP数据报的转发过程。

例4—5
主机H1发送一个IP数据报,其目的地址是128.30.33.138。路由器R收到此数据报后,会依次查找路由表,找到匹配的条目并进行转发。

步骤

  1. 提取目的IP地址D
  1. 判断是否为直接交付
    • 对与路由器直接相连的网络逐个进行检查:用各网络的掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则把分组直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束;否则间接交付。
  1. 间接交付
    • 对路由表中的每一行(目的网络地址、掩码、下一跳、接口),用其中的掩码和D逐位相“与”,其结果为N。若N与该行的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则继续查找。
  1. 使用默认路由
    • 若路由表中有一条默认路由,则把数据报传送给路由表中所指明的默认路由器;否则报告转发错误。
  1. 报告错误
    • 若没有默认路由,则报告转发数据报出错。

总结
IP数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”。在IP数据报的首部写上的IP地址是源IP地址和目的IP地址,而没有中间经过的路由器的IP地址。既然IP数据报中没有下一跳路由器的IP地址,那么待转发的数据报又怎样找到下一跳路由器呢?当路由器收到一个待转发的数据报时,在从路由表得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交下层的网络接口软件。


4. 路由聚合

什么是路由聚合?
路由聚合(Route Aggregation)是一种将多个相同路由的表项合并为一个表项的技术,能够有效减少路由表的大小。

示例
图4—26展示了如何将四个网络的路由合并为一个CIDR地址块,减少路由表的表项数量。

路由聚合的优势

  1. 减少路由表的大小:通过将多个相同路由的表项合并为一个表项,可以显著减少路由表的大小。
  1. 提高查找效率:减少表项数量有助于提高路由查找的效率。
  1. 优化网络资源:路由聚合能有效利用网络资源,减少不必要的路由信息传递。

具体操作
对于路由器R来说,到网络1、网络2、网络3和网络4的下一跳路由器都是R1,而这四个网络的地址空间正好可以合并成一个CIDR地址块,因此在路由表中完全可以用一个网络前缀140.23.7.0/24来指示这四个网络的路由。

持续优化
实际上这种地址聚合可以不断进行下去,多个路由相同的小的CIDR地址块可以聚合成大的地址块,大的地址块还可以聚合成更大的地址块,如图4—26中的R路由表。


5. 最长前缀匹配

什么是最长前缀匹配?
在使用CIDR时,路由表中可能存在多个有包含关系的地址块前缀。最长前缀匹配(Longest-Prefix Matching)是指在这些匹配结果中选择具有最长网络前缀的路由。

示例
在图4—26中,若存在一条直接到网络4的链路,则应选择该链路中的最长前缀匹配项进行数据报的转发。

最长前缀匹配的优势

  1. 更具体的路由选择:由于网络前缀越长,其地址块就越小,因此最长前缀匹配能够选择更加具体的路由。
  1. 实现特定主机路由:通过最长前缀匹配,可以方便地实现特定主机路由,只需在路由表中加入一条前缀为“特定主机IP地址/32”的表项即可。
  1. 实现默认路由:默认路由可以用网络前缀0.0.0.0/0来表示,因为该网络前缀的长度为0,任何IP地址都能和它匹配。

缺点

  • 查找时间变长:由于需要遍历整个路由表才能找到最长匹配的前缀项,因此查找路由表的时间会变长。

总结

路由表与IP数据报转发的关键点

  1. 路由表:包含目的网络地址、地址掩码、下一跳和接口等信息。
  1. 默认路由:可以减少路由表的大小和查找时间,特别适用于网络边缘或主机发送数据报时。
  1. IP数据报的转发流程:包括直接交付、间接交付和使用默认路由等步骤。
  1. 路由聚合:能够有效减少路由表的大小,提高查找效率,优化网络资源。
  1. 最长前缀匹配:在使用CIDR时选择具有最长网络前缀的路由,提供更具体的路由选择,方便实现特定主机路由和默认路由。

通过这篇文章,你应该对路由表和IP数据报的转发有了一个基础的了解。希望这些知识能帮助你更好地理解网络世界的运作。如果有任何疑问或建议,欢迎在评论区留言讨论。

图文来源:《计算机网络教程》第六版微课版

相关文章:

路由表与IP数据报转发:基础小白指南

目录 1. 路由表的基本概念 2. 路由表中的默认路由 3. IP数据报的转发流程 4. 路由聚合 5. 最长前缀匹配 总结 在网络世界中,IP数据报的转发是如何进行的? 这篇文章将带你深入了解路由表的基本概念和IP数据报的转发流程。我们会用简洁明了的语言和实…...

python—selenium爬虫

文章目录 Selenium与Requests对比一、工作原理二、功能特点三、性能表现 下载对应驱动1.首先我们需要打开edge浏览器,打开设置,找到“关于Microsoft Edge”,点击进入查看浏览器版本。2.查找版本之后,搜索edge驱动下载,…...

Mysql - 索引

目录 一、存储引擎 二、索引 索引结构 索引分类 索引语法 联合索引 前缀索引 索引使用规则 最左前缀法则 范围查询使索引失效 字段做运算操作索引失效 字符串字段不加单引号索引失效 字段做前模糊查询索引失效 or连接条件索引失效 数据发布情况索引失效 指定使用…...

从课本上面开始学习的51单片机究竟有什么特点,在现在的市场上还有应用吗?

引言 51单片机,作为一种经典的微控制器,被广泛应用于各种嵌入式系统中。尽管如今ARM架构的高性能低成本单片机在市场上占据主导地位,但51单片机凭借其独特的优势依然在某些领域保持着应用价值。本文将深入探讨51单片机的特点、架构、应用以及…...

uniapp中出现Uncaught runtime errors

项目中运行出现上面的错误信息,使用uniapp发现,其实我只是跨域了,控制台报错,但是不想屏幕上显示; 解决办法是在vue.config.js增加如下配置即可 devServer: {client: {overlay: false,errors:true},}, 错误信息也不想…...

数字信号处理基础知识(二)

在介绍完“离散时间序列”基本概念和性质后,实际上就已经踏入了“数字信号处理”这门学科的学习征程,这篇文章里主要去说明“线性时不变系统”的定义概念和探讨“周期采样”的注意细节,相信更加理解这些概念定义和底层逻辑,对于大…...

人生低谷来撸C#--015 C# 属性(Property)

1、概念 在C#中,属性(Property)是一种特殊的成员,它提供了一种灵活的机制来访问和修改对象的状态(即类的字段)。属性结合了字段和方法的特性,使得数据的访问和修改更加安全和便捷。下面我用一个…...

面试题003:面向对象的特征——封装性

Java规定了4种权限修饰,分别是:private、缺省、protected、public。我们可以使用4种权限修饰来修饰类及类的内部成员。当这些成员被调用时,体现可见性的大小。 封装性在程序中的体现: 场景1:私有化(private)类的属性,提供公共(pub…...

森林防火,森林防火智能储水罐_鼎跃安全

森林防火是保护森林的重要措施,每年发生的森林火灾都严重威胁着自然安全,对社会经济和生态造成严重的破坏。为了切实有效地预防并扑灭森林火灾,森林防火智能储水罐已成为现代森林防火体系中的重要装备。 储水罐内置传感器和控制系统&#xff…...

虚幻引擎,体积雾、体积光、镜头泛光

1、体积雾 这里介绍的是用于地面的体积雾效果,效果如图1-1: 图1-1 首先,需要场景中存在指数级高度雾并开启体积雾(如图1-2)。然后创建材质,材质域选择“体积”,混合模式选择“Additive”。材质节…...

Python 机器学习求解 PDE 学习项目——PINN 求解二维 Poisson 方程

本文使用 TensorFlow 1.15 环境搭建深度神经网络(PINN)求解二维 Poisson 方程: 模型问题 − Δ u f in Ω , u g on Γ : ∂ Ω . \begin{align} -\Delta u & f \quad & \text{in } \Omega,\\ u & g \quad & \text{on } \Gamma:\p…...

微信小程序删除滑块 SwiperCell 自动收起 Van weapp van-swipe-cell 滑块自动收起 点击页面也自动收起滑块

在当前页面整个 view 中 给页面绑定 点击事件bindtap"onSwipeCellPage"给 van-swipe-cell 组件设置 id (for循环可以添加 id"swip-cell-{{item.id}}" )van-swipe-cell 组件 添加属性 当用户打开滑块时触发 bind:open"swiperCel…...

【vluhub】log4j注入漏洞 CVE-2021-44228

LOG4介绍 是一个用Java编写的可靠,快速和灵活的日志框架(API),它在Apache软件许可下发布 log4j存在远程代码执行漏洞、受影响版本2.x 部署环境 攻击机环境:192.168.3.180 kail环境:192.168.203.12【NAT…...

Redis核心技术与实战学习笔记

Redis核心技术与实战学习笔记 最近想沉下心来看下redis,买了蒋德钧老师的《Redis 核心技术与实战》,这里记录一些学习笔记 希望能够坚持下去有想一起学习的童鞋,可以点击跳转到文章尾部获取学习资源,仅供学习不要用于任何商业用途!!! redis知识全景图 …...

力扣经典题目之->设计循环队列 的超详细讲解与实现

一:题目 二:思路讲解 前提: a:本文采取数组来实现队列去解决题目 b:开辟k1个空间,front指向队首,rear指向队尾的后一个,rear这样会更好的判空和判满 以下根据pop和push感受满和空…...

【数据结构】排序算法——Lesson2

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...

Ubuntu编译ffmpeg并添加cmake工程

文章目录 前言前提须知为什么要自己编译 FFmpeg前提软件包与工具的安装编译ffmpeg写CMakeList.txt包含ffmpeg到我们项目中 总结 前言 FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创造的内容。FFmpeg 包…...

Vue.js[组件(Component)]

什么是: 拥有专属的HTML,CSS,数据的,可重用的页面独立区域 一个页面由多个组件聚合而成一个大型的页面 在代码层面上,一个组件就是一个可反复使用的自定义标签。 vs jq插件 vs boot组件 boot插件: 虽然可重用,但仍需…...

基于微信小程序+SpringBoot+Vue的校园自助打印系统(带1w+文档)

基于微信小程序SpringBootVue的校园自助打印系统(带1w文档) 基于微信小程序SpringBootVue的校园自助打印系统(带1w文档) 管理信息可以处理复杂的信息从而提高用户的工作效率,减少失误。所以本基于Vue和微信小程序的校园自助打印系统的开发非常有意义,本系…...

qt设置过滤器

1.创建事件过滤器类,在主窗口中安装事件过滤器 class PasteFilter : public QObject {Q_OBJECTpublic:PasteFilter(QObject *parent nullptr) : QObject(parent) {}protected:bool eventFilter(QObject *obj, QEvent *event) override {if (event->type() QEv…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...