手撕计算机网络——网络层(一):概览与路由转发_网络层中如何实现路由分组和数据转发的?-程序员宅基地

技术标签: 网络  网络协议  计算机网络  

前言

从这篇文章开始,我们就进入了计算机网络的核心——网络层,好激动这一篇文章我们还是先来了解网络层的基本概念,了解路由器转发和工作原理。


文章目录

前言

一、概览 

1.1 转发

1.2 路由选择

1.3 软件定义网络——SDN 

二、路由器工作原理

2.1 体系结构

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

2.3 交换方式

2.4 输出端口处理

2.5 排队

2.6 分组调度

总结


一、概览 

        不管是应用层还是运输层,其实都属于网络边缘,只有网络层才是我们计算机网络的核心。我们在前面的学习中可以了解到,端主机应用层上的用户数据是通过套接字在运输层中封装为报文段并下发到网络层封装为数据报实现主机之间的报文通信的。网络层其实可以分解为两个相互作用的部分:数据平面控制平面。数据平面的功能决定路由器输入链路的数据报(网络层分组)如何转发到该路由器的输出链路上,其实就是路由器的功能,这种转发的方式主要有两种:IP转发和通用转发;控制平面功能主要是网络范围的逻辑,该功能控制着沿着端到端的路径中路由器之间的路由方式。在通信链路中一个重要的存在就是路由器,每台路由器在数据平面中将数据报从输入链路转发到输出链路上;而在控制平面上主要是协调本地路由器的路由转发工作,保证数据报沿端到端传输。

1.1 转发

        转发是在数据平面上实现的唯一功能,简单来说,转发其实就是路由器将分组从它的一条输入链路接口转移到树党的输出链路接口上,转发发生的时间尺度很短,一般为几个纳秒。其实理解转发时我们可以将其看做是跨越一次路由的数据传输,路由会根据经过它的分组的首部值(一般为一个或者是多个字段)在转发表中索引并找到合适的输出链路,根据这种方法我们就实现分组的转发,这里的关键元素就是路由转发表。 

1.2 路由选择

        当分组从发送方往接收方传输时,网络层必须决定这些分组所采用的路由(路径)。计算这些路径的方法叫做路由选择算法,在本专栏的第一篇文章中我们也有提过。简单来说,路由选择和转发都是传输的选择过程,但路由选择的时间尺度更大,它指的是分组从源到目的端所采取的端到端路径的网络范围处理过程。我们这里考虑到了路由选择和转发的关系,其实路由选择算法决定着插入该路由器转发表的内容,这就意味着路由选择是全局控制,它决定着整条传输路径。

1.3 软件定义网络——SDN 

        在SDN方法中,我们选择将数据平面和控制平面在路由器中分离出来,通过一个远程控制器计算和分发转发表以供每台路由器的使用,控制平面的路由选择功能和物理路由器是分开的,路由器只负责转发的工作。路由器和远程控制器之间交换转发表和路由选择信息的报文。 


二、路由器工作原理

2.1 体系结构

        前面介绍了网络层的数据平面和控制平面,我们首先来看一下数据平面的唯一功能——路由器中的转发,即实际将分组从一台路由器的入链路传送到适当的初链路。我们首先来看一下下图中的路由器体系结构图,图中包含四个结构:路由选择器、输入端口、输出端口和交换结构。

