当前位置: 首页 > news >正文

计算机网络•自顶向下方法:网络层介绍、路由器的组成

网络层介绍

网络层服务:网络层为传输层提供主机到主机的通信服务

每一台主机和路由器都运行网络层协议

  • 发送终端:将传输层报文段封装到网络层分组中,发送给边缘路由器
  • 路由器:将分组从输入链路转发到输出链路
  • 接收终端:从边缘路由器接收分组,取出报文段交付给传输层
网络层的功能
  • 选路:确定去往目的路由器的路由
  • 转发:路由器根据选定的路由,将分组从输入端口转移到输出端口
选路和转发的关系
  • 转发表:记录分组头中某个字段与路由器输出端口之间的映射关系
  • 选路:计算转发表
  • 转发:根据转发表转运分组
数据面和控制面

数据面(Data plane)

  • 执行数据传输的功能属于数据面
  • 转发是数据面功能,在路由器内部实施分组转运
  • 是路由器本地功能

控制面(Control plane)

  • 控制数据传输的功能属于数据面于控制面
  • 选路是控制面功能,确定分组如何去往目的节点
  • 是网络范围的功能

两种控制面实现方法

  • 传统寻路算法:在路由器中实现
  • 软件定义网络:在服务器中实现
网络服务模型

定义了分组在发送终端与接收终端之间的传输特性

可能的网络服务

  • 保证交付
  • 具有时延上界的保证交付
  • 有序分组交付
  • 保证最小带宽
  • 安全性

不同架构的网络提供的网络层服务可能不同

同一个网络也可以提供不同的网络层服务

路由器的组成

路由器的两个主要功能

  • 选路:运行选路协议,计算转发表
  • 转发:依据转发表,从输入链路到输出链路转发数据报

输入端口功能

  • 物理接口:负责连接到物理链路(例如,以太网端口、光纤端口等),通过物理媒体(如电缆、光纤)接收数据。
  • 数据链路层处理:负责接收并处理从数据链路层(如以太网帧)接收到的数据包,检查是否有差错、解析MAC地址等。
  • 接收缓存:当数据包进入路由器时,它们首先会存储在输入端口的缓存中,以待进一步处理。

在这里插入图片描述

交换结构

路由器中的互联网络,用于在输入端口、输出端口和选路处理器之间转运分组

交换速率:通常是输入/输出链路速率的若干倍

三种类型的交换结构

在这里插入图片描述

通过内存交换
  • 传统计算机,在CPU的直接控制下完成交换
  • 数据包拷贝到系统内存中进行交换
  • 交换速率受限于内存带宽:每个数据包穿过系统总线2次

在这里插入图片描述

通过总线交换
  • 数据包通过一条共享总线,从输入端口缓存转移到输出端口缓存
  • 每个输入和输出端口通过一个接口硬件连接到总线上,每个端口被分配一个内部标签
  • 交换速率受限于总线带宽
  • 总线竞争
    • 总线协议防止多个端口同时传输,比如,采用时分多路复用的方法
    • 各个输入端口在总线上轮流广播分组,每个输出端口根据分组携带的内部标签接收发给本端口的分组
通过互联网络交换
  • 交换结构控制器通过控制交叉点的开、闭,在输入端口与输出端口间建立内部专用电路
  • 多对端口间可以并行传输
  • 分阻塞型与非阻塞型,阻塞型互联网络会产生阻塞

输出端口功能

  • 物理接口:负责将数据通过物理链路发送到目标设备。
  • 数据链路层处理:在数据包从路由器发送到目标时,处理数据链路层的相关操作(例如,封装数据包、添加校验和等)。
  • 发送缓存:在将数据包发送到目标设备之前,输出端口会将数据包存储在缓存中,以确保数据顺利传输。

在这里插入图片描述

网络层处理:

  • 组装:若需要,将交换结构输出的信元组装成分组
  • 排队:若输出端口来不及发送,分组在此排队
  • 调度:输出端口每次选择一个分组发送

链路层处理:执行链路层协议,封装

物理层处理:将比特流转换成物理信号

输入端口排队与丢包

当交换结构不能及时将输入端口的分组转移到输出端口时,输入端口处形成排队

