数据链路层分析

文章目录

  • 前言
  • 一、数据链路层概述
  • 二、终端之间的通信
  • 三、帧格式
    • 1.Ethernet_II型
    • 2.IEEE 802.3
  • 四、MTU分析
  • 五、数据帧的传输
    • 1.MAC地址
    • 2.单播
    • 3.广播
    • 4.组播
    • 5.数据帧的收发


前言

网络中传输数据需要定义并遵循一些标准,以太网是根据IEEE802.3标准来管理和控制数据帧的,了解IEEE802.3标准是充分理解以太网中链路层通信的基础。


一、数据链路层概述

数据链路层(data link layer)是OSI参考模型中的第二层,介乎于物理层和网络层之间。
在这里插入图片描述

数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自物理层的数据可靠的传输到相邻节点的目标机网络层。

数据链路层的传输单元:

工作在二层的网络设备:交换机

二、终端之间的通信

在这里插入图片描述

数据链路层控制数据帧在物理链路上传输

数据包在以太网介质上传播之前必须封装头部和尾部信息,其封装后的数据包称为数据帧,数据帧中封装的信息决定了数据如何传输。

以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。

三、帧格式

在这里插入图片描述

两种帧格式:Ethernet_II 和 IEEE802.3

Ethernet_II 帧格式,是上世纪80年代提出的DIX v2格式。Ethernet_II 后来被IEEE802标准接纳,并写进了IEEE802.3x-1997的3.2.6节。

IEEE802.3帧格式是1983年提出的

Ethernet_II 和 IEEE802.3两种格式的主要区别在于Ethernet_II格式中包含一个Type字段,标识以太帧处理完之后将被发送到哪个上层协议进行处理,IEEE802.3格式中,同样的位置是长度字段。

如何区别Ethernet_II 和 IEEE802.3:

  • 不同的Type字段值可以用来区别这两种帧的类型
  • 当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE802.3格式
  • 当Type字段值大于等于1536(或者十六进制的0x0600)时,帧使用的是Ethernet_II格式
  • 以太网中大多数的数据帧使用的是Ethernet_II格式

不管是哪一种帧都具有帧头帧尾结构:
在这里插入图片描述

帧校验序列字段,用于检验传输过程中帧的完整性。

1.Ethernet_II型

在这里插入图片描述

Ethernet_II的帧中各字段说明如下:
在这里插入图片描述

2.IEEE 802.3

在这里插入图片描述

IEEE802.3的帧中各字段说明如下:
在这里插入图片描述

SAP服务访问点,它是一个层次系统的上下层之间进行通信的接口,N层的SAP就是N+1层可以访问N层服务的地方。SSAP可以理解为来源设备的服务点,DSAP可以理解为目的设备的服务点。

Org Code 三个字节都为0,Type字段的含义与Ethernet_II帧中的Type字段相同。

四、MTU分析

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500字节和1492字节。链路层的这个特性称为MTU,即最大传输单元。不同类型网络的数据帧长度大多数都有一个上限。如果IP层有一个数据报要传,而且数据帧的长度比链路层的MTU还大,那么IP层就需要进行分片即把数据报分成若干片,这样每一片就都小于MTU。

Ethernet_II帧
在这里插入图片描述

上三层数据最小是46字节,这里上三层指的是网络层、传输层、应用层。

五、数据帧的传输

数据链路层基于MAC地址进行帧的传输。
在这里插入图片描述

以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在屋里介质上传输。

1.MAC地址

MAC地址,也称为物理地址,是被烧入到网卡的全球唯一标识。
在这里插入图片描述

MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。
在这里插入图片描述

网络设备的MAC地址是全球唯一的。

MAC地址长度为48比特,通常用十六进制表示。

MAC地址包含两部分:前24比特是组织统一标识符(OUI,Organizationally Unique Identifier)由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配。

MAC地址 = 厂家标识 + 内部编号,可以使用命令ipconfig /all 查看自己的MAC地址。