路由结构
路由器体系结构图

  •  输入端口:主要功能包括终结链路的物理层功能,即线路端接,同时在数据链路处理中与位于入链路远端的数据链路层交互来执行数据链路层的功能。当然了,还必须能够进行路由查找、控制分组转发到路由选择处理器以查找输出端口。
  • 交换结构:将路由器的输入端口连接到输出端口上,是一个网络路由器中的网络。
  • 输出端口:存储从交换结构中获得的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组
  • 路由选择处理器:执行控制平面的功能,在传统的路由器中,执行路由选择协议,维护路由选择表和关联链路的状态,并为路由器计算转发表;而在SDN路由器中,路由选择器主要负责与远程控制器进行通信,接收转发表并为输入端口安装这些转发表,路由选择器还能够实现网络管理的功能。

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

        我们刚刚已经初步认识了在一个路由器的体系结构下输入端口的功能,输入端口的线路端接和链路层处理的功能实现了用于各个输入链路的物理层和链路层功能。在SDN路由器中,转发表其实是由路由选择器从远程控制器中获取后经过一条总线复制给线路卡,实现转发决策能够在每隔输入端口本地中做出,而无需每个分组都调用路由选择器。在基于目的地转发的前提下我们来考虑一个问题:转发表和首部时如何匹配的?其实路由器是通过分组目的地址的前缀在转发表项中进行查询和匹配。但一个目的地址可能不止与一个表项匹配,因此路由器使用了一种叫最长前缀匹配规则,顾名思义就是找最长前缀匹配的表项就是我们的输出端口。

 

2.3 交换方式

交换结构是一台路由器的核心部位,是分组能够在路由器中实现转发的基础,实现交换可以使用许多种方式,这里我们介绍如下三种:经内存交换、经总线交换、经互联网交换。

经内存交换

        在前面的学习中,我们知道路由选择处理器会经过独立的总线将转发表复制到线路卡中,在输入线路卡中路由器实现了目的地址查找和将分组存储进适当的内存存储位置的功能。当一个分组到达输入端口时,该端口会以中断方式向路由选择处理器发出信号,同时该分组被复制到内存中,再根据转发表将分组复制到输出端口的缓存中。需要注意的是:不能同时转发两个分组即使目的端口不同!

经总线交换

        输入端口预先为分组计划一个交换机内部标签(首部)指示本地输出端口,使得分组能在总线上传输到输出端口。给分组能沟北所有的输出端口收到,但只有与该标签匹配的端口才能保存该分组数据,完成输出后该分组会在输出端口去除。需要注意的是:即使有多个分组同时到达路由器,总线也只能一次传输一个分组,其余的分组需要进行排队等待。

经互联网交换

        克服单一、共享式总线带宽限制的一种方法是使用一个更为复杂的互联网络。纵横交换机就是这么一种2N条总线组成的互联网络,通过网格和交叉点的形式来控制分组的转发路径。在交叉点处使用了交换结构控制器来控制交叉部位在任意时候的开闭。纵横式网络能够并行转发不同的分组。需要注意的是,纵横式网络是非阻塞的,如果两个分组有相同的输出端口,其中一个必须在输入端等待。

2.4 输出端口处理

输出端口取出存放在端口内存中的分组并将其发送到输出链路上,功能包括选择和取出排队的分组,执行所需的链路层和物理层的传输功能。

2.5 排队

        排队我们其实并不陌生,在讲运输层的时候就已经清楚。出现排队的原因其实就是出速率小于入速率,排队会不断消耗我们的缓存队列,一旦缓存溢出就会出现丢包的问题。在路由器中也存在着排队的问题,主要分为两种:输入排队和输出排队。先来讲讲输入排队:我们知道交换结构并不能无时延地使分组通过,那就意味着在网络高并发情况下输入端口的缓存队列中一般不为空,那么在队列尾部地分组其实就需要等待。同时我们用之前的纵横式交换结构为例,此时如果在一个输出端口同时有两个输入端口的队列等待交换结构转发分组,其中肯定会有一个队列在等待,这种现象就叫做输入排队交换机的线路前部阻塞(HOL);我们再来看看输出排队:输出排队出现的援引就是交换结构发送到输出队列的报文速率大于它发送到链路层的速率。当输出排队导致输出端口内存溢出时,路由器要么执行弃尾策略(丢弃到达的新分组)、要么执行主动队列管理算法(AQM)策略(在缓存填满前丢弃分组或者是在其首部加上标记)并向发送方发送一个拥塞信号。

