网络 | 数据链路层讲解 | MAC帧与APR协议

news2024/12/25 12:37:38

最大以太网帧大小指的是以太网帧从目的地址到冗余校验的总字节数³。在802.3标准里,规定了一个以太网帧的数据部分(Payload)的最大长度是1500个字节,这个数也是MTU³。在这个限制之下,最长的以太网帧包括6字节的目的地址(DMAC)、6字节的源地址(SMAC)、2字节的以太类型(EtherType)、1500字节的数据(Payload)、4字节的校验(FCS),总共是1518字节³。

文章目录

    • 前言
    • 以太网的认识
    • 以太网的帧格式
      • 交换机,冲突域 VS 广播域
      • 三层交换机,二层交换机 VS 路由器
    • ARP协议
      • ARP报文的MAC地址
      • MAC表 VS ARP表
      • 免费ARP

前言

网络层负责数据包从源主机到达目的主机,这个过程包含了多次的路由转发,每次的路由转发被形象的称为“跳”。那么数据链路层就提供了数据包从一台路由跳到另一台路由的能力,也就是到达下一跳的能力

以太网的认识

以太网不是具体的网络,而是一种技术标准,即包含了数据链路层的内容,也包含了一些物理层的内容,是应用最广泛的局域网技术

比如以太网规定了网络的拓扑结构,访问控制方式,其网线必须使用双绞线,传输速率有10Mbps,100Mbps,1Gbps,10Gbps,100Gbps。以太网的主要特点是:多台设备使用同一条总线,同一时刻只允许一台设备在总线上通信,其他设备必须等待其传输结束才能进行通信

以太网的帧格式

在这里插入图片描述

图源网络
以上帧格式是最原始的版本,现在的帧格式与之有些出入

  • 前导码:7个字节,由交替的0和1构成,用于调整和同步发送和接收设备的时钟信号。
  • 帧起始符:1个字节,由10101011组成,用于标识帧的开始,让接收端准备接收数据。
  • 目的地址:6个字节,表示帧要发送到的目标设备的MAC地址。
  • 源地址:6个字节,表示帧从哪个设备发送出来的MAC地址。
  • 类型/长度:2个字节,表示帧携带的上层协议类型或者数据部分的长度。
    • 0800表示IP协议
    • 0806表示ARP协议
    • 0835表示RAPR协议
  • 数据:46~1500个字节,表示帧携带的上层协议数据或者用户数据。
  • 校验序列:4个字节,表示帧经过CRC算法计算得到的校验值,用于检测传输过程中是否有误码。

现在的帧格式加入了前导码和帧起始符,这两部分由物理层封装,不包含在以太网报头中,我们也可以将其忽略

在以太网中广播数据包时,接收到数据包的主机会对数据帧进行解析,判断其目的MAC是否和自己的MAC地址相同,不同则丢弃,相同则将数据帧的有效载荷向上交付。由于报头有2字节类型字段表示上层所使用的协议,所以链路层可以根据这个信息进行向上交付。

但是所有主机采用同一总线进行通信会导致数据碰撞的问题,为了减少碰撞发生的概率,发送的数据帧应该尽可能的小,所以有了MTU对大小限制。同一广播域下的主机是怎样通信的呢?

  • 当一台主机发送数据时,需要检测信道是否空闲,如果空闲则发送数据
  • 当一台主机发送数据时,其他主机处于监听状态,如果其他设备发送数据,将发生碰撞
  • 当碰撞发生,所有设备停止数据的发送,随机等待一段时间后重新发送数据
  • 当一台主机完成发送时,它会收到一个确认帧,表示传输的完成

交换机,冲突域 VS 广播域

交换机(一般指二层交换机)划分了不同的碰撞域,但没有划分不同的广播域,碰撞域是指竞争同一带宽的节点集合,而广播域是指接收同样广播信息的节点集合

