【计算机网络】网络层:数据平面

news2024/11/28 22:35:03

一.网络层概述

每台路由器的数据平面的主要功能时从其输入链路向其输出链路转发数据报,控制平面的主要功能是协调这些本地的每路由转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。
网络层不运行运输层和应用层协议。
转发是数据平面实现的唯一功能。
转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地操作,路由选择是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程。

  • 转发表:
    路由器通过检查到达报文的首部,与转发表中的表项进行匹配,决定将该报文转发到路由器哪一个输出接口上。

二.路由器工作原理

1.输入端口处理和基于目的地转发

最简单的情况,对于全球的将所有IP地址,转发表中都有对应的表项,但是全球有40亿个可能的地址,这种方法在整体上是不可行的。
第二种是路由器使用分组目的地址前缀进行匹配,并且使用最长前缀匹配原则。

2.交换
  1. 经内存交换:
    当输入端口接收到报文时,先将该报文存储到内存中,在内存中取出目的地址,然后发送到目的端口。这种方法,如果内存带宽为每秒可写进内存或从内存中读出对多B个分组,则总的转发吞吐量必然小于B/2,也要注意到不能同时转发两个分组,即使它们有不同的目的端口,因为经过共享系统总线一次仅能执行一个内存读/写。
  2. 经总线交换
    在这种方法中,输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预,如果多个分组同时到达路由器,每个位于不同的输出端口,出了一个分组之外,其他的分组都要进行等待,因为一根总线只能通过一个分组。
  3. 经互联网交换
    纵横是网络能够并行转发多个分组(位于不同输入端口,不同输出端口)。
3. 何处出现排队
  1. 输入排队
    简单来说,位于同一个输入链路上的分组,必须等待前一个分组被交换后,后面的分组才能进行交换。
    线路前缀阻塞:假定有输入端口1,2,输出端口1,2,在输入端口1中,有一个报文要交换到输出端口1,在输入端口2中,第一个分组要到输出端口1中,第二个分组要到输出端口2中去,那么输入端口2中的第一个报文就要进行等待,而且输入端口2中的第二个分组(去往输出端口2)也要等待,这就是线路前缀等待。
  2. 输出排队
    假定有输入端口1,2,3,都要从输出端口1中出去,而在交换机中的交换速率大于输出端口的发送速率,在第一个单位时间,输入端口三个报文到达输出端口1,在第二个单位时间内,一个分组被输出端口1发送出去了,那就还有两个分组在输出端口等待,而同时,输出端口1,2,3接收到的新的分组,又到了输出端口1中,并且进行等待,这样经过了n个单位时间后,输出端口的内存被耗尽,当没有足够的内存来缓存一个分组时,就必须做出决定:要么丢弃到达的新分组(弃尾),要么删除一个或多个已排队的分组来为新来的分组腾出空间。已经提出和分析出了许多分组丢弃与标记策略,这些策略统称为主动排队管理。这样的后果是:输出端口的分组调度在这些排队分组中选择一个分组来传输
4.分组调度

分组调度研究的问题是:在输出端口上,排队的分组如何经输出链路输出的问题。

  1. 先进先出(FIFO,FCFO)
    不考虑由于丢弃策略丢弃的分组,按照到达输出端口的顺序进行传输(先到的先接受服务)。
  2. 优先权排队
    在优先权排队规则下,到达输出端口的分组被分类放到输出队列中的优先权类,按照高优先权队列优先的方式进行传输(在同一优先权类中按照FIFO方式传输)。
    也就是说,假定有四个分组,1,2,3,4,其中1和3属于高优先权,而2和4属于低优先权,1分组先到达输出端口,发现输出端口为空,则立即进行传输,其后,2和3到达,3进入高优先权分类,而2进入低优先权分类,在1完成传输之后,3优先于2进行传输,在2传输的同时,4分组到达,它属于低优先权,进入低优先权分类中,排到2之后,在3分组传输完成后,依次传输2和4分组。在非抢占式优先权排队规则下,一旦分组开始传输,就不能被打断,也就是说,低优先权分组正在进行传输,这时候就算高优先权分组到达,也要等待这个分组传输完成后才能进行传输。
  3. 循环加权公平排队
    在循环加权排队规则下,依旧进行优先权分类,比如说:分组1,2,3属于一个优先级,而4,5,6属于另一个优先级,分组1先到达,然后立即开始传输,之后,2,3,4,5,6分别到达,并且进行了分类:一个分类中是2和3,另一个分组是4,5和6,在1分组传输完成后,传输4,然后传输2,5,3,6。
    另一种加权公平排队是:每一个优先权根据分组排队数量进行加权,为了使每一个分类加权相同,则优先传输加权比较高的分类中的一个或者多个分组,等加权相同后,再根据优先级,进行循环加权排队传输。

