Linux网络:数据链路层以太网

目录

    • 认识数据链路层
    • 关于以太网
      • 1. 基本概念
      • 2. 以太网帧格式
      • 3. MAC vs IP

认识数据链路层

数据链路层 位于物理层和网络层之间,其作用是将源自物理层来的数据可靠地传输到相邻节点的目标主机的网络层,主要通过物理介质(如以太网,Wi-Fi等)将数据分割成帧,并在相邻节点之间进行传输。

  • 主机:配有IP地址,但不进行路由控制的设备
  • 路由器:既配有IP地址,又能进行路由控制、
  • 节点:主机和路由器的统称
  • 链路(Link):一个节点到另一个相邻节点的一段物理线路,中间没有任何其他节点。
    • 链路由传输介质和物理设备组成,传输介质主要有双绞线,光纤,微波。在两个节点进行通信的时候,链路只是一条完整通信路径的一部分
  • 数据链路(Data Link):把实际控制数据传输协议的硬件和软件加到链路上就构成了数据链路

补充:报文在传输层叫数据段(Segment),在网络层叫数据报(Packet),在数据链路层叫做数据帧(Frame)

数据链路层的功能如下:

  • 封装成帧:将网络层交付下来的数据报封装成帧,每个帧包含了控制信息(如起始标志,目的MAC地址,源MAC地址等)和数据部分
  • 物理地址寻址:通过物理地址(MAC地址)来唯一标识网络中的设备,在数据链路层中使用MAC地址进行寻址和转发
  • 媒体访问控制:在共享介质的网络中,数据链路层使用媒体访问控制协议(如CSMA/CD,CSMA/CA等)来协调多个节点之间的传输,避免冲突和碰撞
  • 差错检查与重传:数据链路层负责检测和纠正传输过程中可能发生的位错误,通过差错检验码(如循环冗余校验码CRC)来实现
  • 流量控制:数据链路层通过流量控制机制,确保发送方和接收方之间的数据传输速率匹配,避免数据丢失或溢出
  • 链路管理:数据链路层负责建立,维护和释放链路链接,包括链路的建立,终止,确认以及链路状态的管理

数据链路层的协议有很多种,常见的有以太网(Ethernet),无线局域网(Wi-Fi)和点对点协议(PPP)等。不同协议适用于不同的网络环境和需求

关于以太网

1. 基本概念

“以太网”不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等

  • 例如以太网中的网线必须使用双绞线,传输速率有10M,100M,1000M等
  • 以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等

2. 以太网帧格式

在这里插入图片描述

字段解释
目的地址目的MAC地址
源地址源MAC地址
帧类型有效载荷的类型,0800表示IP数据报,0806表示ARP请求应答,0835表示RARP请求应答
PAD以太网帧数据不能少于46不能大于1500字节,否则就要添加PAD就是随机值
帧末尾CRC 校验码

两个结论:
① 报头和有效载荷如何分离?
 MAC帧的报头是固定长度,即前14字节为报头,后续为有效载荷

② 有效载荷如何向上交付?
 根据报头的类型字段,0800 代表IP协议;0806 代表ARP请求/应答;0835 代表RARP请求/应答。以此交付对应的上层

3. MAC vs IP

在这里插入图片描述
MAC地址和IP地址的区别
1、范围、层次及使用

  • MAC地址是在局域网(子网,内网)范围内唯一标识设备的地址,一般只能在同一局域网内进行通信(寻址 和 转发),例如:以太网的数据链路层使用MAC地址进行设备之间的通信
  • IP地址可以在广域网(公网,外网)范围内唯一标识设备的地址,可以在不同的网络中进行通信(跨网络通信 和 路由选择),例如:在因特网中的网络层使用IP地址进行主机之间的通信

在路由转发的过程中,IP地址描述的是路途总体的起点和终点,MAC地址描述的是路途上的每一个区间的起点和终点

2、分配方式

  • MAC地址由网卡厂商分配,通常是固定的,与设备绑定,一般情况下不会改变
  • IP地址由网络管理员分配,可以是静态分配或动态分配(如DHCP),可以根据需要进行更改