交换机工作在数据链路层,它可以根据MAC地址进行数据转发,从而减少碰撞的发生概率,交换机的每一个端口都是一个碰撞域。当不同冲突域的主机要进行通信时,它们需要通过交换机(或者网桥)的连接,发送数据到交换机的某一端口上

交换机的所有端口都在同一广播域中,当收到广播或者组播数据时,它会泛洪到所有端口。如果要划分广播域,就需要用到路由器或者三层交换机这样的网络层设备,它们的每一个端口都是一个广播域

三层交换机,二层交换机 VS 路由器

  • 二层交换机工作在数据链路层,三层交换机和路由器工作在网络层。
  • 二层交换机维护MAC表,根据设备的MAC地址进行数据帧的转发
  • 二层交换机划分了同一广播域下的不同碰撞域,只能在同一广播域下进行通信,如果想跨广播域进行通信,需要用到三层交换机或者路由器
  • 三层交换机和路由器都是负责不同局域网之间的通信
  • 三层交换机的主要功能是数据交换,只提供一些基本的路由功能,适用于相同局域网间的连接。路由器的主要功能是路由转发,提供了二层和三层交换机端口,防火墙,网络管理等附加功能,适用于连接不同类型的网络,如局域网和广域网
  • 三层交换机通过硬件执行数据交换,而路由器通过软件路由引擎实现数据交换,因此,三层交换机比路由器拥有更快的转发效率和更低的延迟
  • 三层交换机只支持静态路由或者单一动态路由协议,配置简单。而路由器支持更复杂和丰富的协议栈和配置选项,支持多种路由协议,NAT技术,访问控制列表等功能
  • 三层交换机可以利用流缓存条目进行快速转发,而路由器每次的转发都需要路由查找+转发决策,效率更低

ARP协议

在OSI模型中,ARP协议属于数据链路层,因为它是通过以太网帧进行封装和转发的。在TCP/IP模型中,ARP协议属于网路层,因为它是TCP/IP协议簇的一部分,负责用IP地址获取MAC地址。

可以理解为ARP协议位于网络层和数据链路层之间

在这里插入图片描述
图源网络
数据包在不同网段间转发,每次的转发都要决定下一跳的地址,也就是说,只有源IP和目的IP是保存不变的,而源MAC和目的MAC总是在变化,这是由于网关在不断的变化。所以源主机无法直接得知对方的MAC地址,我们只能根据下一跳的IP地址,用ARP协议获取其MAC地址

  • 2字节硬件类型:指明发送方想知道的硬件接口类型,以太网的值为1
  • 2字节长度类型:表示网络层使用的协议,如0800表示IP协议
  • 1字节硬件地址长度:表示MAC地址的长度,以太网为6
  • 1字节协议地址长度:表示协议地址长度,IP为4
  • 2位操作码:表示操作类型,1为请求报文,2为响应报文
  • 6位发送方MAC地址:表示源主机MAC地址
  • 4位发送方IP地址:表示源主机IP地址
  • 6位接收方MAC地址:表示目的主机MAC地址,在请求报文中为全0,响应报文为正常值
  • 4位接收方IP地址:表示目的主机IP地址
  1. 其中ARP请求报文是一个广播包,因为源主机不知道目的主机的MAC地址,所以需要广播。在数据链路层的封装中,目的MAC地址为全1,表示广播,在ARP报文的封装中,目的MAC地址为全0,表示目的主机未知
  2. ARP响应包是一个单播包,在数据链路层报头和ARP报文中都填写了自己和源主机的IP地址和MAC地址
  • 广播包是指一台主机发送的数据包可以被同一网段内的所有主机接收,它是一对多的通信方式
  • 单播包是指一台主机发送的数据包只能被同一网段内的指定主机接收,它是一对一的通信方式

