计算机网络——网络层(2)
计算机网络——网络层(2)
- 小程一言
- 专栏链接: [link](http://t.csdnimg.cn/ZUTXU)
- 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家, [跳转到网站](https://www.captainbed.cn/qianqiu)
- 网络层——控制平面
- 概述
- 路由选择
- 转发表
- 路由协议
- 路由信息的交换
- 小结
- 路由选择算法
- 常见的路由选择算法
- 距离矢量路由算法
- 工作原理
- 优缺点分析
- 链路状态路由算法
- 基本工作原理
- 优缺点分析
- 链路状态路由算法
- 工作原理
- 优缺点分析
- 最短路径算法
- Dijkstra算法
- Bellman-Ford算法
- 最短路径小结
- 小结
小程一言
我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。
面向群体:在学计网的在校大学生,工作后想要提升的各位伙伴,
专栏链接: link
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家, 跳转到网站
网络层——控制平面
概述
网络层的控制平面是指网络层中负责控制和管理网络路由的部分。它主要包括路由选择、转发表的更新、路由协议的运行和路由信息的交换等功能。
路由选择
负责根据网络中的拓扑结构和链路状态信息,选择最佳的路由路径来传输数据包。路由选择算法可以根据不同的需求和条件来进行优化,如最短路径、最小成本、最大带宽等。
转发表
网络设备中用于存储路由信息的数据结构,它会根据控制平面的指示不断更新,以确保数据包能够被正确地转发到目的地。
路由协议
网络层中常用的路由协议有RIP、OSPF、BGP等,它们负责在网络中传播路由信息,协调网络设备之间的路由选择和转发行为。
路由信息的交换
在复杂的网络环境中,不同的网络设备之间需要交换路由信息,以便彼此了解整个网络的拓扑结构和路由信息。这些路由信息的交换是由控制平面来管理和协调的。
小结
网络层的控制平面是网络中非常重要的一部分,它负责管理和控制整个网络的路由行为,确保数据包能够快速、可靠地传输到目的地。
路由选择算法
在计算机网络中,路由选择算法是指网络设备在收到数据包后,根据网络拓扑和链路状态信息选择最佳的路由路径进行数据包的转发。
常见的路由选择算法
距离矢量路由算法
距离矢量路由算法(Distance Vector Routing Algorithm)是一种分布式路由选择算法,用于在计算机网络中确定数据包的最佳路径。该算法基于每个节点维护一个距离向量表,其中包含到达其他节点的距离和下一跳信息。节点之间通过交换距离向量表来更新彼此的路由信息。
工作原理
- 初始状态:每个节点维护一个距离向量表,表中包含到达其他节点的距离和下一跳信息。初始时,节点只知道直接相邻节点的距离,而对于其他节点的距离则被设置为无穷大。
- 信息交换:节点周期性地将自己的距离向量表发送给相邻节点,并接收相邻节点发送的距离向量表。
- 更新距离向量表:当节点接收到相邻节点的距离向量表时,它会更新自己的距离向量表,并将更新后的表发送给其他相邻节点。更新的规则通常包括距离的累积和路径的选择。
- 路由选择:节点根据距离向量表中的信息选择到达目的节点的最佳路径。
- 距离向量表的更新:当网络拓扑发生变化时,节点的距禇向量表会相应地更新,以反映新的最佳路径。
优缺点分析
- 优点:简单易实现,适用于小型网络。
- 缺点: 慢收敛、计数到无穷问题和易受路由环路的影响。
链路状态路由算法
链路状态路由算法(Link State Routing Algorithm)是一种常用的路由选择算法,用于在计算机网络中确定数据包的最佳路径。与距离矢量路由算法不同,链路状态路由算法是基于网络中每个节点收集的全局拓扑信息来计算最佳路径。
基本工作原理
-
拓扑信息收集:每个节点定期广播自己的链路状态信息(包括与相邻节点的连接状态、成本等),并接收其他节点发送的链路状态信息。
-
构建网络拓扑图:每个节点根据收集到的链路状态信息构建网络的全局拓扑图,即描述整个网络结构的图,其中节点表示网络中的路由器,边表示节点之间的链路。
-
最短路径计算:使用最短路径算法(如Dijkstra算法)基于全局拓扑图计算出到达其他节点的最短路径,并更新节点的路由表。
-
路由选择:根据更新后的路由表,节点可以选择到达目的节点的最佳路径。
优缺点分析
- 优点:收敛速度快、能够避免计数到无穷问题、对网络拓扑变化的适应性强等。
- 缺点:需要大量的带宽来传输链路状态信息、对网络中的大规模拓扑信息处理较为复杂等。
链路状态路由算法
路状态路由算法(Link State Routing Algorithm)是一种基于全局网络拓扑信息的路由选择算法。它的主要思想是每个路由器都维护一个关于整个网络拓扑的全局视图,然后利用这个全局视图来计算出最佳路径。
工作原理
-
链路状态信息收集:每个路由器节点定期向其相邻的节点发送链路状态数据包,这些数据包包含了与相邻节点连接的链路状态信息,如带宽、延迟、可靠性等。同时,节点也会接收其他节点发送的链路状态信息。
-
构建网络拓扑图:每个节点根据收集到的链路状态信息构建网络的全局拓扑图,这个图描述了整个网络的结构,其中节点表示路由器,边表示节点之间的链路状态信息。
-
最短路径计算:基于全局拓扑图,每个节点使用最短路径算法(通常是Dijkstra算法)来计算到达其他节点的最短路径,并更新节点的路由表。
-
路由选择:根据更新后的路由表,节点可以选择到达目的节点的最佳路径,从而进行数据包的转发。
-
拓扑变化处理:当网络拓扑发生变化时,例如链路状态发生改变或有新的节点加入网络,每个节点都会重新计算最短路径,并更新自己的路由表。
优缺点分析
- 优点:收敛速度快、能够避免计数到无穷问题、对网络拓扑变化的适应性强等。
- 缺点:例如需要大量的带宽来传输链路状态信息、对网络中的大规模拓扑信息处理较为复杂等。
最短路径算法
在路由选择算法中,最短路径算法用于寻找网络中节点之间的最短路径。最常见的最短路径算法包括Dijkstra算法和Bellman-Ford算法。
Dijkstra算法
- Dijkstra算法用于计算从单个源节点到图中所有其他节点的最短路径。
- 算法使用了一种贪婪的策略,从源节点开始,逐步扩展到其他节点,直到找到到达所有节点的最短路径。
- Dijkstra算法维护一个距离数组dist[],记录从源节点到各个节点的当前最短距离。同时维护一个集合S,表示已经找到最短路径的节点。
- 在每一步中,选择距离集合S最近的节点,并更新与该节点相邻的节点的距离值,直到所有节点都加入集合S。
- Dijkstra算法的时间复杂度为O(V^2)或O(ElogV),其中V为节点数,E为边数。
Bellman-Ford算法
- Bellman-Ford算法用于计算从单个源节点到图中所有其他节点的最短路径,与Dijkstra算法不同的是,它可以处理存在负权边的图。
- 算法通过不断的松弛操作,更新节点之间的最短路径估计值,直到所有节点的最短路径被找到。
- Bellman-Ford算法的时间复杂度为O(VE),其中V为节点数,E为边数。
最短路径小结
这些最短路径算法在路由选择中扮演着重要的角色,路由器可以利用这些算法计算出到达目的节点的最佳路径,以便进行数据包的转发。最短路径算法的选择取决于网络的特性,例如是否存在负权边等。
小结
路由选择算法的选择取决于网络的规模、复杂度、性能需求和安全性要求。不同的算法有不同的优缺点,例如距离矢量算法简单易实现但收敛速度慢,链路状态算法收敛速度快但占用资源多等。在实际应用中,需要根据具体的网络环境和需求来选择合适的路由选择算法。
相关文章:

计算机网络——网络层(2)
计算机网络——网络层(2) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU)前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家, [跳转到网站](https://www.captainbed.…...
01-16Maven-SpringBoot入门
Maven继承Maven高级SpringSpringBoot入门 Maven 一、概念及功能 概念:Maven是Apache软件基金会组织维护的一款专门为Java项目提供项目构建和依赖管理的工具 1.1作用: 项目构建 构建:是一个将代码从开发阶段到生产阶段的一个过程…...

微信小程序(二十七)列表渲染改变量名
注释很详细,直接上代码 上一篇 新增内容: 1.改变默认循环单元item变量名 2.改变默认循环下标index变量名 基础模板有问题可以先看上一篇 源码: index.wxml <view class"students"><view class"item"><te…...

k8s之安装部署及kuboard发布应用
目录 环境准备 系统规划 配置免密 将桥接的IPv4流量传递到iptables的链 系统基础配置 安装docker 安装docker及基础依赖 配置docker的仓库下载地址 部署k8s 添加阿里云的k8s源 安装kubeadm,kubelet和kubectl 初始化masteer节点 部署node节点 部署flanne…...

JProfiler for Mac:提升性能和诊断问题的终极工具
在当今的高性能计算和多线程应用中,性能优化和问题诊断是至关重要的。JProfiler for Mac 是一个强大的性能分析工具,旨在帮助开发者更好地理解其应用程序的运行情况,提升性能并快速诊断问题。 JProfiler for Mac 的主要特点包括:…...
力扣202-快乐数
快乐数 题目链接 解题思路: 两个指针,一快一慢,如果相遇,就会生成环如果环内元素为1,那么就可以返回 class Solution { public:int get(int n){int res 0;while(n){res (n%10) * (n%10);n / 10;}return res;}bool isHappy(int …...

牛客寒假训练营H题
思路:找出所有m的子集,加到价值中,找出最大价值即可。 代码: void solve(){int n, m;cin >> n >> m;vector<pii>a(n 1);for(int i 1;i < n;i )cin >> a[i].first >> a[i].second;int ans 0…...
ubuntu22.04@laptop 常用基础环境安装
ubuntu22.04laptop 常用基础环境安装 1. 源由2. 步骤2.1 安装ubuntu22.04 LTS系统2.2 必备软件安装2.3 基本远程环境2.3.1 远程ssh登录2.3.2 samba局域网2.3.3 VNC远程登录 2.4 开发环境安装 3. 总结 1. 源由 应朋友要求,整理下一个个人常用的工作笔记本常用开发环…...

Linux第41步_移植ST公司uboot的第2步_修改网络驱动_USB OTG设备树_LCD驱动_以及编译和烧写测试
移植ST公司uboot的第1步,创建配置文件、设备树、修改电源管理和sdmmc节点后,还需要进一部修改,如:网络驱动、USB OTG设备树、LCD驱动,以及编译和烧写测试。 一、在虚拟机中,使用VSCode打开my_uboot工作区 …...
瑞芯微1808模型转换(onnx到rknn)环境配置过程
瑞芯微1808模型转换(onnx → \to →rknn)环境配置 阅读本解决方案前,请读者确保已经根据官方的相关教程【rknn_model_zoo/common/rknn_converter at v1.5.0 airockchip/rknn_model_zoo (github.com)】完成其他配置文件的修改,以…...

测试ASP.NET Core项目调用EasyCaching的基本用法(InMemory)
EasyCaching属于开源缓存库,支持基本缓存方式及高级缓存用法,提高用户操作缓存的效率。EasyCaching支持的缓存方式包括以下类型,本文学习最基础的InMemory方式的基本用法。 EasyCaching.InMemory包属于基于内存的缓存库,使用的…...

机器学习系列-2 线性回归训练损失
机器学习系列-2 线性回归&训练损失 学习内容来自:谷歌ai学习 https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hlzh-cn 本文作为学习记录1 线性回归: 举例:蝉(昆虫物种&…...
spring-boot-actuator 服务监控
1 概述 服务启动时,通过spring-boot-actuator 监控es等服务是否连接成功等 2 依赖 <!-- 服务监控 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><…...

窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算
在当今计算领域中,存内计算技术凭借其出色的向量乘矩阵操作效能引起了广泛关注。本文将深入研究基于向量乘矩阵的存内计算原理,并探讨几个引人注目的代表性工作,如DPE、ISAAC、PRIME等,它们在神经网络和图计算应用中表现出色&…...

Python flask 表单详解
文章目录 1 概述1.1 request 对象 2 示例2.1 目录结构2.2 student.html2.3 result.html2.4 app.py 1 概述 1.1 request 对象 作用:来自客户端网页的数据作为全局请求对象发送到服务器request 对象的重要属性如下: 属性解释form字典对象,包…...

【Tomcat与网络3】Tomcat的整体架构
目录 1.演进1:将连接和处理服务分开 2演进2:Container的演进 3 再论Tomcat的容器结构 4 Tomcat处理请求的过程 5 请求的处理过程与Pipeline-Valve管道 在前面我们介绍了Servlet的基本原理,本文我们结合Tomcat来分析一下如何设计一个大型…...

k8s中cert-manager管理https证书
前言 目前https是刚需,但证书又很贵,虽然阿里云有免费的,但没有泛域名证书,每有一个子域名就要申请一个证书,有效期1年,1年一到全都的更换,太麻烦了。经过搜索,发现了自动更新证书神器cert-manager;当然cert-manager是基于k8s的。 安装采用Helm方式 Chart地址: ht…...

如何搭建私有云盘SeaFile并实现远程访问本地文件资料
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-hsDnDEybLME85dTx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...
Centos7安装Nginx-1.21
一、编译前提,需要安装必要的包 yum install gcc pcre-devel openssl-devel zlib-devel wget -y 二、下载对应的NGINX包 wget http://nginx.org/download/nginx-1.21.0.tar.gz 三、解压nginx tar xf nginx-1.21.0.tar.gz 四、编译并安装nginx到/usr/local/ng…...

React 面试题
1、组件通信的方式 父组件传子组件:通过props 的方式 子组件传父组件:父组件将自身函数传入,子组件调用该函数,父组件在函数中拿到子组件传递的数据 兄弟组件通信:找到共同的父节点,用父节点转发进行通信 …...

开疆智能Ethernet/IP转Modbus网关连接西门子BW500积算仪配置案例
本案例是通过Ethernet转Modbus网关将皮带秤数据接入到罗克韦尔1769L32E型PLC中。 首先进行ABB PLC的设置 1, 运行 RSLogix 5000 程序加载Ethernet转Modbus网关的EDS 文件: 2,新建工程并添加PLC 3,New Module添加网关ÿ…...

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Dad Jokes(冷笑话卡片)
📅 我们继续 50 个小项目挑战!—— DadJokes 组件 仓库地址:https://github.com/SunACong/50-vue-projects 项目预览地址:https://50-vue-projects.vercel.app/ 豆包翻译确实可以,冷笑话应该属于各类语言比较难理解的…...

React 新项目
使用git bash 创建一个新项目 建议一开始就创建TS项目 原因在Webpack中改配置麻烦 编译方法:ts compiler 另一种 bable 最好都配置 $ create-react-app cloundmusic --template typescript 早期react项目 yarn 居多 目前npm包管理居多 目前pnpm不通用 icon 在public文件夹中…...

八股---7.JVM
1. JVM组成 1.1 JVM由哪些部分组成?运行流程? 难易程度:☆☆☆ 出现频率:☆☆☆☆ Java Virtual Machine:Java 虚拟机,Java程序的运行环境(java二进制字节码的运行环境)好处:一次编写,到处运行;自动内存管理,垃圾回收机制程序运行之前,需要先通过编译器将…...
C++基础进阶:函数、内联函数与Lambda函数详解
引言 在C编程的旅程中,函数是构建复杂程序的基本单元。它们像乐高积木一样,允许我们将代码分解成更小、更易于管理的部分。今天,我们将深入探讨C中的三种重要函数类型:普通函数、内联函数以及Lambda函数。掌握它们,将…...
【Redis】笔记|第9节|Redis Stack扩展功能
Redis Stack 扩展功能笔记(基于 Redis 7) 一、Redis Stack 概述 定位:Redis OSS 扩展模块(JSON、搜索、布隆过滤器等),提供高级数据处理能力。核心模块: RedisJSON:原生 JSON 支持…...

【Mini-F5265-OB开发板试用测评】显示RTC日历时钟
一、前言 本章节承接上期的【Mini-F5265-OB开发板试用测评】硬件SPI方式驱动LCD屏帖子上。灵动微官方提供的“LibSamples_MM32F5260_V0.10.2”SDK中包含一个RTC日历的参考例程,因此将该功能移植到上期工程中,即可达成在LCD屏上显示RTC日历时钟。 官方提…...
【C/C++】EBO空基类优化介绍
空对象优化(Empty Base Optimization,简称 EBO)是 C 编译器的一种 优化技术,用于消除空类作为基类时占用的内存空间,从而避免浪费空间、提升结构体或类的存储效率。 1 什么是“空对象”? 一个**空类&#…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(上)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Go语言中的if else控制语句
if else是Go语言中最基础也最常用的条件控制语句,用于根据条件执行不同的代码块。下面我将详细介绍Go语言中if else的各种用法和特性。 1. 基本语法 1.1. 最简单的if语句 if 条件表达式 {// 条件为true时执行的代码 } 示例: if x > 10 {fmt.Prin…...