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

计算机网络 —— 网络层 (路由协议)

计算机网络 —— 网络层 (路由协议)

  • 什么是路由协议
  • 内部网关协议
    • RIP
      • 关键特性
    • OSPF
      • 主要特点
  • 外部网关协议
    • BGP
      • 关键特性

我们今天来看路由协议:

什么是路由协议

路由协议是网络设备(主要是路由器)用来决定数据包在网络中传输路径的规则集。它们通过共享路由信息来构建并维护路由表,确保数据能够从源设备有效地传输到目标设备。路由协议按照不同标准可以分为以下几类:

  1. 按工作原理分类
  • 距离矢量路由协议(Distance Vector Routing Protocols):如RIP(Routing Information Protocol)和IGRP(Interior Gateway Routing Protocol),这类协议基于跳数(hop count)作为度量标准来选择路径,并且定期向邻居广播整个路由表。它们简单但容易产生路由环路和慢收敛的问题。
  • 链路状态路由协议(Link State Routing Protocols):如OSPF(Open Shortest Path First)和IS-IS(Intermediate System to Intermediate System),这些协议通过泛洪网络拓扑信息来构建一个完整的网络图,每个路由器基于这个图计算最佳路径。它们提供了更快的收敛速度和避免路由环路的能力。
  1. 按用途分类
  • 内部网关协议(IGPs,Interior Gateway Protocols):在单个自治系统(AS)内部使用的路由协议,如RIP、OSPF和IS-IS。
  • 外部网关协议(EGPs,External Gateway Protocols):用于不同自治系统之间的路由传递,最著名的是BGP(Border Gateway Protocol)。
  1. 按路由表的更新方式分类
  • 静态路由:由网络管理员手动配置,不会随网络变化自动更新。
  • 动态路由:路由信息会根据网络的变化自动更新,包括上述的距离矢量和链路状态协议。
  1. 按支持的协议类型分类
  • 单播路由协议:处理单个发送者到单个接收者的通信。
  • 多播路由协议:设计用于支持一对多的通信,如PIM(Protocol Independent Multicast)。
  • 组播路由协议:实质上与多播路由协议相同,术语上有时互换使用,关注于高效地向多个目的地发送数据。

在这里插入图片描述在这里插入图片描述

路由协议的选择取决于网络的规模、复杂性、性能要求以及管理的便捷性。动态路由协议特别适用于大型网络,因为它能自动适应网络拓扑变化,减少管理负担,而静态路由则更适合小型网络或者对安全性、简单性有特殊需求的场景。

我们这里以内部和外部进行区分:

在这里插入图片描述

内部网关协议

内部网关协议(IGP,Interior Gateway Protocol)是在一个自治系统(Autonomous System, AS)内部运行的路由协议,负责在AS内部的路由器之间传播路由信息,以确定数据包在该自治系统内部的最佳传输路径。IGP的主要目标是高效、准确地更新路由表,确保数据能够在复杂的网络环境中快速、可靠地传输。几种常见的IGP包括:

  1. RIP(Routing Information Protocol):一种较为古老的IGP,基于距离矢量算法。RIP使用跳数(hop count)作为度量标准来确定到达目的地的最佳路径,最大跳数限制通常是15跳,超过这个值即认为网络不可达。RIP有版本1和版本2,后者支持VLSM(Variable Length Subnet Mask)和认证功能。
  1. OSPF(Open Shortest Path First):基于链路状态的IGP,能够提供更为快速的收敛速度和避免路由环路的能力。OSPF路由器收集整个网络的链路状态信息,并使用Dijkstra最短路径优先算法计算出到达每个网络的最短路径树。OSPF支持复杂的网络划分,包括区域划分(Area)来优化路由更新和减少带宽消耗。
  1. IS-IS(Intermediate System to Intermediate System):最初设计用于ISO的CLNP(ConnectionLess Network Protocol),后来扩展支持IPv4和IPv6。IS-IS也是链路状态协议,其工作原理与OSPF类似,但在某些方面更为简洁高效,特别是在大规模网络中。IS-IS支持分层的网络设计,通过Level-1(区域内)和Level-2(区域间)路由器来分割路由计算的复杂度。
  1. EIGRP(Enhanced Interior Gateway Routing Protocol):Cisco开发的高级距离矢量协议,结合了距离矢量和链路状态特性,支持快速收敛、负载均衡、VLSM和毒性逆转等功能。EIGRP使用度量值(Metric)来评估路径,该度量值综合考虑了带宽、延迟、可靠性、负载和最大传输单元(MTU)等因素。

我们这里介绍RIP和OSPF

RIP

RIP(Routing Information Protocol,路由信息协议)是一种经典的内部网关协议(IGP),用于在小型到中型的同构网络中实现动态路由选择。以下是RIP协议的关键特征和工作原理:

