中科大计网学习记录笔记(十八):网络层:数据平面:导论

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容😊😊😊

文章目录

    • 04. 网络层:数据平面
      • 4.1 导论
        • 4.1.1 网络层服务
        • 4.1.2 数据平面和控制平面
        • 4.1.3 传统方式与 SDN 软件定义网络
        • 4.1.3 网络服务模型

04. 网络层:数据平面

4.1 导论

4.1.1 网络层服务

网络层提供的服务

  1. 路由选择:网络层负责决定数据包从源主机传输到目标主机的路径。这包括确定最佳路径、转发数据包以及处理数据包的转发。
  2. 转发:网络层根据目标地址信息将数据包从一个网络设备传输到另一个网络设备。转发过程涉及查找路由表、确定最佳输出接口等操作。
  3. 拥塞控制:网络层可以帮助监测网络中的拥塞情况,并采取措施来减轻拥塞,以保证网络的性能和稳定性。
  4. 分组传输:网络层将数据分成更小的数据包或分组进行传输,每个数据包包含了目标地址等信息,以便在网络中进行路由选择和转发。
  5. 错误检测和纠正:网络层可以在数据包中添加差错检测码,以便接收方能够检测并纠正传输过程中发生的错误。
  6. 数据路由:网络层可以根据不同的网络协议(如IP协议)进行数据路由,决定数据包从源节点到目标节点的路径。
4.1.2 数据平面和控制平面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

💡 网络层的数据平面和控制平面是网络功能分离(NFV)和软件定义网络(SDN)等技术中常见的概念,用于描述网络功能的两个关键方面。

  1. 数据平面(Data Plane)
    • 数据平面是网络设备中负责处理数据包转 发和处理 的部分,它实际上执行网络中的数据传输和路由功能。
    • 在网络层,数据平面主要包括路由器、交换机等网络设备中的硬件和软件组件,用于根据数据包的目标地址进行转发和路由选择。
    • 数据平面的主要任务是根据网络层协议(如IP协议)中的目标地址信息,将数据包从输入端口转发到输出端口,以实现数据在网络中的传输。
  2. 控制平面(Control Plane)
    • 控制平面是网络设备中负责配置和管理数据平面行为的部分,它通常运行网络设备的控制软件,控制 网络设备的行为和路由选择策略
    • 在网络层,控制平面主要包括路由器、交换机等网络设备中的控制软件和管理协议,用于配置路由表、生成路由信息、处理路由更新等功能。
    • 控制平面的主要任务是根据网络中的拓扑结构和路由策略,生成路由表并更新网络设备中的转发表,以指导数据平面进行数据包的转发和路由选择。
4.1.3 传统方式与 SDN 软件定义网络

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

💡 在传统网络中,路由器和交换机等网络设备既负责数据包的转发(数据平面),又负责路由计算、路径选择等控制功能(控制平面),这就带来了如下的问题:

  1. 静态配置和管理: 在传统网络中,网络设备的配置和管理通常是静态的,需要手动配置 每个 设备的路由信息、访问控制列表(ACL)等,这样的配置不够灵活和自动化,容易导致配置错误和网络故障。
  2. 硬件依赖性: 传统网络通常依赖专用硬件设备,如路由器、交换机等,这些设备成本高昂且功能相对固定,难以快速适应不断变化的网络需求。
  3. 难以扩展: 传统网络的扩展性有限,当网络规模增大或者需要新增功能时,往往需要进行 大规模 的更改和升级,这会增加管理和维护的成本。
  4. 难以实现灵活的流量控制: 传统网络对于流量的控制和管理相对较为困难,难以实现细粒度的流量控制、优先级和质量服务(QoS)等功能。
  5. 对故障的应对能力较弱: 传统网络中的故障难以及时发现和快速恢复,可能导致网络中断或者性能下降。

所以相对于难以维护的分布式的架构,更希望有一种集中式的解决方案,来增强灵活性、可拓展性和管理效率等方面,这就是 SDN 网络。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

💡 SDN 网络的控制平面和数据平面是按照如下的方式进行架构的:

  1. 控制平面(Control Plane):负责网络的控制和管理,包括路由计算、流量工程、安全策略等功能。在 SDN 中,控制平面被抽象出来,集中在一个或多个控制器 中,通过控制器来对网络设备进行 配置和管理
  2. 数据平面(Data Plane):负责实际的数据转发和处理,包括数据包的交换、路由和转发等操作。在 SDN 中,数据平面通常由网络设备(如交换机、路由器)实现,但它们的行为受控制器的指令影响。