三.网际协议:IPV4,寻址,IPV6及其他

1.PV4数据报格式

IPv4数据报格式

  • 版本号:这里的版本号标识了是IPV4还是IPV6,版本的不同,如何解释后面的内容也不同
  • 首部长度:数据报文首部长度
  • 服务类型:区别除了不同类型的数据报,如:要求尽快到达,要求没有差错到达等
  • 总长度:IP数据报文的总长度
  • 标识,标志位,片偏移:与IP数据报文的分片有关,我们马上讨论
  • 生存时间:每经过一个路由器,该值就要减一,当为0的时候,必须停止转发
  • 协议:标记了该数据报文应该交给运输层哪个协议
  • 首部校验和:只对首部提供了校验
  • 源IP地址,目的IP地址
2.IPV4数据报分片:

现在我们来考虑这样一个问题:如果你是一个路由器,当你收到一个数据报,要发送出去的时候,发现输出链路上MTU比这个报文要小,那么你该怎么办?
解决方法就是将这个较大的数据报分片,每片都包含IP数据报头部,并且将分片标识设置为1(最后一片除外),然后为了让目的主机知道分片的次序,还要设置片偏移。

3.IPV4编址:

IPV4地址由32位比特组成,使用点分十进制法即地址中每个字节都是用十进制形式书写,各字节之间使用句号分开。IPV4地址由两部分组成:网络段和主机段,并且根据这些对IPV4地址进行了分类:
A类(0):网络号占8位:2427个网络,每个里面含有224个IP
B类(10):网络号占16位:16214个网络,每个里面含有216个IP
C类(110):网络号占24位:8
D类:多播
E类:保留
那么我们来继续考虑一个问题,如果说我只是一个小公司,给我分配了一段地址,比如说分配到了A类,A类中有很多IP,我肯定用不完,那么就会造成地址的浪费,那么怎么办?这时候就提出来了子网掩码:比如像220.23.100/23,就是说,在这个IP地址中,前23位是我的网络地址,后面的才是我的主机地址,这就很好的利用了IP地址。
地址聚合,路由聚合,路由摘要:比如说,一台路由器下连接了一些子网,如:220.23.16.0/23,220.23.18.18/23,那么该路由器就向外界通告:向我发送以220.23.160./20开始的任何东西,那么当数据报到达一个路由器上的时候,开始前缀匹配网络地址,并且使用最长前缀匹配原则。
225.225.225.225广播地址。

4.获取一块地址:

全球权威的因特网名字和编号分配机构:ICANN

  1. 向ISP获取地址:
    这时候,ISP从自己的网段中,分配一小块地址给其使用
  2. 动态主机配置协议:
    某组织一旦获取了一块地址,那么就要给员工每人一个地址,那么这个工作由谁来完成?动态主机配置协议(DHCP)常被称为即插即用协议或零配置协议,DHCP服务器将会给每一个员工分配一个临时的IP地址,也可以配置DHCP,使某台主机每次与网络连接时都使用同一个IP地址。
    那么当一个主机链接到网络,它如何获取地址?
    1. DHCP服务器发现:使用DHCP发现报文,目的地址为255.255.255.255
    2. DHCP服务器提供:DHCP服务器接收到DHCP发现报文后,分配一个地址,包含租用期等信息,使用DHCP提供报文响应,也是使用广播地址255.255.255.255发送
    3. DHCP请求:当主机从一个或多个服务器中选择一个,并且向选中的服务器提供用DHCP请求报文进行响应
    4. DHCP ACK:服务器使用DHCP ACK报文对DHCP请求报文进行响应
5.网络地址转换