广播包发送后:

  • 当广播域下的主机收到数据帧时,会进行报头解析,发现其目的MAC地址为全1,是一个ARP广播包
  • 这时链路层会将其向上交付,交付给ARP层,ARP解析其中的信息,假设其中的op字段为1,表示ARP请求,接着判断目的IP地址是否与自己的IP地址相等
  • 如果不等,则丢弃
  • 如果相等,则制作一个ARP应答包,以单播包的方式发送给ARP请求方,告知自己的MAC地址和IP地址

ARP应答包中,目的IP和目的MAC分别为ARP请求包中的源IP和源MAC,而源IP和源MAC分别为自己的IP和MAC地址。

  • 发送单播包时,同一广播域下的所有主机都能接收到,数据链路层对其解析,判断其报头中的目的MAC地址是否与自己相等
  • 如果不等,则丢弃
  • 如果相等,则向上交付,判断ARP报文中op字段是否为2,如果是:记录源IP与源MAC地址之间的映射关系,更新ARP表
  • 如果不是:说明这是一个ARP请求报文,则制作ARP应答包,以单播包的方式发送给ARP请求方,告知自己的MAC地址和IP地址

每台主机都维护了一张ARP表,其存储了MAC地址和IP地址之间的映射关系。ARP表分为动态和静态两种,动态ARP表中,每个表项都有一个老化时间(一般是20分钟),时间一到,每隔一段探测时间,就会发送一个ARP请求给对方,以更新该表项。如果探测次数到达一定次数,却没有收到响应,即认为对方主机不可达或者离开了网络,并删除该表项。默认探测时间是5秒,探测次数是3或6次,这些都可以通过命令修改

ARP报文的MAC地址

ARP报文中,MAC地址出现了两次,它们有什么区别?

  • 第一对源MAC和目的MAC是数据链路层的封装,表示二层帧的发送方和接收方。在ARP请求中,源MAC为自己的MAC地址,目的MAC为全1,表示广播
  • 第二对源MAC和目的MAC是ARP数据包中的字段,在ARP请求中,源MAC地址为自己的MAC地址,目的MAC为全0,表示要查询指定IP的MAC地址,但是该地址现在未知

至于说为什么出现两次

  • 二层帧的MAC地址用来进行数据链路层的帧转发
  • 而ARP报文中的MAC地址用来进行网络层的地址解析,两者的用途不同,当然要出现两次

MAC表 VS ARP表

  • 二层交换机会维护一张MAC地址表,存储MAC地址与端口号之间的映射关系,ARP表是存储MAC地址和IP之间映射关系的表
  • 当数据帧需要经过交换机转发时,交换机会查询这张表。当数据报在数据链路层被封装时,会用到ARP表查询目的MAC地址
  • 当交换机转发数据帧时,会更新MAC表。当收到ARP请求或者ARP应答时,主机会更新ARP表
  • 交换机的MAC表不能存储全1的地址,主机的ARP表不能存储自己的地址

免费ARP

免费ARP是一种特殊的ARP报文,其目的是:告知对方自己的MAC地址,更新ARP表项,检测IP地址冲突。

免费ARP分为两种:免费ARP请求和免费ARP应答。它们的数据链路层报头中,目的MAC都是全1,表示广播。免费ARP请求一般不需要应答,当IP冲突时,有冲突的主机会发送免费ARP应答来抢占IP

  • 当虚拟网关发生切换时,为了通知其他主机自己的浮动IP和浮动MAC地址,可以发送免费ARP请求,其内容如下
    • 二层帧中,源MAC地址是自己的新地址,目的MAC是全1,表示广播包
    • ARP报文中,源IP和目的IP都是自己,表示这是一个免费ARP,一般不需要应答。源MAC地址是自己的新地址,而目的MAC地址为全0,表示目的主机的MAC地址未知
  • 当主机切换了网卡或MAC地址时,为了通知其他主机或网关,自己的新MAC地址,可以发送免费ARP应答。或者主机接收到免费ARP请求后,发现两者的IP冲突,此时可以发送免费ARP应答,以告知对方,IP地址已被使用。其内容如下
  • 二层帧中,源MAC地址是自己的新地址,目的MAC是全1,表示广播包
  • ARP报文中,源IP和目的IP都是自己,表示这是一个免费ARP,一般不需要应答。源MAC和目的MAC都是自己的MAC地址,表示这是一个免费ARP应答