💡 要理解 SDN 网络首先要知道它由哪些部分构成:

  1. 控制器(Controller):是 SDN 网络的核心组件,负责管理和控制网络中的所有设备。控制器根据网络策略和需求生成相应的路由表,并向数据平面中的设备发送配置指令,实现网络的动态调整和管理。
  2. 北向接口(Northbound Interface):控制器与上层应用程序之间的接口,用于接收和传递应用层的网络策略、需求和配置信息。
  3. 南向接口(Southbound Interface):控制器与网络设备之间的接口,用于向数据平面中的设备发送配置指令,如 OpenFlow 协议就是一种常用的南向接口协议。
  4. 应用层(Application Layer):SDN 架构中的应用程序层,包括网络监控、流量优化、安全管理等各种应用,通过北向接口与控制器交互,实现对网络的管理和控制。

在典型的 SDN 网络中,路由器(或交换机)通过向 SDN 控制器发送信息来请求路由表、流表等数据,并接收来自控制器的指令以执行相应的操作。

同时,控制器也与应用层进行通信,接收来自应用层的策略、需求等信息,并根据这些信息来指导网络的行为。

💡 什么是流表?

  • 流表(Flow Table)是SDN(软件定义网络)中交换机或路由器上存储的数据结构,用于定义数据包的处理规则。每个流表项包含匹配条件和相应的操作指令。
  • 流表中的匹配条件通常由数据包的各个字段组成,例如源 IP 地址、目标 IP 地址、源端口、目标端口、协议类型等。当数据包到达交换机或路由器时,会与流表中的各个项 逐一进行匹配。当找到与数据包匹配的流表项时,交换机或路由器会执行与该流表项关联的操作,例如转发数据包到特定的端口、丢弃数据包、修改数据包的字段值等。
  • 控制器可以通过应用层下发指令或策略来修改流表。应用层可以根据网络的需求或特定的策略来生成相应的指令,然后将这些指令传递给控制器,控制器再将其转化为对流表的操作,从而实现网络的动态管理和控制。
4.1.3 网络服务模型

💡 服务模型:是指在计算机网络中定义和描述服务提供方式的一种抽象概念。它描述了网络中的各种服务类型、服务质量、数据处理方式等,以及用户和应用程序可以期望从网络中获得的特定服务。

网络层的服务可以用一个模型来评估

  • 对单个数据包的服务可以评估其传输是否可靠、延迟是否有保障
  • 对数据包流的传输需要保证流的保序、带宽、延迟等情况

网络层除了以上的服务还可以提供连接建立的服务,与 TCP 在传输层建立的逻辑的链接不同,这里的连接上每个路由器都会去维护两个主机之间的连接,所以说 TCP 是 面向连接,而在网络层提供的连接服务是 有连接

一下是几个网络服务模型,展示了 ATM 网络和 Internet 提供的服务

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

从汇编来角度剖析C语言函数调用过程

目录 1.引言 2.寄存器 3.栈帧 4.函数调用前调用者的动作 5.被调用者在函数调用后的动作 6.被调用者返回前的动作 7.调用者在返回后的动作 8.总结 1.引言 当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作…

解决 version GLIBCXX_*.*.* not found

1. 情况描述 linux机器,编译程序正常,但是运行程序报错 2. 错误原因 查看 libstdc.so 中CXXABI 版本,命令: strings /lib64/libstdc.so.6 | grep CXXABI 结果: 发现是libstdc版本过低导致 3. 解决问题 a> 查找当前环境上是否…

web前端之文字逐渐展示、擦除文字效果、requestAnimationFrame

MENU 版本一(requestAnimationFrame)版本二(setTimeout)版本三(纯css) 版本一(requestAnimationFrame) 前言 window.requestAnimationFrame()告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函…

C后端开发,记录一个关于条件变量的死锁bug

