计算机网络-数据链路层下篇

news2024/11/25 14:24:51

目录

计算机网络

七、MAC地址,IP地址及ARP地址

(一)MAC地址

(二)IP地址

(三)ARP地址

八、集线器和交换机的区别

九、以太网交换机自学习和转发帧的流程

十、以太网交换机的生成树协议STP

十一、虚拟机与网VLAN

(一)VLAN概述

(二)虚拟局域网VLAN的实现机制

1、IEEE 802.1Q帧

2、交换机的端口类型


计算机网络

接上篇:计算机网络-数据链路层上篇_zoeil的博客-CSDN博客计算机网络数据链路层上篇https://blog.csdn.net/m0_62946761/article/details/131354425?spm=1001.2014.3001.5501

七、MAC地址,IP地址及ARP地址

数据链路层

MAC地址是以太网的MAC子层所使用的地址;   

网际层
IP地址是TCP/IP体系结构网际层所使用的地址
ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

尽管IP地址和ARP协议属于TCP/IP体系结构的网际层(而不属于数据链路层),但是它们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议因此,我们将这三者放在一起讨论。

(一)MAC地址

使用点对点的数据链路层不需要使用MAC地址,但是使用广播信道的数据链路层必须使用地址来区分各主机,不然不知道广播的消息是发送给哪个对象的。

当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识即一个数据链路层地址;
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址;

  • MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
  • MAC地址有时也被称为物理地址,但这不意味着MAC地址属于网络结构中的物理层!

一般情况下,用户主机会包含两个网络适配器: 有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。 

IEEE 802局域网的MAC地址格式

 ​​​​​​第一字节的b0位为0代表单播,为1代表多播;第一字节的b1位为0代表全球管理,为1代表本地管理。

 IEEE 802局域网的MAC地址发送顺序

字节发送顺序:第一字节-第六字节

字节内的比特的发送顺序:b0-b7

单播MAC地址举例

左边MAC地址不匹配,不接受该帧,右边接收

广播MAC地址举例‘

广播地址为FF-FF-FF-FF-FF-FF

多播MAC地址举例 

即第一字节的b0位(二进制位的个位)为1时为多播

 

 

(二)IP地址

IP地址是因特网 (Internet) 上的主机和路由器所使用的地址,用于标识两部分信息:

  • 网络编号:标识因特网上数以百万计的网络;
  • 主机编号:标识同一网络上不同主机(或路由器各接口)

如下图的192.168.1是N9的网络编号,后面的是N9网络下的设备的具体编号;192.168.0是N8的网络编号,后面是N8网络下的设备的具体编号 

很显然,之前介绍的MAC地址不具备区分不同网络的功能

  • 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)。
  • 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用

从网络体系结构看IP地址和MAC地址

 数据包转发过程中IP地址和MAC地址的变化情况

数据包转发过程中源IP地址和目的IP地址保持不变

数据包转发过程中源MAC地址和目的MAC地址逐个链路(逐个网络)改变

(三)ARP地址

地址解析协议ARP的作用是一个主机向另一个主机获取其MAC地址,以便发送帧。当主机不知道目标主机的MAC地址时,会首先查询本机的ARP高速缓存,如果没有匹配再发送ARP广播报文,获取对应主机的MAC地址

请求报文格式如下:

 

 

目标主机接收到广播后会将源主机的IP和MAC记录到自己的ARP高速缓存中,然后向源主机发送一个单播报文,内容就是自己的IP地址和MAC地址

 

B接收到回应后也会将目标主机的IP和MAC地址记录在本地的ARP高速缓存中

 

 

提示:

1、ARP是在链路间使用的,不能跨服务器使用。即不知道下一步要去哪里,需要找到对方的MAC地址,此时才使用ARP协议 

2、除ARP请求和响应外,ARP还有其他类型报文,例如用于检查IP地址冲突的“无效ARP,免费ARP”

3、ARP没有安全验证机制,存在ARP欺骗(攻击)问题。

八、集线器和交换机的区别

早期的总线型以太网已经被淘汰

现在使用较多的是双绞线和集线器HUB的星型以太网

  • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议
  • 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测 (由各站的网卡检测) ;
  • 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作。

集线器本质上是一个共享型总线网,因此每一个集线器都是一个冲突域,如果使用一个集线器链接多个集线器,那么会形成更大的冲突域

