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

在这里插入图片描述

文章目录

  • 前言
  • 什么是以太网
  • 以太网帧格式
    • 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 校验和

校验和用来校验数据在网络的传输过程中是否出现了错误。以太网中校验和不是在帧头位置,而是位于帧尾

数据在数据链路层是如何转发的

  1. 封装成帧:在数据链路层将网络层协议封装成帧时,会在首部和尾部分别添加SOH以及EOT这两个特殊字符,接收方是根据这两个字符来确定帧首和帧尾的。
  2. 添加校验和:链路层会在数据部分添加校验和,用于检测数据传输过程中的错误。
  3. 透明传输:为了避免对帧的数据产生干扰,可以在数据部分的SOH、EOT字符前添加一转义字符ESC。这样,如果接收时直接接收到SOH、EOT字符还是表示为帧的开始与结束标志,但是如果接收时接收到ESC然后接收到SOH、EOT,就说明这两个字符不是帧的开始与结束标志,是帧数据的一部分。
  4. 差错控制:链路层还具有差错控制功能,能够检测出数据传输过程中的错误并进行纠正。
  5. 解封装和转发:当路由设备收到报文后,会先解封装,发现目的IP不是自己,同时也不是同网段,会查看自己的路由表中是否记录匹配目的IP网段的路由条目,如果存在此路由信息,则将数据包交给对应的接口进行转发。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金蝶云星空创建自动下推并保存公共服务

文章目录 金蝶云星空创建自动下推并保存公共服务创建公共方法按单下推数据按明细行下推数据调用下推操作 调用公共方法 金蝶云星空创建自动下推并保存公共服务 创建公共方法 按单下推数据 /// <summary>/// 获取单据转换数据包/// </summary>public DynamicObjec…

RIS辅助MIMO广播信道容量

RIS辅助MIMO广播信道容量 摘要RIS辅助的BC容量矩阵形式的泰勒展开学习舒尔补 RIS-Aided Multiple-Input Multiple-Output Broadcast Channel Capacity论文阅读记录 基于泰勒展开求解了上行容量和最差用户的可达速率&#xff0c;学习其中的展开方法。 摘要 Scalable algorithm…

UE4 使用材质后期 制作玻璃有雨效果

效果展示&#xff0c;其实这是一个动画效果 以上为所有逻辑 拿到TexCoord给到Panner&#xff0c;Time和Speed都是通过下面计算而来&#xff0c;后面讲&#xff0c;再拿到时间和速度值过后&#xff0c;加上扰动值&#xff0c;最后取G值&#xff0c;因为雨事从上而下的动&#xf…

【AIFEM案例操作】电器盒谐响应分析

AIFEM是由天洑自主研发的一款通用的智能结构仿真软件&#xff0c;助力用户解决固体结构相关的静力学、动力学、振动、热力学等实际工程问题&#xff0c;软件提供高效的前后处理工具和高精度的有限元求解器&#xff0c;帮助用户快速、深入地评估结构的力学性能&#xff0c;加速产…

微信小程序项目案例之导游证考试刷题小程序

前言 很多计算机专业的同学在做毕设选题时不知道该如何选题&#xff0c;有的同学是已经选择了要开发一款小程序&#xff0c;但是又不知道开发哪类小程序。本篇将为大家介绍一个小程序的开发方向&#xff0c;考试刷题类小程序是目前比较火的小程序项目之一&#xff0c;在小程序…

JavaScript基础知识19——循环结构:while循环

哈喽&#xff0c;你好&#xff0c;我是雷工。 本节学习JavaScript基础语法的循环结构&#xff1a;while循环&#xff0c;以下为学习笔记。 while循环 循环概念&#xff1a;重复执行一些操作&#xff1b; 循环特征&#xff1a;不断地重复&#xff1b; while&#xff1a;在…期间…

面向Three.js开发者的3D自动纹理化开发包

DreamTexture.js 是面向 three.js 开发者的 3D 模型纹理自动生成与设置开发包&#xff0c;可以为 webGL 应用增加 3D 模型的快速自动纹理化能力。 图一为原始模型, 图二图三为贴图后的模型。提示词&#xff1a; city, Realistic , cinematic , Front view ,Game scene graph 1、…

Kitex踩坑 [Error] KITEX: processing request error,i/o timeout

报错问题 2023/010/28 17:20:10.250768 default_server_handler.go:234: [Error] KITEX: processing request error, remoteService, remoteAddr127.0.0.1:65425, errordefault codec read failed: read tcp 127.0.0.1:8888->127.0.0.1:65425: i/o timeout 分析原因 Hert…

