计算机网络:自顶向下第八版学习指南笔记和课后实验--网络层(控制平面)
网络层:控制平面
记录一些学习计算机网络:自顶向下的学习笔记和心得
Github地址,欢迎star ⭐️⭐️⭐️⭐️⭐️
控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理
概述
- 转发表(基于目的地转发的场景)和流表(泛化转发的场景)
- 计算、维护和安装流表以及转发表
- 每路由器控制
- 每台路由器具有一个路由选择组件,用于和其他路由器路由选择组件通信
- 逻辑集中式控制
- 逻辑集中式控制器计算并分发转发表以供每台路由器使用
- 该控制器与每台路由器中的控制代理(CA)进行交互,CA一般只具有与控制器通信并按照控制器命令行事这一种功能
- 与每路由器控制中的CA不同,这些CA之间不能直接相互交互,也不能主动参与计算转发表
- 每路由器控制
路由选择算法介绍以及划分
-
路由选择算法目的是从发送方到接收方的过程中确定一条通过路由器网络的好路径(最低开销的路径)
-
根据集中式和非集中式来划分
- 集中式路由选择算法
- 用完整的、全局的网络知识计算出从源到目的地之间的最低开销路径
- 集中式算法具有关于连通性和链路开销方面的完整信息
- 具有全局状态信息的算法常被称作链路状态(LS)算法,该算法必须知道网络中每条链路的开销
- 分散式路由选择算法
- 路由器以迭代、分布式的方式计算最低开销路径,没有节点拥有关于所有网络链路开销的完整信息
- 每个节点仅有与其直接相连链路的开销知识,然后通过迭代计算过程以及相邻节点的信息交换来确定最低开销路径
- 距离向量(DV)算法,分散式路由选择算法,每个节点维护到网络中所有其他节点的开销(距离)的向量
- 集中式路由选择算法
-
根据静态和动态来划份
- 静态路由选择算法,路由随时间变化非常缓慢,通常是人工进行调整
- 动态路由选择算法,随着网络流量负载或拓扑发生变化而改变路由选择路径
- 易受到诸如路由选择循环、路由振荡之类问题的影响
-
根据负载敏感和负责迟钝来划分
- 负载敏感算法,链路开销会动态地变化以反映出底层链路的当前拥塞水平
- 负载迟钝算法,某条链路的开销不明确反应当前或最近的拥塞水平(主流)
链路状态路由选择算法(LS)
- 通过链路状态广播算法,向每个节点向网路中所有其他节点广播链路状态分组,每个分组包含它所连接的链路的标识和开销
- 每个节点都具有网络的统一、完整视图,然后每个节点都能够运行LS算法并计算出相同的最低开销路径集合
- 链路状态路由选择算法(LS):Dijkstra算法
- Djkstra算法计算出某节点到所有其他节点的最低开销路径
- 当同一链路两个方向负载不同时,会出现振荡情况
- 该情况不仅出现在LS中,它出现在任何使用拥塞或基于时延的链路测度算法中
- 让所有路由器并非同时运行LS算法来解决这种问题
- 为了避免自同步,将通告时间随机化
距离向量算法DV
- 距离向量算法是一种迭代的、异步的和分布式算法
- 分布式:每个节点都要从相邻节点获取信息、计算然后向邻居分发
- 迭代:此算法一直持续到没有信息交换为止
- 异步:不要求所有节点相互之间步伐一致
- Bellman-Ford算法
- 节点唯一具有的信息是它到直接相连邻居的链路开销和它从这些邻居接收到的信息,每个节点具有初始路由选择表
- 从邻居接受更新距离向量、重新计算路由选择表项和通知邻居到目的地的最低开销路径的开销,循环往复直到没有更新,该算法进入静止状态
- 为了避免路由选择环路
- 如果z通过y路由到达x,则z将通告y,z到x的距离是无穷大的即,Dz(x)为无穷
- 只要z经y路由选择到x,z就持续这样做
LS和DV路由选择算法比较
- 报文复杂度:LS每次链路状态发生改变就要向所有节点发送新的链路开销,DV算法仅当新的链路开销导致与该链路相连的最低开销路径发生变化时才传播新的开销
- 收敛速度:DV慢,且在收敛时会遇到路由选择环路以及无穷计数问题
- 健壮性:
- LS,路由计算在某种程度上是分离的,提供了一定的健壮性
- DV,一个不正确值会扩散到整个网络
因特网自治系统内部路由选择:OSPF
-
随着路由器数目变得巨大,成本和规模将会高的不可实现
-
因特网时ISP的网络,每个ISP都有自己的路由器网络
-
引入自治系统(AS)
- 每个AS由一组在相同管理控制下的路由器组成,通常在一个ISP和互联他们的链路构成一个AS
- 一个ISP可以拆分为多个AS
- 每个AS都有唯一的ASN号标识
- 一个自治系统AS内部的路由选择算法叫做自治系统内部路由选择协议
-
开放最短路优先(OSPF)
- OSPF是一种链路状态协议,洪泛链路状态信息和Dijkstra最低开销路径算法,使用OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图
- OSPF提供了一种机制来让网络管理员为给定的链路权值集合确定最低开销的路由选择
- 管理员设置不同的权重来实现不同的功能,最少跳等
- OSPF路由器向AS内所有路由器广播路由选择信息,即使状态未发生改变,它也周期性的广播链路状态(增加了健壮性)
- OSPF通告包含在IP报文中,对OSPF其上层协议的值为89,因此OSPF必须自己实现诸如可靠报文传输、链路状态广播等功能
- OSPF的优点:
- 安全:能够鉴别OSPF路由器之间的交换
- 多条相同开销的路径:存在多条相等开销路径时,无需选择单一路径承载所有流量
- 单播和多播路由选择的综合支持
- 支持在单个AS中的层次结构:一个OSPF自治系统能够层次化配置多个区域
- 每个区域,一台或多台区域边界路由器负责为该区域以外的分组提供路由选择
- 每个AS中,只有一个OSPF区域被配置为主干区域,主干区域为该AS中其余区域之间的流量提供路由选择
- 该主干包含所有的区域边界路由器和部分非边界路由器
- AS中的路由选择要求,分组先到达区域边界路由器,然后通过主干区域到达目的区域的区域边界路由器,进而到最终目的地
ISP之间的路由选择:BGP
-
当分组跨越多个AS进行路由时,需要一个自治系统间路由选择协议
-
在因特网中所有的AS运行相同的AS间路由选择协议,称为边界网关协议
-
BGP将因特网中数以千计的ISP粘合起来(因特网中协议唯一可能竞争者是IP协议)
-
BGP是一种分布式和异步的协议
BGP作用
-
每个路由器具有一台转发表,对于位于相同AS的目的地而言,转发表表项由AS内部路由协议决定,对于AS外部的目的地由AS间协议决定
-
BGP中分组路由到一个CIDR化的前缀,其中每个前缀代表一个子网或一个子网的集合
- (x,i)形式
- x代表前缀(138.16.68/22),i代表路由器的接口之一的接口号
-
BGP需要完成
- 从邻居AS获得前缀的可达性信息,BGP允许每个子网向因特网其余所有部分通告它的存在,BGP确保因特网中过的所有AS知道该子网
- 确定到该前缀的最好的路由,一台路由器可能直到多条通往同一前缀的不同路由,路由器本地运行一个BGP路由选择过程(使用从相邻路由器获得的的前缀可达信息),该最好的路由基于策略以及可达性信息来确定
-
通告BGP路由信息
- 每个AS内部每台路由器要么是一台网关路由器,要么是一台内部路由器
- 网关路由器位于AS边缘,它链接到其他AS的一台或多台路由器
- 内部路由器仅连接在他自己AS中的主机和路由器
- 在BGP中每台路由器使用179端口的半永久TCP链接交换路由选择信息
- 每条直接连接以及所有通过该链接发送的BGP报文称为BGP链接
- 跨越两个AS的BGP链接称为外部BGP链接(eBGP)
- 相同AS内部的BGP链接称为内部BGP链接(iBGP),iBGP不总是与物理链路相对应
- 每个AS内部每台路由器要么是一台网关路由器,要么是一台内部路由器
-
确定最好的路由
- 路由器通过BGP链接通告前缀时,前缀包括一些BGP属性,前缀及其属性称为路由
- 两个重要的属性是
AS-PATH
和NEXT-HOP
- AS-PATH包含通告已经通过的AS的列表
- BGP路由器还通过该属性检测和防止通告环路(在通告中发现了它自己,拒绝该通告)
- NEXT-HOP是AS-PATH起始的路由器接口的IP地址
- AS-PATH包含通告已经通过的AS的列表
- 热土豆路由选择
- 从所有可能的路由中选择到开始该路由的NEXT-HOP路由器具有最小开销的路由
- 相同AS内部的两台路由器到达一个目的地可能具有不同AS路径
- 转发表增加AS向外前缀时,AS间路由选择协议和AS内部路由选择协议都要用到
- 路由器选择算法
- 实际的BGP路由选择算法更为复杂
- 进入BGP路由选择算法的输入是到某前缀的所有路由的集合,该前缀是已被路由器学习和接受的,仅有一条时选择该路由,否则顺序调用以下规则
- 路由被指派一个本地偏好值作为其属性之一,它取决于该AS的网络管理员,最高本地偏好值路由被选择
- 最短AS-PATH路由,如果该规则是唯一规则,BGP将使用距离向量算法决定路径,其中距离测度使用的是AS跳的跳数,而不是路由器跳数
- 使用热土豆路由选择,最靠近NEXT-HOP路由器的路由
- 使用BGP标识符选择路由
- 进入BGP路由选择算法的输入是到某前缀的所有路由的集合,该前缀是已被路由器学习和接受的,仅有一条时选择该路由,否则顺序调用以下规则
- 实际的BGP路由选择算法更为复杂
-
IP任播
- BGP还常被用作实现IP任播服务,DNS常使用该服务
- CDN为他的多台服务器指派相同的IP地址,并使用BGP来通告这些服务器的IP地址,而处于不同的客户访问该IP会被引导至不同的不同的服务器(最近)
- DNS中,根服务器具有13个IP地址,但是每一个IP地址具有多台服务器,这些服务器分布在各地,用户访问这些根服务器时将通过IP任播路由到最近的根服务器
- BGP还常被用作实现IP任播服务,DNS常使用该服务
SDN控制平面
- 控制分组在网络的SDN使能设备中转发网络范围逻辑
- SDN四个关键特征
- 基于流的转发:能够基于运输层、网络层或链路层中任意数量的首部字段值进行;SDN控制平面的工作是计算、管理和安装所有网络交换机中的流表项
- 数据平面和控制平面分离
- 数据平面由网络交换机组成,执行”匹配+操作“的规则
- 控制平面由服务器以及决定和管理交换机流表的软件组成
- 网络控制功能:位于数据平面交换机外部,控制平面本身有两个组成
- 一个SDN控制器(网络操作系统)
- 控制器维护准确的网络状态信息,为网络控制应用程序提供这些信息
- 提供方法来让应用程序能够监视、编程和控制下面的网络设备
- 控制器是逻辑上集中,通常由几台服务器实现
- 若干网络控制应用程序:
- 一个SDN控制器(网络操作系统)
- 可编程的网络:
- 运行在控制平面上的网路控制应用程序,使用了SDN控制器提供的API来定义和控制网络设备的数据平面
- SDN促进了网络的分类,让计算硬件、系统软件和应用程序的分类,为计算机网络领域的创新提供了丰富、开放的生态系统
SDN控制器
- 通信层:SDN控制器和受控网络设备之间的通信,需要一个协议来传送控制器与这些设备之间的信息(OpenFlow)
- 网络状态管理层:由SDN控制平面所作出的最终控制决定,具有各类最新状态信息
- 对于网络控制应用程序的接口:控制器通过他的”北向“接口和应用程序交互,该API允许应用程序在状态管理层之间读/写网络状态和流表,当状态改变事件出现时,应用程序能够注册进行通告
OpenFlow协议
- OpenFlow协议运行在SDN控制器和SDN控制的交换机或其他实现OpenFlow API的设备之间
- 运行在TCP之上,使用6653默认端口
- 控制器流向受控交换机重要报文:
- 配置:该报文允许控制器查询并设置交换机的配置参数
- 修改状态:该报文由控制器使用,以增加/删除或修改交换机流表中的表项,并设置交换机端口特性
- 读状态:从交换机的流表和端口收集统计数据和计算器的值
- 发送分组:在受控交换机从特定的端口发送一个特定的报文
- 受控交换机流向控制器重要报文:
- 流删除:通知控制器已删除一个流表项
- 端口状态:通知端口状态变化
- 分组入:一个分组不与所有流表项匹配,这个分组被发给控制器进行额外处理
ICMP:因特网控制报文协议
- ICMP被主机和路由器用来彼此沟通网络层的信息
- ICMP的最典型用途是差错报告
- ICMP作为有效载荷承载在IP报文段中
- 指明上层协议为ICMP的IP数据报,分解出该数据报内容给ICMP
- ICMP报文由一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节(以便发送方能确定引起该差错的数据报)
- ICMPv6还增加了新兴IPv6功能所需的新类型和编码
- 分组太大
- 未被认可的IPv6选项
- 。。。
相关文章:
计算机网络:自顶向下第八版学习指南笔记和课后实验--网络层(控制平面)
网络层:控制平面 记录一些学习计算机网络:自顶向下的学习笔记和心得 Github地址,欢迎star ⭐️⭐️⭐️⭐️⭐️ 控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制…...