以太网交换机

  • 以太网交换机通常都有多个接口。每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式
  • 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信无碰撞 (不使用CSMA/CD协议)
  • 以太网交换机一般都具有多种速率的接口,例如:10Mb/s、100Mb/s、1Gb/s、10Gb/s接口的多种组合
  • 以太网交换机工作在数据链路层 (也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
  • 以太网交换机使一种即插即用设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的
  • 帧的两种转发方式:
    • 1.存储转发
    • 2.直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查顿是否有差错)

 

 集线器与交换机的对比

单播的情况下,集线器会发送给每一个主机,交换机会准确的发送到目标主机,更加有优势。广播的情况下效果相同。

多主机单播,集线器会出现碰撞,碰撞帧会发送到所有的主机。而交换机会存储多主机发送过来的帧,按顺序的发送给目标主机,不会产生冲突,交换机更加有优势

多网络的情况下单播,交换机更加有优势

多网络的情况下广播,效果相同 

集线器与集线器相连,扩大了冲突域和广播域

 

交换机与集线器相连,扩大了广播域,同时可以隔离碰撞域

 

九、以太网交换机自学习和转发帧的流程

以太网交换机工作在数据链路层 (也包括物理层)

以太网交换机收到帧后,在恢交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧
以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信以太网交换机通过自学习算法自动逐渐建立帧交换表

以下例子假设各主机知道网络中其他主机的MAC地址(无需ARP)

当A给B发送帧时,帧首先从交换机1的1号端口进入,此时交换机记录A的MAC地址对应端口号1,,由于表中找不到目标B的MAC地址及对应的端口号,此时进行洪范转发,,转发到除1号端口外的其他端口,此时交换机2也会通过端口2收到该帧,进而记录下A的MAC地址和进来的端口号。即交换机2的所有主机都会收到该帧,但因为目标MAC地址不匹配,所以不会接收。当B接收到该帧,与MAC地址比较后发现是发送给自己的,此时发送一个确认帧回去

交换机1收到确认帧后,在帧交换表查到了A的MAC地址和端口,直接明确的从1号端口转发出去,同时记录B的MAC地址和进来的端口号。

当E给A发送帧时,由于表中已经有了A的MAC地址及对应的端口号,此时进行明确转发,通过2号端口出去,进入交换机1的4号端口,然后继续查表,找到了进行明确转发。

 

注意:每条记录都有自己的有效时间,到期自动删除! 这是因为MAC地址与交换机接口的对应关系并不是永久性的 

总结:

以太网交换机自学习和转发帧的流程:
收到帧后进行登记。登记的内容为帧的源MAC地址及进入交换机的接口号

根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,有以下三种情况

  • 明确转发: 交换机知道应当从哪个 (或哪些) 接口转发该 (单播,多播,广播)
  • 盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发 (也称为泛洪)。
  • 明确丢弃交换机知道不应该转发该帧,将其丢弃 

十、以太网交换机的生成树协议STP

如何提高以太网的可靠性?

 添加冗余链路可以提高以太网的可靠性

但是会带来新的问题:网络环路。网络环路会造成以下问题:

  • 广播风暴:大量消耗网络资源,使得网络无法正常转发
  • 主机收到重复的广播帧:大量消耗主机资源
  • 交换机的帧交换表震荡 (漂移)

以太网交换机使用生成树协议STP(Spanning Tree Protocol)可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题

  • 不论交换机之间采用怎样的物理连接,交换机都能够自动计算井构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路) ;
  • 最终生成的树型逻辑拓扑要确保连通整个网络
  • 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算

 

 

 

十一、虚拟机与网VLAN

(一)VLAN概述

以太网交换机工作在数据链路层 (也包括物理层)
使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域
随着交换式以太网规模的扩大,广播域相应扩大.

巨大的广播域会带来很多弊端

  • 广播风暴
  • 难以管理和维护
  • 潜在的安全问题

 

广播风暴会浪费网络资源和各主机的CPU资源,可以使用路由器隔离广播域,但是路由器的成本较高,因此诞生了虚拟局域网VLAN技术

虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,i这些逻辑组具有某些共同的需求

(二)虚拟局域网VLAN的实现机制

1、IEEE 802.1Q帧

IEEE 802.1Q帧(也称Dot One Q)对以太网的MAC格式进行了扩展,插入了4字节的VLAN标记

VLAN标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN。

  • VID的取值范围是0~4095(0~ 2的12次方-1)
  • 0和4095都不用来表示VLAN,因此用于表示VLAN的VID的有效取值范围是1~4094 

802.1Q帧是由交换机来处理的,而不是用户主机来处理的。

  • 当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q,简称“打标签"
  • 当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称“去标签”

2、交换机的端口类型

交换机的端口类型有以下三种:

  • Access
  • Trunk
  • Hybrid