2.6 分组调度

        分组调度其实就是考虑分组在输出端口的缓存中的输出次序的问题,在这一部分我们主要介绍三种分组调度的方法:先进先出(FCFS/FIFO) 、优先权排队、循环和加权公平排队首先是先进先出规则:其实理解FIFO很简单,其本质就是一个队列,那个分组先到达缓存哪个分组就会先被输出到链路中。该队列中的分组丢弃规则会决定当缓存溢出时是丢弃给分组还是在队列中取出并丢弃其它分组;其次是优先权排队规则:在该规则下到达输出链路的分组会被分类放入权重不等的输出队列中,每一个对列同样满足FIFO规则,当选择一个分组传输时会优先从非空的权重更大的队列中选择分组;最后是循环和加权公平排队规则:该循环排队规则下到达输出链路的分组会进行排队但不分权重,存在一个循环调度器以一个固定的次序轮流传输不同飞空队列中的分组。而对于加权公平排队规则(WFQ),它相较于循环排队规则为每一个对列加上权重,并根据权重给出每一个队列最低的吞吐量保证。

需要注意的是:在优先权排队规则中,存在着一种非抢占式优先权排队的规则,在该规则下,当一个权重较低的分组正在传输的过程中即使优先权更高的队列中有分组突然到达,也不能打断该传输过程! 


总结

        在这篇文章中,荔枝主要讲述了网络层的一些大体的概念,之后讲述了路由器的工作原理,包括了如何转发和分组调度策略。下一篇文章中荔枝将会讲述数据平面的最后一个大的知识点——IPV4和IPV6协议,继续加油!!!

今朝已然成为过去,明日依然向往未来!我是小荔枝,在技术成长的路上与你相伴,码文不易,喜欢的小伙伴麻烦举起小爪爪点个赞吧哈哈哈~~~ 比心心~~~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_62706049/article/details/128527131

智能推荐

redis 登录客户端命令_redis登录命令-程序员宅基地

文章浏览阅读6.9k次,点赞5次,收藏8次。Redis 命令用于在 redis 服务上执行操作。要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。_redis登录命令

Android 蓝牙开发-蓝牙通信_手机蓝牙与bt04通讯-程序员宅基地

文章浏览阅读403次。1 蓝牙基本操作随着可穿戴设备的流行,研究蓝牙是必不可少的一门技术了。总结了下蓝牙开发使用的一些东西分享一下。蓝牙权限首先需要AndroidManifest.xml文件中添加操作蓝牙的权限。Android.permission.BLUETOOTH" />允许程序连接到已配对的蓝牙设备。android.permission.BLUETOOTH_ADMIN"_手机蓝牙与bt04通讯

Python图像处理指南:PIL与OpenCV的比较_cv2与pil处理图片区别和效率-程序员宅基地

文章浏览阅读3.7k次,点赞21次,收藏33次。图像处理在计算机视觉和图像识别等领域中扮演着至关重要的角色。Python作为一种功能强大且易于学习的编程语言,提供了多种库供图像处理使用。在本文中,我们将比较两个最流行的Python图像处理库:Python Imaging Library(PIL)和OpenCV。我们将探讨它们的功能、用法和性能,并通过代码实例进行演示。_cv2与pil处理图片区别和效率

【GNN报告】赵越-图神经网络与异常检测_图神经网络 异常检测-程序员宅基地

文章浏览阅读4k次,点赞5次,收藏31次。卡内基梅隆大学赵越-图神经网络与异常检测_图神经网络 异常检测

Synopsys SpyGlass CDC 学习 (一)_ac conv03-程序员宅基地

文章浏览阅读3.1w次,点赞17次,收藏224次。原创声明http://blog.csdn.net/wonder_coole/article/details/79542241,本博客所有文章均同步发表于www.mx1980.cn/blogSpyGlass工具简介目前包含:SpyGlass Lint, CDC, RDC, DFT ADV, Power. 是业界RTL Signoff 的重要工具. SpyGlass 的一些..._ac conv03

手动去upx特征_upx -d-程序员宅基地