关键特性

  1. 距离矢量协议:RIP基于距离矢量算法工作,使用跳数(hop count)作为路由度量。一个跳数代表数据必须通过的一个网络设备(通常是路由器),RIP认为最佳路径是跳数最少的路径。RIP最多支持15跳,超过这个限制的网络被视为不可达,这限制了RIP在较大网络中的应用。
  1. 周期性更新:RIP路由器周期性地(默认每30秒)广播或组播其完整的路由表给直连的邻居,即使路由信息未发生变化。这种方式有助于保持网络中所有路由器的路由信息同步,但同时也增加了网络的广播流量。
  1. 收敛慢与路由环路:由于其基于距离矢量的特性,RIP容易产生路由环路。为了解决这个问题,RIP采用了水平分割(Split Horizon)、毒性反转(Poison Reverse)、保持计时器(Hold-Down Timer)和触发更新(Triggered Update)等机制。
  1. 版本:RIP有两个主要版本,RIPv1和RIPv2。RIPv1是无类别路由选择协议,不支持VLSM和CIDR,且路由更新时不携带子网掩码信息。RIPv2是其增强版,支持VLSM、CIDR和认证,且路由更新通过组播地址发送而非广播,提高了效率。
  1. UDP传输:RIP使用用户数据报协议(UDP)作为传输层协议,端口号为520。RIP的消息封装在UDP数据包中,然后通过IP协议传输。

在这里插入图片描述
在这里插入图片描述

OSPF

开放最短路径优先(OSPF,Open Shortest Path First)是由互联网工程任务组(IETF)开发的一种基于链路状态的内部网关协议(IGP),主要用于在一个自治系统(AS)内部高效地分配路由信息。OSPF协议的设计初衷是为了替代早期的IGP,如RIP,以提供更强大的功能和更好的网络性能。以下是OSPF协议的一些核心特点和机制:

主要特点

  1. 链路状态路由协议:OSPF基于链路状态算法,每个路由器维护一个链路状态数据库(LSDB),包含整个网络的拓扑结构信息。通过这个数据库,每个路由器独立计算到达各个网络的最短路径树(SPT)。
  1. 快速收敛:OSPF使用Dijkstra算法计算最短路径,并通过多种机制(如SPF算法、部分路由计算、增量更新)来加速网络变更时的收敛速度,减少网络中断时间。
  1. 分层设计:OSPF支持区域(Area)的概念,允许将大型网络划分为多个区域来管理和优化路由传播。这样可以减少路由更新的流量,提升网络效率,并增强网络的可管理性。
  1. 支持VLSM和CIDR:OSPF能够处理变长子网掩码(VLSM)和无类别域间路由(CIDR),这对于高效利用IP地址空间和简化网络设计至关重要。
  1. 认证机制:提供认证功能,可以配置接口级别的认证来保护路由信息的交换,增加网络安全性。
  1. 多种类型的OSPF报文:包括Hello报文(用于发现和维护邻居关系)、数据库描述报文(DD)、链路状态请求报文(LSR)、链路状态更新报文(LSU)和链路状态确认报文(LSAck),这些报文共同协作以实现状态同步和更新。
  1. 版本兼容性:OSPF有两个主要版本,OSPFv2用于IPv4网络,定义在RFC 2328中;OSPFv3用于IPv6网络,定义在RFC 2740中,它们在基本机制上相似,但在地址处理和一些扩展特性上有所不同。

在这里插入图片描述在这里插入图片描述

外部网关协议

BGP

边界网关协议(BGP,Border Gateway Protocol)是一种外部网关协议(EGP),用于在不同的自治系统(AS)之间交换路由信息和实现互联网的互联互通。它是构成互联网架构的核心协议之一,负责在广泛的网络中传播可达性信息,确保数据包可以从一个AS传输到另一个AS,最终达到目的地。以下是BGP的一些关键特性和工作原理:

关键特性

  1. 自治系统间的路由:BGP的主要作用是在不同的AS之间传播路由信息。每个AS都被分配一个唯一的AS号,BGP路由器通过建立邻居关系交换路由信息,以确定如何将数据包从一个AS转发到另一个AS。
  1. 路径属性:BGP路由不仅包含目的网络前缀和下一跳信息,还携带一系列路径属性,这些属性影响路由的选择和传播。常见的属性包括Origin、AS_PATH、Next_Hop、MED(Multi-Exit Discriminator)、Local_Pref等,其中AS_PATH记录了一条路由经过的所有AS,对于防止路由环路和选择最佳路径至关重要。
  1. 路由选择算法:BGP路由器基于策略和路径属性选择最优路由。策略可以基于属性设定,如优选本地AS内路由、选择AS_PATH较短的路由等。BGP并不直接使用像OSPF那样的最短路径优先算法。
  1. 邻居关系和会话:BGP通过TCP(端口179)建立邻居关系,保证了数据传输的可靠性。邻居之间交换Update、Notification、Keepalive和Open等消息来维持连接和更新路由信息。
  1. 路由反射器和联盟:为了简化大规模网络中的BGP部署,引入了路由反射器(RR)和联盟(Confederation)机制。路由反射器允许非直连的BGP对等体之间传播路由,减少了全连接的需求;联盟则是将大的AS逻辑上划分为多个小AS,便于管理且不影响外部路由选择。
  1. 版本:目前广泛使用的是BGPv4,支持CIDR和路由聚合,是IPv4和IPv6互联网的骨干路由协议。早期的BGPv1、v2版本已不再使用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们来看两道题:
在这里插入图片描述在这里插入图片描述
这里只是对协议进行了大致的梳理,并没有进行深度的阐释,这里建议大家配合视频进行食用。

相关文章:

计算机网络 —— 网络层 (路由协议)

计算机网络 —— 网络层 (路由协议) 什么是路由协议内部网关协议RIP关键特性 OSPF主要特点 外部网关协议BGP关键特性 我们今天来看路由协议: 什么是路由协议 路由协议是网络设备(主要是路由器)用来决定数据包在网络中…...

HCIA 15 AC+FIT AP结构WLAN基础网络

本例配置ACFIT,即瘦APAC组网。生活中家庭上网路由器是胖AP,相当于ACFIT二合一集成到一个设备上。 1.实验介绍及拓扑 某企业网络需要用户通过 WLAN 接入网络,以满足移动办公的最基本需求。 1. AC 采用旁挂核心组网方式,AC 与AP …...

给Windows软件添加异常捕获模块生成dump文件(附源码)

软件在运行过程中会时常发生内存越界、内存访问为例、stack overflow线程栈溢出、空指针与野指针等异常崩溃,仅仅是依靠Debug和Release下的调试是远远不够的,因为有些崩溃不是必现的,或者是Debug下很难出现的。所以我们需要在软件中添加异常捕获的模块,在捕获到异常时生成包…...

C语言| 数组

直接定义一个数组&#xff0c;并给所有元素赋值。 数组的下标从0开始&#xff0c;下标又表示数组的长度。 【程序代码】 #include <stdio.h> int main(void) { int a[5] {1, 2, 3, 4, 5}; int i; for(i0; i<5; i) { printf("a[%d] %d\…...

upload-labs第八关教程

upload-labs第八关教程 一、源代码分析代码审计 二、绕过分析点绕过上传eval.php使用burp suite进行抓包修改放包&#xff0c;查看是否上传成功使用中国蚁剑进行连接 一、源代码分析 代码审计 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(U…...

平板消解加热台-温度均匀,防腐蚀-实验室化学分析

DBF系列防腐电热板 是精致路合金加热板块表面经进口高纯实验级PFATeflon氟塑料防腐不粘处理&#xff0c;专为实验室设计的电加热产品&#xff0c;是样品前处理中&#xff0c;加热、消解、煮沸、蒸酸、赶酸等处理的得力助手。可以满足物理、化学、生物、环保、制药、食品、饮品…...

Ubuntu基础-vim编辑器

目录 前言: 一. 安装 二. 配置 三. 基本使用 1.使用 Vim 编辑文本文件 2.代码编辑 3.多窗口编辑 四. 总结 前言: Vim 是从 VI 发展出来的一个文本编辑器&#xff0c;具有代码补充、错误跳转等功能&#xff0c;在程序员中被广泛使用。它的设计理念是命令的组合&#xff…...

Java 网站开发入门指南:如何用java写一个网站

Java 网站开发入门指南&#xff1a;如何用java写一个网站 Java 作为一门强大的编程语言&#xff0c;在网站开发领域也占据着重要地位。虽然现在 Python、JavaScript 等语言在网站开发中越来越流行&#xff0c;但 Java 凭借其稳定性、可扩展性和丰富的生态系统&#xff0c;仍然…...

Armbian OS(基于ubuntu24) 源码编译mysql 5.7

最近弄了个S905X3的盒子刷完Armbian OS &#xff08;基于ubuntu24&#xff09;&#xff0c;开始折腾Arm64之旅。第一站就遇到了MySQL的问题&#xff0c;由于MySQL没有提供Arm64版本&#xff0c;又不想塞Docker镜像&#xff0c;因此选择源码来编译MySQL5.7。下面记录详细过程和遇…...

React+TS前台项目实战(六)-- 全局常用组件Button封装

文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示&#xff08;1&#xff09;有加载动画&#xff0c;执行promise函数&#xff08;2&#xff09;无加载动画&#xff0c;执行click事件 总结 前言 今天这篇主要讲全局按钮组件封装&#xff0c;可根据UI设…...