基于dockerfile搭建lnmp

目录 任务需求&#xff1a; 一、规划&#xff1a; 二、准备&#xff1a; 三、部署nginx容器&#xff08;172.18.0.10&#xff09;&#xff1a; 1.编写Dockerfile构建镜像&#xff1a; 2.准备nginx配置文件&#xff1a; 3.构建镜像&#xff0c;启动nginx容器&#xff1a; 四…

【QT】事件分发器

event事件分发器&#xff0c;用于分发事件&#xff0c;在这里也可以做拦截&#xff0c;返回值boo。如果返回的是true代表拦截处理&#xff0c;不再向下分发。 展示事件拦截 上一段代码&#xff1a;【QT】鼠标常用事件-CSDN博客 代码 // 事件分发器 // 拦截鼠标按下 // QEven…

四十二、【进阶】

目录 1、覆盖索引 2、案例分析 &#xff08;1&#xff09;select * 查询 &#xff08;2&#xff09;使用字段查询 &#xff08;3&#xff09;性能差异原因 3、分析 &#xff08;1&#xff09;主键id查询 &#xff08;2&#xff09;覆盖索引 1、覆盖索引 简单点说&#x…

Nginx 部署多个安全域名,多个服务【工作记录】

以下是本人通过Docker 部署的Nginx挂载出来的文件目录 先看下 nginx.conf 配置文件内容&#xff1a;如下 ps&#xff1a;当前文件就是安装后的初始内容&#xff0c;无修改。主要关注最后一行 include /etc/nginx/conf.d/*.conf;表示引入其他目录下的.conf配置文件&#xff1b;…

【Arduino环境下驱动合宙esp32c3单片机基本外设】

【esp32c3基本外设驱动】 1. GPIO调试1.1 源码分享2.2 实验效果 2. ADC调试2.1 源码分享2.2 实验效果 3. WS2812驱动3.1 源码分享3.2 实验效果 4. 旋转编码器4.1 源码分享4.2 测试效果 5. SSD1306屏幕驱动5.1 源码分享5.2 测试效果 6. 双cpu同时工作测试6.1 源码分享6.2 测试效…

Arrays,Arrays重载的sort方法

Arrays -1的原因.因为返回正数不就是表示存在只能是负数 Arrays重载的sort方法 //这个方法只能给引用数据类型排序 //如果是基本数据类型需要转化为对应的包装类 public class arrays {public static void main(String[] args) {Integer arr[]{2,1,4,6,3,5,8,7,9};Arrays.s…

学习笔记3——JVM基础知识

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/contents/3/196593.html JVM&#xff08;Write Once&#xff0c;Run Anywhere&#xff09; 以下是一些学习时有用到的资料&#xff0c;只学习了JVM的基础知识&#xff0c;对JVM整体进…

python爬虫—使用xpath方法进行数据解析

1. 背景信息 爬取安居客二手房源信息 URL地址&#xff1a;https://wuhan.anjuke.com/sale/?fromnavigation 2. 代码实现 import requests from lxml import etreeif __name__ __main__:# 1.指定URLurl "https://wuhan.anjuke.com/sale/?fromnavigation"# 2.U…

Apache Doris (四十八): Doris表结构变更-替换表

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

在Jetpack Compose中使用Paging 3实现无限滚动

在Jetpack Compose中使用Paging 3实现无限滚动 本文将介绍在Jetpack Compose中进行分页加载。分页加载意味着一次只加载应用程序中的小数据块。 假设您在服务器上有大量数据&#xff0c;并且您希望在UI上显示这些数据。显然&#xff0c;您不希望一次性加载所有数据。您希望每次…

reactor (百万并发服务器) -- 1

为了从点滴开始&#xff0c;文章会先从一些基础socket去补充一些经常发生但是没有很深入去思考的细节。然后我们再开始去设计reactor的设计&#xff0c;可以选择跳过起过前面部分。 为了能从0开始去设计&#xff0c;测试&#xff0c;优化...整个过程会分为2-3篇文章输出&#x…

Redis队列Stream

1 缘起 项目中处理文件的场景&#xff1a; 将文件处理请求放入队列&#xff0c; 一方面&#xff0c;缓解服务器文件处理压力&#xff1b; 另一方面&#xff0c;可以根据文件大小拆分到不同的队列&#xff0c;提高文件处理效率。 这是Java开发组Leader佳汇提出的文件处理方案&a…