以太网交换机原理

没有配置,比较枯燥,二可以认识线缆,

三比较重要,慢慢理解,事半功倍。

        各位老少爷们,在下给大家说段以太网交换机原理,说得不好大家多多包涵,说得好呢,大家叫个好,有钱的帮个钱场,没钱的帮个人场,在下给大家鞠躬了。

一、以太网交换机的发展史

1.1 发展历史

        早在1972年,Robert Metcalfe(被尊称为“以太网之父”)为Xerox公司设计了一套网络,把公司的计算机都连接起来。Metcalfe把这个网络正式命名为以太网(Ethernet),这就是最初的以太网试验原型,该网络运行在粗同轴电缆,速率为2.94Mbp。

        1982年发布的标准,经过长期的发展,以太网已成为应用最为广泛的局域网,包括标准以太网(10 Mbit/s)、快速以太网(100 Mbit/s)、千兆以太网(1000 Mbit/s)和万兆以太网(10 Gbit/s)等。

       在TCP/IP中,以太网的IP数据报文的封装格式由RFC894定义,IEEE802.3网络的IP数据报文封装由RFC1042定义。当今最常使用的封装格式是RFC894定义的格式,通常称为Ethernet_II或者Ethernet DIX。

        上述摘抄自百度百科及华为官网,感兴趣的同学可以自行查询。

二、认识以太网

2.1 OSI参考模型

        互联网发展初期,各个局域网自己玩自己的,语言不互通,所以ISO组织在1985年研究的网络互连模型,制度相关标准,就有OSI(Open System Interconnect),即开放式系统互连。OSI参考模型分为七层。一句话:从下往上-物、数、网、传、会、表、应。

        网络工程师一般常常关注5层:物理层、数据链路层、网络层、传输层、应用层。(这块说法4层也对,不计较太多)

       2.1.1 物理层

        位于OSI参考模型的最底层,它直接承担数据传输的物理介质(即通信通道),物理层的传输单位为比特(bit),即一个二进制位(“0”或“1”)。就是最基本的电信号或光信号,是最基本的物理传输特征。物理层规定了以太网的基本物理属性,如电气特性或机械特性等。

       2.1.2 数据链路层

        OSI参考模型中的第二层,介于物理层和网络层之间。最基本的服务是将源设备网络层转发过来的数据可靠地传输到相邻节点的目的设备网络层。

        由于物理层的不同工作模式,需要提供特定的数据链路层来访问。一些组织和厂家提出把数据链路层再进行分层,分为媒体接入控制子层(MAC)和逻辑链路控制子层(LLC)。

数据链路层

LLC子层

MAC子层
物理层

物理层

        不同的物理层对应不同的MAC子层,LLC子层则可以完全独立。

        网络层、传输层、应用层,就先不说了,这次主要聊聊交换机。每层各自有各自的功能,做不同的事情,总之不同层次定义相关协议,厂商会研制相关设备承载这些协议。

        层次是按照相关协议来划分的,而不是设备。

        以前也写过这类文章,可以看看,不同时期理解不同。 

2.2 了解以太网物理层介质-线缆标准

2.2.1 常见线缆

名称

电缆

有效距离

速率

10BASE-5

粗同轴电缆

500m

10兆

10BASE-2

细同轴电缆

200m

10兆

10BASE-T

双绞线

100m

10兆

10BASE-F

光纤

2000m

10兆

100Base-T4

四对三类双绞线

100m

100兆

100Base-TX

两对五类双绞线

100m

100兆

100Base-FX

单模光纤或多模光纤

2000m

100兆

1000Base-LX

多模光纤和单模光纤

316m

1000兆

1000Base-SX

多模光纤

316m

1000兆

1000Base-TX

超5类双绞线或6类双绞线

100m

1000兆

10GBASE-T

CAT-6A或CAT-7

100m

10000兆

10GBase-LR

单模光纤

10km

10000兆

10GBase-SR

多模光纤

几百米

10000兆

2.2.2 常见光纤接口

2.2.3 认识光电转换器

2.3 CSMA/CD

CSMA/CD(Carrier Sense Multiple Access/Collision Detection),即:载波侦听多路访问/冲突检测。