至于两者之间的区别:

  • 免费ARP请求用来声明自己的源MAC和目的MAC之间的新映射关系,用来检测IP冲突,ARP报文中,目的MAC和源MAC不同
  • 免费ARP应答用来声明自己的新MAC地址,ARP报文中目的MAC和源MAC相同
  • 它们都可以使其他主机更新ARP表

如果你看到这了,下面是一些自测问题,用来检测你对链路层的掌握情况:

广播域是否等价于网段?
冲突域和广播域的区别?
三层交换机与路由器的区别?
ARP报文中源MAC和目的MAC出现两次?为什么,它们的含义一样吗?

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

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

相关文章

【C++】list的模拟实现

文章目录1.list 底层2. list的模拟实现1. list_node 类设计2. list类如何调用类型3 .push_back(正常实现)4. 迭代器的实现第一个模板参数Tconst迭代器第二个模板参数Ref第三个模板参数Ptr对list封装的理解5. insert6.push_back与 push_front(复用)7. erase8. pop_back与pop_fro…

[c++]list模拟实现

目录 前言: 学习类的方式: 1 类成员变量 1.1 list成员变量 1.2 结点结构体变量 1.3 迭代器成员变量 2 默认函数——构造 2.1 结点结构体构造函数 2.2 list构造函数 2.3 迭代器构造函数 3 迭代器实现 3.1 list部分 3.2 迭代器结构体部分 3.2…

Spring MVC程序开发(三大功能)

文章目录一、什么是Spring MVC?1.MVC定义2.MVC与Spring MVC的关系3.创建方式二、Spring MVC的核心功能1.连接功能浏览器获取前端接口和后端程序连接功能实现get和post的区别Spring Boot热部署2.获取参数(1)传递单个参数(2)传递对…

信捷 XDH Ethercat A_MOVER指令

本指令以相对位置运动 如果当前位置在p点,执行本A_MOVER指令结束后,相对p点前移或后退一段距离,这个距离需要在指令里指定。每次执行A_MOVER都是执行前的当前位置为参考点,只要目标位置不为0,都会运动。上图中&#xf…

MyBatis-1:基础概念+环境配置

什么是MyBatis?MyBatis是一款优秀的持久层框架,支持自定义sql,存储过程以及高级映射。MyBatis就是可以让我们更加简单的实现程序和数据库之间进行交互的一个工具。可以让我们更加简单的操作和读取数据库的内容。MyBatis的官网:htt…

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记一、Abstract二、引言三、相关工作3.1 基于 Box 的实例分割3.2 基于层级的分割四、提出的方法4.1 图像分割中的层级模型4.2 基于 Box 的实例分割在 Bounding Box 内的层级进化输入的数据…

elasticsearch 分布式搜索引擎3

1.数据聚合 **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何? 实现这些…

Altium Designer(AD)软件使用记录04-AD设计文件输出汇总

目录Altium Designer(AD)软件使用记录04-AD设计文件输出汇总准备工作1、放置层标识(标清每个层的顺序)2、放置钻孔图(表明孔的一些参数)3、设置原点坐标一、文件输出1、Gerber文件(光绘文件)2、钻孔文件3、…

EasyExcell导出excel添加水印

EasyExcell导出excel添加水印1、添加easyExcel相关依赖2、准备基础工具类3、创建水印handler类4、创建单元测试类WriteTest.class5、测试结果1、添加easyExcel相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId&…

Reactor模式