MFC 窗口创建过程与消息处理
目录 钩子简介 代码编写 窗口创建过程分析 消息处理 钩子简介 介绍几个钩子函数,因为它们与窗口创建工程有关 安装钩子函数 HHOOK SetWindowsHookExA([in] int idHook,[in] HOOKPROC lpfn,[in] HINSTANCE hmod,[in] DWORD dwThreadId ); 参数说明…...

基于JavaWeb+SSM+Vue微信小程序的移动学习平台系统的设计和实现
基于JavaWebSSMVue微信小程序的移动学习平台系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 2 第2章 开发环…...

解决docker alpine /bin/sh: ./main: not found
解决docker alpine /bin/sh: ./main: not found golang中编译之后的二进制文件部署在alpine镜像中出现了not found问题解决这种情况是因为动态链接库位置错误导致的,alpine镜像使用的是musl libc而不是gun libc。因而动态链接库的位置不一致。在基础镜像内执行&…...

深入了解网络基础:从背景到协议
这里写自定义目录标题 1. 什么是协议呢?2. 什么是网络协议?5. OSI七层网络模型6. 网络传输基本流程1. 数据准备:2. 数据传输:3. 数据接收和重新组装:4. 数据处理与应用: 7. 数据的发送(封装&…...

针对这两个趋势,3.0全新新零售商业模式可以采取以下策略:
国内市场确实存在“消费升级”和“消费降级”两个趋势,这是由于不同消费者群体的需求和购买力存在差异。消费升级主要发生在高端市场,消费者愿意为高品质、高价值、高价格的商品和服务付出更多。而消费降级则主要发生在中低端市场,消费者更加…...

鸿蒙HarmonyOS开发用什么语言
1.网上流行一句有中国底蕴的话:鸿蒙系统方舟框架盘古大模型。都方舟框架了肯定主推的是ArkUI框架。其实还能使用C、Java和Js开发。 2.从API8开始,Java语言已经从鸿蒙开发剔除了,而官方推荐的是ArkTs.下图是ArkTS与TS、JS的关系。 ArkTs 是TS的…...

气象数据预测分析与可视化:天气趋势预测揭秘
气象数据预测分析与可视化:天气趋势预测揭秘 引言数据获取数据分析可视化展示Flask框架实现创新点:空气质量预测结论 引言 天气对我们日常生活和工作有着重要的影响,因此天气预测与分析变得愈发重要。本文将介绍如何通过爬取2345天气网的数据…...

install cuda cudnn tersorRT
1, dark view 2,470-server cant install 11.4 3,cuda.run and tensorRT.dpkg cant # 安装 $ ubuntu-drivers devices$ sudo apt-get install nvidia-driver-470-server # 推荐是server,都可以。#delelt sudo apt --purge remove nvidia-* CUDA Toolkit Archiv…...
Vue 3 + Vite 4 移动端低版本白屏处理
vue3打包后在低版本浏览器或webview中出现白屏,原因就是因为语法兼容问题。根据vite官方文档描述,build.target 默认支持 Chrome >87、Firefox >78、Safari >14、Edge >88 传送,所以需要我们手动兼容低版本。 方法: …...

Python爬虫-解决使用requests,Pyppeteer,Selenium遇到网站显示“您的连接不是私密连接”的问题|疑难杂症解决(2)
前言 本文是该专栏的第13篇,后面会持续分享python爬虫案例干货,记得关注。 相信很多同学在处理爬虫项目的时候,会遇到一些网站出现如下图所示的情况: 就是当你不论是使用requests进行协议请求,还是使用自动化框架pyppeteer或者selenium都会出现上图中的情况。这相信会或多…...

机场信息集成系统系列介绍(5):机场运行资源管理系统
目录 一、简介 二、主要功能 1、 航班资源管理模块 2、甘特图资源模块 3、规划管理模块 4、资源基础数据定义及配置管理模块 5、系统功能设置模块 6、 审计管理模块 一、简介 机场运行资源管理系统(ORMS) 是一种专门用于管理和优化机场运行资源的系统。它能够实现机场航…...

JavaEE:线程池精讲
目录 一.什么是线程池 二.线程池的实现原理 🎈为什么要有工厂模式? 三.线程池的构造方法解读 🎈线程池的拒绝策略 四.自己实现一个线程池 一.什么是线程池 简单来说,线程池就好比一块鱼塘,鱼塘中的每条鱼就是一个线程…...
spring-cloud-starter-gateway-mvc的网关实现
一 概括 最近,我也一直在使用SpringCloudGateway开发我们自己的网关产品。根据我对官网文档:https://docs.spring.io/spring-cloud-gateway/reference/spring-cloud-gateway-server-mvc.html 的理解,内容如下: SpringCloudGatew…...

《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop
📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…...

多架构容器镜像构建实战
最近在一个国产化项目中遇到了这样一个场景,在同一个 Kubernetes 集群中的节点是混合架构的,也就是说,其中某些节点的 CPU 架构是 x86 的,而另一些节点是 ARM 的。为了让我们的镜像在这样的环境下运行,一种最简单的做法…...

通过层进行高效学习:探索深度神经网络中的层次稀疏表示
一、介绍 深度学习中的层次稀疏表示是人工智能领域日益重要的研究领域。本文将探讨分层稀疏表示的概念、它们在深度学习中的意义、应用、挑战和未来方向。 最大限度地提高人工智能的效率和性能:深度学习系统中分层稀疏表示的力量。 二、理解层次稀疏表示 分层稀疏表…...

自然语言处理阅读第二弹
HuggingFace 镜像网站模型库 HuggingFace中bert实现 下游任务介绍重要源码解读 NLP中的自回归模型和自编码模型 自回归:根据上文内容预测下一个可能的单词,或者根据下文预测上一个可能的单词。只能利用上文或者下文的信息,不能同时利用上…...

利用canvas封装录像时间轴拖动(uniapp),封装上传uniapp插件市场
gitee项目地址,项目是一个空项目,其中包含了封装的插件,自己阅读,由于利用了canvas所以在使用中暂不支持.nvue,待优化; 项目也是借鉴了github上的一个项目,timeline-canvas, ...

PDF转为图片
PDF转为图片 背景pdf展示目标效果 发展过程最终解决方案:python PDF转图片pdf2image注意:poppler 安装 背景 最近接了一项目,主要的需求就是本地的文联单位,需要做一个电子刊物阅览的网站,将民族的刊物发布到网站上供…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...