CS:载波侦听

  • 在发送数据之前进行侦听,以确保线路空闲,减少冲突的机会。

MA:多路访问

  • 每个站点发送的数据,可以同时被多个站点接收。

CD:冲突检测

  • 由于两个站点同时发送信号,信号叠加后,会使线路上电压的摆动值超过正常值一倍。据此可判断冲突的产生。
  • 边发送边检测,发现冲突就停止发送,然后延迟一个随机时间之后继续发送。

2.3.1 工作过程

        以太网设计初期,计算机及相关设备是共享一条物理链路连接在一起。

        为避免通信故障,设备不停地检测链路状态,空闲时就进行发送,非空闲状态就等待。

        如果两台/多台终端同时发送数据,必定会发生冲突,导致链路电信号不稳定。

        当设备检测到信号不稳定时,就立即停止发送数据。

        并且设备会发送干扰脉冲,然后等待一段时间(时间是随机的)之后再进行发送数据。

2.3.2 最小帧长

        由于CSMA/CD算法的限制,以太网中,最小帧长为64字节,这是由最大传输距离和冲突检测机制共同决定的。

        规定最小帧长是为了避免这种情况发生:A已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B。B认为线路空闲继续发送数据,导致冲突。

Ethernet_II帧结构(摘自华为官网)

2.4 双工模式与协商

双工模式:以太网的物理层存在半双工和全双工两种模式。

2.4.1 半双工

代表设备HUB。

  • 任意时刻只能接收数据或者发送数据。
  • 采用CSMA/CD机制。
  • 有最大传输距离的限制。

2.4.2 全双工

代表设备网卡、交换机、路由器等。

  • 同一时刻可以接收和发送数据。
  • 最大吞吐量达双倍速率。
  • 消除了半双工的物理距离限制

        全双工从根本上解决了以太网的冲突问题,以太网由共享式转变为交换式,以太网从此告别CSMA/CD。

2.4.3 协商的由来

        随着互联网的发展,全双工更好的解决CSMA/CD的冲突问题,但是依旧还有很多旧设备使用半双工的工作模式,全双工与半双工如何组网对接?于是,提出了自动协商技术来解决这种矛盾。

  • 自动协商
            使物理链路两端的设备通过信息交互自动选择同样的工作参数。自动协商的内容主要包括双工模式、运行速率以及流控等参数。一旦协商通过,链路两端的设备就锁定在同样的双工模式和运行速率。

2.4.4 自动协商的工作原理

  • 网络设备间建立连接的一种方式,设备双方根据彼此工作模式信息的交集,按照双方都支持的最优工作模式建立连接。

  • 使用双绞线连接的以太网:没有数据传输时,链路不是空闲状态,而是每隔16ms发送一个高脉冲,用来维护链路层的连接,这种脉冲成为NLP(Normal Link Pulse)码流;

        在NLP码流中再插入一些频率更高的脉冲,可用来传递更多的信息,这串脉冲成为FLP(Fast Link Pulse)码流。

        自协商功能的基本机制就是将协商信息封装进FLP码流中,以达到自协商的目的。

  • 对于使用光模块和光纤连接的以太网:也是发送码流来进行自协商的,这种码流称为C码流,也就是配置(Configuration)码流。与电口不同的是,光口一般不协商速率,并且一般工作在双工模式,所以自协商一般只用来协商流控。

    如果协商通过,网卡就把链路置为激活状态,可以开始传输数据了。如果不能通过,则该链路不能使用。

    如果有一端不支持自动协商,则支持自动协商的一端选择一种默认的方式工作,一般情况下是10M半双工模式。

2.4.5 自动协商是一直协商吗?

        自协商完全由物理层芯片设计实现,IEEE 802.3规范要求在下列任一情况下启动自协商:

  • 链路中断后恢复
  • 设备重新上电
  • 任何一端设备复位
  • 有重新自协商(Renegotiation)请求

        除此之外,连接双方并不会一直发送自协商码流。自协商并不使用专用数据包或带来任何高层协议开销。

2.5 冲突域和广播域