Vite支持的React项目使用SASS指南

前言 在现代前端开发中&#xff0c;SASS是一种广受欢迎的CSS扩展语言&#xff0c;它提供了许多实用功能&#xff0c;如变量、嵌套、部分和混合等。 本教程将指导您在一个使用Vite作为构建工具的React项目中如何配置和使用SASS。 使用步骤 1、创建一个Vite React项目 首先确…...

实验12 路由重分布

实验12 路由重分布 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 在大型网络的组建过程中&#xff0c;隶属不同机构的网络部分往往会根据自身的实际情况来选用路由协议。例如&#xff0c;有些网络规模很小&#xff0c;为了管理简单&…...

version-manager最好用的SDK版本管理器,v0.6.2发布

项目地址&#xff1a;https://github.com/gvcgo/version-manager 中文文档&#xff1a;https://gvcgo.github.io/vdocs/#/zh-cn/introduction 功能特点&#xff1a; 跨平台&#xff0c;支持Windows&#xff0c;Linux&#xff0c;MacOS支持多种语言和工具&#xff0c;省心受到…...

MFC工控项目实例之三theApp变量传递对话框参数

承接专栏《MFC工控项目实例之二主菜单制作》 用theApp变量传递对话框参数实时改变iPlotX坐标轴最小值、最大值。 1、新建IDD_SYS_DATA对话框&#xff0c;类名SYS_DATA。 三个编辑框IDC_EDIT1、IDC_EDIT2、IDC_EDIT3变量如图 2、SEAL_PRESSURE.h中添加代码 #include "re…...

C# OpenCvSharp 图像处理函数-图像拼接-hconcat、vconcat、Stitcher

在图像处理和计算机视觉领域,图像拼接是一个常见的操作。OpenCvSharp是一个用于.NET平台的OpenCV封装库,可以方便地进行图像处理。本文将详细介绍如何使用OpenCvSharp中的hconcat、vconcat函数以及Stitcher类进行图像拼接,并通过具体示例帮助读者理解和掌握这些知识点。 函…...

软件方案评审与模块优化:从FOC模块出发的电控平台建设

一、背景 洞悉模块发展趋势&#xff0c;定制行业应用特点&#xff0c;明确优化方向与阶段性目标 随着科技进步的飞速发展&#xff0c;模块化设计已成为众多行业产品开发的核心理念。无论是软件系统、硬件组件&#xff0c;还是复杂系统中的功能模块&#xff0c;都需要对其发展…...

emoji_call_read

这道题我觉得可以记录一下。 主要函数&#xff0c;一样&#xff0c;先考虑怎么泄露libc基址。 但&#xff0c;0x20实在太小&#xff0c;组成不了连续3个ret syscall。 而且文件中也没pop rdi;ret这个gadget&#xff0c;只能另寻他法。 我们注意到&#xff1a; main函数中的这…...

一键自动粘贴,高效处理邮箱地址,让你的工作效率翻倍提升!

在信息爆炸的时代&#xff0c;邮箱地址已成为我们日常工作和生活中的必备元素。无论是商务沟通、报名注册还是信息传递&#xff0c;邮箱地址都扮演着至关重要的角色。然而&#xff0c;手动复制粘贴邮箱地址的繁琐操作往往让人头疼不已&#xff0c;不仅效率低下&#xff0c;还容…...

【Java】Java 使用 Graphics2D 在图片上添加文字,并解决图片变红问题

文章目录 【Java】Java 使用 Graphics2D 在图片上添加文字&#xff0c;并解决图片变红问题完整案例 【Java】Java 使用 Graphics2D 在图片上添加文字&#xff0c;并解决图片变红问题 完整案例 public static void main(String[] args) {try {String filePath "D:\\Works…...

初识docker插件

文章目录 一、Docker插件概述二、Docker插件的优势三、Docker插件的使用例子1. 安装Docker插件2. 启用Docker插件3. 创建卷并使用 四、常用的Docker插件五、总结 Docker插件&#xff08;Docker Plugin&#xff09;是Docker扩展功能的一种重要方式&#xff0c;它允许用户为Docke…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法&#xff0c;以下是几种常见的治理方式&#xff1a; 1. 数据质量管理 核心方法&#xff1a; 数据校验&#xff1a;建立数据校验规则&#xff08;格式、范围、一致性等&#xff09;数据清洗&…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...

用js实现常见排序算法

以下是几种常见排序算法的 JS实现&#xff0c;包括选择排序、冒泡排序、插入排序、快速排序和归并排序&#xff0c;以及每种算法的特点和复杂度分析 1. 选择排序&#xff08;Selection Sort&#xff09; 核心思想&#xff1a;每次从未排序部分选择最小元素&#xff0c;与未排…...