排队带来的问题:

  • 队头阻塞: 队头分组阻塞其后分组的转发
  • 丢包:当输入队列溢出时,发生丢包

当交换结构速率至少为端口速率的n倍时(n为输入端口数),可以消除输入端口的排队,但路由器成本提高了

在这里插入图片描述

输出端口排队与丢包

多个输入端口同时向一个输出端口发送时,在输出端口形成排队

当输出队列满时,发生丢包

输出端口排队是不可避免的,设置多大的输出队列是一个问题:

  • 增大输出队列:可以减少丢包的发生,但会增加内存消耗,并增大分组延迟,延迟太大的分组最终被重传,浪费资源
  • 输出队列并不是越长越好!

在这里插入图片描述

分组丢弃

分组丢弃策略:当队列满时丢弃哪个分组?

  • 弃尾:丢弃到来的分组
  • 按照优先级丢弃:低优先级分组
  • 随机丢弃:随机选择一个分组丢弃,如Ramdom Early Detection (RED)

随机早期检测(RED,Random Early Detection)

RED 是一种基于队列长度的主动丢包策略,旨在避免拥塞的发生,并且在网络负载增加时及时做出反应。

工作原理:

  • 当队列的长度超过某个预设的阈值时,RED 会开始以随机的方式丢弃一些进入队列的数据包,而不是等到队列满了才丢弃。
  • RED 会根据队列的当前长度和网络的负载动态调整丢包的概率,队列长度越长,丢包的概率就越高。
  • 该策略通过在网络出现拥塞之前丢弃一些包,来减少网络的整体负载,从而避免网络进入严重拥塞的状态。

相关文章:

计算机网络•自顶向下方法:网络层介绍、路由器的组成

网络层介绍 网络层服务:网络层为传输层提供主机到主机的通信服务 每一台主机和路由器都运行网络层协议 发送终端:将传输层报文段封装到网络层分组中,发送给边缘路由器路由器:将分组从输入链路转发到输出链路接收终端&#xff1…...

安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮

最近客户想要做一个台灯产品,需要实现 串口调节台灯功能 ,其中包括 亮度调节 色温调节 开关 三个功能 话不多说,贴代码 diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml old mode 100644 new …...

多个线程处理不同的数据,等线程都完成后再进行下一步操作

