IP 层转发分组的过程

目录

IP 层转发分组的过程

1.1  基于终点的转发

1.2 最长前缀匹配

转发表中的 2 种特殊的路由

主机路由 (host route)

默认路由 (default route)

路由器分组转发算法

 1.3 使用二叉线索查找转发表


IP 层转发分组的过程

1.1  基于终点的转发

·分组在互联网中是逐跳转发的。

·基于终点的转发:基于分组首部中的目的地址传送和转发。

·为了压缩转发表的大小, 转发表中最主要的路由是(目的网络地址,下一跳地址) , 而不是(目的地址,下一跳地址)。

·查找转发表的过程就是逐行寻找前缀匹配

主机 H1 发送出的、目的地址是 128.1.2.132 的分组是如何转发的?

·H1 首先检查 128.1.2.132 是否连接在本网络上。

        如果是,则直接交付;否则,就送交路由器 R1。

128.1.2.132 AND 255.255.255.192 = 128.1.2.128     不匹配!

·路由器 R1 收到分组后查找转发表。先检查第 1 行。

·路由器 R1 收到分组后查找转发表。接着检查第 2 行。

        128.1.2.132 AND 255.255.255.128 = 128.1.2.128     匹配!

        进行分组的直接交付(通过路由器 R1 的接口 1)。

1.2 最长前缀匹配

·使用 CIDR 时,在查找转发表时可能会得到不止一个匹配结果

·最长前缀匹配 (longest-prefix matching) 原则:选择前缀最长的一个作为匹配的前缀。

·网络前缀越长,其地址块就越小,因而路由就越具体。

·可以把前缀最长的排在转发表的第 1 行。

路由器 R1 如何转发目的地址是 128.1.2.196 的分组?

·路由器 R1 收到分组后查找转发表。先检查第 1 行。

        128.1.2.196 AND 255.255.255.192 = 128.1.2.192     不匹配!

·路由器 R1 收到分组后查找转发表。接着检查第 2 行。

        128.1.2.196 AND 255.255.255.128 = 128.1.2.128     匹配!

·路由器 R1 收到分组后查找转发表。接着检查第 3 行。

        128.1.2.196 AND 255.255.255.192 = 128.1.2.192     匹配!

问题:R1 从哪个接口向外转发分组?

最长前缀匹配: 选择前缀最长的一个作为匹配的前缀。故选择 接口 0 。

·网络前缀越长,其地址块就越小,路由就越具体(more specific)。

·可以把前缀最长的排在转发表的第 1 行,以加快查表。

转发表中的 2 种特殊的路由

主机路由 (host route)

·又叫做特定主机路由

·是对特定目的主机的 IP 地址专门指明的一个路由。

·网络前缀就是 a.b.c.d/32

·放在转发表的最前面

默认路由 (default route)

·不管分组的最终目的网络在哪里,都由指定的路由器 R 来处理。

·用特殊前缀 0.0.0.0/0 表示。

默认路由举例

只要目的网络不是 N1 和 N2,就一律选择默认路由,把 IP 数据报先间接交付默认路由器 R1,让 R1 再转发给下一个路由器。

路由器分组转发算法

 1.3 使用二叉线索查找转发表

·二叉线索 (binary trie):一种特殊结构的树,可以快速在转发表中找到匹配的叶节点。

·从二叉线索的根节点自顶向下的深度最多有 32 层,每一层对应于 IP 地址中的一位。

·为简化二叉线索的结构,可以用唯一前缀 (unique prefix) 来构造二叉线索。

·为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

用 5 个唯一前缀构成的二叉线索

规则:先检查 IP 地址左边的第一位,如为 0,则第一层的节点就在根节点的左下方;如为 1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀。 为检查网络前缀是否匹配,必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。

在二叉线索中查找 IP 地址

欢迎一起学习~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/657390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!

Walrus file 是 Walrus 0.5 版本推出的新功能,用户可以通过一个非常简洁的 YAML 描述应用或基础设施资源的部署配置,然后通过 Walrus CLI 执行 walrus apply或在 Walrus UI 上进行import,将 Walrus file 提交给 Walrus server,由 …

AP5191 DC-DC宽电压LED降压恒流驱动器 摩托电动汽车驱动芯片

产品描述 AP5191是一款PWM工作模式,高效率、外围简 单、内置功率MOS管,适用于4.5-150V输入的高 精度降压LED恒流驱动芯片。输出功率150W, 电流6A。AP5191可实现线性调光和PWM调光,线性调 光脚有效电压范围0.55-2.6V. AP5191 工作频率可以通过…

visual studio2022专业版安装步骤

目录 一、Visual studio下载二、创建C#项目——Hello World三、专业版秘钥激活 一、Visual studio下载 首先进入下载官网 先下载2022专业版,等等后面还需要选环境 我勾选了以下几个和c#开发有关的,后面缺什么还可以再安装所有以少勾了问题也不大 然后…

c学习:sqlite3数据库操作

目录 获取sqlite3源码 c调用步骤 常用接口函数说明 例子 打开数据库,新建表,插入数据,查询数据,关闭数据库 查询数据需要在回调函数中获取 获取sqlite3源码 先下载c的sqlite3源码,https://www.sqlite.org/inde…

植物病害检测YOLOV8,OPENCV调用

