4.2.2 以太网技术(二) MAC地址和MAC帧的格式

article/2025/9/8 15:31:51

4.2.2 以太网技术(二) MAC地址和MAC帧的格式

前面我们提出了两个问题中第一个是在总线式的广播信道中我们如何实现计算机之间一对一的通信?为了在总线上实现一对一的通信我们可以使每一台计算机都拥有一个和其他的计算机不同的地址,也就是说每一台计算机的地址是唯一的。

一、MAC地址

在以太网上采用的地址被称之为MAC地址,这种以太网的MAC地址为扩展的唯一标识符一共是四十八个比特位就是我们所说的六个字节,前三个字节是IEEE的注册管理结构负责给不同生产网卡的厂商所分配的代码,也称之为机构唯一标识符,后三个字节也就是第24位,是由各厂商自行指派给生产的适配器接口,我们称之为扩展标识符,并通过特定比特位设置来区分全局管理和本地地址的管理以及来区分单播地址和组播地址,MAC地址是厂商在生产时已经烧写好的,一般是不能改动的,如果一个计算机的网卡坏掉了,那么我们在更换网卡之后这台计算机的MAC地址就会变化。MAC地址

我们可以使用ipconfig命令查询当前计算机的MAC地址,网卡对网络上每收到一个MAC帧首先用硬件检查MAC帧中的MAC地址,如果是发往本站的MAC帧就接收下来再进行相应的后续处理,否则将数据帧丢弃不再进行其他处理,这样做的好处是不再浪费主机或者处理器、内存的资源。

二、发往本站的帧

这里我们要解释一下什么叫做发往本站的帧,发往本站的帧包括以下三种帧:

  1. 单播(unicast)帧(一对一),在48个比特位的MAC地址都是一致的,如此一来网卡就会把数据帧接收下来。
  2. 广播(broadcast)帧(一对全体),只要是某一个站点能够收到数据帧就应该真正的去接受这个数据。
  3. 多播(multicast)帧(一对多),某一个站点收到这样的数据帧后就要进行判定自己的网卡是否在这个多播组当中,如果是就接收数据,如果不在多播组当中就直接把数据帧丢弃。
三、MAC帧的格式

