MAC地址_MAC地址格式_以太网的MAC帧_基础知识

news/2025/2/12 23:44:06/

MAC地址

全世界的每块网卡在出厂前都有一个唯一的代码,称为介质访问控制(MAC)地址

一.网络适配器(网卡)

  • 要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”。
  • 在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的IO总线以并行传输方式进行。
  • 网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的。
  • 网卡除要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换。由于网络的传输速率和计算机内部总线上的传输速率并不相同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。
  • 在确保网卡硬件正确的情况下,为了使网卡正常工作,还必须要在计算机的操作系统中为网卡安装相应的设备驱动程序。驱动程序负责驱动网卡发送和接收帧。

二.MAC地址

每块网卡中的MAC地址称为物理地址,MAC地址长6字节,一般由连字符(或冒号)分隔的12个十六进制数表示,如02-60-8c-e4-b1-21.高24位为厂商代码,低24位为厂商自行分配的网卡序列号.
在这里插入图片描述
MAC地址的类型:
在这里插入图片描述
MAC地址发送顺序

  • 字节发送顺序:第一字节----------------->第6字节
  • 字节内的比特发送顺序: b0------------->b7

补充:

  • MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址.
  • MAC地址有时也被称为物理地址。
    • 注意:不要被物理地址中的“物理”二字误导,误认为物理地址属于网络体系结构中物理层的范畴。物理地址属于数据链路层范畴。

MAC地址与网卡

  • 一般情况下,普通用户计算机中往往会包含两块网卡:一块是用于接入有线局域网的以太网卡
  • 另一块是用于接入无线局域网的Wi-Fi网卡每块网卡都有一个全球唯一的MAC地址。
  • 交换机和路由器往往具有更多的网络接口,所以会拥有更多的MAC地址。
    综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

以太网的MAC帧

引入:
由于总线上使用的是广播信道,因此网卡在网络上每收到一个MAC帧,首先要用硬件检查MAC帧中的MAC地址.如果是发往本栈的帧,那么就收下,否则就丢弃.

当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。

以太网MAC帧有2种格式:V2标准和IEEE802.3标准,下面讲解以V2标准

1.插入8B前导码:使接收端和发送端的时钟同步,在帧前面插入8字节再分为两个字段:
第一个字段共7字节,是前同步码,用来快速实现MAC帧的比特同步;
第二个字段是帧开始定界符,表示后面的信息就是MAC帧
2.目的地址和源地址
都是6B,就是网卡的MAC地址
3.类型:2B,指出数据域中携带的数据应交给哪个协议实体处理.
4.数据:46B-1500B包含高层的协议消息(看图IP数据报)
46B:CSMA/CD算法的限制,以太网帧长最短是64B,数据较少时必须填充,填充0-46B,
64-18=46
1500B:规定
5.校验码(FCS):4B,校验范围从目的地址到数据段的末尾,算法采用32位CRC,注意不检验前导码.

在这里插入图片描述


接收方可能收到的无效MAC帧包括以下几种:

- MAC帧的长度不是整数个字节
- 通过MAC帧的FCS字段的值检测出帧有误码
- MAC帧的长度不在64~1518字节之间
-接收方收到无效的MAC帧时,就简单将其丢弃,以太网的数据链路层没有重传机制。
  • 网卡从网络上每收到一个无误码的帧,就检查帧首部中的目的MAC地址,按以下情况处理:
    • (1)如果目的MAC地址是广播地址(FF-FF-FF-FF-FF-FF),则接受该帧。
    • (2)如果目的MAC地址与网卡上固化的全球单播MAC地址相同,则接受该帧
    • (3)如果目的MAC地址是网卡支持的多播地址,则接受该帧。
    • (4)除上述(1)、(2)和(3)情况外,丢弃该帧。
  • 网卡还可被设置为一种特殊的工作方式:混杂方式(Promiscuous Mode)。工作在混杂方式的网卡,只要收到共享媒体上传来的帧就会收下,而不管帧的目的MAC地址是什么。
    • 对于网络维护和管理人员,这种方式可以监视和分析局域网上的流量,以便找出提高网络性能的具体措施。
    • 嗅探器(Sniffer)就是一种工作在混杂方式的网卡,再配合相应的工具软件(WireShark),就可以作为一种非常有用的网络工具来学习和分析网络。
    • 混杂方式就像一把“双刃剑”,黑客常利用这种方式非法获取网络用户的口令。

http://www.ppmy.cn/news/1228447.html

相关文章

OpenAI 董事会与 Sam Altman 讨论重返 CEO 岗位事宜

The Verge 援引多位知情人士消息称,OpenAI 董事会正在与 Sam Altman 讨论他重新担任首席执行官的可能性。 有一位知情人士表示,Altman 对于回归公司一事的态度暧昧,尤其是在他没有任何提前通知的情况下被解雇后。他希望对公司的治理模式进行重…

图0000

#include<iostream> using namespace std; #define MaxInt 32767 #define MVNum 100 typedef char VerTexType; typedef int ArcType; //邻接矩阵的储存表示 用两个数组分别储存顶点表(一维数组)和邻接矩阵(二维数组) typedef struct { VerTexType vexs[MVNum];//顶点…

【每日一题】三个无重叠子数组的最大和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;滑动窗口 写在最后 Tag 【滑动窗口】【数组】【2023-11-19】 题目来源 689. 三个无重叠子数组的最大和 题目解读 解题思路 方法一&#xff1a;滑动窗口 单个子数组的最大和 我们先来考虑一个长度为 k 的子数组的最…

MacOS如何查询5000端口是否被占用

在 macOS 中&#xff0c;你可以使用终端命令来查询指定端口是否被占用。你可以通过以下步骤来查询5000端口是否被占用&#xff1a; 打开终端应用程序。你可以在"应用程序" -> “实用工具” 下找到终端。 在终端中输入以下命令&#xff0c;并按回车键执行&#xf…

Python中的迭代器、生成器和装饰器

当谈到Python中的迭代器、生成器和装饰器时&#xff0c;这三个概念都是与函数和数据处理密切相关的。让我们逐个深入了解它们。 1. 迭代器&#xff08;Iterators&#xff09;&#xff1a; 迭代器是一个可以逐个访问元素的对象。在Python中&#xff0c;迭代器实现了两个方法&a…

10_6 input输入子系统,流程解析

简单分层 应用层 内核层 --------------------------- input handler 数据处理层 driver/input/evdev.c1.和用户空间交互,实现fops2.不知道数据怎么得到的,但是可以把数据上传给用户--------------------------- input core层1.维护上面和下面的两个链表2.为上下两层提供接口--…

【brpc学习实战二】brpc client构建基本流程

client基本概念及学习指南 https://github.com/luozesong/brpc/blob/master/docs/cn/client.md 一、编写proto 这里与服务一致&#xff0c;实际开发中需要双端共同确定proto内容&#xff1b; 二、初始化channel rpc channel可以视为socket编程中的client对象 定义一个chan…

【Go学习之 go mod】gomod小白入门,在github上发布自己的项目(项目初始化、项目发布、项目版本升级等)

参考 Go语言基础之包 | 李文周的博客Go mod的使用、发布、升级 | weiGo Module如何发布v2及以上版本1.2.7. go mod命令 — 新溪-gordon V1.7.9 文档golang go 包管理工具 go mod的详细介绍-腾讯云开发者社区-腾讯云Go Mod 常见错误的原因 | walker的博客 项目案例 oceanweav…