Linux入门真经-042以太网帧与交换机转发原理基础

2024-03-04 17:48

本文主要是介绍Linux入门真经-042以太网帧与交换机转发原理基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前两节简述了网络整体的样貌以及分层模型,大致属于纲领性的文章,很多细节并没有详说。

本节给大家介绍的是以太网帧的转发方式与交换机的简要工作原理。

 

我们在前面的小节讲过,交换机可以在同一个广播域里交换数据,从OSI七层模型的角度看,它工作在第二层数据链路层,数据流最多被解封至数据帧,只用做在局域网内的选路,至于IP、运输层、应用层的内容,交换机默认统统都看不到。数据链路层使用MAC地址来进行寻址。还记得MAC地址么?MAC地址由48位二进制数组成,常用12位的16进制数字来表示

 

一、帧转发方式

 

局域网内的帧主要通过三个方式发送:单播、广播、组播。

 

单播

单播是一对一的转发,从单一的源发往单一的目的地

单播帧的源MAC地址的第8个位如果为0,则表示这是一个单播帧。只有真正的目的主机才会接收并处理这个数据帧,其他主机接收后发现目的MAC与本机MAC不一致,则会直接将这个数据帧丢弃,不会做进一步的处理。

 

 

广播

广播是一对多的转发。数据从单个源发送给局域网内的所有主机。广播帧的目的MAC为全1,即FF:FF:FF:FF:FF:FF,所有收到这个帧的主机都会处理这个帧的数据。

当局域网里的所有主机都要接收相同的数据并处理的情况下,会用到广播方式。广播方式会产生大量的流量,严重时甚至可能产生网络拥塞,前面也讲过,路由器可以分割广播域。

 

组播

源MAC的第8位为1,表示这是一个组播帧。组播帧从单一源发往局域网内侦听该组播地址的主机。某些协议会用到组播这一技术,这里我们可以不做过多的了解。

 

二、交换网络原理

 

交换机是工作在数据链路层的设备。单播、广播、组播无非是数据帧的种类,他们都会由交换机去传递。

交换机的转发行为大致可分为三种:泛洪、转发、丢弃

我们前面也提到过,交换机里有一个CAM表,记录了MAC地址和交换机端口的映射关系。交换机对于数据帧的处理机制可以概括如下:

1、进入交换机的是单播帧,交换机会在CAM表中查找去往该MAC应该从哪个端口转发:

如果在CAM表里找不到该MAC的相关信息,交换机会执行泛洪操作。(注意,泛洪和广播是两码事,泛洪也能传播单播数据帧)

如果能找到,则对比一下,该mac对应的端口是不是接收该数据帧的端口,如果不是,就从这个端口转发,如果是,则丢弃。

2、如果进入交换机的是广播帧,则不查表,直接泛洪。

3、如果是组播帧。。此处不讨论,不在基础范围内了。

 

交换机的工作原理就是这么简单。当然,这只是最基础最基础的内容,也是你必须知道的东西。现实生活中还会运用到更多的交换技术。比如,可以隔离广播域的vlan、防止交换机环路产生广播风暴的stp等等。这些大多数是给专攻网络的网络工程师去操心的。感兴趣的朋友可以去看《CCNA学习指南》,看完这本书后掌握的网络知识就足够使用了。这本书还会向你介绍如何配置思科的路由器和交换机,如果你不是网络工程师,可以只看原理不看配置。因为不同厂商的路由交换设备,设备特性和配置方式都会有所不同。这也是搞网络的工程师头疼点之一。所幸的是,这些设备正常工作所遵循的TCP/IP协议族是相同的,厂商也会提供详尽的配置手册和技术支持。网络也是IT行业的一个方向,博大精深。我认为,如果主攻系统运维/数据库/云计算方向,CCNA的知识就绰绰有余了。如果工作有特殊需要,按需学习即可。

这篇关于Linux入门真经-042以太网帧与交换机转发原理基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773963

相关文章

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主