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

一.网络层概述

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

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

二.路由器工作原理

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.rhkb.cn/news/179781.html

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

相关文章

性能优于BERT的FLAIR:一篇文章入门Flair模型

文章目录 What is FLAIR?FLAIR ModelContextual String Embedding for Sequence Labelingexample FLAIR Application AreaSentiment AnalysisNamed Entity RecognitionText Classification FLAIR一、什么是FLAIR?二、FLAIR Library的优势是什么&#xff…

基于51单片机电子秤-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器,液晶1602显示,HX711模块,按键设置单价,计算总价,超量程报警,蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 I…

界面控件DevExpress WinForms Gauge组件 - 实现更高级别数据可视化

DevExpress WinForms控件包含了超过150个随时可用的仪表盘预设,包括圆形,数字,线性和状态指示器等,来帮助用户实现更高级的数据可视化。 DevExpress WinForms有180组件和UI库,能为Windows Forms平台创建具有影响力的业…

H5ke9

上次fetvh就一个参数url,,就是get请求 fetch还可以第二个参数对象,可以指定method:改为POST 请求头header :发送txt,servlet,json给客户端,,异步请求图片 1 这节客户端传到服务器端 2异步文件上传,两三行代码把文件传输 mouseover事件 .then()的使用 是Promise对象的一个方法…

HT6818 低 EMI 音频功率放大器

HT6818是一款具有低EMI、防削顶失真功能的立体声免输出滤波器D类音频功率放大器。AROC辐射和传导干扰抑Z电路使HT6818具有全带宽低辐射性能,在不加辅助滤波设计、输出喇叭线长20cm时的辐射水平远在FCC Part15Class B 标准之下。 HT6818的防削顶失真功能可检测并抑Z由…

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点: UDP框架: UDP函数学习 发送端代码案例如下: 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介: 懒大王敲代码,…

C++定义一个 Student 类,在该类定义中包括:一个数据成员 score(分数)及两个静态数据 成员 total(总分)和学生人数 count

完整代码: /*声明一个Student类,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(学生人数);还包括一个成员函数account(&…

03、最长连续数列:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度

文章目录 1、题目描述1.1 移动所有零至数组末尾1.2 示例 2、解题思路2.1 思路讲解2.2 动画演示( 待补充) 3、答案3.1 Java 代码3.2 运行结果 4、视频讲解( 待补充) 1、题目描述 1.1 移动所有零至数组末尾 给定一个未排序的整数数…

离散数学实践(2)-编程实现关系性质的判断

*本文为博主本人校内的离散数学专业课的实践作业。由于实验步骤已经比较详细,故不再对该实验额外提供详解,本文仅提供填写的实验报告内容与代码部分,以供有需要的同学学习、参考。 -------------------------------------- 编程语言&#xff…

Hive On Spark 概述、安装配置、计算引擎更换、应用、异常解决

文章目录 Hadoop 安装Hive 安装Hive On Spark 与 Spark On Hive 区别Hive On SparkSpark On Hive 部署 Hive On Spark查询 Hive 对应的 Spark 版本号下载 Spark解压 Spark配置环境变量指定 Hadoop 路径在 Hive 配置 Spark 参数上传 Jar 包并更换引擎 测试 Hive On SparkYarn 资…

Windows Server 2016使用MBR2GPT.EXE教程!

什么是MBR2GPT.exe? MBR2GPT.exe是微软提供的专业工具,可在命令提示符下运行。使用该工具可以将引导磁盘从MBR转换为GPT分区样式,而无需修改或删除所选磁盘上的任何内容。 在Windows Server 2019和Windows 10(1703…

【软著写作】软著写作过程记录

文章目录 整体流程图:写在前面:一、准备材料1 准备材料2 申请盖章 二、软件登记1 注册账号2 填报软著 整体流程图: 写在前面: 这两天填报了一篇软著,正好将以前第一次填报时,踩的一些坑和过程记录了一下&am…

IDEA远程调试代码

IDEA->RUN->Edit Configurations 端口随便选一个,选择调试模块,然后用IDEA生成的命令调试 java -agentlib:jdwptransportdt_socket,servery,suspendn,address*:8081 -jar backend-1.18.11.jar &

【教3妹学编程-算法题】2914. 使二进制字符串变美丽的最少修改次数

3妹:呜呜,烦死了, 脸上长了一个痘 2哥 : 不要在意这些细节嘛,不用管它,过两天自然不就好了。 3妹:切,你不懂,影响这两天的心情哇。 2哥 : 我看你是不急着找工作了啊, 工作…

面试算法47:二叉树剪枝

题目 一棵二叉树的所有节点的值要么是0要么是1,请剪除该二叉树中所有节点的值全都是0的子树。例如,在剪除图8.2(a)中二叉树中所有节点值都为0的子树之后的结果如图8.2(b)所示。 分析 下面总结什么样的节…

AI智能语音识别模块(二)——基于Arduino的语音控制MP3播放器

文章目录 简介离线语音控制模块Mini MP3模块0.96寸 OLED模块实验准备安装库接线定义主要程序实验效果注意事项总结 简介 在前面一篇文章里我们对AI智能语音识别模块进行了介绍,并对离线语音模组下载固件的过程进行了一个简单描述,不知道大家还记不记得&…

日本it培训学费 想去日本做IT,需要具备哪些技术?

日本的IT行业历史比较悠久,业务以上层前端业务为主,如设计和构建软件。日本IT公司组织庞大,行业内部有着严格的分工和部署,工作会被细分化,分配给个人的工作量不会太大,难度也不会很高,所以日本…

Restful风格与Wesocket之间的关联

RESTful 风格和 WebSocket 本质上是两种不同的通信机制,它们在设计理念和用途上有明显的区别。 RESTful 是一种基于 HTTP 协议的架构风格,它使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE 等)来进行资源的操作,并倾…

1015. 摘花生

题目&#xff1a; 1015. 摘花生 - AcWing题库 思路&#xff1a;dp 代码&#xff1a; #include<iostream> #include<cstdio> #include<cmath> using namespace std; const int N 110; typedef long long ll; int T, r, c; int num[N][N]; ll dp[N][N];//dp…

直播界很火的无线领夹麦克风快充方案 Type-C接口 PD快充+无线麦克风可同时进行

当前市场上流行一款很火的直播神器&#xff0c;无线领夹麦克风&#xff08;MIC&#xff09;&#xff0c;应用于网红直播&#xff0c;网课教学&#xff0c;采访录音&#xff0c;视频录制&#xff0c;视频会议等等场景。 麦克风对我们来说并不陌生&#xff0c;而且品类有很多。随…