前面我们已经提到一共有两种局域网MAC帧的结构,一种是以太网的DIX第二版本定义的MAC帧结构,另外一种是IEEE 802.3或ISO8802-3标准定义的MAC帧结构,这两种帧结构定义的主要区别在于地址字段的长度或者长度类型这个字段有一点点小小的区别,在这里我们以DIX的第二版本的MAC帧结构进行分析。MAC地址

  1. 从图中我们可以看到在帧结构中有目的地址(destination)、源地址(source)这两个字段各占六个字节,这里面就是单独存放的MAC地址,目的地址就指明了期望发往的目的地,可以是单播、多播、广播的地址都是可以的,源地址则是指发送数据帧的节点的地址,当然如果这是一个应答帧时这个目的地址和源地址需要位置对调。

  2. 第二个字段是类型字段,占2个字节,在DIX第二版本中规定了数据的类型字段是用来标识该帧的上一层使用的是什么协议,以便把收到的MAC帧交给上一层相应的协议当中,这个字段的用法就相当于查表了,如当前的类型字段的值是0X0800(16进制)就代表了上层携带的是IP数据报的内容,如果类型字段值是

    Ethertype ( 十六进制 ) 协议
    0x0000 - 0x05DC IEEE 802.3 长度
    0x0101 – 0x01FF 实验
    0x0600 XEROX NS IDP
    0x0660 0x0661 DLOG
    0x0800 网际协议(IP)
    0x0801 X.75 Internet
    0x0802 NBS Internet
    0x0803 ECMA Internet
    0x0804 Chaosnet
    0x0805 X.25 Level 3
    0x0806 地址解析协议(ARP : Address Resolution Protocol)
    0x0808 帧中继 ARP (Frame Relay ARP) [RFC1701]
    0x6559 原始帧中继(Raw Frame Relay) [RFC1701]
    0x8035 动态 DARP (DRARP:Dynamic RARP) 反向地址解析协议(RARP:Reverse Address Resolution Protocol)
    0x8037 Novell Netware IPX
    0x809B EtherTalk
    0x80D5 IBM SNA Services over Ethernet
    0x 80F 3 AppleTalk 地址解析协议(AARP:AppleTalk Address Resolution Protocol)
    0x8100 以太网自动保护开关(EAPS:Ethernet Automatic Protection Switching)
    0x8137 因特网包交换(IPX:Internet Packet Exchange)
    0x 814C 简单网络管理协议(SNMP:Simple Network Management Protocol)
    0x86DD 网际协议v6 (IPv6,Internet Protocol version 6)
    0x880B 点对点协议(PPP:Point-to-Point Protocol)
    0x 880C 通用交换管理协议(GSMP:General Switch Management Protocol)
    0x8847 多协议标签交换(单播) MPLS:Multi-Protocol Label Switching )
    0x8848 多协议标签交换(组播)(MPLS, Multi-Protocol Label Switching )
    0x8863 以太网上的 PPP(发现阶段)(PPPoE:PPP Over Ethernet )
    0x8864 以太网上的 PPP(PPP 会话阶段) (PPPoE,PPP Over Ethernet)
    0x88BB 轻量级访问点协议(LWAPP:Light Weight Access Point Protocol)
    0x88CC 链接层发现协议(LLDP:Link Layer Discovery Protocol)
    0x8E88 局域网上的 EAP(EAPOL:EAP over LAN)
    0x9000 配置测试协议(Loopback)
    0x9100 VLAN 标签协议标识符(VLAN Tag Protocol Identifier)
    0x9200 VLAN 标签协议标识符(VLAN Tag Protocol Identifier)
    0xFFFF 保留

  3. 下一个字段就是用户的数据(data)字段,这个字段的长度是从46个字节到1500个字节之间,它存放的是高层的协议数据单元里面真正的内容,即我们的数据内容。网络层的IP数据报整个作为用户数据字段的内容,所以IP数据报在以太网中的长度是有限制的,这个我们在网络层中也会进行讲解,也就是说我们后面会学习到以太网中的最大传送单元MTU的值不能超过1500个字节,数据报如果要经过MTU值小于数据包长度的网络时要把数据拆解成若干个较小的分片。当数据字段的内容如果小于46个字节时,还需要进行相应的填充,当用户数据字段长度小于46个字节时,此时必须采用填充无用字符的方式,来保证有效帧长度不能小于46个字节。

  4. 最后一个字段是帧校验序列FCS,占4个字节,当采用循环冗余码的方式来校验的话此时的生成多项式是CRC-32,当传输媒体的误码率是 1 0 − 8 10^{-8} 108时,我们使用MAC子层循环冗余码的校验方式可以使未检测到的差错小于 1 0 − 14 10^{-14} 1014

  5. 为了达到比特的同步,在传输媒体上实际传送时比MAC帧还要多了8个字节,在帧的前面插入的8个字节的第一个字段称之为前导符字段,这个字段占7个字节,它的格式很简单就是图中所示1010…就是我们二进制的1和0的交替,一共出现了7个字节,前导符的作用是为了接收方快速的进入同步的状态,以便做好接收数据帧的准备;第二个字段称之为帧开始标志符,占1个字节,一个字节的8个比特位是10101011,在这里要注意的是最后两个比特位是11,在前导符的后面一单是出现了10101011之后就表示后面的比特开始就是一个数据帧的真正的开始,也就是前面说的目的MAC地址(destination)就开始了。

这样我们就解决了在总线式的广播信道中如何实现计算机之间一对一通信的第一个关键技术问题,在掌握了帧格式和工作方式之后我们后续就可以学习以太网的工作原理了。

四、小结

我们重点掌握MAC地址的概念以及在局域网中寻址的重要性,掌握以太网的帧格式,这个是以太网数据链路层传输的基本单位,下一节我们将通过具体的网络传输实例强化对帧结构的理解和应用。


http://chatgpt.dhexx.cn/article/N8nncYgk.shtml

相关文章

MAC地址的分类和基本规范

一、MAC地址是什么? MAC地址(Media Access Control Address)是一种硬件地址,也称为物理地址,是用于区分网络中不同设备的唯一标识符。MAC地址长度为48位二进制数,通常以十六进制表示,由6个字节组…

MAC地址格式详解

以太网编址 在数据链路层,数据帧通常依赖于MAC地址来进行数据交换,它如同公网IP地址一样要求具有全球唯一性,这样才可以识别每一台主机。那么MAC地址如何做到这点?它的格式又是什么? MAC地址,英文全称Med…

关于数学模拟软件无法在win10环境下运行的解决办法

由于当时我电脑的操作系统是win7,所以可以直接使用1stopt,但后来放到win10的操作系统中时,1stopt无法打开。下面就来阐述以下解决办法。 (由于win8并非主流的操作系统,所以将不予叙述) 下载好“1stopt”右…

CTP平台之API

CTP平台: 综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台,CTP平台以“新一代交易所系统”的核心技术为基础&#xff…

vnpy: 在Ubuntu系统上编译vn.py CTP接口

一、本人按照以下过程在docker容器里使用python3.7编译成功了,具体容器编译环境(python,gcc)如下图: 为以后sopt编译做准备吧 以下为参考:https://zhuanlan.zhihu.com/p/83732424 交易接口支持 目前2.0版…

讲 透Object.prototype.toString.call()

