news 2026/9/3 20:42:16

数据链路层(以太网+以太网帧格式+访问控制方式+ARP协议)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据链路层(以太网+以太网帧格式+访问控制方式+ARP协议)

首先要清楚的是,真正在网络中跑的报文,其实都是数据帧(IP报文是要给到数据链路层的)

认识以太网

以太网不是一种具体的网络,而是一种技术标准;它完整规定了物理层介质和信号、数据链路层的帧格式,以及介质访问控制方式(CSMA/CD或全双工)。只要这三者中的核心规范(尤其是访问控制方式和帧格式)有一个不符,就不是标准以太网。

平常听到的以太网规定了网络拓扑结构、传输速率等,也是对的。但是要清楚,网络拓扑结构、传输速率这些并不是以太网的硬性规定,也就是说不是使用了它们,所以使用的局域网就是以太网(没法成为以太网的身份认证),因为它们是衍生结果,比如网络拓扑结构,它是以太网物理层介质选择结果(是因为以太网物理层使用了这种介质,所以使用的这种网络拓扑结构)

以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网、无线LAN等

以太网帧格式

目的地址和源地址就是mac地址(网卡的硬件地址)

类型字段有三个值,分别为 IP(0800)、ARP(0806)、RARP(8035)

帧末尾是CRC校验码

帧的总长度有限制,数据部分得在46字节-1500字节之间

上图中的 PAD 就是填充部分,主要作用就是将数据部分扩充到46字节

接收方,如何分离报头和有效载荷

目的地址和源地址作为mac地址是固定大小的,固定长度的首和尾,根据长度直接分离就好

接收方,如何分用

类型就会告诉接收方,到底是交付给网络层,还是arp,rarp

访问控制方式(CSMA/CD)

要发送的主机准备发送前,先听信道是否有载波;信道空闲后,必须连续听满 96 比特(IFG)且在此期间不能听到任何杂音,才敢发;一旦在此期间听到载波,计时器立即归零,重新开始监听,直到载波消失,重新等待96比特

载波就是网线上跑的电

网卡开始发送数据帧后,会采用边发边听的措施(冲突检测),它会持续做两件事

  1. 发送自己的信号:把数据帧的比特流转换成电信号(或光信号)推到线缆上。
  2. 监听线缆上的信号:实时比对线缆上的信号波形与自己的发送波形是否一致。

如果监听到的信号与自己的信号一致就代表没有发生碰撞,网卡会持续发送完整个数据帧

如果监听到的信号与自己的信号不一致就会立即停止发送数据帧,就会立即发送拥塞信号(目的是为了通知当前所有正在发送的主机信道发生碰撞了,同时覆盖残留信号),然后发生碰撞的主机就会启动退避算法(根据当前帧的重传次数,随机抽取时间槽数(每个时间槽51.2微秒),然后倒计时),倒计时结束就会重新回到发送前状态(开始监听载波+IFG等待)

需要注意的是,如果碰撞发生在发送前期(64字节内),网卡可以及时检测到,但如果超过64字节才发生碰撞,此时检测窗口已过,网卡会无视这个碰撞继续发送(将数据帧长度最短设置为64字节,就是因为避免网卡发送完数据帧了才意识到数据发生碰撞(因为一旦网卡发送完数据帧就会将缓冲区清空))

同时单个数据帧长度不能过长,这是为了避免导致网络拥塞,因此就有了MTU(最大传输单元)

如果主机数增加的特别多,发生碰撞的概率也会增加

为了让主机数量太多也不要让网络流量降低的太快,就有了交换机

交换机可以把局域网划分,就是划分碰撞域

划分成A区域和B区域,A区域内的主机之间通信,交换机识别到就不会将报文给到区域B,区域B就不会受到影响,此时区域A和区域B内的主机可以彼此同时通信

一个区域内的可能会互相影响,但是影响远比整个局域网要小得多

局域网内怎么将报文给到下一跳

在同一个网段当中,必须要有一种技术,能够把下一跳IP转化成为下一跳主机的mac地址

这种局域网技术就是ARP(地址解析协议)

它属于数据链路层的协议,但是在封装mac帧之上,在网络层以下

ARP协议的基本原理

ARP的过程就是,先广播再一对一发送的过程

ARP大小是固定28字节

arp报文格式如图所示

硬件类型:链路层网络类型,1代表以太网

