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

计算机网络——网络层(2)

计算机网络——网络层(2)

  • 小程一言
    • 专栏链接: [link](http://t.csdnimg.cn/ZUTXU)
  • 网络层——控制平面
    • 概述
      • 路由选择
      • 转发表
      • 路由协议
      • 路由信息的交换
      • 小结
    • 路由选择算法
      • 常见的路由选择算法
        • 距离矢量路由算法
          • 工作原理
          • 优缺点分析
        • 链路状态路由算法
          • 基本工作原理
          • 优缺点分析
        • 链路状态路由算法
          • 工作原理
          • 优缺点分析
        • 最短路径算法
          • 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为边数。
最短路径小结

这些最短路径算法在路由选择中扮演着重要的角色,路由器可以利用这些算法计算出到达目的节点的最佳路径,以便进行数据包的转发。最短路径算法的选择取决于网络的特性,例如是否存在负权边等。
在这里插入图片描述

小结

路由选择算法的选择取决于网络的规模、复杂度、性能需求和安全性要求。不同的算法有不同的优缺点,例如距离矢量算法简单易实现但收敛速度慢,链路状态算法收敛速度快但占用资源多等。在实际应用中,需要根据具体的网络环境和需求来选择合适的路由选择算法。

相关文章:

  • c#之构值类型和引用类型
  • 4核16G幻兽帕鲁服务器优惠价格表,阿里云和腾讯云报价
  • ES 分词器
  • Android源码设计模式解析与实战第2版笔记(一)
  • RabbitMQ-如何保证消息不丢失
  • Sentinel背后的原理:守卫你的代码安全之旅
  • [GXYCTF2019]BabySQli1
  • Day53 动态规划part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子数组和
  • 在中国如何方便地使用GPT Plus?
  • 【Java 设计模式】行为型之中介者模式
  • c语言实战之贪吃蛇
  • Flutter pubspec.yaml添加三方库、插件依赖时版本号前面的^作用
  • 如何领导规模化敏捷变革?
  • 【数据结构四】栈与Stack详解
  • 05.领域驱动设计:认识领域事件,解耦微服务的关键
  • [LeetCode] Wiggle Sort
  • [Vue CLI 3] 配置解析之 css.extract
  • 「译」Node.js Streams 基础
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • css布局,左右固定中间自适应实现
  • ES2017异步函数现已正式可用
  • github从入门到放弃(1)
  • golang 发送GET和POST示例
  • js中forEach回调同异步问题
  • springMvc学习笔记(2)
  • storm drpc实例
  • vue-cli3搭建项目
  • vuex 学习笔记 01
  • WePY 在小程序性能调优上做出的探究
  • 从tcpdump抓包看TCP/IP协议
  • 基于HAProxy的高性能缓存服务器nuster
  • 设计模式走一遍---观察者模式
  • 网络应用优化——时延与带宽
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • puppet连载22:define用法
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 如何正确理解,内页权重高于首页?
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​VRRP 虚拟路由冗余协议(华为)
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (三分钟)速览传统边缘检测算子
  • (一)Neo4j下载安装以及初次使用
  • (转载)深入super,看Python如何解决钻石继承难题
  • *1 计算机基础和操作系统基础及几大协议
  • *上位机的定义
  • .Mobi域名介绍