网络地址转换器NAT(Network Address Translator)位于使用专用地址的Intranet和使用公用地址的Internet之间。从Intranet传出的数据包由NAT将它们的专用地址转换为公用地址。从Internet传入的数据包由NAT将它们的公用地址转换为专用地址。这样在内网中计算机使用未注册的专用IP地址,而在与外部网络通信时使用注册的公用IP地址,大大降低了连接成本。同时NAT也起到将内部网络隐藏起来,保护内部网络的作用,因为对外部用户来说只有使用公用IP地址的NAT是可见的。

6.IPV6

IPV6数据报格式:
IPv6数据报格式

  • 版本号:毫无疑问,是6

  • 流量等级(流量类型):与IPv4中的TOS字段类似

  • 流标签:可以为一条流中的某些数据包给出优先权

  • 有效载荷长度:跟在定长4.字节后的字节数量

  • 下一个首部:指示该数据报应该交给哪个运输层协议处理

  • 跳先知:TTL

  • 源和目的地址

  • IPv4和IPv6的不同:

    1. 扩大的地址容量:
      IPv6将地址长度从32字节扩大到了128字节
    2. 简化高效的40字节首部
    3. 流标签
    4. IPv6不允许在中间路由器上进行分片与重新组装
    5. 首部校验和:IPv6去除了首部校验和
    6. 选项:选线字段不再是IP首部的一部分了

    通用转发

通用转发意味着,除了其最终目的地外,当路由器确定数据报的输出接口时,还会考虑与数据报相关的其他因素。通用转发延续了基于目的转发的"匹配+动作"模式, 但不受限于通过源分组的IP地址匹配目的IP地址进行转发, 而是通过富足首部字段值集合和计数器集合对动作集合进行匹配.例如:软件定义网络SDN采用的是通用转发,例如,除了目标IP地址外,转发决策还可以基于数据报的TCP/UDP源或目标端口号。

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

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

相关文章

【QT】绘图设备

绘图设备是指继承QPainterDevice的子类。Qt提供了很多这样的类,例如QPixmap、QBitmap、QImage和 QPicture。其中, QPixmap专门为图像在屏幕上的显示做了优化QBitmap是QPixmap的一个子类,它的色深限定为1,可以使用 QPixmap的isQBi…

安徽省黄山景区免9天门票为哪般?

今日浑浑噩噩地睡了大半天,强撑起身子写网文......可是,题材不好选,本“人民体验官”只得推广人民日报官方微博文化产品《这两个月“黄山每周三免门票”》。 图:来源“人民体验官”推广平台 因年事渐高,又有未愈的呼吸…

麒麟KYLINIOS软件仓库搭建02-软件仓库添加新的软件包

原文链接:麒麟KYLINIOS软件仓库搭建02-软件仓库添加新的软件包 hello,大家好啊,今天给大家带来麒麟桌面操作系统软件仓库搭建的文章02-软件仓库添加新的软件包,本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版本上&…

改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 | 涨点杀器

改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 论文地址:https://arxiv.org/abs/2107.08430 文章目录 改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv51. 解耦头原理2. 解耦头对收敛速度的影响3. 解耦头对精度的影响4. 代码改进方式第一步第二步第三步第四步第五步本…

0-1背包 完全背包 + 至多/恰好/至少 + 空间优化 + 常见变形题

# capacity:背包容量 # w[i]: 第 i 个物品的体积 # v[i]: 第 i 个物品的价值 # 返回:所选物品体积和不超过 capacity 的前提下,所能得到的最大价值和 def zero_one_knapsack(capacity:int,w:List[int],v:List[int]) -> int:n len(w)cache #记忆化搜索 def dfs(i…

吴恩达《机器学习》4-6->4-7:正规方程

一、正规方程基本思想 正规方程是一种通过数学推导来求解线性回归参数的方法,它通过最小化代价函数来找到最优参数。 代价函数 J(θ) 用于度量模型预测值与实际值之间的误差,通常采用均方误差。 二、步骤 准备数据集,包括特征矩阵 X 和目标…

使用C# 编写VISA相关的代码控制 keysight 34461A万用表

