当前位置: 首页 > news >正文

【计算机网络】数据链路层-MAC和ARP协议

文章目录

  • 1. 认识以太网
  • 2. MAC协议
    • MAC帧的格式
    • MAC地址和IP地址的区别
    • MTU
  • 3. 局域网通信原理
    • 碰撞检测和避免
  • 4. ARP协议
    • ARP数据报的格式
    • ARP缓存


1. 认识以太网

网络层解决的是跨网络点到点传输的问题,数据链路层解决的是同一网络中的通信。

数据链路层负责在同一局域网(同一链路)中两台设备的通信。 局域网的种类有很多,如:以太网、令牌环网。以太网是最常见的局域网技术,广泛用于家庭、企业和数据中心网络。

“以太网” 不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等。

2. MAC协议

数据链路层的MAC协议规定,同一链路中数据,以MAC帧的格式传输。 不同局域网类型的MAC协议不同,这里介绍的是以太网MAC协议。

MAC帧的格式

在这里插入图片描述

目的MAC地址和源MAC地址: 标识该数据帧的目的主机和源主机;

类型: 指的是封装上层数据的协议类型,有三种类型:IP, ARP, RARP,分别对应数字:0800, 0806, 8035。

CRC校验码: 判断该数据帧的正确性。

MAC地址和IP地址的区别

  • MAC地址用于标识同一链路相互连接的不同主机,在通信过程中描述路途上每一个区间的起点和终点。 MAC地址的长度为6字节48位,一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。MAC地址通常是唯一的,在网卡出厂时就设定了,不能修改。
  • IP地址用于标识网络中的不同主机,在通信中描述全过程的起点和终点。

MTU

MTU(Maximum Transmisson Unit)最大传输单元,指数据链路层中一个数据帧有效载荷的最大长度。

不同数据链路对于数据帧的长度限制不同,以太网MAC帧数据部分的长度规定最小是46字节,最大是1500字节。如果数据长度小于46字节,要求在数据部分后面填充额外的空白字节,以满足最小长度要求。最大是1500字节,这就是MTU。

为什么要设置MTU?

  • 提高网络传输的效率;
  • 降低碰撞概率,减少碰撞后重传的成本。大数据帧传输时间长,增加碰撞的风险,碰撞避免的成本很高。(关于数据碰撞,后面详谈)

数据帧长度过小也不合理,小数据帧传输速度快,时间短,碰撞检测可能在碰撞发生前触发,会导致碰撞检测失败。因此,为了在网络效率和碰撞检测之间取得平衡,通常设置帧数据部分长度范围在46~1500字节比较合理。

MTU对上层的影响:

MTU的限制,决定了上层不应该传递过大数据给数据链路层:

对于IP协议,采用分片与组织的策略,在我的另外一篇文章已详细介绍,详见:

对于TCP协议,不想让IP发生过多分片,因此引入了MSS,规定了TCP数据部分的最大长度。TCP在三次握手发送SYN的时候,会进行MSS协商(在首部变长的选项字段中携带MSS长度),取双方MSS最小值作为传输所用的MSS。

对于UDP协议,如果UDP单个报文的数据长度大于1472(MTU - IP报头长度 - UDP报头长度),就会被IP分成多个分片,提高丢包率(一片丢就相当于整个丢了)。因为UDP没有可靠性机制,丢包报文不会重传。

MSS与MTU的关系:

在这里插入图片描述

通常情况下:

MSS = MTU(1500byte) - IP报头长度(20byte) - TCP报头长度(20byte) = 1460byte


3. 局域网通信原理

  1. 局域网采用“广播”的策略进行数据通信,即在同一链路中,主机A向主机B发送数据,并不是直接向B转发,而是群发到同一链路的所有主机中,由接收主机辨认数据包是否是发给自己的。

  2. 在同一链路上,每台主机有一个MAC地址,用于标识了该主机在链路中的唯一性。 每个发出的数据帧都携带源MAC地址和目标MAC地址。当主机A向主机B发送消息时,同链路所有主机都收到这个消息,并在数据链路层查看消息的目标MAC地址是否为本主机MAC地址,不是则在MAC层将消息丢弃,是则向上交付。