以太网封装完成后会通过物理层转换成比特流在物理介质上传输,局域网上的帧可以通过三种方式发送:

  1. 单播
  2. 广播
  3. 组播

2.单播

在这里插入图片描述

单播,指从单一的源端发送到单一的目的端。

每个主机接口有一个MAC地址唯一标识,MAC地址的OUI(组织唯一标识符)中,第一个字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。

在共享式网络中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。

3.广播

在这里插入图片描述

第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的 FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧。

广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。

当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。

4.组播

在这里插入图片描述

第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。

组播MAC地址和单播MAC地址是通过第一个字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。

当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。

5.数据帧的收发

当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。
在这里插入图片描述

帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享式网络中,这个帧会到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。

如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧所在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。本例中,Type字段的值为0x0800,表明该帧需要发送到IP协议上处理。在发送给IP协议之前,帧的头部和尾部会被剥掉。

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

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

相关文章

值得收藏!盘点那些适合普通人方便又好用的AIGC工具!(下)

【导读】接上一篇文章,盘点国内外适合普通人能够轻松上手的AIGC工具(上)。今天又为大家整理了一些好用又方便的AI设计工具、AI办公工具、AI编程工具、AI指令工具和AI检测工具,如果有没更新到的工具也欢迎大家评论区交流。 一 、A…

理性决策的艺术:从购房到择偶的数学智慧;37% 规则,做出最佳决策的秘诀;用数学模型解决人生难题

在面对人生重大决策时,如购房或择偶,我们常常感到迷茫和困惑。然而,如果我们能够将这些看似复杂的问题简化为数学模型,我们就能以更加理性和系统的方式做出决策。 37%规则 1950年代,当时几位数学家开始研究这样一个问…

获取onnx模型输入输出结构信息的3种方式:ONNX、onnxruntime、netron

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

二、基础—常用数据结构:列表、元祖、集合、字典、函数等(爬虫及数据可视化)

二、基础—常用数据结构:列表、元祖、集合、字典、函数等(爬虫及数据可视化) 1,字符串2,最常用的是列表(重点掌握)3,元组4,字典(重要)5&#xff0…

51-1 内网信息收集 - 内网资源探测

导语 在内网渗透过程中,通常需要利用各种技术来探测内网资源,为后续的横向渗透做准备。发现内网存活的主机及其详细信息可以帮助确定攻击方向和潜在的漏洞。 一、基于 ICMP 发现存活主机 ICMP(Internet Control Message Protocol,因特网控制消息协议)是 TCP/IP 协议簇的…

python 笔试面试八股(自用版~)

1 解释型和编译型语言的区别 解释是翻译一句执行一句,更灵活,eg:python; 解释成机器能理解的指令,而不是二进制码 编译是整个源程序编译成机器可以直接执行的二进制可运行的程序,再运行这个程序 比如c 2 简述下 Pyth…

springcloud-gateway 网关组件中文文档

Spring Cloud网关 Greenwich SR5 该项目提供了一个基于Spring生态系统的API网关,其中包括:Spring 5,Spring Boot 2和项目Reactor。Spring Cloud网关的目的是提供一种简单而有效的方法来路由到API,并向它们提供跨领域的关注&#x…

7.1作业

初始化 /******rcc章节初始化********/ |//1.使能gpiob组控制器 |RCC->MP_AHB4ENSETR |(0X1<<1); |//2.使能gpiog组控制器 |RCC-&…

数据结构 - C/C++ - 链表

目录 结构特性 内存布局 结构样式 结构拓展 单链表 结构定义 节点关联 插入节点 删除节点 常见操作 双链表 环链表 结构容器 结构设计 结构特性 线性结构的存储方式 顺序存储 - 数组 链式存储 - 链表 线性结构的链式存储是通过任意的存储单元来存储线性…

制氢厂氢气泄漏安全监测:氢气传感器守护“氢”安全