使用C# 编写VISA相关的代码控制 keysight 34461A万用表 1. 获取设备2. 开始编程2.1 创建项目2.2 编程2.3 全部工程代码 软件控制仪器仪表的教程在网上相对比较少,都是一段一段的代码,没有从头开始带初学者来进行操作的一个完整流程,整个方案难…

Unity中Shader的GI相关数据的准备

文章目录 前言一、把 Unity 中用到的 GI 的函数移植到我们自定义的 cginc 文件中二、开始使用和 GI 相关的方法1、了解 UnityGI 结构体的内容,并且准备 UnityGI 的数据2、了解 SurfaceOutput 结构体,并且准备数据3、了解并准备 UnityGIInput 结构体,并且…

Flutter笔记:发布一个模块 scale_design - (移动端)设计师尺寸适配工具

Flutter笔记 发布一个模块scale_design设计师尺寸适配工具与常用组件库 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/a…

词向量模型Word2Vec

Word2Vec CBOW连续词袋模型例子CBOW模型的embeddings层CBOW模型的线性层 总结 skip-gram跳字模型例子Skip-Gram模型的结构 CBOW和skip-gram的目标都是迭代出词向量字典(嵌入矩阵)——embeddings CBOW连续词袋模型 根据上下文词汇预测目标词汇 例子 使…

【FastCAE源码阅读3】几何模型显示:从OCC对象到VTK对象

从几何到显示还是比较麻烦的,需要将几何对象转换成渲染对象,涉及几何建模、面的三角化、图形渲染等学科,阅读本文需了解一些基本的OCC、VTK编程 一、几何体显示基本流程 FastCAE几何内核使用的是OCC,显示渲染用的VTK,…

Leetcode—111.二叉树的最小深度【简单】

2023每日刷题(十八) Leetcode—111.二叉树的最小深度 DFS实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ int minDepth(struct TreeNode* root…

NCL颜色索引表---全平台可用

NCL颜色索引表—全平台可用

三维向量旋转

三维向量旋转 问题描述问题分析 v ⃗ ∣ ∣ \vec{v}_{||} v ∣∣​的旋转 v ⃗ ⊥ \vec{v}_{\bot} v ⊥​的旋转 v ⃗ \vec{v} v 的旋转结论致谢 问题描述 如图1所示,设一个向量 v ⃗ \vec{v} v 绕另一个向量 u ⃗ [ x , y , z ] T \vec{u}[x,y,z]^{T} u [x,y,z]T…

【电路笔记】-相位差和相移

相位差和相移 文章目录 相位差和相移1、概述2、相位差2.1 同频信号2.2 电流与电压信号2.3 相似频率的信号 3、干扰4、总结 当我们听歌曲时,我们将正弦声音波形感知为音乐。 它们的振幅告诉我们信号有多大,频率告诉我们声音是低音还是高音。 然而&#xf…

vue学习part01

02_Vue简介_哔哩哔哩_bilibili Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) 1.简介 2.常用用法 新项目一般vue3,老项目vue2 3.vue两种风格:选项式api(vue2)和组合式api(vue3) 两种方式实现累…

JS异常处理——throw和try、catch以及debugger

让我为大家介绍一下异常处理吧! 异常处理是指预估代码执行过程中可能发生的错误,然后最大程度的避免错误的发生导致整个程序无法继续运行 throw 抛异常 第一种写法 function fun(x, y) {// undefined是false 但取反就是trueif (!x || !y) {// 第一种写…

实习记录--(海量数据如何判重?)--每天都要保持学习状态和专注的状态啊!!!---你的未来值得你去奋斗

海量数据如何判重? 判断一个值是否存在?解决方法: 1.使用哈希表: 可以将数据进行哈希操作,将数据存储在相应的桶中。 查询时,根据哈希值定位到对应的桶,然后在桶内进行查找。这种方法的时间复…

在线词典项目-项目介绍及框架搭建

项目介绍 通过代码实现词典的注册、登录、单词注释查询、历史查询、查询记录。 有道词典分析图 客户端流程图 注释:首先开始-->创建流式套接字-->连接服务器-->输入需要执行的命令代码-->创建循环,判断需要执行的函数(如果登录…

基于深度学习的行人重识别(person reid) 计算机竞赛

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的行人重识别 该项目较为新颖,适合…