在这里插入图片描述

碰撞检测和避免

如果多个主机同时向链路中发送数据,可能会发生数据碰撞。 在同一物理媒介如电缆、无线信道中发生光电信号的交叉碰撞,会导致数据的损坏。因此,数据链路层引入了碰撞检测与碰撞避免机制。

  • 碰撞检测

    数据链路层的碰撞检测机制,通俗理解:因为主机以广播的形式向同一链路的目标发送数据,所以发送方自己也能收到自己发出去的数据。碰撞检测就是在链路中收取自己发送的数据帧,通过CRC校验等方式,检测数据是否损坏。

  • 碰撞避免

    碰撞避免就是当检测到发生数据碰撞,发送方的数据链路层会随机等待一段时间,再尝试重传数据帧。这个等待时间是为了避免多个设备在同一时间重新发送数据,从而减少再次发生碰撞的可能性。因此,不仅TCP有重传机制,数据链路层也有,只不过机制比较简单。

另外的,同一链路中设备越多,数据碰撞的概率越高。因此数据链路层引入了 交换机(Switch) 以解决这个问题。

交换机是工作在数据链路层的设备,其主要作用是划分碰撞域,如下:

在这里插入图片描述

主机A-F处于同一个局域网,只不过这个局域网被交换机分成了左右两个区间。左右两边完全可以正常通信,只需要由交换机转发即可。交换机的主要作用是:

  1. 当主机A和主机B同时向链路中发送数据时,发生碰撞,此时交换机识别到数据碰撞,不会将碰撞产生的垃圾数据转发到右边,这样一来,右边的通信就不会受到左边碰撞的影响,大大降低了碰撞率。

  2. 当左边的主机A和主机B正常通信时,交换机检测到通信的数据与右边无关,也不会转发到右边,从而减少右边链路的载荷,降低碰撞率。


4. ARP协议

💭通信前,发送方通常只知道目标主机的IP地址和端口号,不知道同一局域网下目标设备的MAC地址,而在同一链路中通信必须清楚对端的MAC地址。因此,在查路由表得到下一跳的IP地址后,要先进行一个IP地址转MAC地址的过程,再向同一局域网中的下一跳主机发送消息。

ARP协议(Address Resolution Protocol)就是用于IP地址转换MAC地址。 ARP通俗来讲就是一个“询问”的过程,知道目标IP,在局域网中群发询问目标IP对应的MAC地址,与IP对应的目标主机会返回它的MAC地址。

这就像老师知道张三同学的学号,但不知道他的名字,要通过学号得知这位同学的名字,就在班级群里问“哪位同学的学号是XXX,你的名字是什么?”,其它同学对比自己的学号不匹配就不回答,张三同学比对后学号匹配,就会回答“老师,我是张三”。

ARP协议也是数据链路层协议,但在MAC协议之上。

ARP数据报的格式

ARP是MAC帧的一种类型(MAC帧报头的类型字段填为0806),只不过规定了MAC数据部分的字段格式。

在这里插入图片描述

各个字段解释:

  1. 硬件类型:指链路层网络类型,1表示以太网;
  2. 协议类型:指要转换的地址类型,0x0800表示IP地址;
  3. 硬件地址长度:物理地址长度,以太网MAC地址是6字节;
  4. 协议地址类型:要转换的地址长度,IP地址是4字节;
  5. op:op字段为1表示ARP请求,op字段为2表示ARP应答。

一次ARP的过程(主机A想要得知主机C的MAC地址):

在这里插入图片描述

  1. 主机A向主机C发送ARP请求(格式如下图),此时主机A并不知道主机C的MAC地址,只知道其IP地址,因此将目的MAC地址设为全1,目的IP设为ipC。(帧类型ARP的0806, op是1表示ARP请求)