Reactor是一种设计模式&#xff0c;可以用于构建高并发的网络服务器。 Reactor模式的好处在于&#xff1a;可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求&#xff0c;保证工作线程不被IO阻塞。 前置知识&#xff1a;IO多路复用技术 1. 传统网…

如何通过外贸网站SEO优化,提升您的品牌曝光度和海外业务销售额?

随着全球化的不断推进和互联网的普及&#xff0c;越来越多的外贸企业开始重视SEO优化&#xff0c;以提升自身品牌的曝光度和海外业务的销售额。 但是&#xff0c;对于许多外贸企业而言&#xff0c;SEO优化似乎是一个非常陌生的领域&#xff0c;他们并不清楚该如何进行优化。 …

两会特稿 | 项国就书法学术论文入编《中国民族博览》国家一级大型文化类期刊

2022 年 7 月&#xff0c;著名书法家项国就撰写的书法学术论文《探究〈散氏盘〉与其临创感悟》入编国家一级大型文化类期刊《中国民族博览》&#xff0c;并于 2023 年 1 月正式出刊发表。 据悉&#xff0c;《散氏盘》是我国最重要的书法艺术形式之一&#xff0c;研究《散氏盘…

并发编程之AtomicUnsafe

目录 原子操作 定义 术语 处理器如何实现原子操作 处理器自动保证基本内存操作的原子性 使用总线锁保证原子性 使用缓存锁保证原子性 Java当中如何实现原子操作 Atomic 定义 原子更新基本类型类 原子更新数组类 原子更新引用类型 原子更新字段类 Unsafe应用解析…

【MySQL】MySQL的锁机制

目录 概述 MyISAM 表锁 InnoDB行锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff08;避免争抢&#xff09;。 在数据库中&#xff0c;除传统的 计算资源&#xff08;如 CPU、RAM、I/O 等&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共…

中断以及 PIC可编程中断控制器

1 中断分为同步中断&#xff08;中断&#xff09;和异步中断&#xff08;异常&#xff09; 1.1 中断和异常的不同 中断由IO设备和定时器产生&#xff0c;用户的一次按键会引起中断。异步。 异常一般由程序错误产生或者由内核必须处理的异常条件产生。同步。缺页异常&#xff…

【Linux】关机、重启和用户登录注销

目录1 关机&重启命令1.1 基本介绍1.2 注意细节2 用户登录和注销2.1 基本介绍2.2 使用细节1 关机&重启命令 1.1 基本介绍 shutdown -h now          立刻关机shutdown -h 1            “hello&#xff0c;1分钟后会关机了”shutdown -r now   …

【hadoop】介绍

目录 介绍 版本 优势 大数据技术生态体系 介绍 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 解决 存储和分析计算Google在大数据方面的三篇论文GFS --->HDFS Map-Reduce --->MR BigTable --->HBaseHadoop创始人Doug Cutting版本 Hadoop 三大发行版本&a…

一文带你了解MySQL的Explain

日常工作中&#xff0c;我们经常会收到慢sql告警&#xff0c;前面也写过两篇优化文章&#xff0c;SQL的优化思路和使用规范_出世&入世的博客-CSDN博客 MySQL优化策略_出世&入世的博客-CSDN博客 在优化这些慢sql时&#xff0c;我们经常需要用到explain这个命令来查看…

aws dynamodb java低等级api和高级客户端api的使用

参考资料 https://docs.amazonaws.cn/zh_cn/sdk-for-java/latest/developer-guide/setup-project-maven.html 初始化环境 创建maven项目 mvn org.apache.maven.plugins:maven-archetype-plugin:3.1.2:generate \-DarchetypeArtifactId"maven-archetype-quickstart&quo…

正则表达式引擎NFA自动机的回溯解决方案总结

前几天线上一个项目监控信息突然报告异常&#xff0c;上到机器上后查看相关资源的使用情况&#xff0c;发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具&#xff0c;我们导出了出问题的堆栈信息。 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法&#…