证明如下:
在这里插入图片描述
上面如果主机A想访问服务器B

  • 服务器B具有公网IP,所以主机A可以直接使用公网IP进行访问;IP数据报中源IP地址是私有IP——192.168.1.201/24,目的IP地址是公网IP——122.77.241.3/24
  • 但子网的数据要想发到公网,需要路由器根据路由表进行转发。所以要先将数据发给路由器,但IP报文内的目的IP又不能更改为路由器的IP地址,不然后续无法发送到服务器B。所以需要MAC地址,用于局域网(子网)内的数据发送
  • 主机A在MAC帧中,源MAC地址为自己的MAC地址,目的MAC地址为路由器的MAC地址,发送数据
  • 路由器收到主机A的数据帧,解包查看IP地址,发现不是给自己的,再根据路由表进行路由转发,途中可能还需要经过很多个路由器,使用的也是MAC地址,路由转发其实就是在多个局域网间跳转。

结论:MAC地址用于局域网内通信,IP地址用于广域网通信,即起点和终点

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC与SpringCloud的区别

SpringMVC与SpringCloud的核心区别 功能定位 • SpringMVC: 基于Spring框架的Web层开发模块,采用MVC(Model-View-Controller)模式,专注于处理HTTP请求、路由分发(如DispatcherServlet)和视图…

使用MATIO库写入MATLAB结构体(struct)数据的示例程序

使用MATIO库写入MATLAB结构体(struct)数据的示例程序 MATIO是一个用于读写MATLAB数据文件(.mat)的开源C库。下面是一个完整的示例程序&#xff0c;展示如何使用MATIO库创建一个包含结构体数据的MAT文件。 示例程序 #include <stdio.h> #include <stdlib.h> #inc…

SSE与Streamable HTTP的区别:协议与技术实现的深度对比

引言 在现代Web开发中&#xff0c;实时数据传输是许多应用的核心需求&#xff0c;从聊天应用到股票市场更新&#xff0c;从游戏服务器到AI模型通信。为了满足这一需求&#xff0c;各种技术应运而生&#xff0c;其中Server-Sent Events (SSE)和Streamable HTTP是两种重要的实时…

【Easylive】视频在线人数统计系统实现详解 WebSocket 及其在在线人数统计中的应用

【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 视频在线人数统计系统实现详解 1. 系统架构概述 您实现的是一个基于Redis的视频在线人数统计系统&#xff0c;主要包含以下组件&#xff1a; 心跳上报接口&#xff1a;客户端定期调用以…

Linux 高级命令与常见操作:文本处理、系统管理与网络调试

下面是一份针对已经熟悉 Linux 基础命令的用户所整理的「高级命令与常见操作」笔记&#xff0c;涵盖文本处理、系统管理、网络调试与其他常用的进阶技巧。请你审核下面笔记&#xff0c;检查是否有过时的内容&#xff0c;如有请进行替换&#xff0c;确保其符合现代化需求&#x…

使用MFC ActiveX开发KingScada控件(OCX)

最近有个需求&#xff0c;要在KingScada上面开发一个控件。 原来是用的WinCC&#xff0c;WinCC本身是支持调用.net控件&#xff0c;就是winform控件的&#xff0c;winform控件开发简单&#xff0c;相对功能也更丰富。奈何WinCC不是国产的。 话说KingScada&#xff0c;国产组态软…

QScrollArea 内部滚动条 QSS 样式失效问题及解决方案

在使用 Qt 进行 UI 开发时,我们经常希望通过 QSS(Qt Style Sheets)自定义控件的外观,比如为 QScrollArea 的内部滚动条设置特定的样式。然而,有开发者遇到了这样的问题:在 UI 设计器中预览 QSS 显示效果正常,但程序运行时却显示为系统默认样式。经过反复测试和调试,最终…

使用OpenSceneGraph生成3D数据格式文件

OpenSceneGraph (OSG) 提供了多种方式来生成和导出3D数据格式文件。以下是详细的生成方法和示例代码&#xff1a; 一、基本文件生成方法 1. 使用osgDB::writeNodeFile函数 这是最直接的生成方式&#xff0c;支持多种格式&#xff1a; #include <osgDB/WriteFile>osg:…

JMeter接口性能测试从入门到精通