在这里插入图片描述

  1. 主机A的ARP请求广播到局域网中,所有主机都会收到。

    • 对于其它非目标的主机,收到这个MAC数据帧后,发现MAC报头的类型字段为0806,得知该数据帧是ARP数据帧,便由MAC协议交付给上层的ARP协议。ARP协议解开报头,查看op字段,确定为ARP请求(这是固定过程,每个主机都可能会收到ARP请求或应答,必须先判断是请求还是应答,再作进一步处理)。然后判断目标IP是否为本机的IP地址,检测到不是,在APR层丢弃数据包。
    • 对于主机C,收到数据帧,判断是ARP请求,在ARP层判断目标IP为本机IP,则表示这个ARP请求想要获取本机的MAC地址。紧接着进行应答的构建
  2. 主机C构建ARP应答(格式如下图),然后广播到链路中
    在这里插入图片描述

  3. 主机A收到ARP数据帧,其它主机丢弃应答(这里MAC报头中的目标地址已经确定,主机通过判断MAC报头中的目标地址,决定是否在MAC层丢弃,而不用交付给ARP层)。主机A收到了一个发送给自己的ARP应答,提取源MAC地址macC和源IP地址ipC,得到了一组IP地址和MAC地址的映射关系。主机A终于得到了主机C的MAC地址,可以正常通信了!

细节:

  1. ARP层收到一个ARP数据帧,解开报头后,第一步必然是查看op字段。

    • op为1表示该帧为ARP请求,执行动作:判断目标IP是否为本机IP,是则表示该ARP请求想要获取本机的MAC地址,紧接着构建并发送应答;否则在APR层丢弃该请求。
    • op为2表示该帧为ARP应答,不用考虑是否丢弃,因为已经再MAC层完成,执行动作:提取源MAC地址和源IP地址,得到一组IP和MAC地址映射关系
  2. ARP请求的丢弃发生在ARP层,ARP应答的丢弃发生在MAC层。

ARP缓存

如果每次发送数据时,都要进行ARP映射MAC地址,不仅效率低,还会导致链路中存在大量的ARP数据帧,增加链路的负担,因此就有了ARP缓存。

每个主机都会维护一张ARP缓存表,用于存储历史建立的IP与MAC地址的映射关系。 数据链路层收到IP数据包后,根据目标IP地址,查看ARP缓存表,若表中存在与目标IP地址对应的映射关系,则直接打包MAC帧发往目标主机,否则进行ARP过程。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

Linux下通过arp指令查看ARP缓存表。

在这里插入图片描述


ENDING…

相关文章:

【计算机网络】数据链路层-MAC和ARP协议

文章目录 1. 认识以太网2. MAC协议MAC帧的格式MAC地址和IP地址的区别MTU 3. 局域网通信原理碰撞检测和避免 4. ARP协议ARP数据报的格式ARP缓存 1. 认识以太网 网络层解决的是跨网络点到点传输的问题,数据链路层解决的是同一网络中的通信。 数据链路层负责在同一局域…...

本周三商店更新:多款套装下线,四款升级武器带异色皮肤返厂

本周三将迎来26.2版本更新与11商店大更新,版本更新可点击26.2版本更新公告进行查看,这里不一一赘述了,下面大概罗列一下商店更新,有皮肤下架,大家还能趁最后时间入手,最重要的是四款升级武器返厂咯。 危险玩…...

WindowsServer2019-搭建FTP服务器

这里写自定义目录标题 一、基础配置IP地址安装FTP服务检查连通性Windows10连接FTP服务 二、了解和使用FTP具体模块及其配置1、FTP IP地址和域限制2、FTP SSL设置3、FTP当前会话4、FTP防火墙5、FTP目录浏览6、FTP请求筛选7、FTP日志8、FTP身份验证9、FTP授权规则10、FTP消息11、…...

国际阿里云服务器买哪种好用点?

在当时数字化年代,云核算已经成为了企业进行事务运营和数据存储的重要东西。而阿里云作为我国最大的云核算服务供给商,其服务器产品线也适当丰厚。那么,对于用户来说,阿里云服务器买哪种好用点呢?这需求依据个人和企业…...

2023NOIP A层联测25 总结

