文章目录
-
- 网络层
- 数据平面和控制平面
-
- 两者的概述
-
- 数据平面
- 控制平面
- 控制平面:传统方法
- 控制平面:SDN 方法
- 网络服务模型
- 路由器工作原理
-
- 通用路由器体系结构
- 输入端口的功能
-
- 基于目标的转发
- 交换结构
-
- 内存交换方式
- 总线交换方式
- 纵横式交换方式
- 输出端口的功能
- 何时何处出现缓存队列
-
- 输入排队
- 输出排队
- 分组调度
-
- 先进先出
- 优先权排队
- 循环和加权公平排队
- 网络协议:PIv4、寻址、IPv6 以及其它
-
- IPv4 数据报格式
- IPv4 数据报分片
- IPv4 编址
-
- IP和子网掩码
- CIDR
- 分类网络
- 特殊地址
- 分配地址
-
- 获取一块地址(用于组织的子网内)
- 获取主机地址:动态主机配置协议
- 网络地址转换 —— NAT
- 一些术语
- 通用转发和 SDN
-
- 匹配
- 动作
- 参考资料
网络层
从表面上看网络层的作用:将分组从一台发送主机移动到另一台接收主机。
完成该功能需要两个重要的网络层功能:
- 转发:当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。
- 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。
数据平面和控制平面
两者的概述
数据平面
- 数据平面指的是网络层中每台路由器的功能。
- 决定从路由器其中一条输入链路如何转发到另外其中一条输出链路。
控制平面
- 控制平面指的是网络范围内的逻辑。
- 控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。
控制平面:传统方法
每台路由中都包含转发和路由选择两种功能。
在一台路由器中的路由选择算法与在其它路由器中的路由选择算法通信,以计算出它的转发表的值。
这种路由选择功能是由路由选择厂商在其产品中固定写入的。
使用这种方法,每台路由器都有一个与其它路由器的路由选择组件通信的路由选择组件。
路由选择算法有:LR、DV 算法。
控制平面:SDN 方法
在 SDN 中将路由选择和转发进行了物理上的分离,即路由选择设备仅执行转发,而远程控制器计算并分发转发表。
网络服务模型
网络层能可能提供的某些服务:
- 确保交付:确保分组能够到达目的地。
- 具有时延上界的确保交付:能够确保分组在规定时间内交付。
- 有序分组交付:确保分组以发送的顺序到达目的地。
- 确保最小带宽:确保最低传输速率。
- 安全性:网络层能够在源加密所有数据报并在目的地解密这些分组,从而对所有运输层报文段提供机密性。
尽力而为服务:该服务传送的分组既不能保证以它们的发送顺序被接收方接收,也不能保证它们最终能交付等,其实尽力而为就是啥也不能保证,全凭运气,“尽力而为” 不过只是一种委婉的说法罢了。
路由器工作原理
通用路由器体系结构
输入端口的功能
线路端接:
- 物理层
- 输入链路的入口,接收 Bit 级。
数据链路处理:
- 数据链路层
- 协议、拆封
查找、转发、排队:
- 在输入端口中的转发表查找合适的输出端口,这便是“匹配”。
- 找到输出端口后,发送该分组进入交换结构,这便是“动作”。
- 转发的方式:
- 基于目标的转发:仅仅依赖于 IP 数据报的目标 IP 地址(传统方法)。
- 通用转发:基于头部字段的任意集合进行转发。
基于目标的转发
这种风格的转发表,路由器用分组目的地址的前缀与该表中的表项进行匹配。若存在一个匹配项,则路由器向与该匹配项相关联的链路转发分组。
最长前缀匹配规则:
当存在同时与多个表项成功匹配时,以最长的那个匹配项为最终目的。
最长前缀匹配:在路由器中经常采用 TCAMs(ternary content addressable memories) 硬件来完成
-
内容可寻址:将地址交给 TCAM ,它可以在一个时钟周期内检索出地址,不管表空间有多大
-
Cisco Catalyst 系列路由器 : 在 TCAM 中可以存储多达约为1百万条路由表项
交换结构
交换结构位于一台路由器的核心部位,因为正是通过这种交换结构,分组才能实际地从一个输入端口交换(即转发)到一个输出端口中。
有三种交换方式,如图所示:
内存交换方式
略…
总线交换方式
略…
纵横式交换方式
略…
输出端口的功能
- 当数据报从交换机构的到达速度比传输速率快就需要输出端口缓存。
- 由调度规则选择排队的数据报进行传输。
何时何处出现缓存队列
假设输入和输出链路的传输速率是相同的,为 RlineR_{line}Rline(单位:每秒分组数),交换结构传输速率为 RswitchR_{switch}Rswitch。
输入排队
若 RswitchR_{switch}Rswitch 比 RlineR_{line}Rline 快 NNN 倍,则会出现输入排队。
某一时刻,左上角和左下角的首个分组都需要传输到右上角输出端口,现在假设左上角分组正在传输,过程中左下角也需要传输,但此时到右上角的输出端口的通道已经被左上角占用了,因此会造成左下角阻塞,即便左下角后面的分组不需要传输到右上角,而是其它端口,例如右中间输出端口,尽管如此也会被阻塞,这样因为前部阻塞而造成的输入队列叫做输入队列交换机中的线路前部阻塞(Head-Of-the-Line, HOL)。
如果队列达到上限,则可能将出现丢包。
输出排队
若 RswitchR_{switch}Rswitch 比 RlineR_{line}Rline 快 NNN 倍,并且 N 个输入端口的目的地都为同一个相同的输出端口,交换机以 3 倍于线路速度的速度运行,则会出现输出排队。
同一时刻,三个输入端口同时发送给同一个输出端口(因为交换机的速度是线路的三倍,所以输入端不阻塞),当一个单位时间过后,右上角收到了来着三个输入端口的三个分组。接着又到达了两个新的分组,其中之一要传输给右上角的输出端口。
输出端口中的这些分组形成了一个输出队列,如果达到了上限,则有的包可能会被抛弃,从而迎接新的包。
当输出队列达到上限,又有新的分组到达时,如何选择队列中需要被丢弃的包,或者是丢弃新来的包,这都取决于分组调度。
分组调度
先进先出
略…
优先权排队
略…
循环和加权公平排队
略…
网络协议:PIv4、寻址、IPv6 以及其它
IPv4 数据报格式
表项 | 比特数 | 说明 |
---|---|---|
版本 | 4 bit | 规定了数据报的 IP 协议版本 |
首部长度 | 4 bit | 确定 IP 数据报中数据实际开始的地方(因为 IPv4 数据报可包含一些选项) |
服务类型 | 8 bit | 区分不同的 IP 数据报 |
数据报长度 | 16 bit | IP 数据报的总长度(首部+数据),单位字节 |
标识、标志、片偏移 | 16、3、13 bit | 用于 IP 分片 |
寿命(TTL) | 8 bit | 当 IP 数据报每经过一台路由器时,该值减一,若 TTL 为 0,则表示该数据报必须丢弃 |
协议 | 8 bit | 指示 IP 数据报的数据部分应该交给哪个特定的运输层协议,例如 6 表示给 TCP,17 就给 UDP |
首部检验和 | 16 bit | 用于帮助路由器检测收到的 IP 数据报中的比特错误 |
源和目的 IP 地址 | 32 bit | 当某源生成一个数据报时,它在源 IP 字段中插入它的 IP 地址,在目的 IP 地址字段中插入其最终目的地的地址,这通常由 DNS 查找来决定目的地址 |
选项 | 32 bit | 该字段允许 IP 首部被扩展。(为了节约开销) |
数据 | 32 bit | 实际数据 |
选项: 若将首部扩展,则数据报首部会变长,故不能预先确定数据字段从何处开始。其次有些数据报要求处理选项字段中的信息,故而导致一台路由器处理一个 IP 数据报所需的时间变化可能很大。因此该字段也基本不用,IPv6 已经去掉该字段。
一个 IP 数据报总长为 20 字节(假设无选项字段)
IPv4 数据报分片
最大传送单元 MTU: 一个链路层帧能承受的最大数据量叫做最大传送单元。作用是限制路由器之间传送 IP 数据报的长度。
将 IP 数据报中的数据分片成两个或更多个较小的 IP 数据报,用单独的链路层帧封装这些较小的 IP 数据报,然后通过输出链路发送这些帧。每个这样的较小数据报称为片。
片到达目的的运输层以前都需要重新组装,其片组装的工作在端系统中进行。
如果收的数据报是片的话,要确定何时收到了最后一片,并且如何重新组装形成最初的数据报。
- 当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时贴上标识号。
- 发送主机通常将它发送的每个数据报的标识号增加 1。
- 当某路由器对一个数据报分片时,其中将初始化数据报的源地址、目的地址、标识号字段。
- 当目的地从同一台发送主机收到一系列数据报时,它能够检查数据报的标识号以确定那些数据报实际上是数据报片。
- 数据报的最后一个片的标志被设置为了 0。
为了让目的主机确认是否丢失一个片,使用偏移字段指定该片应放在初始 IP 数据报的哪个位置。
IPv4 编址
IP和子网掩码
- IP 地址长度:32 比特
- 总共有 2322^{32}232 个 IP 地址
- IP 地址常用电分十进制:即地址中的每个字节都用十进制表示,各字节间用点分开。
- IP 地址:223.1.1.0/24
/24
表示高 24 位是子网掩码,定义了网络号。
CIDR
- 当使用子网寻址时,32比特的IP地址被分为两部分。
- 格式:
a.b.c.d/x
- 高 x 位构成 IP 地址的网络部分,也常被称为前缀。
- 一个组织通常被分配一块连续的地址,即具有相同的前缀的一段地址。
- 剩下的 32-x 位用于区分该组织(即子网)内部设备的,其中所有设备都具有相同的网络前缀。
分类网络
A类、B类和C类为三种不同网络规模的网络提供单播地址。D类用于组播网络,E类地址范围是为未来或实验性目的保留的。
Class | 前缀位 | 网络地址位数 | 剩余的位数 | 网络数 | 每个网络的主机数 |
---|---|---|---|---|---|
A类地址 | 0 | 8 | 24 | 128 | 16,777,214 |
B类地址 | 10 | 16 | 16 | 16,384 | 65,534 |
C类地址 | 110 | 24 | 8 | 2,097,152 | 254 |
D类地址(群播) | 1110 | 未定义 | 未定义 | 未定义 | 未定义 |
E类地址(保留) | 1111 | 未定义 | 未定义 | 未定义 | 未定义 |
分类 | 前缀码 | 开始地址 | 结束地址 | 对应CIDR修饰 | 默认子网掩码 |
---|---|---|---|---|---|
A类地址 | 0 | 0.0.0.0 | 127.255.255.255 | /8 | 255.0.0.0 |
B类地址 | 10 | 128.0.0.0 | 191.255.255.255 | /16 | 255.255.0.0 |
C类地址 | 110 | 192.0.0.0 | 223.255.255.255 | /24 | 255.255.255.0 |
D类地址 (群播) | 1110 | 224.0.0.0 | 239.255.255.255 | /4 | 未定义 |
E类地址 (保留) | 1111 | 240.0.0.0 | 255.255.255.255 | /4 | 未定义 |
子网掩码和IP地址进行“与”运算可以得到其网络号。
特殊地址
https://www.rfc-editor.org/rfc/rfc3330
分配地址
要知道两点:
- 一个组织是如何得到一个地址块的。
- 一个设备(一台主机)是如何从某个组织得到的地址块中分配到一个地址的。
获取一块地址(用于组织的子网内)
网络管理员可以与 ISP 联系,由该 ISP 给分配。
那么 ISP 的地址块又从哪儿获取呢?
答:由 ICANN 分配。
获取主机地址:动态主机配置协议
当一个主机接入网络时,会去 DHCP 服务器获取一个 IP 地址,该地址可能是临时的,也可以是由网络管理员固定分配给你的。
当一台设备被 DHCP 分配地址的过程:
- DHCP 服务器发现(discover):客户端需要找到 DHCP 服务器,这可通过 DHCP 发现报文来完成。客户发送 UDP 分组向 67 端口发送该发现报文,该 UDP 分组封装在一个 IP 数据报中。使用广播目的地址
255.255.255.255
来发送,源IP使用0.0.0.0
。 - DHCP 服务器提供(offer):DHCP 服务器收到一个 DHCP 发现报文时,需要向客户端做出响应,该响应报文向该子网的所有节点广播(因为子网中可能存在多个 DHCP 服务器,该客户会选择其中一个最优的)。
- DHCP 请求(request):客户从一个或多个 DHCP 服务器中选择一个,并向选中的服务器提供用 DHCP 请求报文进行响应。
- DHCP ACK:DHCP 服务器用 DHCP ACK 报文对 DHCP 请求报文进行响应。(当客户收到该报文后,交互便完成了)
网络地址转换 —— NAT
NAT 就是一种将一个 IP 通过路由器转换为另一个 IP 的技术,NAT 解决了 IPv4 的 IP 地址数量的不足,地址分为公网IP和私有IP,一个设备想要上网就必须需要一个公网IP,但 IPv4 给每个设备分配一个公网 IP 显然不够,因此一个组织可以只一个公网IP,其子网使用私有IP,子网内的设备可以相互通信,但无法与外网的设备通信,如果想要和外网通信就需要一个公网IP,但前面说过了 IPv4 的地址数量不足以给每个设备都分配一个公网 IP。
因此当私有IP向访问外网时,NAT 可以将私有IP转换通过路由器转换为公网IP,反之当外网设备想和内网设备进行通信时,就通过路由器转换为私有IP。
图中:
[1] -> [2] 是内网访问外网。
[3] -> [4] 是外网访问内网。
一些术语
- 单播(unicast):是指在计算机网络的传输中,目的地址为单一目标的一种传输方式。
- 多播(英语:multicast,又称群播,中国大陆也译作组播):是计算机网络中的一种群组通信,它把信息同时传递给一组目的计算机。
通用转发和 SDN
回顾基于目的转发的步骤:
- 先查找目的IP地址,此乃“匹配”。
- 如何将分组发送到特定输出端口的交换结构,此乃“动作”。
现在采用一种 “匹配加动作”,其中能对协议栈的多个首部字段进行“匹配”,这些首部字段是与不同层次的不同协议相关联的。其中“动作”包括但不限于:将分组转发到一个或多个输出端口、负载均衡、重写首部字值,阻挡或丢弃分组。
在通用转发中,转发表不再是“地址+输出端口”的简单转发表了,而是“匹配+动作”表,该表由远程控制器计算安装和更新(远程控制器和 CV 打交道)。
因为能够使用网络层或链路层源和目的地址做出转发决定,因此下图中的转发设备被称为“分组交换机”,而不是第三层的“路由器”或第二层的“交换机”。
匹配加动作转发表在 OpenFlow 中被称为“流表”:
- 首部字段值集合
- 计数器集合
- 当前分组匹配流表项时所采取的的动作集合
OpenFlow 是一个得到高度认可和成功的标准,它已经称为匹配加动作转发抽象、控制器以及更为一般的 SDN 革命等概念的先驱。
匹配
如下图所示,是分组中的 11 个首部字段和入端口ID,该ID能被 OpenFlow 中的匹配加动作规则所匹配。
OpenFlow 的匹配抽象允许对来自三个层次的协议首部所选择的字段进行匹配。
入端口是指分组交换机上接收分组的输入端口。
如果一个分组匹配多个流表项,选定的匹配和对应的动作将是其中有最高优先权的那个。
动作
每个流表项都有零个或多个动作列表,这些动作决定了应用于与流表项匹配的分组的处理。如果存在多个动作,它们以在表中规定的次序执行。
以下动作可能是最重要的:
- 转发
- 丢弃
- 修改字段
参考资料
- 分类网络
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2239190.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
《计算机网络-自顶向下》04. 网络层-数据平面
文章目录网络层数据平面和控制平面两者的概述数据平面控制平面控制平面:传统方法控制平面:SDN 方法网络服务模型路由器工作原理通用路由器体系结构输入端口的功能基于目标的转发交换结构内存交换方式总线交换方式纵横式交换方式输出端口的功能何时何处出……
让隐私安全沐浴在阳光下
安畅检测——让隐私安全沐浴在阳光下
3.15日工业和信息化部高度重视用户权益保护工作,持续开展移动互联网应用程序(APP)侵害用户权益专项整治行动,不断改善APP应用服务环境。针对“315”晚会报道的部分破解版APP违法违规收集用户……
LeetCode算法 二叉树的前序遍历 , 二叉树的中序遍历,二叉树的后序遍历 C++
目录题目 二叉树的前序遍历参考答案题目 二叉树的中序遍历参考答案题目 二叉树的后序遍历参考答案题目 二叉树的前序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
示例 1: 输入:root [1,null,2,3]
输出:[1,2,3]示……
DOS批处理文件—内嵌参数变量扩充功能
1 内嵌参数变量
1.1 介绍
内嵌参数变量指:%i,其中i为大于等于0的整数。如%0, %1, %2,…
1.2 作用
可以客制化功能。
1.3 案例
批处理文件:main_Param.bat
echo off
set path_mode1%cd%
set path_mo……
CSS prefers-color-scheme 与 matchMedia() 深浅色模式
CSS prefers-color-scheme 与 matchMedia() prefers-color-scheme 这个媒体查询特性用来检测用户是否设置亮色(light)或暗色(dark) 的主题色 使用 CSS 设置
💡在 macOS 的设置-通用中, 可以选择设置系统的主题为浅色, 深色或自动
属性值
light: 用户设置亮色主题……
【Linux】八、Linux进程信号详解(完结)
目录
三、阻塞信号
3.1 信号其他相关常见概念
3.2 信号在内核中的表示
3.3 sigset_t
3.4 信号集操作函数
3.5 sigprocmask函数
3.6 sigpending函数
3.7 信号集实验
四、深入理解捕捉信号
4.1 进程地址空间二次理解(内核空间与用户空间)
4.2 用……
【NLP入门教程】七、词义消歧
词义消歧(Word Sense Disambiguation, WSD)其目标是确定文本中词汇的正确含义。由于许多单词具有多种含义,词义消歧对于理解和分析文本具有关键作用。
1. 词义消歧的挑战
词义消歧的主要挑战在于处理以下问题: 多义词:当一个词具有多个含义时,确定其在特定上下文中的正……
边缘检测与阈值分割
Canny
[1] Canny Edge Detection. https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html [2] OpenCV Edge Detection ( cv2.Canny ). https://pyimagesearch.com/2021/05/12/opencv-edge-detection-cv2-canny/
由John F. Canny提出 1、由于边缘检测容易受噪声影响&……
mysql中增删改成的练习
文章目录一、表的创建1.student表的数据2、课程表的数据course3、学生成绩表的数据二、操作序列1、查询计算机系cs的全体学生学号、姓名和性别2、检索选修了课程号为2的学生号和姓名3、检索至少选修了三门课以上的学生号4、检索选修了全部课程的学生5、在原表的基础上创建一个视……
Mac下Python3安装及基于Idea开发
本篇文章带大家基于Mac OS操作系统,下载、安装Python环境,并基于Idea编写第一个Demo。
Python3安装
访问Python官网:https://www.python.org/。找到“Download”菜单,点击下载: 此处下载的为Mac的安装包,……
反序列化渗透与攻防(五)之shiro反序列化漏洞
Shiro反序列化漏洞
Shiro介绍
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默……
vue2+vue3
vue2vue3尚硅谷vue2vue2 课程简介【02:24】vue2 Vue简介【17:59】vue2 Vue官网使用指南【14:07】vue2 搭建Vue开发环境【13:54】vue2 Hello小案例【22:25】了解: 不常用常用:id 更常用 简单class差值总结vue 实例vue 模板 : 先 取 ࿰……
【hello Linux】环境变量
目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一……
【Linux基础】常用命令整理
ls命令
-a选项,可以展示隐藏的文件和文件夹-l选项,以列表形式展示内容-h,需要和-l搭配使用,可以展示文件的大小单位ls -lah等同于la -a -l -h
cd命令(change directory)
语法:cd [Linux路径]……
客快物流大数据项目(一百一十二):初识Spring Cloud
文章目录
初识Spring Cloud
一、Spring Cloud简介
二、SpringCloud 基础架构图…
C和C++中的struct有什么区别
区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的,……
docker的数据卷详解
数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……
13、Qt生成dll-QLibrary方式使用
Qt创建dll,使用QLibrary类方式调用dll
一、创建项目
1、新建项目->其他项目->Empty qmake Project->Choose 2、输入项目名,选择项目位置,下一步 3、选择MinGW,下一步 4、完成 5、.pro中添加TEMPLATE subdirsÿ……
基于mapreduce 的 minHash 矩阵压缩
Minhash作用: 对大矩阵进行降维处理,在进行计算俩个用户之间的相似度。
比如: 俩个用户手机下载的APP的相似度,在一个矩阵中会有很多很多的用户要比较没俩个用户之间的相似度是一个很大的计算任务 如果首先对这个矩阵降维处理&am……
关于hashmap使用迭代器的问题
keySet获得的只是key值的集合,valueSet获得的是value集合,entryset获得的是键值对的集合。 package com.test2.test;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;public class mapiterator……
编程日记2023/4/16 14:50:37