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

网络层介绍

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

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

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

数据面(Data plane)

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

控制面(Control plane)

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

两种控制面实现方法

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

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

可能的网络服务

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

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

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

路由器的组成

路由器的两个主要功能

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

输入端口功能

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

在这里插入图片描述

交换结构

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

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

三种类型的交换结构

在这里插入图片描述

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

在这里插入图片描述

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

输出端口功能

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

在这里插入图片描述

网络层处理:

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

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

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

输入端口排队与丢包

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

排队带来的问题:

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

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

在这里插入图片描述

输出端口排队与丢包

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

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

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

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

在这里插入图片描述

分组丢弃

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

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

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

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

工作原理:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501623.html

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

相关文章

下载linux aarch64版本的htop

htop代码网站似乎没有编译好的各平台的包,而自己编译需要下载一些工具,比较麻烦。这里找到了快速下载和使用的方法,记录一下。 先在linux电脑上执行: mkdir htop_exe cd htop_exe apt download htop:arm64 # 会直接下载到当前目…

呼叫中心中间件实现IVR进入排队,判断排队超时播放提示音

文章目录 [TOC](文章目录) 前言需求排队结束原因 联系我们实现步骤1. 调用http接口返回动作2. 启用拨号方案 前言 需求 呼叫中心需要实现调用IVR接口进入排队,如果是因为等待超时导致退出排队的,那就播放一段提示音再挂断通话;其他的情况就…

如何二次封装组件(vue3版本)

在开发 Vue 项目中我们一般使用第三方组件库进行开发,如 Element-Plus, 但是这些组件库提供的组件并不一定满足我们的需求,这时我们可以通过对组件库的组件进行二次封装,来满足我们特殊的需求。 对于封装组件有一个大原则就是我们应该尽量保…

【74HC192减法24/20/72进制】2022-5-17

缘由用74ls192设计一个72进制的减法计数器,需要有逻辑电路图-硬件开发-CSDN问答

Fastapi项目通过Jenkins2.4.91自动化构建部署到Nginx1.20进行访问详细方法(完全自动化部署亲测可用)

这篇技术文章需要结合我写的前两篇文章来一起看Gitlab17.7Jenkins2.4.91实现Fastapi/Django项目持续发布版本详细操作(亲测可用) 和 Pycharm2024.3Gitlab.17.7本地化部署和自动提交代码使用方法(亲测可用),总体来说是三部曲。这篇文章详细解读…

iOS 11 中的 HEIF 图像格式 - 您需要了解的内容

HEIF,也称为高效图像格式,是iOS 11 之后发布的新图像格式,以能够在不压缩图像质量的情况下以较小尺寸保存照片而闻名。换句话说,HEIF 图像格式可以具有相同或更好的照片质量,同时比 JPEG、PNG、GIF、TIFF 占用更少的设…

DATACOM-DHCP-复习-实验

DHCP 概述工作原理DHCP分配机制 配置配置基于全局地址池的DHCP服务器配置DHCP Relay中继验证 实验配置DHCP中继 参考 概述 动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用户IP地址进行动态管理和…

深入浅出 Beam Search:自然语言处理中的高效搜索利器

Beam Search 技术详解 搜索系列相关文章(置顶) 1.原始信息再加工:一文读懂倒排索引 2.慧眼识词:解析TF-IDF工作原理 3.超越TF-IDF:信息检索之BM25 4.深入浅出 Beam Search:自然语言处理中的高效搜索利器 1…

二、CSS基础

一、选择器(1) 大白话:我们人为认为的解析方式是,从左往右查找,对于浏览器来说,是从右往左查找,解析速度更高。 注: 伪类选择器 - 作用于实际存在的元素,用于描述元素的某种特定状态或关系&…

从摩托罗拉手机打印短信的简单方法

昨天我试图从摩托罗拉智能手机上打印短信,但当我通过USB将手机连接到电脑时,我在电脑上找不到它们。由于我的手机内存已达到限制,并且我想保留短信的纸质版本,您能帮我将短信从摩托罗拉手机导出到计算机吗? 如您所知&…

Linux终端输入删除键backspace显示^H,输入上下左右键显示^A^B^C^D原理以及详细解决办法!

当我们装完Linux系统之后,我们可能会碰到按下删除键后出现^H这种情况。 同样,输入上下左右键显示^A^B^C^D这种情况。 这是为什么呢? 别急,后面我会说具体解决办法,先来看看这是为什么? 一、终端程序架构 首先,我们需要了解终端程序架构。 终端程序架构分为三层,分别…

ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础

文章目录 简介为什么需要I2S?关于音频信号采样率分辨率音频声道 怎样使用I2S传输音频?位时钟BCLK字时钟WS串行数据SD I2S传输模型I2S通信格式I2S格式左对齐格式右对齐格式 i2s基本配置i2s 底层API加载I2S驱动设置I2S使用的引脚I2S读取数据I2S发送数据卸载…

JAVA:利用 Redis 实现每周热评的技术指南

1、简述 在现代应用中,尤其是社交媒体和内容平台,展示热门评论是常见的功能。我们可以通过 Redis 的高性能和丰富的数据结构,轻松实现每周热评功能。本文将详细介绍如何利用 Redis 实现每周热评,并列出完整的实现代码。 2、需求分…

vscode代码AI插件Continue 安装与使用

“Continue” 是一款强大的插件,它主要用于在开发过程中提供智能的代码延续功能。例如,当你在编写代码并且需要进行下一步操作或者完成一个代码块时,它能够根据代码的上下文、语法规则以及相关的库和框架知识,为你提供可能的代码续…

kafka开机自启失败问题处理

前言:在当今大数据处理领域,Kafka 作为一款高性能、分布式的消息队列系统,发挥着举足轻重的作用。无论是海量数据的实时传输,还是复杂系统间的解耦通信,Kafka 都能轻松应对。然而,在实际部署和运维 Kafka 的…

Linux Red Hat 7.9 Server安装GitLab

1、关闭防火墙 执行 systemctl disable firewalld 查看服务器状态 systemctl status firewalld 2、禁用selinux vi /etc/selinux/config 将SELINUX 的值改为 disabled 3、安装policycoreutils-python 执行 yum install policycoreutils-python 4、下载gitlab wget --co…

PostgreSQL对称between比较运算

本文介绍PostgreSQL对称between比较功能:between symmetric,在动态拼接SQL时利用它可以简化判断。PostgreSQL 9.4 及以上版本支持BETWEEN SYMMETRIC操作符,MySQL、Oracle、MsSQL没有对应功能。 between 比较 PostgreSQL的between结构允许你对…

[CTF/网络安全] 攻防世界 simple_php 解题详析

题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 代码解读 $a$_GET[a]; 从HTTP GET请求参数中获取一个名为a的变量,并将其赋值给变量a。符号用于禁止错误输出,如果不存在参数a则会将变量a设置为NULL。 $b$_GET[b];…

日志聚类算法 Drain 的实践与改良

在现实场景中,业务程序输出的日志往往规模庞大并且类型纷繁复杂。我们在查询和查看这些日志时,平铺的日志列表会让我们目不暇接,难以快速聚焦找到重要的日志条目。 在观测云中,我们在日志页面提供了聚类分析功能,可以…

RabbitMQ基础篇之Java客户端快速入门

文章目录 需求 项目设置与依赖管理 配置RabbitMQ的连接信息创建队列与消息发送创建消费者(消息接收)环境准备与操作 需求 利用控制台创建队列 simple.queue在 publisher 服务中,利用 SpringAMQP 直接向 simple.queue 发送消息在 consumer 服…