网络层(三)

2023-11-02

网络层

网络层基本上就是围绕着路由器展开的,因此我们很有必要学习路由器的工作原理

首先,路由器由三个部分组成

  1. 输入端口
  2. 交换结构
  3. 输出端口

我们一个一个来分析

输入端口

输入端口需要完成的任务: 接收分组,确定分组应该转发到哪个输出端口

那输入端口是如何来确定应该转发到哪个输出端口的呢?

显然,应该是根据路由器转发表来查找,但是我们需要注意一点,转发表是由路由选择处理器来设置的,因此如果我们要查找输出端口,需要由路由选择处理器来处理,为了避免集中式处理,路由选择处理器会将转发表拷贝到输入端口上,这样就能避免集中式处理了

注意:查找输出端口是ns级别的

一旦查找到输出端口,该分组就会被交付给交换结构,由交换结构来将该分组送到对应的输出端口上

交换结构

交换结构需要完成的任务: 将分组送到对应的输出端口

有三种交换结构

  1. 经内存交换,也就是交换结构有一个中心处理器CPU,在输入端口拷贝该分组,然后从分组抽取头部得到目的地址,然后在转发表中查找对应的输出端口号,将该分组复制到输出端口号的缓存里

    可以看到,这种方法效率不高,而且还抢了输入端口的活,如果该内存带宽为R,则该交换结构的吞吐率不到R/2,而且一次只能有一个分组经过交换结构传输

  2. 经总线交换,算是上面的一个改进,即输出端口和输入端口约定好一个标签值,然后输入端口在分组的头部加上对应的输出端口的标签值,然后总线直接将分组传到每个输出端口上,只要标签对的上,就接收,否则就丢弃

    这个比前面的也只是优化了一点,而且同样是一次只能传输一个分组,因为只有一条总线

  3. 经互联网络交换,我们使用2N条总线来连接N个输入端口和N个输出端口,比如说纵横式交换机

    如图所示:

    在这里插入图片描述

    可以看到该交换结构的优点,如果A的输出端口为Y,则该交换结构就闭合A的总线于Y的总线的交点,这时如果B的输出端口为Z,同样的闭合B的总线和Z的总线的交点,这样就能实现多个分组传输到不同的输出端点,但是如果是多个分组传到相同的输出端点,则需要排队

输出端口

输出端口需要实现的功能: 将输出端口上的分组发送到输出链路上

排队问题

我们需要考虑何时会出现排队

假如我们交换结构的处理速度是输出结构处理速度的N倍,则最坏的情况下,交换结构也能完成任务(也就是每一个输出端口都有分组要发送)

然而我们要关系的是输出端口,如果你N的输入端口的分组都发到同一个输出端口上,那就麻烦了,一个输出端口在交换结构处理一个分组的时间中要处理N个分组,那在输出端口上肯定会出现大量的丢包

由输出端口排队就会出现另一个问题,输出端口应该优先处理那个分组,这就需要一个分组调度程序,在后面会学到

因此有一种更明智的方法就是在输出端口满之前丢弃该分组并向发送方发出一个拥塞信号

我们回到之前的问题,我们是假设交换结构的处理速度是输入端口处理速度的N倍,如果现在交换结构的处理速度不能达到输入端口的N倍,在输入端口也会出现排队,而且该排队有一个很严重的现象,线路前部拥塞

简单的说,假如A分组是在输入端口1上它的输出端口是X,它前面有一个分组B也是在输入端口1上但是它的输出端口是Y,现在有另外一个C分组在输入端口2上,它的输出端口也是Y,它们交换结构就要在B和C之间选一个来传输到输出端口Y,假如选了C,那么我B分组就得等待,假如现在A分组的输出端口根本就没有其他分组跟它一样,那么A分组本来是可以传输的,却被它前面的B分组给挡住了,这就是线路前部拥塞

如果输入分组的到达速率为其输入端口容量的58%时,这时就会无止境的丢包

参考:

《计算机网络自顶向下方法》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络层(三) 的相关文章

  • ESP32基于Arduino驱动GY30光照传感器程序

    连线 vcc 3 3v 5v gnd gnd scl 22 sda 21 效果 include
  • [Python从零到壹] 四十二.图像处理基础篇之图像金字塔向上取样和向下取样

    欢迎大家来到 Python从零到壹 在这里我将分享约200篇Python系列文章 带大家一起去学习和玩耍 看看Python这个有趣的世界 所有文章都将结合案例 代码和作者的经验讲解 真心想把自己近十年的编程经验分享给大家 希望对您有所帮助
  • this is incompatible with sql_mode=only_full_group_by

    5分钟学会MySQL this is incompatible with sql mode only full group by 错误解决方案 前言 一 原理层面 这个错误发生在mysql 5 7 版本及以上版本会出现的问题 mysql 5
  • Qt样式表

    一 QT样式表简介 1 QT样式表简介 QSS的主要功能是使界面的表现与界面的元素分离 使得设计皮肤与界面控件分离的软件成为可能 QT样式表是允许用户定制widgets组件外观的强大机制 此外 子类化QStyle也可以定制widgets组件
  • 基于stm32 的简单的智慧农业系统, 有上位机,有下位机

    1 实现的功能 1 下位机 stm32 keil 5 1 按键key1 中断控制 LED 3 的亮灭 2 按键key2 中断控制 温湿度的获取 数据通过串口发送给 上位机 3 智能检测温湿度是否超标 超标 开启警报 开启风扇 4 OLED
  • Unity接入苹果内购(IAP)

    Unity接入苹果内购 IAP Unity接入苹果内购 IAP 苹果支付流程 配置App 配置商品 协议 税务和银行业务 沙盒测试账号 Unity IAP 测试 苹果支付流程 在接苹果支付前我们需要先来大体了解下苹果支付的流程是怎样的 大体
  • 运动控制(部分)

    第二章 直流PWM调速系统 不可控整流器 大电容滤波 H桥式PWM变换器 泵升电压 在可逆系统进入制动状态时 PWM功率变换器把机器能变成电能回馈到直流侧 但由于二极管整流器到单向导电作用 不能回馈到交流电网 只能向滤波电容充电 使电容两端