现在有三个任务,三个任务之间没有关联关系,但是第四个任务要等前三个完成之后才能进行,于是使用多线程完成前三个任务节省时间 示例代码: public void saveDataByOnlineTimeNew(LocalDateTime startTime, LocalDateTime endTime) {Objects.requireNonNull(startTime, "开…...

聆听音乐 1.5.9 | 畅听全网音乐,支持无损音质下载

聆听音乐手机版是面向广大音乐爱好者的移动应用程序,用户可以随时随地通过手机享受丰富的音乐资源。它提供了多种魅力功能,让用户在手机上畅享更舒适的音乐体验,每位用户都能享受精彩纷呈的收听体验。此外,软件还支持无损音质音乐…...

Rust 基础入门指南

Rust 基础入门指南 1. Rust 语言概述 Rust 的历史与设计理念 Rust 是由 Mozilla 研究院的 Graydon Hoare 于2010年开始创建的系统编程语言。其设计目标是创建一种安全、并发、实用的编程语言,特别关注内存安全和并发性。 Rust 的核心设计理念包括: …...

青少年编程与数学 02-006 前端开发框架VUE 03课题、编写APP组件

青少年编程与数学 02-006 前端开发框架VUE 03课题、编写APP组件 一、组件二、VUE中的组件三、APP组件四、应用示例1. App.vue - 根组件2. HelloWorld.vue - 子组件3. main.js - 应用入口文件4. router/index.js - 路由配置文件5. index.html - HTML入口文件6. package.json - 项…...

基于Java的银行排号系统的设计与实现【源码+文档+部署讲解】

目 录 内容提要 1. 引言 2. 系统分析 2.1 系统初步调查 2.2 系统可行性分析 2.2.1 经济可行性 2.2.2 操作可行性 2.2.3 技术可行性 2.3 系统开发环境概述 2.3.1 硬件环境 2.3.2 软件环境 2.4 系统需求分析 2.4.1 业务流程分析 2.4.2 系统体系结构设计 2.4.3 系统逻辑模型 2.5 …...

linux-26 文件管理(四)install

说一个命令,叫install,man install,install是什么意思?安装,install表示安装的意思,那你猜install是用来干什么的?猜一猜干什么的?安装软件,安装第三方软件,错…...

VS2015中使用boost库函数时报错问题解决error C4996 ‘std::_Copy_impl‘

在VS2015中使用boost库函数buffer时遇到问题,其他函数定义均能执行,当加上bg::buffer(参数输入正确);语句后就报如下错误: 错误 C4996 std::_Copy_impl: Function call with parameters that may be unsafe - this call relies…...

pikachu靶场--目录遍历和敏感信息泄露

pikachu靶场—目录遍历和敏感信息泄露 目录遍历 概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再…...

植物大战僵尸杂交版3.0.2版本

更新内容 植物大战僵尸杂交版3.0.2版本的更新内容如下: • 修复BUG: • 游戏内贴图错乱的BUG。 • 无尽模式卡死的BUG。 • 卡牌模仿者的一系列BUG。 • 干扰车可能同时出现多辆的BUG。 • 冒险模式部分关卡无法过关的BUG。 • 新增内容&#xf…...

kafka怎么保证顺序消费?

kafka怎么保证顺序消费? 1. 分区内的顺序保证2. 并发消费3. 实现顺序消费的策略4. 注意事项 kafka创建 topic 的时候没有指定分区数量,那么默认只会有一个分区。如果你想要创建一个具有多个分区的 topic,你可以在创建 topic 的命令中指定 --p…...

Makefile 模板 --- 内核模块

内核模块模板 驱动源码同级目录下 #******************************************************************************* # xxx Co., Ltd. All Right Reserved. # Author : # Version : V1.0.0 2020.10.21 # Description : # Note : gaoyang3513163.co…...

仓库叉车高科技安全辅助设备——AI防碰撞系统N2024G-2

在当今这个高效运作、安全第一的物流时代,仓库作为供应链的中心地带,其安全与效率直接关系到企业的命脉。 随着科技的飞速发展,传统叉车作业模式正逐步向智能化、安全化转型,而在这场技术革新中,AI防碰撞系统N2024G-2…...

计算机视觉CV期末总复习

1.计算机视觉基础 数字图像表示 二值图像 仅包含黑白两种颜色的图像,只使用1个比特为(0黑或1白)表示 彩色图像:分不同的颜色空间 gray灰度图像 每个像素只有一个采样颜色,取值范围0--255,为8比特位&a…...

【微信小程序获取用户手机号

微信小程序获取用户手机号有2种,一种是前端自己解密,一种是获取后发给后端,后端去解密 重点:要在微信公众平台设置里面绑定微信开放平台账号,不然反解不出来用户手机号上代码: <button style"font-size: 16px;" open-type"getPhoneNumber" getphonenumb…...

WFP Listbox绑定数据后,数据变化的刷新

Listbox绑定数据通过ItemsSource来的&#xff0c;如果绑定的是普通的List<数据>&#xff0c;不会自己刷新。 使用ObservableCollection集合 解决问题的方法: 将数组替换为 ObservableCollection ObservableCollection 是专为绑定设计的集合类型&#xff0c;可以通知 W…...

Android Camera压力测试工具

背景描述&#xff1a; 随着系统的复杂化和业务的积累&#xff0c;日常的功能性测试已不足以满足我们对Android Camera相机系统的测试需求。为了确保Android Camera系统在高负载和多任务情况下的稳定性和性能优化&#xff0c;需要对Android Camera应用进行全面的压测。 对于压…...

【华为OD-E卷 - 最优资源分配 100分(python、java、c++、js、c)】

【华为OD-E卷 - 最优资源分配 100分&#xff08;python、java、c、js、c&#xff09;】 题目 某块业务芯片最小容量单位为1.25G&#xff0c;总容量为M*1.25G&#xff0c;对该芯片资源编号为1&#xff0c;2&#xff0c;…&#xff0c;M。该芯片支持3种不同的配置&#xff0c;分…...

字符串格式时间(HH-MM)添加间隔时间后转为HH-MM输出

转换时间代码如下所示 #include <iostream> #include <iomanip> #include <sstream>//添加时间转换为时间 std::string addMinutesToTime(const std::string& timeStr, int minutesToAdd) {int hours, minutes;char delimiter;//解析输入时间std::istri…...

AI驱动3D骨骼绑定:从3天到3分钟的自动化革命

AI驱动3D骨骼绑定&#xff1a;从3天到3分钟的自动化革命 【免费下载链接】UniRig One Model to Rig Them All: Diverse Skeleton Rigging with UniRig 项目地址: https://gitcode.com/gh_mirrors/un/UniRig 3D骨骼绑定是动画制作流程中的关键环节&#xff0c;传统手工绑…...

AI辅助开发:让快马平台Kimi模型帮你构建《构石》官网智能搜索功能

最近在帮《构石》期刊官网开发智能搜索功能时&#xff0c;发现用传统方式写代码效率太低。尝试了InsCode(快马)平台的AI辅助开发后&#xff0c;整个过程变得特别顺畅。这里分享下具体实现思路和平台使用体验。 需求分析 期刊官网需要支持多条件组合搜索&#xff0c;包括年份范围…...

Dynamic Deep Learning for Li-ion Battery Fault Detection: A Practical Approach with Real-world EV Da

1. 动态深度学习在锂电池故障检测中的核心价值 锂电池作为电动汽车的核心部件&#xff0c;其健康状况直接关系到整车的安全性和可靠性。传统基于阈值的检测方法在面对复杂多变的实际工况时&#xff0c;往往表现不佳。我们团队在实际测试中发现&#xff0c;某品牌车辆在低温环境…...

Python新手福音:借助快马AI零基础构建你的第一个行情网站

作为一个刚接触Python的新手&#xff0c;想要构建一个行情网站听起来可能有点吓人。但通过InsCode(快马)平台的AI辅助&#xff0c;整个过程变得异常简单。下面我就分享一下自己从零开始搭建第一个行情网站的经历。 数据获取部分 首先需要找到一个免费的金融数据接口。我选择了一…...

AI数字人制作:零门槛创建专属虚拟形象

AI数字人制作&#xff1a;零门槛创建专属虚拟形象 【免费下载链接】Duix-Avatar &#x1f680; Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning. 项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avat…...

Typora与AI结合:使用万象熔炉·丹青幻境为Markdown文档自动配图

Typora与AI结合&#xff1a;使用万象熔炉丹青幻境为Markdown文档自动配图 不知道你有没有过这样的体验&#xff1a;在Typora里写完一篇技术博客或项目文档&#xff0c;内容详实&#xff0c;逻辑清晰&#xff0c;但通篇下来全是文字&#xff0c;总觉得少了点什么。想配几张图吧…...

OpenRouter最新免费额度调整:如何用微信支付宝充值解锁1000次/天API调用

OpenRouter API调用新规解析&#xff1a;微信支付宝充值实战指南 最近OpenRouter平台对免费API调用额度进行了重要调整&#xff0c;这一变化直接影响着国内开发者和AI爱好者的日常使用体验。作为聚合了300多个主流AI模型的统一接口平台&#xff0c;OpenRouter一直以友好的免费政…...

开源字体实用指南:Poppins字体家族的全方位应用策略

开源字体实用指南&#xff1a;Poppins字体家族的全方位应用策略 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins 价值定位&#xff1a;如何让开源字体成为项目的视觉资产&#x…...

忍者像素绘卷参数详解:如何通过提示词触发‘火之意志’专属风格权重

忍者像素绘卷参数详解&#xff1a;如何通过提示词触发火之意志专属风格权重 1. 认识忍者像素绘卷 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工具&#xff0c;它将传统忍者文化与16-Bit复古游戏美学完美结合。这款工具特别适合创作具有热血动漫风格的像素艺术作…...

Qwen3.5-9B惊艳案例:上传X光片→识别骨折位置→标注解剖结构→生成诊断报告草稿

Qwen3.5-9B惊艳案例&#xff1a;上传X光片→识别骨折位置→标注解剖结构→生成诊断报告草稿 1. 医疗影像分析的革命性突破 想象一下这样的场景&#xff1a;一位急诊医生面对堆积如山的X光片&#xff0c;需要在短时间内做出准确诊断。传统方法需要医生逐张查看、标注异常部位、…...