2.5.1 冲突域

        电信号冲突的范围。CSMA/CD该技术是个缓解方案,当一个共享带宽域内设备越来越多,冲突无法避免。

        冲突域内所有终端设备竞争同一带宽,一个终端设备发出的报文(无论是单播、组播、广播)域内所有终端都可以收到。

        那么如何解决冲突域?分割冲突域,分割电信号,引入一个设备-网桥。但网桥好是好,就是端口少,那就做个多端口的网桥-交换机,即:每个端口都是不同的冲突域。

        上面说过全双工的工作模式+多端口网桥=现在市面上的最基本的交换机,冲突域拿捏!

2.5.2 广播域

        一个广播数据所能传递的范围。因为网络中使用了广播,会占用带宽,降低设备的处理效率,必须对广播加以限制。

        交换机很好,但解决不了广播,最经典的(搞不定全1,mac地址为FFFF-FFFF-FFFF的广播地址)即:默认情况下交换机所有接口都属于一个广播域。

        那么如何解决广播域?路由器能隔离广播域,即: 每个端口都是不同的广播域。但是路由器成本高-贵、转发性能不高,那又有什么物美价廉的技术呢?VLAN 技术 (virtual local area network):虚拟局域网,分割广播源,广播域拿捏!

三、交换机的工作原理

3.1 二层交换机

        我们知道交换机工作在OSI参考模型的第二层-数据链路层,它对数据包的转发是建立在MAC(Media Access Control )地址基础之上,交换机每个端口都是不同的冲突域,所以可以隔离冲突域。

        交换机通过学习以太网帧的源MAC来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC表),通过其目的MAC来查找MAC表决定向哪个接口转发。

解释一下:

        形成MAC地址表【依靠的是源MAC】

  •         交换机任意时刻在任何一个端口上,接收到数据。都会将该数据的源MAC地址,和数据入端口的对应关系记录下来,形成MAC地址表。
  •         即:MAC地址 — 端口

        查找MAC地址表【依靠的是目标MAC】

  •         交换机在处理完源MAC地址,就会继续查看目的MAC地址,同时去MAC地址表中确认一下是否存在 目的MAC地址对应的条目。
  •         查到该条目,则从端口发送出去;
  •         没查到该条目,则进行广播/洪泛/泛洪;即,将数据从除了 入端口外 的 其他所有端口 都发送出去。

        交换机核心工作表,就是维护MAC地址表,完成数据交换的工作。

3.2 三层交换机

       三层交换机一般是通过VLAN来划分二层网络并实现二层交换,同时能够实现不同VLAN间的三层IP互访。 

        三层交换机并不路能完全替代路由器,由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路由能力等仍然是三层交换机的薄弱环节。

        三层交换机维护MAC地址表、ARP表、三层转发信息表、直连路由表,完成数据交换工作。

        源主机在发起通信之前,将自己的IP与目的主机的IP进行比较(用网络掩码计算后具有相同的网络号),会出现两种情况:

        1.源主机IP与目的主机IP同一网段:

        那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC地址作为报文的目的MAC地址进行报文发送。

        2.源主机IP与目的主机IP不同网段:

        会通过网关(Gateway)来传递报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文的目的MAC发送报文。此时发送报文的源IP是源主机的IP,目的IP仍然是目的主机的IP。

解释:

1与3.1二层交换机原理过程一样,源MAC学习,目的MAC查表,有则转发,无则除入端口之外广播所有接口。

