以太网的MAC层

以太网的MAC层

一、硬件地址

​ 局域网中,硬件地址又称物理地址或MAC地址(因为用在MAC帧),它是局域网上每一台计算机中固化在适配器的ROM中的地址。

​ 关于地址问题,有这样的定义:“名字指出我们所要寻找的资源,地址指出那个资源在何处,路由告诉我们如何到达该处。”

​ 这个地址并不是用来指明这台主机在什么地方,而是指每一个站的“名字”或标识符。

​ MAC地址用6个字节来表示。IEEE的RA负责分配前三个字节,生产局域网适配器的厂家都要向RA购买前三个地址块。

​ IEEE规定地址字段的第一个字节的最低有效位为I/G(Individual/Group)位,当I/G位为0时,表示一个单个站地址。为1时表示组地址,用来进行多播。规定第一字节的最低第二位为G/L(Global/Local)位,为0时是全球管理,为1时是本地管理

​ 所以每个站的地址还有46位表示,一共有 246 个地址,超过了70万亿。

适配器有过滤功能,可以对收到的帧选择接收或丢弃,其中包括:

  • 单播(unicast)帧(一对一):收到的帧的MAC地址与本站的地址相同
  • 广播帧(broadcast)(一对全体):发送给本局域网上的所有站点的帧(全1地址)
  • 多播帧(multicast)(一对多):发送给本局域网的一部分站点的帧

以太网适配器还可设置混杂方式(promiscuous mode):只要发现有帧在以太网上传输就都悄悄接收下来,而不管这些帧发往哪个站。这种方式有利有弊,弊端就是对于我们普通用户不安全,好处就是帮助学习网络的人更好的理解各种网络协议的工作原理。

二、MAC帧格式

以太网帧有两种标准:DIX Ethernet V2标准和IEEE的802.3标准。严格来所以太网应当是指前者标准的局域网,前者也是使用的最多的。所以这里就介绍V2标准的帧格式。

在这里插入图片描述

  • 位同步字段: 一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面的若干位就无法接收,导致变为无用帧。为了实现位同步,MAC子层向下传到物理层时还要在帧的前面插入8个字节(由硬件生成)。前同步码由1和0交替组成,作用是使接受端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步。帧开始定界符定义为10101011,前六位和前同步码作用一样,最后连续的11告诉接收端适配器:”MAC帧来了,注意接收“。

  • 类型字段: 标志上一层使用的是什么协议,以便把收到的帧上交给上一层的这个协议。例如0x0800,表示上层使用的是IP数据报。

  • 数据字段: 首先以太网规定的最小长度为64字节,减去首部尾部的18字节就得到了46字节。

  • FCS字段: 使用CRC检验,检验的是从目的地址开始的这五个字段。

出现以下条件之一则为无效的MAC帧:

(1)帧的长度不是整数字节;

(2)用收到的帧校验序列FCS查出有错误;

(3)收到的帧的数据部分不在46~1500字节之间。因为还有首部和尾部,所以MAC帧的有效长度为64~1518字节之间。

当数据字段的长度小于46字节时,MAC子层就会在数据字段后面加入整数字节的填充字段,以保证以太网的MAC帧的长度不小于64字节。那么当上层为IP层时,IP层如何知道这个帧有没有填充字段?IP协议的首部有一个总长度字段,当其大于等于46那么就没有填充,否则得出来的差值就是填充字段字节数。例如IP数据报总长度42字节,向下传输时,那么MAC层就要填充4个字节以达到最短数据字段长度。向上交给IP层后,IP层会把其中的填充字段丢弃。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值