协议类型:要转换成为mac地址的网络层地址类型,0x0800为IP地址

硬件地址长度:链路层网络所要求的mac地址长度

协议地址长度:网络层IP地址长度

op(选项)字段:为1表示ARP请求,为2表示ARP应答

可以注意到arp报文里也包含了源mac地址和目的mac地址,好像和以太网的帧头的源mac地址和目的mac地址重复了,但是仍然是必须的。因为一个用来在数据链路层进行解析,一个在ARP层进行解析。主要是为了保证链路层是其他类型的网络时也不会出现问题(其它链路层网络不一定会在报头加上mac地址)

接收方数据链路层查看报头发现类型字段为0806,就会将有效载荷交给ARP层,ARP层首先会看op(选项),如果是请求,就会去看目的IP地址,查看是不是自己的IP地址,如果是就会去查看发送端IP地址,构建应答

应答报文是一对一通信,目的mac地址就是固定对象(发送方的mac地址)不再是广播地址,发送端mac地址就是自己

接收方接收到应答之后,给到arp层,arp会先看op,然后就去看发送端IP地址和发送端 mac地址

arp返回之后,mac和ip的映射关系就会被os缓存起来,防止频繁发送arp报文

arp缓存的存储时间长度一般是以分钟为单位

因为IP和mac不一定一直保持关系,它们是变化的,所以不能一直缓存,得缓存新的

主要是因为主机每次连网,都会申请IP,主机的IP是会变的

逆地址解析协议(rarp):知道mac,不知道IP

可以做arp欺诈,不停的给某个主机发送arp应答报文,由于arp缓存只会记录最新的信息,就导致发送信息时就会给到另一台主机

这种方式就是中间人攻击

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 20:39:46

双相机视觉项目实战:C#海康工业相机连接与并发取流全解析

简介:一套基于C#的海康工业相机双机连接示例工程,采用WinForms界面,面向工业视觉开发者、自动化设备调试人员和C#硬件交互学习者,目标是解决两台相机同步连接、独立参数配置与图像采集的常见问题。资源共48个文件,压缩…

作者头像 李华
网站建设 2026/9/3 20:39:21

电气符号库整理避坑指南:标准、软件与项目实战全解析

简介:这份CAD电气符号总集面向电气工程师、电子设计人员及自动化领域学习者,集中了电阻、电容、二极管、晶体管、继电器、开关、电机等常见电气元件符号,可覆盖工业控制、建筑布线、自动化系统、电力工程等多种设计场景,帮助用户直…

作者头像 李华
网站建设 2026/9/3 20:33:04

mod_RSsim:SAR原始回波仿真与成像算法验证的MATLAB实践

简介:面向通信工程教学、科研与产品开发场景的mod_RSsim仿真模拟软件,专注卷积码、里德-所罗门码等纠错编码机制的分析与验证。软件源代码开放,用户可查看和修改核心实现,便于按需定制;图形界面直观,支持常…

作者头像 李华
网站建设 2026/9/3 20:30:26

注意避坑!不是所有 AI 都能写论文,2026 导师推荐工具盘点

每年毕业季,无数同学深陷论文难题:开题毫无思路、搭建框架耗费数日、初稿逻辑松散、查重标红泛滥、AI检测超标、格式反复被导师驳回。面对这些痛点,不少学生转向通用型AI工具寻求帮助,但市面上的AI平台大多存在明显短板。它们往往…

作者头像 李华
网站建设 2026/9/3 20:27:28

exe文件是什么?Python打包exe全攻略:PyInstaller与Nuitka实战

你是不是也刷到过《我的妈妈是天使.exe》《洛克人EXE Season》《星际宝贝exe》这种标题?第一眼看过去,很容易以为是某个动画剪辑的“第23集”更新了。但稍微琢磨一下又不对:一部电视剧、一部动画,为什么名字后面要跟一个程序文件的…

作者头像 李华
网站建设 2026/9/3 20:27:13

OpenGL中文显示实战:基于FreeType与纹理图集的完整方案

简介:面向OpenGL开发者的汉字显示示例包,聚焦在OpenGL中渲染2D/3D汉字的完整实现思路。OpenGL本身不直接支持文本渲染,尤其对汉字这类非ASCII字符需要额外处理,因此资源重点演示如何借助FreeType加载字形并转为纹理,同…

作者头像 李华