前言&#xff1a; 本文主要介绍了如何利用jmter进行接口的性能测试 1.在测试计划中添加线程组 1.1.线程组界面中元素含义 如果点击循环次数为永远&#xff1a; 2.添加HTTP取样器 2.1.填写登录接口的各个参数 2.2.在线程组下面增加查看结果树 请求成功的情况&#xff1a; 请求…

C++抽卡模拟器

近日在学校无聊&#xff0c;写了个抽卡模拟器供大家娱乐。 代码实现以下功能&#xff1a;抽卡界面&#xff0c;抽卡判定、动画播放、存档。 1.抽卡界面及判定 技术有限&#xff0c;不可能做的和原神一样精致。代码如下&#xff08;注&#xff1a;这不是完整代码&#xff0c;…

详解相机的内参和外参,以及内外参的标定方法

1 四个坐标系 要想深入搞清楚相机的内参和外参含义&#xff0c; 首先得清楚以下4个坐标系的定义&#xff1a; 世界坐标系&#xff1a; 名字看着很唬人&#xff0c; 其实没什么大不了的&#xff0c; 这个就是你自己定义的某一个坐标系。 比如&#xff0c; 你把房间的某一个点定…

学透Spring Boot — 011. 一篇文章学会Spring Test

系列文章目录 这是学透Spring Boot的第11篇文章。更多系列文章请关注 CSDN postnull 用户的专栏 文章目录 系列文章目录Spring Test的依赖Spring Test的核心功能SpringBootTest 加载Spring上下文依赖注入有问题时Spring配置有问题时 WebMvcTest 测试Web层&#xff08;Controll…

Mysql 数据库编程技术01

一、数据库基础 1.1 认识数据库 为什么学习数据库 瞬时数据&#xff1a;比如内存中的数据&#xff0c;是不能永久保存的。持久化数据&#xff1a;比如持久化至数据库中或者文档中&#xff0c;能够长久保存。 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长…

新一代AI架构实践:数字大脑AI+智能调度MCP+领域执行APP的黄金金字塔体系

新一代AI架构实践&#xff1a;数字大脑智能调度领域执行的黄金金字塔体系 一、架构本质的三层穿透性认知 1.1 核心范式转变&#xff08;CPS理论升级&#xff09; 传统算法架构&#xff1a;数据驱动 → 特征工程 → 模型训练 → 业务应用 新一代AI架构&#xff1a;物理规律建…

macOS可视化桌面配置docker加速器

macOS可视化桌面配置docker加速器 在镜像settings->docker Engine改为国内镜像修改为国内镜像重启docker(可视化界面启动或者使用命令行)使用命令重启可视化界面重启 在镜像settings->docker Engine改为国内镜像 修改为国内镜像 {"registry-mirrors": ["…

Nginx 基础使用(2025)

一、Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暂存目录 ├── conf # Nginx所有配置文件的目录 │ ├── fastcgi.conf # fastcgi相…

用spring-webmvc包实现AI(Deepseek)事件流(SSE)推送

前后端&#xff1a; Spring Boot Angular spring-webmvc-5.2.2包 代码片段如下&#xff1a; 控制层&#xff1a; GetMapping(value "/realtime/page/ai/sse", produces MediaType.TEXT_EVENT_STREAM_VALUE)ApiOperation(value "获取告警记录进行AI分析…

基于Python的招聘推荐数据可视化分析系统

【Python】基于Python的招聘推荐数据可视化分析系统&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 &#x1f680;&#x1f31f; 基于Python的招聘推荐数据可视化分析系统&#xff01;&#x1…

使用注解开发springMVC

引言 在学习过第一个springMVC项目建造过后&#xff0c;让我们直接进入真实开发中所必需的注解开发&#xff0c; 是何等的简洁高效&#xff01;&#xff01; 注&#xff1a;由于Maven可能存在资源过滤的问题&#xff0c;在maven依赖中加入 <build><resources>&l…

linux专题3-----禁止SSH的密码登录

要在linux系统中禁止密码登录&#xff0c;您可以通过修改 SSH 配置来实现。请按照以下步骤操作(此处以 Ubuntu为例)&#xff1a; 1、SSH 登录到您的服务器&#xff08;或直接在命令行模式下&#xff09;。 2、备份 SSH 配置文件&#xff1a; 在终端中运行以下命令以备份现有的…