交换机各端口的缺省VLANID

  • 在思科交换机上称为Native VLAN,即本征VLAN。
  • 在华为交换机上称为Port VLANID,即端口VLANID,简记为PVID 

Access端口一般用于连接用户计算机

  • Access端口只能属于一个VLAN
  • Access端口的PVID值与端口所属VLAN的ID相同(默认为1)
  • Access端口接收处理方法:
  • 一般只接受“未打标签”的普通以太网MAC帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
  • Access端口发送处理方法:
  • 若帧中的VID与端口的PVID相等,则“去标签“并转发该帧; 否则不转发。 

示例讲解:交换机的4个端口都是Access类型的,A发送广播报文给B,广播报文通过交换机的1端口进入,此时1号端口会给报文加上4字节的VLAN标记字段,VID与PVID相同。接着带着标记字段的广播会发送到与自己VID相同的PVID的端口,因此该广播会去标签,发送到2号端口。

 

Trunk端口一般用于交换机之间或交换机与路由器之间的互连

  • Trunk端口可以属于多个VLAN
  • 用户可以设置Trunk端口的PVID值。默认情况下,Trunk端口的PVID值为1。
  • Trunk端口发送处理方法:
    • 对VID等于PVID的帧,"去标签”再转发
    • 对VID不等于PVID的帧,直接转发
  • Trunk端口接收处理方法:
    • 接收“未打标签”的帧,根据接收顿的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
    • 接收“已打标签的帧”;

示例讲解:交换机内部的端口都是Access类型,交换机1和2的5号端口都是Trunk类型。C发送的广播报文通过交换机1的3号端口进入,此时会”打标签“,加上VLAN标记字段,其中的VID为2,接着会发送到端口4(去标签),发送到端口5(PVID与广播报文的VID不同,此时会直接转发)。到达交换机的5号端口后,因为广播报文已经有VID为2的标签,此时会转发给PVID相同的端口(去标签)

Hybrid端口既可用于交换机之间或交换机与路由器之间的互连 (同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)

  • Hybrid端口可以属于多个VLAN (同Trun端口)
  • 用户可以设置Hybrid端口的PVID值。默认情况下Hybrid端口的PVID值为1 (同Trun端口)
  • Hybrid端口发送处理方法 (与Trunk端口不同), 查看帧的VID是否在端口的“去标签”列表中:
    • 若存在,则“去标签”后再转发;
    • 若不存在,则直接转发;
  • Hybrid端口接收处理方法 (同Trunk端口)
    • 接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
    • 接收“已打标签的帧”;

 示例讲解:交换机内的端口是hybrid类型,A发送给C的报文,从1号端口进入交换机,”打标签“,加上VLAN标记字段,字段的VID是10,此时会对照其他端口的去标签表,有相同的VID则进行去标签并转发

 

如果是A发送给B的报文,此时端口2的去标签表中没有VID10,端口2会直接进行转发,此时B收到的是一个带有VLAN标记的802.1Q帧,但是主机B可以识别普通以太网MAc帧,而不能识别802.1Q帧,只能丢弃该帧。 

 

总结:

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一步一步学OAK之十三:实现RGB相机上的空间对象跟踪

前面我们实现了在RGB相机上进行物体的对象跟踪,能够实时跟踪我们想要追踪的物探,但是,如果我们要想知道这个物体的三维空间坐标,该如何实现呢?要想实现这个功能,我们需要用到DepthAI API提供的MobileNetSpa…

无人机动力测试台-50公斤级-Flight Stand 50

Flight Stand 50测试台通过测量电机和螺旋桨的拉力、扭矩、转速、电流、电压、温度、螺旋桨效率和电机效率来精准地描述和评估无人机动力系统的性能。 产品应用 Flight Stand 50测试台可以用于以下方向: 实时动态测试 FS50 Pro的1000 Hz采样率使测试成为可能&am…

使用 OAT 工具替换 OceanBase 云平台节点

OceanBase 环境基本都会先安装 OCP 来部署、监控、运维数据库集群。但如果有机器过保等问题,就需要有平稳的 OCP 节点的替换方案。 作者:张瑞远 上海某公司 DBA,曾经从事银行、证券数仓设计、开发、优化类工作,现主要从事电信级 I…

android:DataPicker控件使用

一、前言:我真的服了,刚开始再发布运行的时候一直报这个错误“ Attempt to invoke virtual method void android.widget.TextView.setText(java.lang.CharSequence) on a null object reference”说空指针。我也上网查了,网上说在这个错误不是…

mysql行数据转为列数据

最近在开发过程中遇到问题,需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示。 借此机会,在网上查阅了相关方法,现总结出一种比较简单易懂的方法备用…