Object.prototype.toString.call() 这个方法是用来判断数据类型的,主要用到的知识点是原型,原型链,toString(),call toString 每个对象都有一个 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的…

DeepSort 解读

1 摘要 DeepSort是在Sort目标追踪基础上的改进。引入了在行人重识别数据集上离线训练的深度学习模型,在实时目标追踪过程中,提取目标的表观特征进行最近邻匹配,可以改善有遮挡情况下的目标追踪效果。同时,也减少了目标ID跳变的问…

总结SPOT系列卫星发射情况

SPOT系列卫星是法国空间研究中心自1978年开始立项研制的对地观测卫星系统,自1986年成功发射SPOT 1卫星以来,该系列卫星获得了大量全球卫星观测影像数据,应用于测图、土地利用等诸多领域。目前共发射SPOT 1-7共7颗卫星,其发射时间及…

hive 修改cluster by算法_疯狂Hive之DML操作(四)

DML操作 Load 在将数据加载到表中时,Hive不会进行任何转换。加载操作是将数据文件移动到与Hive表对应的位置的纯复制、移动操作。 语法结构: load data [local] inpath ‘filepath’ [overwrite] into table tablename [partition(par2val1,par2val2....…

RT-Thread Studio学习(十一)IIC

RT-Thread Studio学习(十一)IIC 一、简介二、新建RT-Thread项目并使用外部时钟三、设置AT24Cxx的驱动框架四、驱动代码移植五、测试六、总结 一、简介 本文将基于STM32F407ZGT芯片介绍如何在RT-Thread Studio开发环境下访问AT24C256模块。 操作系统&am…

从根上理解操作系统(二)

目录 进程 1、进程到底是什么 2、怎么知道时间片用完的 3、进程切换 4、进程初始化 5、任务堆栈 6、系统调用 进程 程序是一个可执行文件,而进程是一个执行中的程序实例,所以可以认为 进程 进程资源 执行序列 利用分时技术,在操作系统…

【ubuntu18.04】meson 安装 及python升级python3.9

发现openh264 支持meson 发现openh264 支持meson 写的也太简单了完全不知道openh264 到底怎么搞meson看起来支持windows和ubuntu先安装python3 参考大神: 注意:meson安装前必须确认是否已经安装python3.5及以上版本;因为meson依赖于python3和ninja 1 安装python3和ninja:su…

KEAZ128 时钟配置

本文介绍如何用KEAZ128评估版(FRDM-KEAZ128Q80)配置为40MHz core freqency/20MHz bus frequency。 1.了解器件时钟特性 参见NXP KEA128 DS(S9KEA128P80M48SF0.pdf ),可以知道这个MCU最高支持48MHz core frequency. 从KEA128 RM&…

《软件工程》整理

目录 Scrum开发 概念 scrum开发流程 Scrum开发 需求获取(拆分) DevOps Server的CMMI模型对需求的层级划分,Epic(长篇故事)、Feature(特性)、Requirement(需求)其中&am…

RTKLIB源码调试.trace文件解析.stat文件解析

.trace文件是调试文件,帮助用户在程序、输入数据时,进行分析的一个很好的提示! .trace文件的生成、trace文件内容的生成,均在execses中! 以单点定位为例,大体流程为: 生成.trace文件&#xf…

sopt:一个简单的python最优化库

sopt:一个简单的python最优化库引言 最近有些朋友总来问我有关遗传算法的东西,我是在大学搞数学建模的时候接触过一些最优化和进化算法方面的东西,以前也写过几篇博客记录过,比如遗传算法的C语言实现(一):以非线性函数求极值为例和C语言实现粒子群算法(P…

python古诗词生成_Python一日一练02----诗词生成器

要求 编写一段程序,可以自动生成小诗。 格式如下 源码 import random import sys articles ["the", "a", "another", "her", "his"] subjects ["cat", "dog", "horse", "m…

LSTM古诗词生成

Le LSTM古诗词生成 一、简介 基于LSTM的古诗词生成,设计神经网络模型,使模型学习数据是6291首古诗,没有专门的验证数据和测试数据,感觉不会预测正确。边学习边生成古诗,从生成的古诗来看学习的效果。 涉及到的模块有Py…

宋词自动生成

利用宋词语料库,通过单双词的组合与模板的匹配,实现指定词牌宋词的生成 import random import tkinter as tk import re from tkinter import messageboxlist []class Window:# 界面设计def __init__(self, root):label1 tk.Label(root, text输入词牌…

基于Python的宋词生成器

资源下载地址:https://download.csdn.net/download/sheziqiong/85631523 1. 背景 我有两个爱好,一个是传统文化,另一个是高新技术。 传统文化,我喜欢唐诗宋词、笔墨丹青,高新技术我则从事前沿的IT编程,喜…