【网络世界】数据链路层
目录
🌈前言🌈
📁 初识数据链路层
📂 概念
📂 协议格式
📁 MAC地址
📂 概念
📂 与IP地址的区别
📁 MTU
📂 对IP协议的影响
📂 对UDP协议的影响
📂 对TCP协议的影响
📁 ARP协议
📂 引入
📂 格式
📂 工作流程
📂 ARP欺骗
📁 总结
🌈前言🌈
欢迎收看本期【网络世界】,本期内容讲解TCP/IP协议栈中的数据链路层,包含了MAC地址,局域网通信,ARP协议等。
📁 初识数据链路层
📂 概念
数据链路层(Data Link Layer)也称为网络接口层,是计算机网络协议栈中的第二层,位于物理层之上,网络层之下,而在TCP/IP参考模型中则被视为最低层。它主要负责在相邻节点之间提供可靠的数据传输服务。数据链路层通过封装成帧、差错检测、流量控制等机制,确保数据帧在物理链路上能够准确无误地传输。并涉及物理地址(如MAC地址)与逻辑地址(如IP地址)之间的映射机制。
作用:
数据链路层的主要作用是将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,从而向网络层提供一条可靠的、无差错的链路。这一层通过封装成帧、差错检测、流量控制等功能,确保数据在传输过程中的完整性和可靠性。
认识以太网
• "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内 容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速 率等;
• 例如以太网中的网线必须使用双绞线; 传输速率有 10M, 100M, 1000M 等;
• 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线 LAN 等
📂 协议格式
源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址), 长度是 48 位,是在网 卡出厂时固化的。
帧协议类型字段有三种值,分别对应 IP、ARP、RARP。
帧末尾是 CRC 校验码。
📁 MAC地址
📂 概念
MAC地址是用来识别数据链路层中相互连接的节点。长度是48位(6B),一般用16进制+冒号形式表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了,不能被修改,mac地址通常是唯一的(虚拟机mac地址并不是真实的mac地址,可能会冲突;有些网卡也支持自己配置)
📂 与IP地址的区别
IP地址是逻辑地址,是网络层的概念,表示全网的唯一台主机。描述的是路径总体的起点和终点。
mac地址是物理地址,是数据链路层的概念,用来确认网络设备位置的位址。描述的是路途上的每一个区间的起点和终点。
MAC地址作为物理地址,确保了局域网内设备之间的准确通信;而IP地址作为逻辑地址,则实现了不同网络之间的互联互通。
- 物理与逻辑的区别:
- MAC地址:是物理地址,与设备的硬件直接相关,由设备制造商在生产时烧录在网卡上,具有唯一性和固定性。
- IP地址:是逻辑地址,用于在网络中标识设备或主机,由网络管理员进行配置和管理,具有一定的灵活性和可变性。
- 工作层次不同:
- MAC地址工作在OSI模型的第二层(数据链路层),用于在局域网内控制数据包的传输。
- IP地址则工作在OSI模型的第三层(网络层),用于在不同网络之间标识和传输数据包。
- 范围与扩展性:
- MAC地址:只能在同一个局域网内使用,无法跨越不同的网络。由于其长度固定为48位,无法进行扩展。
- IP地址:可以在全球范围内的任何网络中使用,支持跨网络通信。IP地址可以根据需要进行分段和组织,实现更加丰富、复杂和可扩展的网络拓扑结构。
- 分配与管理:
- MAC地址:由设备制造商在设备制造时分配,具有全球唯一性,用户无法更改。
- IP地址:由网络管理员根据网络拓扑和需求进行分配和管理,可以根据需要进行更改或重新分配。
- 作用与功能:
- MAC地址:主要用于局域网内的设备标识和数据传输控制,确保数据包能够准确地传输到目标设备。
- IP地址:用于在网络中标识设备或主机,实现数据在不同网络之间的传输和路由选择。此外,IP地址还可以用于建立网络连接、进行网络扫描、实现主机发现和设备管理等任务。
📁 MTU
MTU(Maximum Transmission Unit,最大传输单元)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。它限制了数据链路层上面能发送的数据包的最大尺寸。这个参数通常与通信接口有关(例如以太网、PPP等)。
• 以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不够 46 字节,要在后面补填充位;
• 最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的 MTU;
• 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了,则需要对数据包进行分片(fragmentation);
• 不同的数据链路层标准的 MTU 是不同的
📂 对IP协议的影响
由于数据链路层对MTU的影响,对较大的IP数据包要进行分片
• 将较大的 IP 包分成多个小包, 并给每个小包打上标签;
• 每个小包 IP 协议头的 16 位标识(id) 都是相同的;
• 每个小包的 IP 协议头的 3 位标志字段中, 第 2 位置为 0, 表示允许分片, 第 3 位 来表示结束标记(当前是否是最后一个小包, 是的话置为 1, 否则置为 0);
• 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;
• 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 IP 层不会负 责重新传输数据;
📂 对UDP协议的影响
一旦UDP携带的数据超过1472(1500B - 20B(IP首部) - 8 (UDP首部) ),那么就会在网络层进行分片。这个IP数据包有任何一个丢失,都会引起对端网络层重组失败,但UDP是不可靠的,面向无连接的,因此UDP数据报被网络层分片,数据丢失的概率就大大增加了。
📂 对TCP协议的影响
TCP数据报也受限于MTU,TCP单个数据报最大长度为MSS(Max Segment Size).TCP在建立连接时,通信双方会进行MSS协商。最理想情况下,MSS的值正好是IP不会被分片处理的最大长度。
通信双方在发送SYM的是偶会在TCP头部写入自己支持的MSS,然后双方告知对方的MSS值后,选择较小值作为最终的MSS。MSS值就是TCP首部的40B选项中。
📁 ARP协议
📂 引入
在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件地址。数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。
ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系,负责将IP地址转换成MAC地址。
RARP协议负责将MAC地址转换成IP地址。(不讲解RARP协议,主要以ARP协议进行讲解)
📂 格式
• 注意到源 MAC 地址、目的 MAC 地址在以太网首部和 ARP 请求中各出现一次, 对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
• 硬件类型指链路层网络类型,1 为以太网;
• 协议类型指要转换的地址类型,0x0800 为 IP 地址;
• 硬件地址长度对于以太网地址为 6 字节;
• 协议地址长度对于和 IP 地址为 4 字节; • op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答
📂 工作流程
我们先来理解一下如何构建IP地址映射Mac地址的关系。
(1). 路由器(或源主机)发出 ARP 请求,每个主机取出MAC帧,取出帧中ARP,首先检查oper。
(2). 如果是arp请求,就对比destip和自己的ip,如果一样,说明请求自己的mac地址,然后取出srcip和srcmac,构建arp应答单播给路由器。
(3). 路由器收到arp应答,取出mac帧,发现oper是arp应答,然后提取srcIP和srcMac,构建映射关系。
为什么是暂时缓存呢?主机可能会随时更换网卡,如果是一成不变的,那么就会导致错误。因此需要定时更换,暂时缓存。
📂 ARP欺骗
ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术。
ARP欺骗通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通或数据被截获。攻击者发送假的ARP数据包到网上,尤其是送到网关上,目的是要让送至特定的IP地址的流量被错误地送到攻击者所取代的地方。
📁 总结
以上,就是本期【网络世界】的内容了,包含了数据链路层的基本概念,例如Mac地址是什么,局域网通信使用的就是MAC地址。
学习了为什么我们只需要知道IP地址,就能够经过一跳一跳的发送到目的主机呢?因为ARP协议的存在,将IP地址转换为Mac地址,Mac地址充当了路径每个区间的起点和终点。
如果感觉本期内容对你有帮助,欢迎点赞,关注,收藏Thanks♪(・ω・)ノ
相关文章:

【网络世界】数据链路层
目录 🌈前言🌈 📁 初识数据链路层 📂 概念 📂 协议格式 📁 MAC地址 📂 概念 📂 与IP地址的区别 📁 MTU 📂 对IP协议的影响 📂 对UDP协议的影响…...

AllReduce通信库;Reduce+LayerNorm+Broadcast 算子;LayerNorm(层归一化)和Broadcast(广播)操作;
目录 AllReduce通信库 一、定义与作用 二、常见AllReduce通信库 三、AllReduce通信算法 四、总结 Reduce+LayerNorm+Broadcast 算子 1. Reduce 算子 2. LayerNorm 算子 3. Broadcast 算子 组合作用 LayerNorm(层归一化)和Broadcast(广播)操作 提出的创新方案解析 优点与潜在…...

2024.8.5 作业
使用有名管道实现,一个进程用于给另一个进程发消息,另一个进程收到消息后,展示到终端上,并且将消息保存到文件上一份 代码: /*******************************************/ 文件名:create.c /********…...

MySQL数据库——数据库的基本操作
目录 三、数据库的基本操作 1.数据库中库的操作 ①创建数据库 ②字符集和校验规则 ③操纵数据库 ④备份与恢复 2.数据库中表的操作 ①创建表 ②查看表 1> 查看表位于的数据库 2>查看所有表 3>查看表中的数据 4>查看创建表的时候的详细信息 ③修改表 …...

SQL数据库语句练习
1、mysql常用的数据类型是_整数(int)__、_小数(decimal)__、_字符串(varchar)__、_日期时间(datetime)___。 2、mysql的约束有__主键(primary key)_、_非空&…...

【Python】常用的pdf提取库介绍对比
提取PDF内容的Python库有多种选择,每个库都有其独特的优缺点。以下是一些常用的库以及它们的优缺点和示例代码: pdfplumberPyMuPDF (fitz)PyPDF2PDFMinerCamelot 1. pdfplumber 优点: 易于使用,提供简单直观的API。能提取文本…...

sbatch提交并行作业 运行python程序 指定输入参数从1到100
#!/bin/bash #SBATCH --job-namemy_python_job #SBATCH --outputmy_python_job_%j.out #SBATCH --errormy_python_job_%j.err #SBATCH --ntasks100# 载入所需模块 # module load python/3.8.5# 执行Python脚本并传递任务ID作为参数 for i in {1..100}; dosrun python my_script…...

OD C卷 - 中庸行者
中庸行者 (200) 给一个m*n的整数矩阵作为地图,矩阵数值为地形的高度,选择图中任意一点作为起点,向左右上下四个方向移动: 只能上坡、下坡,不能走相同高度的点;不允许连续上坡 或者连…...

最新CSS3横向菜单的实现
横向菜单 原始代码: <nav class"list1"><ul><li><a href"#">Shirts</a></li><li><a href"#">Pants</a></li><li><a href"#">Dresses</a>…...

(2024,LlamaGen,Llama,自回归下一token预测,模型扩展)自回归模型优于扩散:Llama 用于可扩展图像生成
Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation 目录 0. 摘要 1. 引言 2. 自回归模型在图像生成中的应用 2.1 概述 2.2 图像 tokenizer 2.3 自回归模型生成图像 2.4 规模扩展 2.5 服务 3. 实验 5. 结论 0. 摘要 我们介绍 LlamaGen&…...

重新安装操作系统的软件都有哪些?
重新安装操作系统关键步骤 重新安装操作系统通常涉及到几个关键步骤:创建可启动媒体、备份现有数据、安装操作系统、以及系统初始化和配置。以下是一些常用工具和软件,它们可以帮助你完成这些步骤: 创建可启动媒体 Rufus:用于W…...

深圳水务展|2025深圳国际水务科技博览会
2025深圳国际水务科技博览会 展会主题: 新质生产力赋能水务产业高质量发展 展会时间:2025年7月24-26日 展会地点:深圳会展中心(福田) 主办单位: 广东省水利学会 深圳市水务学会 协办单位: 中国水利…...

OpenAI not returning a result?
题意:OpenAI 没有返回结果吗? 问题背景: Im trying to use the OpenAI beta but I cant seem to get a result. Im accessing the API via an NPM package (openai-api - npm). I have that setup and working but when I make a request th…...

[Windows]_[初级]_[GetVersionEx获取系统版本错误的原因]
场景 开发WTL/ATL/Win32程序时, 有时候需要获取系统版本号,以便判断用户在使用软件时的系统。在某一天突然发现获取的系统版本号是错的, 一直是版本号6.2.x,什么情况? 说明 如果软件没有针对Win8.1或Win10以上的系统做兼容处理,返回的是Wi…...

2024,Java开发在中国市场还有发展前景吗?
随着2024年的到来,Java作为一种经典而强大的编程语言,依然在中国的软件开发市场中扮演着重要角色。然而,许多人对Java的未来发展前景持有不同的看法。让我们来探讨一下当前情况和未来的走向。 Java程序员真的过剩了吗? 2023年, 各…...

gcc: string.c_str gcc-8.5的一个问题
https://en.cppreference.com/w/cpp/string/basic_string/c_str https://sourceforge.net/p/cppcheck/wiki/ListOfChecks/ common mistakes when using string::c_str()string的这个成员是返回c类型的一个字符数组指针。但是这个指针所对应的地址有赖于string对象的生命周期。所…...

一道笔试题 - 无重复字符的最长子串
老生常谈的一道题,常见并 文章目录 描述预期结果Java代码 描述 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 预期结果 Java代码 import java.util.HashSet; import java.util.Set;public class Demo2 {public static void main(S…...

C#反射的NullReferenceException
背景 xml文件中有些元素的属性被删除,导致文件无法被读取(C#)。 调试之后发现,因为属性被删除,读进来会保持默认值null,在后续的反射中如果用这个null给字符串属性赋值,会抛异常。 另外发现前面…...

100道C/C++面试题
1. static的作用2. 引用与指针的区别3. .h头文件中的ifndef/define/endif 的作用4 #include<file.h>与#include"file.h"的区别?5 描述实时系统的基本特性6 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?7 什么是平衡二叉树?8 堆栈溢…...

Python(模块)
模块编写完成就可以被其他模块进行调用并使用被调用模块的功能。 import导入方式的语法结构: import模块名称【as别名】 from……import导入方式的语法结构: from模块名称,import变量/函数/类/*(*是通配符) impor…...

【八股文】Java基础篇
1. 和 equals的区别是什么? 判断两个变量或者实例是否都指向同一内存空间的值(不仅值相同,地址也要相同)equals是判断两个变量执行的内存空间的值是否相同(值相同,地址可以不同),所…...

python rsa如何安装
Python中的一些模块是用一个包管理器来发布的,RSA模块就是,所以首先需要安装setup tools工具。 1、下载文件:ez_setup.py 2、安装: sudo python ez_setup.py 3、下载RSA安装包:rsa-3.1.1-py2.7.egg 4、安装RSA&…...

P10289 [GESP样题 八级] 小杨的旅游
Description 给定一棵 n n n 个点的树,每条边权值均为 1 1 1,树上有 k k k 个关键点,关键点们在 0 0 0 的时间内相互可达, q q q 次询问,求 s → t s\to t s→t 的最短路。 Analysis 考虑暴力建图,…...

网络编程 ----------- 4、组播与广播
1、广播 broadcast 广播是指向同一个网络中所有的主机传输数据只有传输层协议为 UDP协议时,才支持广播 TCP是端对端,广播是一对多 ,所以无法符合其要求。 1)广播地址 广播地址的计算: 子网掩码…...

最短路径算法:Bellman-Ford算法
引言 在图论中,Bellman-Ford算法是一种用于计算单源最短路径的算法。与Dijkstra算法不同,Bellman-Ford算法可以处理带有负权边的图,并且可以检测图中是否存在负权环。本文将详细介绍Bellman-Ford算法的定义、步骤及其实现。 Bellman-Ford算…...

爬虫:xpath模块及昵图网实例
xpath模块 from lxml import etreestr1 """ <div><ul><li class"item-0"><a href"link1.html">first item</a></li><li class"item-1"><a href"link2.html">second…...

高级java每日一道面试题-2024年8月03日-web篇-forward和redirect有什么区别?
如果有遗漏,评论区告诉我进行补充 面试官: forward和redirect有什么区别? 我回答: 在Java Web开发中,forward和redirect是Servlet容器提供的两种用于页面跳转的技术。它们的主要区别在于客户端感知的方式、URL地址的变化、请求对象的共享等方面。下面详细介绍两…...

如何让你的网站拥有更好的体验
在HTML中,属性是用于提供关于HTML元素的额外信息。接下来我们将讲解13个可以让用户拥有更好体验的HTML属性。 Accept 属性 我们可以在<input>元素(仅适用于文件类型)中使用accept属性来指定服务器可以接受的文件类型。 <input ty…...

opencascade AIS_TypeFilter AIS_XRTrackedDevice源码学习
opencascade AIS_TypeFilter 前言 通过它们的类型选择交互对象。该过滤器会对本地上下文中的每个交互对象提出问题, 以确定它是否具有非空的所有者,并且如果是,则检查它是否是所需类型。 如果对象在每种情况下都返回 true,则保留…...

使用Spring AOP监控指定方法执行时间
文章目录 一、加入pom依赖二、切面类和注解三、执行方法 一、加入pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>二、切面类和注解 import java.lang.…...