随机推荐

  • RabbitMQ系列(四)RabbitMQ进阶-Queue队列特性 (二)工作队列 Work模式

    RabbitMQ进阶 Queue队列特性 二 工作队列 Work模式 文章目录 RabbitMQ进阶 Queue队列特性 二 工作队列 Work模式 1 work 工作队列 工作模式 2 代码实战 2 1 生产者 2 2 新建2个消费者 2
  • 关于 APP 隐私政策文本中个人敏感信息的规范使用声明

    前言 这两年国家对于互联网个人隐私保护非常重视 针对互联网产品对于个人信息的使用 四部委出台了一系列的规范 从去年开始 根据国家出台的相关规范 我们在不断地对我司的 APP 进行优化 包括两个方面 1 APP 中用户隐私政策的内容 2 AP
  • 《MySQL实战45讲》读后感 02

    说明 本来是打算写一些个人心得的 后来发现文中大量高质量的QA都非常精典 所以粘过来了 如有侵权请联系我删除哈 收获到的知识点 当一个表有更新的时候 跟这个表相关的所有缓存都会失效 所以这条语句就会把表T上所有缓存结果清空 MySQL8 版
  • 【腾讯云的1001种玩法】LAMP架构实现动态网站论坛系统

    腾讯云技术社区 博客主页持续为大家呈现云计算技术文章 欢迎大家关注 作者 魏豪 项目背景 LAMP架构 全称为Linux Apache Mariadb PHP 是一种强大的网站解决方案 LAMP是多个开源项目的首字母缩写 LAMP网站架构主
  • vue3之中div盒子的滚动条随着内容的增加而自动向下滚动

    思路 需要用到ref绑定dom元素 以及dom元素的scrollTop和scrollHeight属性 最终在onUpdated函数之中让scrollTop和scrollHeight两者相等即可 scrollTop 指的是滚动条卷去的距离 滚
  • MySQL 与 Redis 缓存的同步方案

    MySQL 与 Redis 缓存的同步方案 概述 MySQL 和 Redis 都是常见的数据存储方案 MySQL 用于存储结构化数据 Redis 用于存储非结构化数据 在一些高并发场景下 为了提升系统的性能 我们通常会将数据存储在 Redi
  • ubuntu下nginx1.0.15的安装

    1 首先到官网下载好nginx的原码 http nginx org en download html 2 安装nginx必备软件 gcc g pcre库 安装gcc sudo apt get install gcc 安装g sudo apt
  • VC设置程序热键

    为程序设置热键就是用到一个RegisterHotKey系统API 当然些API的使用相对简单 但也需要注意一些地方 所以在使用API前请参考MSDN相关文档 本文只给出一个设置程序热键的例子代码如下 1 在OnInitDialog中调用Re
  • docker 下载kafka

    Kafka采用的是订阅 发布的模式 消费者主动的去kafka集群拉取消息 与producer相同的是 消费者在拉取消息的时候也是找leader去拉取 kafka存在的意义 去耦合 异步 中间件的消息系统 首先安装zookeeper dock
  • 使用matlab搭建BP从零搭建BP神经网络完成鸢尾花数据集分类

    iris training mat文件如下 链接 https pan baidu com s 14vb1c0noPB4YKCCdOCsofA pwd ozmz 提取码 ozmz 不赘述 正确率96 7 load iris training
  • c++中的虚函数及虚函数表

    引语 我们在学习c 中经常会碰到一些莫名其妙的性质 特性等 如虚基类继承 虚函数等 但如果从底层 内存 编译器的角度去理解 那将会发现是如此合理且必要 c 中 我们来看这一个代码 class A pubilc void fun cout l
  • 优化网站性能 提高网站速度访问速度的14条实践

    相信互联网已经越来越成为人们生活中不可或缺的一部分 ajax flex等等富客户端的应用使得人们越加 幸福 地体验着许多原先只能在C S实现的功能 比如Google机会已经把最基本的office应用都搬到了互联网上 当然便利的同时毫无疑问的
  • ChatGPT的功能,优势,以及在生活中的应用

    ChatGPT是一种基于人工智能技术的聊天机器人 它可以模拟人类的对话方式 与用户进行交互 ChatGPT的功能和优势非常多 下面将详细介绍 ChatGPT的功能 1 自然语言处理 ChatGPT可以理解自然语言 识别用户的意图和需求 从而
  • 关于golang的http库及常用库

    go语言作为一个面向网络 面向服务 高并发的一门通用语言 http库是非常重要的 下面我们来了解http库及其他标准库 http库可以对客户端做很多的工作 下面我们来看一下 func main resp err http Get https
  • xxl-job的使用及简述原理

    文章目录 前言 1 介绍 2 部署篇 2 1 初始化数据库 2 2 部署调度中心 2 2 1 集群部署 2 3 部署执行器 2 3 1 集群部署 3 使用篇 3 1 设置执行器 3 2 新建任务 3 3 启动任务 3 4 查看日志 4 原理
  • layuiadmin(官方)知识点

    动态模板 layuiAdmin 的视图是一个 动静结合 的载体 除了常规的静态模板 你当然还可以在视图中存放动态模板 因此它可谓是焦点中的焦点 定义模板 在视图文件中 通过下述规则定义模板 下面是一个简单的例子 在不对动态模板设定数据接口地
  • Rust gRPC 库 tonic 使用记录

    tonic 使用记录 服务端 cargo run bin server 客户端 cargo run bin client
  • sendfile“零拷贝”、mmap内存映射、DMA

    原创连接 https blog csdn net z69183787 article details 104760890 utm source app groupmessage KAFKA推送消息用到了sendfile 落盘技术用到了mma
  • Java入门基础第7天【Java Eclipse安装教程和修改汉化教程】

    活动地址 CSDN21天学习挑战赛 六款Java常用的开发工具 我们在学习 Java 语言程序设计必须选择一个功能强大 使用简单 能够辅助程序设计的 IDE 集成开发环境 在Java入门基础第6天 我们认识了Java六款常用的开发工具 这篇
  • 网络层(三)

    网络层 网络层基本上就是围绕着路由器展开的 因此我们很有必要学习路由器的工作原理 首先 路由器由三个部分组成 输入端口 交换结构 输出端口 我们一个一个来分析 输入端口 输入端口需要完成的任务 接收分组 确定分组应该转发到哪个输出端口 那输