T1 让你构造 40 40 40\times40 4040 的只含 r,y,x 的矩阵,含有 r y x ryx ryx 的个数恰好为 n n n, n ≤ 2222 n\le2222 n≤2222。看完题后就开始想构造,一开始想构造 3 ∗ 3 3*3 3∗3, 5 ∗ 5 5*5 5∗5 的单位矩阵的,但是始…...

Thread类的基本操作(JAVA多线程)

线程是操作系统中的概念,操作系统内核实现了线程这样的机制,并提供了一些API供外部使用。 JAVA中 Thread类 将系统提供的API又近一步进行了抽象和封装,所以如果想要使用多线程就离不开 Thread 这个类。 线程的创建(Thread类) 在JAVA中 创建…...

Redis 的三种部署模式

提前叠个 buff:这个文章不涉及图(画起来比较麻烦),只是记录我的胡思乱想。 redis 从单点 -> 集群总共有三个部署模式:单机模式,主从模式,哨兵模式,集群模式 单机模式 新手入门模…...

【ArcGIS Pro二次开发】(73):使用NPOI库操作Excel

NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。 NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 相较于之前使用的Microsoft.Office.Interop.Excel,已经感觉到的优势,一是读写速度较快,虽然小数据量的读…...

python获取电脑所连接的wifi密码

电脑连接wifi后,很难直观地看到当前连接wifi的密码,需要借助命令行公管局才可以查看到相关信息。 CMD命令 查看所有已保存的wifi配置信息 netsh wlan show profiles查看某一个wifi的详细信息,需要输入wifi名称来查询 netsh wlan show pro…...

动态壁纸软件Live Wallpaper HD mac中文版功能特色

Live Wallpaper HD mac提供了一系列美丽的主题场景,将为您的桌面增添活力。从城市景观、日落到遥远的星系,每个屏幕都有特别的触感,可以定制您的天气小部件和时钟样式,并使用您喜爱的图片创建您自己的个性化壁纸。 Living Wallpap…...

Spring Boot 配置主从数据库实现读写分离

一、前言 现在的 Web 应用大都是读多写少。除了缓存以外还可以通过数据库 “主从复制” 架构,把读请求路由到从数据库节点上,实现读写分离,从而大大提高应用的吞吐量。 通常,我们在 Spring Boot 中只会用到一个数据源&#xff0…...

【MongoDB】索引 - 单字段索引