【免费】植物病害检测,10种类型,YOLOV8训练,转换成ONNX,OPENCV调用资源-CSDN文库 植物病害检测,YOLOV8NANO,训练得到PT模型,然后转换成ONNX,OPENCV的DNN调用,支持C,PYTH…

【译】在 Mac 上加速 PyTorch 训练

写在前面 为什么突然深度介入大模型领域了 因为最近在评估大模型用于行业应用,通过 OpenCompass 排行榜了解到了很多大模型,像文心一言是自己深度试用过的,趁着这次评估,也体验或者通过其他团队的介绍了解了通义千问、清华智谱、…

React16源码: React中NewContext的源码实现

NewContext 1 )概述 新的 context API 是一个组件化的使用方式 它就跟写其他的组件一样,像写jsx,通过标签的这种方式来赋值一些props还有去给子节点去拿到这个 conntext 的属性 context的提供方和订阅方都是独立的 在什么地方想要用到这个 c…

《Numpy 简易速速上手小册》第5章:Numpy高效计算与广播(2024 最新版)

文章目录 5.1 向量化计算5.1.1 基础知识5.1.2 完整案例:股票数据分析5.1.3 拓展案例 1:多维数组运算5.1.4 拓展案例 2:复杂函数的向量化应用 5.2 广播机制5.2.1 基础知识5.2.2 完整案例:二维数据与一维数据运算5.2.3 拓展案例 1&a…

vxe-table表格合并行和虚拟滚动冲突

项目一直用的vxe-table 2.0版本,支持表格的虚拟滚动,最近要做表格合并行功能,虚拟滚动便失效了,强行虚拟滚动,合并行会有错行现象。 vxe-table2.0给出的解释是:合并行不能和虚拟滚动一起使用。 目前找到两种…

华为VRP系统简介

因为现在国内主流是华为、华三、锐捷的设备趋势,然后考的证书也是相关的,对于华为设备的一个了解也是需要的。 一、VRP概述 华为的VRP(通用路由平台)是华为公司数据通信产品的通用操作系统平台,作为华为公司从低端到核心的全系列路由器、以太…

个人建站前端篇(一)项目准备初始化以及远程仓库连接

云风的知识库 云风网前端重构,采用vue3.0vite antd框架,实现前后端分离,实现网站的SEO优化,实现网站的性能优化 vite创建vue项目以及前期准备 Vite 需要 Node.js 版本 18,20。然而,有些模板需要依赖更高…

java生成dll,并利用c语言使用libcurl调用http接口

本文可能需要使用的环境和工具: c/ c和GCC编译器 (Windows) Cygwin或MinGW 本文运行环境为windows10,使用MinGW-W64-builds-4.2.0 curl-8.5.0 libcurl 可以在官网 http://curl.haxx.se/ 获得。 配置MinGW 将mingw.rar解压到D:,修改系统…

Java面试题之 IO(四)

Java面试题之 IO(四) 文章目录 Java面试题之 IO(四)随机访问流 文章来自Java Guide 用于学习如有侵权,立即删除 随机访问流 这里要介绍的随机访问流指的是支持随意跳转到文件的任意位置进行读写的 RandomAccessFile 。…

Java抽取Hive、HDFS元数据信息

文章目录 一、技术二、构建SpringBoot工程2.1 创建maven工程并配置 pom.xml文件2.2 编写配置文件 application.yml2.3 编写配置文件 application.propertites2.4 开发主启动类2.5 开发配置类 三、测试抽取Hive、HDFS元数据四、将抽取的元数据存储到MySQL4.1 引入依赖4.2 配置ap…

防火墙综合拓扑(NAT、双机热备)

实验需求 拓扑 实验注意点: 先配置双机热备,再来配置安全策略和NAT两台双机热备的防火墙的接口号必须一致如果其中一台防火墙有过配置,最好清空或重启,不然配置会同步失败两台防火墙同步完成后,可以直接在主状态防火墙…

浅谈WPF之UniformGrid和ItemsControl

在日常开发中,有些布局非常具有规律性,比如相同的列宽,行高,均匀的排列等,为了简化开发,WPF提供了UniformGrid布局和ItemsControl容器,本文以一个简单的小例子,简述,如何…

TSINGSEE青犀智能分析网关V4—让加油站迈入AI智能检测时代

一、背景与需求 中国目前建设加油站超过10万个,作为高危场所对于烟火,危险区域管控、消防器材等管理要求严格,稍有不慎即酿成大祸。由于春节临近,加油站各类人员进出频繁,安全意识较低,依靠普通监控人力的…

java常量和kotlin常量

在java中使用final声明常量在kotlin中使用const val声明常量 常量在编译为字节码后会直接把调用常量的地方直接替换为常量值,示例如下: public class ConstDemo {public static final String NAME "Even";private static final int ID 100…

海外云手机开辟企业跨境电商新道路

近几年,海外云手机为跨境电商、海外媒体引流、游戏行业等互联网领域注入了蓬勃活力。对于国内跨境电商而言,在亚马逊及其他平台上,短视频引流和社交电商营销成为最为有效的流量来源。如何通过海外云手机的助力,在新兴社交平台为企…

python二维高斯热力图绘制简单的思路代码

import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import gaussian_filter import cv2# 生成一个示例图像 image_size 100 image np.zeros((image_size, image_size))# 在图像中心创建一个高亮区域 center_x, center_y image_size // 2, image_size …