【计算机网络】数据链路层——以太网

文章目录
- 前言
- 什么是以太网
- 以太网帧格式
- 6位目的地址和源地址
- 2位类型
- 数据长度
- CRC 校验和
- 数据在数据链路层是如何转发的
前言
前面我们学习了关于应用层——自定义协议、传输层——UDP、TCP协议、网络层——IP协议,今天我将为大家分享关于数据链路层——以太网方面的知识。
什么是以太网
- “以太网” 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;
- 例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;
- 以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;
以太网是一种计算机局域网技术,它使用带碰撞检测的载波侦听多址访问(CDMA/CD)方法进行介质访问控制。以太网主要指数据传输所经过的物理电缆,而Wi-Fi指无线连接的互联设备的网络。以太网基本上是电缆,是计算机和Internet之间的连接,它是一种有线连接,可以通过USB电缆或以太网电缆直接连接计算机。而Wi-Fi更像是一种网络技术,允许移动设备无线连接到Internet。
以太网的发展很快,从单根长电缆的典型以太网结构开始演变。单根电缆存在的问题,比如找出断裂或者松动位置等连接相关的问题,驱使人们开发出一种不同类型的布线模式。在这种模式中,每个站都有一条专用电线连接到一个中央集线器。
以太网帧格式

6位目的地址和源地址
目的地址和源地址就是指该数据帧的发送地址是哪里以及要发送到哪里,在这里目的地址和源地址都不是用 IP 地址来描述的,而是用 MAC 地址来描述的。
MAC地址即介质访问控制地址,或称为MAC位址、硬件地址,用来确认网络设备的位置的位址。它是由48位的二进制数字组成的,通常以12位十六进制数表示。这些数字通常由网卡生产厂家写入网卡的EPROM芯片中,芯片中的数据可以通过程序进行擦写。
MAC地址的前6位数字代表“组织唯一标识符”(OUI),后6位数字由制造商自行分配。这种编号方式有助于确保每个网卡都有一个唯一的MAC地址。
在以太网中,MAC地址是用来进行数据传输的标识符。当数据从一个节点发送到另一个节点时,源节点会将数据包发送到目标节点的MAC地址。通过MAC地址,目标节点可以识别发送方是谁,从而接收并处理数据包。
MAC 地址是用 6 个字节来表示的,比 IP 地址能表示的数量更多,现在的 MAC 地址是可以满足人们的需求的。那么既然有了 IP 地址为什么还会有 MAC 地址呢?
在最开始网络开始出现的时候,网络层和数据链路层是各自独立被发明的,所以各自出现了用来表示的地址的 IP 地址和 MAC 地址,虽然这两个都是用来表示地址的,但是它们的使用场景是不同的。并且就目前来说,一个设备具有唯一的 MAC 地址,这是网卡出厂的时候就写死的,一般不能修改。IP 地址是用来表示网路上两个主机的起始地和目的地,而 MAC 地址则表示在这两个地点之间各个节点的地址。
例如:我从武汉到西藏去旅游,需要途径武汉、长沙、重庆、成都、拉萨。在这个过程中,武汉是起始位置,拉萨是目的位置,这两个源地址和目的地址就是用的 IP 地址来描述的,而中间途径的从武汉到长沙的过程中,源IP地址就是武汉,目的 IP 是拉萨,以太网数据帧中的源MAC地址就是武汉,而目的 MAC 地址就是长沙;从长沙到重庆的源 IP 地址是武汉,目的 IP 地址是重庆,而源 MAC 地址就是长沙,目的 MAC 地址是重庆……源 IP 地址和目的 IP 地址从始至终都是同一个,而源 MAC 地址和目的 MAC 地址则是需要根据两个相邻的节点不断变化。

大家在 Windows 下可以在 cmd 中使用 ipconfig /all 来查看自己设备的 MAC 地址。