2

  • 首先源主机A发现自己与目标主机B不是一个网段,那么主机A就会向网关(也就是三层交换机)发送ARP请求。
  • 当三层交换机收到ARP请求后,检查报文发现是自己的三层接口IP,所以就发送一个ARP应答给主机A,应答里面包含自己三层接口的MAC地址。与此同时,三层交换机将主机A的IP与MAC地址记录在自己的ARP表项中。
  • 主机A收到三层交换机的ARP应答报文,开始正式封装ICMP请求报文,该报文包含目的MAC地址(三层交换机的)、源MAC(主机A)、源IP(主机A)、目的IP(主机B)。
  • 三层交换机收到报文后,首先根据报文的源MAC+VLAN ID更新MAC表。然后,根据报文的目的MAC+VLAN ID查找MAC地址表,发现匹配了自己三层接口MAC的表项,说明需要作三层转发,于是继续查找交换芯片的三层表项;
  • 交换芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;
  • CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(主机B对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后三层交互机会在目的网段对应的VLAN下的所有接口发送请求主机B对应MAC的ARP请求;
  • 当主机B收到三层ARP请求报文后,检查发现是自己的IP地址, 那么就会回复一个ARP应答报文给到三层交换机,该报文包含主机B的MAC地址。
  • 三层交换机收到主机B的ARP应答后,将其主机B的IP和MAC对应关系记录到自己的ARP表中,并将主机A的ICMP请求报文发送给主机B,报文的目的MAC修改为主机B的MAC,源MAC修改为自己的三层接口MAC。同时,在交换芯片的三层表项中添加表项三层转发信息(内容包括IP、MAC、出口VLAN、出接口),这样后续的主机A与主机B的报文就可以通过该硬件三层表项直接转发了;
  • 主机B收到三层交换机转发过来的ICMP请求报文以后,将ICMP应答报文发送给主机A。ICMP应答报文的转发过程与前面类似,只是由于三层交换机在之前已经得到主机A的IP和MAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给主机A;
  • 即“一次路由(首包CPU转发并建立三层硬件表项)、多次交换(后续包芯片硬件转发)”

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Debugging using Visual Studio Code

One of the key features of Visual Studio Code is its great debugging support. VS Code’s built-in debugger helps accelerate your edit, compile, and debug loop. Debugger extensions VS Code 内置了对 Node.js 运行时的调试支持,可以调试 JavaScript、TypeScript…

Web3 前端攻击:原因、影响及经验教训

DeFi的崛起引领了一个创新和金融自由的新时代。然而,这种快速增长也吸引了恶意行为者的注意,他们试图利用漏洞进行攻击。尽管很多焦点都集中在智能合约安全上,但前端攻击也正在成为一个重要的威胁向量。 前端攻击的剖析 理解攻击者利用前端漏…

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection 论文链接:http://arxiv.org/abs/2406.03459 代码链接:https://github.com/Atten4Vis/LW-DETR 一、摘要 介绍了一种轻量级检测变换器LWDETR,它在实时物体检测方面超越…

matrixone集群搭建、启停、高可用扩缩容和连接数据库

1. 部署 Kubernetes 集群 由于 MatrixOne 的分布式部署依赖于 Kubernetes 集群,因此我们需要一个 Kubernetes 集群。本篇文章将指导你通过使用 Kuboard-Spray 的方式搭建一个 Kubernetes 集群。 准备集群环境 对于集群环境,需要做如下准备&#xff1a…

数据结构-期末复习题

数据结构-期末复习题 一、选择题 1、在数据结构中,与所使用的计算机无关的是数据的( ) 结构。 A. 存储B. 物理C. 逻辑D. 物理和存储 【答案】C 【解析】暂无解析2、算法分析的两个主要方面是 ( )。 A. 正确性和简单性B. 可读性和文档性C. 空间复杂度…

测评推荐:企业管理u盘的软件有哪些?

U盘作为一种便携的存储设备,方便易用,被广泛应用于企业办公、个人学习及日常工作中。然而,U盘的使用也带来了数据泄露、病毒传播等安全隐患。为了解决这些问题,企业管理U盘的软件应运而生。 本文将对市面上流行的几款U盘管理软件…

【SQLmap】常用命令

文章目录 实际使用案例常用命令基本命令数据库指纹识别用户信息用户权限数据库枚举数据导出密码哈希操作系统命令执行文件操作代理和网络参数指定保存恢复自动搜索注入智能模式等级设置自动注入WAF 绕过杂项帮助和支持 SQLmap 是一款开源的自动化 SQL 注入检测和利用工具&#…

Web Based Quiz System v1.0 SQL 注入漏洞(CVE-2022-32991)

前言 CVE-2022-32991 是一个影响 Web Based Quiz System v1.0 的 SQL 注入漏洞。这个漏洞存在于 welcome.php 文件中的 eid 参数处。攻击者可以通过此漏洞在数据库中执行任意 SQL 语句,从而获取、修改或删除数据库中的数据。 具体细节如下: 攻击向量&…

【Spring Boot】Java 持久层 API:JPA

Java 持久层 API:JPA 1.Spring Data1.1 主要模块1.2 社区模块 2.JPA3.使用 JPA3.1 添加 JPA 和 MySQL 数据库的依赖3.2 配置数据库连接信息 4.了解 JPA 注解和属性4.1 常用注解4.2 映射关系的注解4.3 映射关系的属性 5.用 JPA 构建实体数据表 1.Spring Data Spring…

VMware虚拟机迁移:兼用性踩坑和复盘

文章目录 方法失败情况分析:参考文档 方法 虚拟机关机,整个文件夹压缩后拷贝到新机器中,开机启用即可 成功的情况: Mac (intel i5) -> Mac (intel i7)Mac (intel, MacOS - VMware Fusion) -> DELL (intel, Windows - VMw…

flask的基本使用2

上一篇我们介绍了基本使用方法 flask使用 【 1 】基本使用 from flask import Flask# 1 实例化得到对象 app Flask(__name__)# 2 注册路由--》写视图函数 app.route(/) def index():# 3 返回给前端字符串return hello worldif __name__ __main__:# 运行app,默认…

Linux【环境 CenOS7】部分软件安装链接整理

优质博文:IT-BLOG-CN 一、开启网络 【问题】: 刚安装完CentOS,当ping www.baidu.com时,ping不通; 【解决】: 进入cd /etc/sysconfig/network-scripts/我这里修改的是ifcfg-ens33文件,将ONBOOT…

论文阅读_基于嵌入的Facebook搜索

英文名称:Embedding-based Retrieval in Facebook Search 中文名称:基于嵌入式检索的Facebook搜索 时间:Wed, 29 Jul 2020 (v2) 地址:https://arxiv.org/abs/2006.11632 作者:Jui-Ting Huang, Ashish Sharma, Shuying …

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验12 默认路由和特定主机路由

一、实验目的 1.验证默认路由和特定主机路由的作用; 二、实验要求 1.使用Cisco Packet Tracer仿真平台; 2.观看B站湖科大教书匠仿真实验视频,完成对应实验。 三、实验内容 1.构建网络拓扑; 2.验证验证默认路由和特定主机路由…

MySQL高级-索引-使用规则-SQL提示(use、ignore、force)

文章目录 1、查看表 tb_user2、展示索引3、为profession、age、status创建 联合索引4、查询 profession软件工程5、执行计划 profession软件工程6、创建profession单列索引7、再次执行计划 profession软件工程8、SQL提示8.1、use index(idx_user_pro)8.2、ignore index(idx_use…

九浅一深Jemalloc5.3.0 -- ①浅*编译调试

目前市面上有不少分析Jemalloc老版本的博文,但5.3.0却少之又少。而且5.3.0的架构与之前的版本也有较大不同,本着“与时俱进”、“由浅入深”的宗旨,我将逐步分析Jemalloc5.3.0的实现。5.3.0的特性请见Releases jemalloc/jemalloc GitHub 另…

dB分贝入门

主要参考资料: dB(分贝)定义及其应用: https://blog.csdn.net/u014162133/article/details/110388145 目录 dB的应用一、声音的大小二、信号强度三、增益 dB的应用 一、声音的大小 在日常生活中,住宅小区告知牌上面标示噪音要低…

实战精选 | 在NPU上运行BGE embedding模型,提升RAG整体性能

点击蓝字 关注我们,让开发变得更有趣 作者 | 杨亦诚 排版 | 李擎 介绍 BGE全称是BAAI General Embedding,即北京智源人工智能研究院通用Embedding模型,它可以将任意文本映射到低维的稠密向量,在文本向量化任务中得到了广泛的应用。可以看到在…

180Kg大载重多旋翼无人机技术详解

一、机体结构与材料 180Kg大载重多旋翼无人机在机体结构上采用了高强度轻量化设计。其主体框架采用航空铝合金材料,既保证了机体的结构强度,又减轻了整体重量。同时,关键部位如连接件、旋翼支撑臂等则采用碳纤维复合材料,以进一步…

独一无二的设计模式——单例模式(Java实现)

1. 引言 亲爱的读者们,欢迎来到我们的设计模式专题,今天的讲解的设计模式,还是单例模式哦!上次讲解的单例模式是基于Python实现(独一无二的设计模式——单例模式(python实现))的&am…