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

一.网络层概述

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

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

二.路由器工作原理

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.mzph.cn/news/130006.shtml

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

相关文章

Pytorch网络模型训练

现有网络模型的使用与修改 vgg16_false torchvision.models.vgg16(pretrainedFalse) # 加载一个未预训练的模型 vgg16_true torchvision.models.vgg16(pretrainedTrue) # 把数据分为了1000个类别print(vgg16_true) 以下是vgg16预训练模型的输出 VGG((features): S…

FFmpeg直播能力更新计划与新版本发布

// 编者按:客户端作为直接面向用户大众的接口,随着技术的发展进化与时俱进,实现更好的服务是十分必要的。FFmpeg作为最受欢迎的视频和图像处理开源软件,被相关行业的大量用户青睐,而随着HEVC标准的发布到广泛使用&am…

【jvm】虚拟机栈

目录 一、背景二、栈与堆三、声明周期四、作用五、特点(优点)六、可能出现的异常七、设置栈内存大小八、栈的存储单位九、栈运行原理十、栈帧的内部结构10.1 说明10.2 局部变量表10.3 操作数栈10.4 动态链接10.5 方法返回地址10.6 一些附加信息 十一、代…

整理10个地推拉新app接单平台,免费一手推广渠道平台干货分享

1. 聚量推客: “聚量推客”汇聚了众多市场上有的和没有的地推网推拉新接单项目,目前比较火热,我们做地推和网推从业者如果长期在这行业去做推广可以使用这个平台,价格高数据也好,大部分拉新项目也都是官签一手资源 一…

关于Intel Press出版的《Bedyong BIOS》第2版的观后感

文章目录 此书的背景UEFI运行时DXE基础CPU架构协议PCI协议UEFI驱动的初始化串口DXE驱动示例 《Beyond BIOS》首先介绍一个简单的UEFI应用程序模块,用于展示UEFI应用程序的行为。作者为Waldo。该模块名为“InitializeHelloApplication”,它接受两个参数&a…

Leetcode—101.对称二叉树【简单】

2023每日刷题(十九) Leetcode—101.对称二叉树 利用Leetcode101.对称二叉树的思想的实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool isSa…

【深度学习基础】Pytorch框架CV开发(1)基础铺垫

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

3 — NLP 中的标记化:分解文本数据的艺术

一、说明 这是一个系列文章的第三篇文章, 文章前半部分分别是: 1 、NLP 的文本预处理技术 2、NLP文本预处理技术:词干提取和词形还原 在本文中,我们将介绍标记化主题。在开始之前,我建议您阅读我之前介绍的关…

Docker的简单安装

安装环境 CentOS Linux release 8.1.1911 (Core)内核4.18.0-147.el8.x86_64Mini Installation 安装前的准备工作 切换国内源 由于centos源已经过期,所以切换为阿里云的yum源,第二个是docker的仓库 wget -O /etc/yum.repos.d/CentOS-Base.repo https:…

云闪付app拉新推广一手渠道 附详细教程

云闪付推广拉新可以通过“聚量推客”申请 云闪付是什么呢?是中国银联出的支付平台,在地推和网推项目里也算是比较火热的app拉新产品,属于地推和网推的百搭项目,操作也简单 只需要动账就算一个数据,目前主要招收地推、…

重新思考边缘负载均衡

本文介绍了Netflix在基于轮询的负载均衡的基础上,集成了包括服务器使用率在内的多因素指标,并对冷启动服务器进行了特殊处理,从而优化了负载均衡逻辑,提升了整体业务性能。原文: Rethinking Netflix’s Edge Load Balancing[1] 我…

第十五章 EM期望极大算法及其推广

文章目录 导读符号说明混合模型伯努利混合模型(三硬币模型)问题描述三硬币模型的EM算法1.初值2.E步3.M步初值影响p,q 含义 EM算法另外视角Q 函数BMM的EM算法目标函数LEM算法导出 高斯混合模型GMM的EM算法1. 明确隐变量, 初值2. E步,确定Q函数3. M步4. 停止条件 如何应用GMM在聚…

软测推荐第二期:10本高质量测试书籍

在不断发展的软件开发领域,测试是质量的守护者,确保产品不仅满足功能要求,而且提供无缝的用户体验。随着软件复杂性的增加,对完善的测试方法和见解的需求也随之增加。 上次给大家推荐了五本书,获得了大家的积极反馈&a…

RT-Thread系统使用常见问题处理记录

1.使用telnet连接系统时发送help指令显示不全的问题。 原因:telnet发送缓存太小。 解决办法:更改agile_telnet软件包里Set agile_telnet tx buffer size的大小。 2.使用Paho MQTT软件包过一段时间报错hard fault on thread: mqtt0 解决办法&#xff1…

UE5加载websocket模块为空

今天测试UE 发现工程启动不了,后来看到原来是websocket模块无法加载。 解决的它的方法很简单,这种问题一般会出现在源码版本的引擎或者是停电了,导致UElaunch版本损坏,解决方法是来到源码版本的引擎 这个目录下: D:\…

稳定性测试—fastboot和monkey区别

一、什么是稳定性测试 稳定性测试是指检验程序在一定时间内能否稳定地运行,在不同的场景下能否正常地工作的过程。主要目的是检测崩溃、内存泄漏、堆栈错误等缺陷。 二、Monkey 1.什么是Monkey 是一个命令行工具,通常在adb安卓调试运行,模…

ABAP简单的队列设置QRFC

场景:用job的方式在接口里启用job,如果接口调用比较频繁,存在同一时间启动相同job的情况,会导致锁表锁程序这种情况。 查阅job函数,发现在JOB_CLOSE函数里自带了类似队列的参数,但是因为是接口&#xff0c…

如何卸载干净 IDEA(图文讲解)windows和Mac教程

大家好,我是sun~ 很多小伙伴会问 Windows / Mac 系统上要怎么彻底卸载 IDEA 呢? 本文通过图片文字,详细讲解具体步骤: 如何卸载干净 IDEA(图文讲解) Windows1、卸载 IDEA 程序2、注册表清理3、残留清理 M…

重生奇迹mu下载后仅仅只是挂机吗?

挂挂机、聊聊天,打打怪,如此简单、轻松的游戏或许有,但绝对不是重生奇迹mu!因为重生奇迹mu挂机也不是那么容易,即便是多名高端玩家组队挂机,也有可能是全队惨灭,这样的情况时常发生在游戏中。 …

【入门Flink】- 05Flink运行时架构以及一些核心概念

系统架构 Flink运行时架构Standalone会话模式为例 1)作业管理器(JobManager) JobManager 是一个 Flink 集群中任务管理和调度的核心,是控制应用执行的主进程。每个应用都应该被唯一的 JobManager 所控制执行。 JobManger 又包含…