BI商业智能工具改变企业发展态势

BI商业智能工具在当今企业环境中扮演着越来越重要的角色,成为企业实现高速增长的关键因素之一。这些工具能够帮助企业应对海量数据挑战,提供更高效的数据处理和分析能力,为企业决策提供有力支持。以瓴羊Quick BI为例,它凭借其强大…

记事本软件误删后如何找回?

随着智能手机的普及,各种优秀的手机软件层出不穷,成为我们生活和工作中的得力助手。其中,记事本软件在手机上的应用也越来越受欢迎。 一款记事本可以给用户带来许多便利和帮助。与传统的纸质记事本相比,手机记事本具有更多的功能…

Java Spring多线程

Java Spring多线程 开启一个线程1 继承java.lang.Thread类2 实现java.lang.Runnable接口3 实现Callable接口4 实现线程池ThreadPoolExecutor Java线程池Executors 的类型Future与线程池 开启一个线程 https://blog.csdn.net/qq_44715943/article/details/116714584 1 继承java.…

React hooks文档笔记(二) 添加交互性

添加交互性 1. 事件传播1.1 停止传播1.2 阻止默认事件 2. [Hook] useState 状态3. 渲染和提交3.1 触发渲染3.2 React渲染组件3.3 提交对 DOM 的更改3.4 浏览器绘制 4. 渲染快照状态队列例子 5. 更新state中的对象 1. 事件传播 js的事件流: 事件捕获:从…

Spring学习(二)(Spring创建和使用)

经过前⾯的学习我们已经知道了,Spring 就是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么 它就具备两个最基本的功能: 将对象(Bean)存储到容器(Spring)中; 从容器中将对象取出来。那么该怎么将Bean存储的Spring以…

单片机系统架构

单片机系统架构 单片机概述 微型计算机的组成 微处理器、存储器加上I/O接口电路组成微型计算机。各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。 微型计算机的应用形态 ​ 从应用形态上&am…

python数据可视化-日期折线图画法

引入 什么是折线图: 折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。 在折线图中,类别数…

【vue】- 简易版筛选组件可展开/收起

仅做记录&#xff0c;未整理格式 css部分未完全&#xff0c;每个筛选条件为固定宽度 实现效果 单行筛选条件时不触发更多按钮&#xff0c;且做占位处理 多行筛选条件时默认收起 同时设定最大/最小宽度并监听该组件宽度变化 filter.vue组件 <template><div :cla…

c#调用c++ dll,Release版本内存访问错误

最近遇到个比较经典的案例&#xff0c;在c#中调用yara进行文件检测&#xff0c;yara是c编写的一个非常强大库&#xff0c;github有个大佬用c#对其进行了封装&#xff0c;使其能在跨平台下&#xff0c;只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃&…

Hadoop 组成

4 Hadoop 优势(4 高) 1)高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。 2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。 3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务…

低代码平台在ERP软件中的作用

很多人认为 低代码开发平台的出现颠覆了传统的软件开发模式&#xff0c;对软件开发行业造成冲击&#xff0c;其实低代码开发平台的出现只是提高了软件开发的效率&#xff0c;并不是要颠覆软件开发的模式。低代码平台在erp软件开发中的作用还是比较明显的。下面一起来了解一下相…

Postman Mock快速入门

目录 前言&#xff1a; 1.Mock简介 1.1 Mock定义 1.2 Mock目的 1.3 Mock意义 1.4 Mock服务 2. Postman 创建Mock服务 2.1 创建Mock服务 2.2 Postman创建Mock服务 2.2.1 Postman 创建Mock服务器参数 2.2.2 Postman创建Mock步骤 3.访问Postman Mock服务 前言&#xf…

css基础知识十三:怎么理解回流跟重绘?什么场景下会触发?

一、是什么 在HTML中&#xff0c;每个元素都可以理解成一个盒子&#xff0c;在浏览器解析过程中&#xff0c;会涉及到回流与重绘&#xff1a; 回流&#xff1a;布局引擎会根据各种样式计算每个盒子在页面上的大小与位置重绘&#xff1a;当计算好盒模型的位置、大小及其他属性…

MySQL-SQL全部锁详解(下)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

老PM,到底在牛什么?

早上好&#xff0c;我是老原。 “成长为一名优秀的项目经理。”相信这是每一个刚入行的项目经理都会立的flag。 对于项目经理来说&#xff0c;这是一个能力和经验并重的岗位&#xff0c;你应该也经常听人说&#xff0c;这项目经理是一个越老越吃香的职业。 就拿我自己来说&a…