过程 前几天使用IPC进程通信的原理写了一个聊天室,并且支持高并发。 在对于预防共享内存被多个进程同时使用导致信息丢失的情况时,使用了互斥锁,在客户端的代码中,最一开始是这样的: void send_by_signal() {DBG(&q…

离散化算法,以Acwing802.区间和为例子(C++实现)

目录 1.例题2.算法实现思路3.代码 1.例题 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c接下来,进行 m 次询问,每个询问包含两个整数 l 和 r&#…

从0到1:如何用AI完成高质量的科研论文写作?

人工智能革命:如何让聊天机器人更懂你 人工智能正在以其强大的数据处理和语言生成能力改变世界。在学术界,大语言模型(LLM)为科学交流带来了一种新的工具。我们旨在有效地将AI工具与学术写作相结合,以更有效和更有影响…

在Linux服务器上安装Node.js

在Linux服务器上安装Node.js是一个相对简单的过程,以下是一份详细的安装指南,帮助您顺利在Linux服务器上安装Node.js。 一、准备工作 在开始安装Node.js之前,请确保您的Linux服务器已经连接到互联网,并且具有管理员权限。此外&a…

go语言tcp协议实现文件上传

一、客户端实现方案: package mainimport ("fmt""io""net""os" )func sendFile(filePath string, conn net.Conn) {defer conn.Close()// 获取文件名fileInfo, err : os.Stat(filePath)if err ! nil {fmt.Println("E…

【零基础学习04】嵌入式linux驱动中信号量功能基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天给大家分享一下,linux系统里面信号量操作的具体实现,操作硬件为I.MX6ULL开发板。 第一:信号量基本简介 信号量是同步的一种方式,linux内核也提供了信号量…

在HTML5表单验证,自定义规则,用checkValidity()结合setCustomValidity()实现

自定义校验规则: 在HTML5表单验证API中,自定义规则通常通过监听表单元素的事件(如 input、change 或 invalid)并在JavaScript中进行验证来实现。以下是一个简单的例子,展示了如何创建一个自定义的验证规则,该规则要求输入字段必须包含至少两个连续的大写字母: <!DO…

数据大屏--->前端实时更新数据的几种方式

参考文章:实时数据更新 一、轮询:简单来说轮询就是客户端不停地调用服务端接口以获得最新的数据 1、短轮询:每隔3s向服务器发送一次请求- - -请求数据 优点:最大的优点就是实现简单 缺点:(1)无用的请求多,客户端不知道服务端什么时候数据更新,只能不停的向服务端发送请求, …

HTML5+CSS3+移动web——CSS 文字控制属性

系列文章目录 HTML5CSS3移动web——HTML 基础-CSDN博客https://blog.csdn.net/ymxk2876721452/article/details/136070953?spm1001.2014.3001.5502HTML5CSS3移动web——列表、表格、表单-CSDN博客https://blog.csdn.net/ymxk2876721452/article/details/136221443?spm1001.2…

java八股文复习-----2024/03/05----基础---跨域,过滤器,拦截器的区别

来源一 大彬八股文 来源二 2023 20W字八股文 2024秋招八股文 1.什么是跨域&#xff1f; 简单来讲&#xff0c;跨域是指从一个域名的网页去请求另一个域名的资源。由于有同源策略的关系&#xff0c;一般是不允许这么直接访问的。但是&#xff0c;很多场景经常会有跨域访问的…

反无人机电子护栏:原理、算法及简单实现

随着无人机技术的快速发展&#xff0c;其在航拍、农业、物流等领域的应用日益广泛。然而&#xff0c;无人机的不规范使用也带来了安全隐患&#xff0c;如侵犯隐私、干扰航空秩序等。为了有效管理无人机&#xff0c;反无人机电子护栏技术应运而生。 目录 一、反无人机电子护栏…

读取pkl文件,并得到它的所有key列表

import pickledef get_keys_from_pkl(file_path):with open(file_path, rb) as f:data pickle.load(f)keys list(data.keys())return keys# 用你的文件路径替换 your_file.pkl file_path your_file.pkl keys_list get_keys_from_pkl(file_path) print(keys_list)这段代码首…

怎样开始用selenium进行自动化测试?

在当今的软件开发过程中&#xff0c;自动化测试已成为确保应用程序质量和效率的关键工具。其中&#xff0c;Selenium作为一个强大的自动化测试工具&#xff0c;已经被广泛应用于Web应用程序的自动化测试。 但初学者要如何使用Selenium进行自动化测试&#xff1f;这当中包括Sel…

JavaScript---VConsole插件配置使用,一步到位简单实用!

1. 寻找到自己需要的VConsole插件js文件 个人喜欢BootCDN这个平台&#xff08;直接在线引用或者下载本地引入均可~&#xff09; vConsole (v3.15.1) - A lightweight, extendable front-end developer tool for mobile web page. | BootCDN - Bootstrap 中文网开源项目免费 C…

【Web】浅聊XStream反序列化本源之恶意动态代理注入

目录 简介 原理 复现 具体分析之前 我们反序列化了个什么&#xff1f; XStream反序列化的朴素通识 具体分析 第一步&#xff1a;unmarshal解组 第二步&#xff1a;readClassType获取动态代理类的Class对象 第三步&#xff1a;调用convertAnother对动态代理类进行实例…

JS数组相关知识

获取数组的最大值/最小值&#xff1a; let arrary [2,5,4] let max arrary[0] for(let i 0;i<arrary.length;i){if(arrary[i]>max){max arrary[i]} }console.log(max);//查询数组最小值let arr [2,21,34,23,45] let min arr[0] for(let i 0;i<arr.length;i){if…

mybatis-编写mapper.xml SQL语句时无提示

你们好&#xff0c;我是金金金。 场景 可以看见sql颜色都是白色的&#xff0c;而且编写的时候没有提示&#xff0c;简直痛苦 排查 中途有设置过SQL方言等&#xff0c;都没有解决我的问题 解决 很简单&#xff0c;https 改成 http 就有提示了&#xff01;&#xff01;&#x…