文章浏览阅读5.3k次,点赞7次,收藏31次。众所周知,作为一款优秀的可执行文件压缩工具,UPX受到程序开发者的广泛欢迎。然而一些病毒、木马和其他恶意程序使用了UPX来隐藏自身行为,这使得它拥有不好的名声,导致了杀毒引擎对一些无害的应用程序的误报。有些杀毒引擎甚至将所有加了UPX壳的程序视为病毒,比如ClaimAV、Comodo、F-Prot等等。其实,不仅是UPX,其它的压缩壳,比如ASPack、PECompact也是如此。今天我们要..._upx -d

随便推点

文本挖掘入门-程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏23次。总之,词嵌入是一种有助于RNN模型理解文本语义的技术,而RNN则用于在文本生成任务中考虑文本的顺序和上下文信息,从而生成连贯的文本。文本挖掘是从文本数据中提取有用信息的过程,通常包括文本预处理、特征提取和建模等步骤。:选择合适的机器学习或深度学习算法,根据任务类型进行建模,例如文本分类、情感分析、主题建模等。:使用标注好的数据集训练模型,并使用评估指标(如准确度、F1分数、均方误差等)来评估模型性能。函数将使用RNN模型生成文本,它会根据先前生成的文本以及上下文信息来预测下一个单词。_文本挖掘

oracle 表空间和数据文件管理 移动数据文件 重命名数据文件 数据文件重命名_如何使用oracle创建表空间,数据文件命名为-程序员宅基地

文章浏览阅读2.7k次。oracle 11g2 一个数据文件在同一个时刻仅属于同一个表空间,仅属于同一个数据库。TEMP文件是一类在临时表空间中被使用的特殊数据文件。 当数据库创建或重用i一个数据文件——操作系统文件被重用和初始化——被一个规则的二进制零所填充。这些初始化不会发生在临时文_如何使用oracle创建表空间,数据文件命名为

语法篇-JSON基础_json语法-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏14次。script>name : '烟雨平生',age : 20,sex : "男"_json语法

python编辑视频教程_Maya中Python编辑基础核心技术训练视频教程-程序员宅基地

文章浏览阅读140次。本教程是关于Maya中Python编辑基础核心技术训练视频教程,时长:超过20小时,大小:3.1 GB,MP4高清视频格式,教程使用软件:Maya,附源文件,作者:Geordie Martinez,共8个章节,语言:英语。分享Autodesk Maya是美国Autodesk公司出品的世界顶级的三维动画软件,应用对象是专业的影视广告,角色动画,电影特技等。Maya功能完善,工作灵活,易学易用,制作效..._learn python inside maya

hcip3_interface tunnel1-程序员宅基地

文章浏览阅读111次。要求:1.R4为ISP,其上只能配置IP地址,R4与其他所有直连设备间使用公有IP;解决ospf不规则区域的3种方式都得使用.2.整个osPF环境p地址为172.16.0.0/16进程1oo使用192.168.1.0/243.所有设备均可访问R4的环回r14上有两个环回减少LsA的更新量,加快收敛,保障更新安全4.全网可达解决不规则区域的三种方式1.Tunnel在两台ABR上创建tunnel,然后将其宣告到OSPF协议中;缺点:1、选路不佳 2、周期hello和更新均对中间区域进行影响._interface tunnel1

ESP32系列区别—ESP32-WROOM-32和ESP32-WROOM-32E和ESP32-WROOM-32U的区别_esp32wroom32d和32e区别-程序员宅基地

文章浏览阅读1.8w次,点赞3次,收藏14次。简单来说就是32E和32U是32的升级版本,具有更高的稳定性具体的区别建议官网查看:模组概览 | 乐鑫科技最近有新项目要用到32E,要去某宝购买回来练练手,但是发现有芯片和开发板,开发板更适合新手和软件开发者,但是再一看有搭载32的开发板,3u的开发板,一脸懵,百度了区别但是广告更多,还是决定看官网,对比可以看到32E是32U和32的升级版本,具有更高的稳定性安全性。所以还是选32E的吧,虽然贵的/>_</受不了,上传的图片被压缩了,大家还是官网看把..._esp32wroom32d和32e区别

推荐文章

热门文章

相关标签