MongoDB支持在集合文档中的任意字段上创建索引,默认情况下所有的集合都有一个_id字段的索引,用户和应用可以新增索引用于查询和操作。 一、准备工作 这里准备一些学生数据 db.students.insertMany([{ _id: 1, name: "张三", age: 20, clas…...

评估大型语言模型:综述

论文地址:https://arxiv.org/pdf/2310.19736v2.pdf github: tjunlp-lab/awesome-llms-evaluation-… 发表团队:Tianjin University 摘要 将LLM评估划分三点:知识和能力评估、一致性评估和安全性评估。特定领域化评估benchmark评…...

设计模式之工厂模式(Factory)

任何可以产生对象的方法或类,都可以称为工厂。 下面的代码定义了Car这种交通工具: public class Car {public void go() {System.out.println("Car go wuwuwuwuw....");} }然后在main函数里面想要调用调用Car的go方法,就需要new一个car对象&…...

2023/11/6 JAVA学习

处理编译异常的两种方法 第一种 第二种 问题比较容易犯,编译时异常...

Android-JobService

JobService 这里写目录标题 JobService一、API详解1 onStartJob2 onStopJob 二、onStartJob | onStopJob 返回值case 1case 2case 3 ref: 深入理解JobScheduler与JobService的使用 - 掘金 (juejin.cn) (28条消息) JobService的使用介绍_TechMerger的博客-CSDN博客 (28条消息) J…...

GraphQL入门与开源的GraphQL引擎Hasura体验

背景 Hasura 是一个开源的 GraphQL 引擎,它可以帮助开发人员快速构建和部署现代应用程序的后端。它提供了一个自动化的 GraphQL API ,可以直接连接到现有的数据库,并提供实时数据推送和订阅功能。 Hasura 团队总部位于印度。 下载安装 脚本…...

Javascript知识点详解:this关键字的指向问题

目录 this 关键字 涵义 实质 使用场合 使用注意点 避免多层 this 避免数组处理方法中的 this 避免回调函数中的 this 绑定 this 的方法 Function.prototype.call() Function.prototype.apply() Function.prototype.bind() 箭头函数中的 this this 关键字 涵义 t…...

数据库的备份和恢复

备份:完全备份,增量备份 完全备份:将整个数据库完整的进行备份 增量备份:在完全备份基础的之上,对后续新增的内容进行备份 备份的需求 1生产环境中,数据的安全性至关重要,任何数据都可能产生非…...

DS图—图非0面积/bfs【数据结构】

DS图—图非0面积 题目描述 编程计算由"1"围成的下列图形的面积。面积计算方法是统计"1"所围成的闭合曲线中"0"点的数目。如图所示,在10*10的二维数组中,"1"围住了15个点,因此面积为15。 提示&…...

Wnmp服务安装并结合内网穿透实现公网远程访问——“cpolar内网穿透”

文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 WNMP是Windows系统下的绿色NginxMysqlPHP环境集成套件包,安装完成后即可得到一个Nginx MyS…...

2023版Pycharm关闭一直显示closing project,正在关闭项目

点击 帮助 下的 查找操作 英文版为 Help 下的 Find Action 输入 Registry 禁用 ide.await.scope.completion 即可 PS:按 Ctrl F 输入可以快速检索...

Gradle笔记 二 Gradle的基础Groovy

学习Groovy的必要性 首先Gradle是由Groovy写成的,而且构建脚本的语法都遵循Groovy的语法,所以要学好Gradle的前提是要基本了解Groovy的语法。 Groovy 简介 在某种程度上,Groovy可以被视为Java的一种脚本化改良版,Groovy也是运行在JVM上&am…...

浅谈剩余电流动作继电器在电动伸缩门的应用

摘 要:随着时代的发展,越来越多的小区、厂区、园区和学校等场所的大门安装了电动伸缩门,几乎可以说随处可见。电动伸缩门是一种长期在户外使用的设备,工作电压为220 V(过去也有380 V),其电机是处…...

stable diffusion安装踩坑之clip安装、git报错

clip本地安装环境链接问题 本节主要记录一下在windows安装stable diffusion时,clip脚本安装不上,本地安装时如何链接到当前库的问题 首先,在脚本安装clip不成功时,脚本会输出一个commend指令,复制到浏览器就可以很快…...

colmap gpu服务器安装

1.官方安装说明 https://colmap.github.io/install.html 后边有编译支持gpu的步骤!!! 2.sudo apt-get install libgtest-dev 3.cmakelists.txt 250行 set(CMAKE_CUDA_ARCHITECTURES “native”) 4. sudo apt-get install libqt5core5a sud…...

linux内的循环

格式 while 【 条件判断 】 do 语句体 done 上图 第一次代码,输入语句在外面,结果输入完(非hello)程序不断循环,没办法,ctrlc给程序终止了,然后把用户输入的语句放到了循环体里面…...

强化学习(RL)的学习笔记

1. 前言 (1)PPO的优点 PPO(Proximal Policy Optimization)算法相比其他强化学习方法有几个显著优点: 稳定性和鲁棒性:PPO通过限制策略更新的幅度来避免训练过程中的大幅波动,这增加了算法的稳…...

2023世界传感器大会开幕,汉威科技多领域创新产品引瞩目

11月5日,2023世界传感器大会在郑州国际会展中心正式拉开帷幕。据悉,本次大会由河南省人民政府、中国科学技术协会主办,郑州市人民政府、河南省工业和信息化厅、河南省科学技术协会、中国仪器仪表学会承办。 大会由“一会一赛一展”组成&#…...

什么是机器学习中的正则化?

1. 引言 在机器学习领域中,相关模型可能会在训练过程中变得过拟合和欠拟合。为了防止这种情况的发生,我们在机器学习中使用正则化操作来适当地让模型拟合在我们的测试集上。一般来说,正则化操作通过降低过拟合和欠拟合的可能性来帮助大家获得…...