随着全球能源结构的转型和清洁能源的需求日益增长&#xff0c;氢能作为一种高效、清洁的能源载体&#xff0c;受到了广泛关注。制氢厂作为氢能产业的重要组成部分&#xff0c;其安全问题也日益凸显。在制氢过程中&#xff0c;氢气泄漏是潜在的安全隐患之一&#xff0c;因此&…

Python容器 之 字符串--下标和切片

1.下标&#xff08;索引&#xff09; 一次获取容器中的一个数据 1, 下标(索引), 是数据在容器(字符串, 列表, 元组)中的位置, 编号 2, 一般来说,使用的是正数下标, 从 0 开始 3, 作用: 可以通过下标来获取具体位置的数据. 4, 语法&#xff1a; 容器[下标] 5, Python 中是支持…

猫冻干可以天天喂吗?喂冻干前要了解的必入主食冻干榜单

近年来&#xff0c;冻干猫粮因其高品质而备受喜爱&#xff0c;吸引了无数猫主人的目光&#xff0c;对于像我这样的养猫达人来说&#xff0c;早已尝试并认可了冻干喂养。然而&#xff0c;对于初入养猫行列的新手们来说&#xff0c;可能会有疑问&#xff1a;什么是冻干猫粮&#…

通过容器启动QAnything知识库问答系统

QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。目前已支持格式&#xff1a;PDF(pdf)&#xff0c;Word(docx)&#xff0c;PPT(pptx)&#xff0c;XLS(xlsx)&#xff0c;Markdown(md)&…

操作配置文件保存方式(上位机)

上位机:(Supervisor Control) 指的是用于监视和控制其他设备或者系统的计算机&#xff0c;在工业自动化和过程控制领域 上位机典型就是一台PC或者服务器&#xff0c;用于语各种下位机进行通信的&#xff0c;收集数据&#xff0c;并且根据收集的数据发送一些数据。 典型的设备…

一文讲懂npm link

前言 在本地开发npm模块的时候&#xff0c;我们可以使用npm link命令&#xff0c;将npm 模块链接到对应的运行项目中去&#xff0c;方便地对模块进行调试和测试 用法 包链接是一个两步过程&#xff1a; 1.为依赖项创建全局软链npm link。一个符号链接&#xff0c;简称软链&a…

为什么127.0.0.1和localhost之间算跨域?

原文&#xff1a;https://mp.weixin.qq.com/s/4zJBMNEntwjqAfN6A6diUA 什么是同源策略、跨域 跨域问题是指在浏览器中&#xff0c;当一个网页向不同域名、不同端口或不同协议的资源发起请求时&#xff0c;会受到限制。这是由浏览器的**同源策略&#xff08;Same-Origin Policy…

沉浸感拉满的三模游戏外设神器!谷粒金刚3 Pro游戏手柄开箱试玩

沉浸感拉满的三模游戏外设神器&#xff01;谷粒金刚3 Pro游戏手柄开箱试玩 哈喽小伙伴们好&#xff0c;我是Stark-C~ 对于喜欢打游戏的玩家来说&#xff0c;一款得力的游戏外设绝对是提升游戏体验&#xff0c;增加游戏乐趣的重要神器&#xff01;而在众多的外设中&#xff0c…

Redis基础教程(六):redis 哈希(Hash)

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

tkinter实现进度条

tkinter实现进度条 效果代码解析导入需要的模块定义进度条 代码 效果 代码解析 导入需要的模块 import tkinter as tk from tkinter import ttk定义进度条 def start_progress():progress[value] 0max_value 100step 10for i in range(0, max_value, step):progress[valu…

基于大数据架构的情感分析

1 项目介绍 1.1 研究目的和意义 随着大数据时代的到来&#xff0c;电影产业积累了海量的用户评论数据&#xff0c;这些数据中蕴含着观众的情感倾向与偏好信息&#xff0c;为电影推荐和市场策略制定提供了宝贵资源。然而&#xff0c;如何高效地从这浩瀚的数据海洋中提炼出有价…