2位类型
2位类型字段,用于标识数据帧的类型。这个字段是用来区分不同的以太网帧类型的,比如以太网帧、IP数据报、ARP请求和应答等。通过这个字段,接收端可以知道接下来要处理的数据是什么类型,从而进行正确的处理。
常见的以太类型有:0x0800,代表IPv4;0x86DD,代表IPv6;0x0806,代表ARP;0x8100,代表IEEE 802.1q;等等。不同的类型字段值可以用来区别不同的帧类型。
数据长度
在以太网帧格式中 IP 数据包的最大程度为 1500 字节,这个数据链路层数据报能携带的最大载荷长度也叫做 MTU。 而 IP 数据包的分包和组包大概率是因为 MTU 引起的,而不是触发上限 64 kb引起的。不同数据链路层的 MTU 大小是不一样的,这个跟物理层的介质有关,就类似于你一个路能曾受的最大重量。
MTU 对 IP 协议的影响
由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。
- 将较大的IP包分成多个小包,并给每个小包打上标签;
- 每个小包IP协议头的 16位标识(id) 都是相同的;
- 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0);
- 到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;
- 一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据;
CRC 校验和
校验和用来校验数据在网络的传输过程中是否出现了错误。以太网中校验和不是在帧头位置,而是位于帧尾
数据在数据链路层是如何转发的
- 封装成帧:在数据链路层将网络层协议封装成帧时,会在首部和尾部分别添加SOH以及EOT这两个特殊字符,接收方是根据这两个字符来确定帧首和帧尾的。
- 添加校验和:链路层会在数据部分添加校验和,用于检测数据传输过程中的错误。
- 透明传输:为了避免对帧的数据产生干扰,可以在数据部分的SOH、EOT字符前添加一转义字符ESC。这样,如果接收时直接接收到SOH、EOT字符还是表示为帧的开始与结束标志,但是如果接收时接收到ESC然后接收到SOH、EOT,就说明这两个字符不是帧的开始与结束标志,是帧数据的一部分。
- 差错控制:链路层还具有差错控制功能,能够检测出数据传输过程中的错误并进行纠正。
- 解封装和转发:当路由设备收到报文后,会先解封装,发现目的IP不是自己,同时也不是同网段,会查看自己的路由表中是否记录匹配目的IP网段的路由条目,如果存在此路由信息,则将数据包交给对应的接口进行转发。
相关文章:
【计算机网络】数据链路层——以太网
文章目录 前言什么是以太网以太网帧格式6位目的地址和源地址2位类型数据长度CRC 校验和 数据在数据链路层是如何转发的 前言 前面我们学习了关于应用层——自定义协议、传输层——UDP、TCP协议、网络层——IP协议,今天我将为大家分享关于数据链路层——以太网方面的…...
【Spring】Spring MVC请求响应
文章目录 1. 请求1.1 传递单个参数1.2 传递多个参数1.3 传递对象1.4 后端参数重命名1.5 传递数组1.6 传递集合1.7 传递JSON对象1.8 获取URL中参数1.9 上传⽂件1.10 获得Cookie1.11 获得Session1.12 获得Header 2. 响应2.1 返回静态界面2.2 返回数据2.3 返回HTML代码片段2.4 返回…...
程序设计与算法(二)算法基础(北京大学MOOC)
一、枚举 1、完美立方 /* 完美立方a^3b^3c^3d^3// a大于b c d// b<c<d*/ #include <iostream> int main() {int a,b,c,d; int N 24;//scanf("%d", &N );for(a2; a<N; a ) //a的范围 [2,N]{for(b2; b<a; b){ //b的范围[2…...
【MedusaSTears】正则表达式搜索心得
文章目录 心得体会1.懒惰匹配最少字符 .?2.前瞻: 字符串后边 包括/不包括 某个单词/字母2-1.包含某单词: start(?.?hello)2-2.不包含某单词: start(?!.?hello) 心得体会 前情回顾: 【MedusaSTears】正则?不要太简单!—正则表达式个人学习心得总结: 正则说白了是对字符串…...
带你从0开始学习自动化框架Airtest
现在市面上做UI自动化的框架很多,包括我们常用的Web自动化框架Selenium,移动端自动化框架Appium。 虽然Selenium和Appium分属同源,而且API都有很多相同的地方,可以无损耗切换,但是还是需要引入不同的库,而…...
MySQL扩展语句和约束方式
一、扩展语句 复制,通过like这个语法直接复制bbb的表结构。只是复制表结构,不能复制表里面的数据 把bbb表里面的数据,复制到test,两个表数据结构要一致 创建一张表,test1,数据从bbb来,表结构也是bbb delete…...
用起来顺手的在线表结构设计软件工具Itbuilder,与你共享
在线表结构设计软件工具需功能简洁,去除晦涩难懂的设置,化繁为简,实用为上,上手非常容易,这些itbuilder统统可以做到。 itbuilder是一款基于浏览器开发的在线表结构设计软件工具,借助人工智能提高效率&…...
Android开发知识学习——HTTPS
文章目录 定义HTTPS连接HTTPS 连接建立的过程课后题 定义 HTTP Secure / HTTP over SSL / HTTP over TLS SSL:Secure Socket Layer -> TLS Transport Layer Security 定义:在HTTP之下增加的一个安全层,用于保障HTTP的加密传输 本质&…...
STM32H750之FreeRTOS学习--------(一)初识RTOS
FreeRTOS 一、初识RTOS 裸机:裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序 实时性差,程序轮流执行delayCPU空等待,效率低程序混乱,臃肿,功能都放在while循环…...
关于pycharm中句号变成点的问题
现象 在pycharm的使用中,经常遇到一个问题:注释写着写着,突然句号“。”变成了“.” 原因 今天突然发现,造成该现象的原因是:某个瞬间按下了ctrl .,那么之后按下句号只能显示为点。 pycharm中…...
FedGNN: Federated Graph Neural Network for Privacy-Preserving Recommendation
FedGNN:用于隐私保护推荐的联邦图神经网络 参考笔记 ICML-21-workshop 本文的主要创新工作 在具有局部差分隐私的模型训练中保护模型梯度,并提出一种伪交互项目采样技术来保护用户与之交互的项目。提出了一种保护隐私的用户-项目图扩展方法࿰…...
k8s---pod进阶
//资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了 li…...
scrapy框架爬取数据(创建一个scrapy项目+xpath解析数据+通过pipelines管道实现数据保存+中间件)
目录 一、创建一个scrapy项目 二、xpath解析数据 三、通过pipelines管道实现数据保存 四、中间件 一、创建一个scrapy项目 1.创建一个文件夹:C06 在终端输入以下命令: 2.安装scrapy:pip install scrapy 3.来到文件夹下:cd C06 4.创建…...
你被骗了吗?别拿低价诱骗机器视觉小白,4000元机器视觉系统怎么来的?机器视觉工程师自己组装一个2000元不到,还带深度学习
淘宝闲鱼,大家搜搜铺价格,特别是机器视觉小白。 机架:(新的)200元以下。(看需求,自己简单打光,买个50元的。如果复杂,就拿给供应商免费打光) 相机,镜头:&am…...
计算机毕业设计选题推荐-大学生校园兼职微信小程序/安卓APP-项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
如何使用 Docker 搭建 Jenkins 环境?从安装到精通
不少兄弟搭 jenkins 环境有问题,有的同学用 window, 有的同学用 mac, 有的同学用 linux。 还有的同学公司用 window, 家里用 mac,搭个环境头发掉了一地。。。 这回我们用 docker 去搭建 jenkins 环境,不管你是用的是什么系统&…...
YOLOv5配置文件之 - yaml
在YOLOv5的目录中,models文件夹里存储了YOLO的模型配置。 ./models/yolov5.yaml 定义了YOLOv5s网络结构的定义文件 yaml的主要内容 参数配置 nc: 80 类别数量 depth_multiple: 0.33 模型深度缩放因子 width_multiple: 0.50 控制卷积特征图的通道个数 anchors配…...
HBuilderX实现安卓真机调试
1. 简介 HBuilderX 简称 HX,HBuilder,H 是 HTML 的缩写,Builder 是建设者。是为前端开发者服务的通用 IDE,或者称为编辑器。与 vscode、sublime、webstorm 类似。 它可以开发普通 web 项目,也可以开发 DCloud 出品的 u…...
如何使用IP归属地查询API加强网络安全
引言 在当今数字化时代,网络安全对于个人和组织来说至关重要。恶意网络活动的威胁不断增加,因此采取有效的措施来加强网络安全至关重要。其中之一是利用IP归属地查询API。这个工具可以为您的网络安全策略提供宝贵的信息,帮助您更好地保护自己…...
Nginx 实战指南:暴露出请求的真实 IP
🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
