网络原理(5)—— 数据链路层详解

目录

一. 以太网

1.1 认识以太网

1.2 网卡与以太网

1.3 以太网帧格式

二. 认识MAC地址

三. MAC地址 与 IP地址 的区别

4.1 定义

4.2 分配方式

4.3 工作层次

4.4 地址格式

4.5 寻址方式

四. ARP协议 

4.1 引入 

4.2 ARP的概念

4.3 ARP工作原理

五. MTU 与 MSS 

 5.1 MTU 

5.2 MSS 

 5.3 TCP分段与IP分片 

5.4 避免分片 


一. 以太网

1.1 认识以太网

   以太网(Ethernet)不是一种具体的网络,而是一种广泛使用的局域网(LAN)技术,它规定了物理层和数据链路层的通信协议。以太网可以使用多种传输介质,包括同轴电缆、双绞线和光纤,就像是家里的电线系统,只不过它是用来连接电脑和其他设备的。

   路由器通过以太网线连接到调制解调器(俗称“猫”,“光猫”-->“光纤调制解调器”),然后通过这个调制解调器连接到互联网,这样就能上网了。

举个例子:

   如果你家里有很多电器,比如灯泡、电视和冰箱,它们都需要用电来工作。电线就是连接这些电器和电源的一个通道,让电能够从电源传到每个电器。以太网也是这样,它是一种通道,让电脑和其他设备能够互相“说话”和交换信息。 

1.2 网卡与以太网

   网卡(Network Interface Card,简称NIC)是一种硬件设备,用于将计算机连接到计算机网络,使计算机能够通过该网络与其他计算机进行通信。网卡通常插在计算机的主板扩展槽中,或者通过USB接口连接,现在很多计算机的网卡都是直接集成在主板上。

   网卡与以太网的关系,可以这样理解:以太网是一种常见的局域网技术,而网卡就是用来实现电脑与以太网连接的“桥梁”。简单来说,如果你想用电脑上网,就需要通过网卡连接到以太网,这样才能上网。就好比你想打电话给朋友,需要先拿起电话(网卡),然后通过电话线(以太网)连接到对方。

   网卡是实现以太网通信的关键组件之一,提供了计算机与以太网传输介质(如双绞线、光纤等)之间的物理接口使得计算机能够按照以太网的标准进行网络通信。没有网卡,计算机就无法直接连接到以太网网络。

1.3 以太网帧格式

二. 认识MAC地址

   MAC地址,全称媒体访问控制地址(Media Access Control Address),是一个唯一的标识符,用来定义网络设备的位置。每个网络设备(比如网卡、路由器、交换机等)在出厂时都会被分配一个唯一的MAC地址。 在局域网(比如家里的网络)中,设备之间通过MAC地址来直接通信。

   MAC地址通常由六组两位的十六进制数字组成,这些数字通过冒号或者短横线分隔。例如:00:1A:2B:3C:4D:5E 或者 00-1A-2B-3C-4D-5E。

   MAC地址在网卡出厂时就确定了,不能修改,是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址) 

三. MAC地址 与 IP地址 的区别

4.1 定义
  • MAC地址:是一个唯一的硬件地址,它被烧录在网络接口卡(NIC)上,用于在局域网(LAN)中标识硬件设备
  • IP地址:是一个逻辑地址,用于在网络中标识设备的网络位置,可以是局域网、广域网或互联网。
4.2 分配方式
  • MAC地址:通常是固定的,由网络接口卡的制造商分配,并在生产过程中烧录到硬件中。
  • IP地址:可以是静态分配的,也可以是动态分配的(通过DHCP服务器)。IP地址可以根据网络配置的变化而改变。
4.3 工作层次
  • MAC地址:工作在数据链路层(OSI模型的第二层),负责同一网络段内,相邻设备之间传输数据帧。(微观)
  • IP地址:工作在网络层(OSI模型的第三层),负责不同的网络之间路由数据包,进行路由规划(宏观)
4.4 地址格式
  • MAC地址:通常6个字节表示,MAC地址当前仍然可以给每个设备,都分配一个唯一的地址值。
  • IP地址:对于IPv4,使用4个字节表示;对于IPv6,使用16个字节表示
4.5 寻址方式
  • MAC地址:用于直接在局域网内寻找设备,通常是通过ARP将IP地址解析为MAC地址。以太网数据帧里面的MAC地址随着转发的过程,源MAC和目标MAC都会时刻发生改变(每经过一个交换机/路由器都会发生变化)MAC地址描述的是路途上的每一个区间的起点和终点
  • IP地址:用于在网络层寻址和路由数据包,进行路由规划,确保数据能够从源地址传输到目的地址。 IP地址描述的是路途总体的起点和终点

四. ARP协议 

4.1 引入 

   ARP协议就像是一个电话簿,帮助电脑在网络中找到其他电脑的"家门号码"。想象一下,你在一家大公司里,想要找到同事张三的家,但是你只知道他的名字(IP地址),不知道他家的具体地址(MAC地址)。这时候,你会在公司的大厅(局域网)里大声喊:“张三,你在哪?告诉我你家地址!”(发送ARP请求)。张三听到后,会告诉你他家的地址(发送ARP回复)。这样,下次你想找张三的时候,就可以直接按地址去找他了,而不需要再大声喊叫。
   简单来说,ARP协议就是电脑之间相互询问和告知彼此物理地址(MAC地址)的一种方式,这样它们就能在网络中正确地发送信息了。

4.2 ARP的概念

   ARP(Address Resolution Protocol)协议工作在OSl模型的第二层,即数据链路层。它的主要功能是将网络层(第三层)使用的IP地址解析为数据链路层(第二层)使用的MAC地址。

   在发送数据包时,网络层的IP协议负责确定数据包的目标IP地址,但是数据链路层的以太网协议需要知道目标的MAC地址才能在局域网内传输数据包。ARP协议就在这个转换过程中起到桥梁作用,它通过查询局域网内的设备来获取目标IP地址对应的MAC地址,从而确保数据包能够被正确地发送到目的地。 

4.3 ARP工作原理

1. 解析请求:当一个设备需要向局域网内的另一个设备发送数据时,它会首先检查自己的ARP缓存(一个内存表,用于存储IP地址与MAC地址的映射关系)
   如果目标IP地址的MAC地址不在缓存中,源设备将发送一个ARP请求,广播到局域网上的所有设备。

(ARP请求包含以下信息:a. 发送设备的IP地址和MAC地址    b. 目标设备的IP地址    c. 一个标志字段,表示这是一个ARP请求)

2. 解析响应:局域网上的所有设备都会收到这个ARP请求,但只有目标IP地址对应的设备会响应,响应设备会发送一个ARP回复,其中包含其MAC地址

3. 更新ARP缓存:源设备收到ARP回复后,会将目标IP地址和对应的MAC地址存储在自己的ARP缓存中,以便将来使用。

4. 数据传输:现在源设备知道了目标设备的MAC地址,它就可以将数据帧发送到局域网上的正确设备。

ARP的正常工作流程

  1. 设备A想要与设备B通信,但只知道设备B的IP地址,不知道MAC地址。
  2. 设备A会在局域网内广播一个ARP请求:“谁是IP地址X的拥有者,请告诉我你的MAC地址。”
  3. 设备B收到这个请求后,会回复一个ARP响应,告诉设备A自己的MAC地址。
  4. 设备A收到设备B的MAC地址后,就可以开始通信了。 

ARP欺骗(攻击行为)

   攻击者发送伪造的ARP响应给局域网中的设备,告诉它们:“我是IP地址Y的拥有者,我的MAC地址是Z。”  这样其他设备就会错误地将原本发送给IP地址Y的数据发送给攻击者的MAC地址。攻击者可以拦截、修改或丢弃这些数据。


ARP协议可以让当前设备获取到周围设备上的IP地址和MAC地址之间的映射关系。

  • IP协议路由转发的过程是拿着 “IP地址” 进行路由查表,得到的是 “网络接口”(抽象的概念);
  • ARP协议就是将“网络接口”转换成更具体的MAC地址,知道是具体的某个设备(IP地址 --> MAC地址)

网络接口

1. 定义

  • 网络接口指的是网络设备的物理或逻辑端口,用于设备与网络之间的连接。例如,计算机上的以太网端口、无线网卡或者虚拟网络接口。

2. 与IP地址的关系

  • 网络接口使用IP地址来发送和接收数据包。当一个设备想要与另一个设备通信时,它会将数据包发送到目标设备的IP地址。
  • 每个网络接口都需要至少一个IP地址来在网络上进行通信。一个网络接口可以配置一个或多个IP地址,这取决于网络配置和需求。
  • 在配置网络接口时,IP地址会被绑定到该接口上,这样当数据包发送到该IP地址时,网络设备就知道应该通过哪个接口来处理这些数据。
  • 网络接口负责将IP地址转换为MAC地址(通过ARP协议),以便在数据链路层上进行实际的帧传输。 

通过ARP协议,就可以得到网络接口与MAC地址的映射关系表: 

五. MTU 与 MSS 

 5.1 MTU 

    MTU(Maximum Transmission Unit),是指网络中一个数据包的最大传输单元,也就是一个数据包能够携带的最大数据量。

MTU的作用:

   MTU的大小决定了网络设备在发送数据时是否需要将数据分割成多个较小的数据包。如果数据包超过了MTU的大小,它就需要被分割,这个过程称为分片(fragmentation)分片会增加网络的开销,降低传输效率,还可能因为分片导致数据包丢失。

以太网 MTU:以太网MTU通常指的是在以太网(局域网技术)中,一个网络帧可以携带的最大数据量,以太网帧的负载就是以太网MTU。对于标准的以太网,这个值通常是1500字节。

IP MTU:IP MTU指的是在IP层,IP数据包的大小就是 IP MTU。这通常比以太网MTU要小,因为它需要为IP头部预留空间,可以说以太网MTU相当于IPMTU的一个容器,但IP MTU和以太网MTU通常会是一样的大小。

5.2 MSS 

   MSS(Maximum Segment Size)是指在一个TCP分段(segment)中,除去TCP头部的数据部分的最大大小。 MSS是在TCP连接建立时,两端协商的一个值,它决定了在TCP层每个数据包可以携带的有效数据量。

MSS的作用:

   MSS是为了确保TCP数据包在加上TCP头部后,整体大小不会超过网络的MTU,从而避免IP层对数据包进行分片通常,MSS的值会设置为MTU - IP头部 - TCP头部。通过适当设置MSS,可以优化网络性能,减少数据包分片的几率,提高网络的传输效率。

举个例子:

  • 假设以太网的MTU是1500字节。
  • IP头部通常是20字节,TCP头部通常是20字节。
  • 那么MSS可以是1500-20(IP头部)-20(TCP头部)=1460字节。 

 5.3 TCP分段与IP分片 

   如果发送了应用层发送了一个超大的数据,TCP就会进行分段(TCP Segmentation),分成多个TCP段发送,在分段的时候会考虑到网络层和数据链路层各自的职责。换句话说,TCP分段就是为了后面的IP不用再分片,因此TCP需要确保MSS的值不会过大。

    所以,在TCP三次握手阶段,客户端会和服务器进行协商,在协商MSS之前,两边都会比较自己的MSS缓冲区大小,以及MTU大小。如果客户端通知的MSS是1460,服务端通知的是1440,则会选择较小值1440,这样可以最大程度地避免数据包在中途被分片。 

   但是,数据包依旧可能会遇到链路上的设备接口低于MTU低于1500的路由,此时可能会进行IP分片(IP Segmentation)

   假如,你在上网的时候,数据包经过了一个只支持MTU为576字节的接口,这个时候数据包会被迫分为三份(具体分数看数据包大小),并且在每个数据包加上IP首部。如果原本只有20字节的IPv4首部,那么对于三层来说就额外多了40字节(20+20)。

  也许你会觉得40字节也不会挤压多少带宽,但如果这三个数据包丢了其中一个呢?此时会进行“重传”,但负责重传的是TCP或者4层以上进行,而不是网络层的IP进行重传。IP协议本来就是不可靠传输,因此其中一个IP分片丢失了,需要重传所有分片,也就是重传那一段TCP数据,传输的效率大幅度降低,而且有时候分片更容易导致丢包

   在IPv4协议的首部,有三个区域在分片时候起到重要作用。

  • 标识:标记分片,方便重组这些分片。
  • 片偏移:在重组时需要根据片偏移进行排序。
  • 标志:在分片的时候,其中的MF标志位会用到,MF是more fragment的缩写。当MF标志位为1时,表示后面还有分片。

   这里的问题是,如果路由设备收到中间的一个分片,可以用MF标志位判断出后面是否还有分片,但不知道后面还有多少分片而路由设备的缓冲区是有限的,分片太多,很可能会因为缓冲区的限制,导致部分分片被丢弃。

5.4 避免分片 

   处于三层的路由设备,职责就是更快更高效的传输数据包,分片会增加路由设备的算力和内存的负担。为了避免分片,很多路由设备会有一种叫MSS Climbing的功能。路由设备在看到TCP的SYN或者SYN/ACK包的时候,会把里面MSS的值和链路MTU进行对比。如果MSS值大于MTU值,很明显就会导致分片。因此,就会降低MSS的值以适应链路MTU。


   但是链路上的MTU如何被确定呢?就可以用到 PMTUD(Path MTU Discovery,路径最大传输单元发现)这项技术了。

   IPv4首部标志位里有个DF标志位,DF就是Don't Fragment的意思。

   如果设置了DF标志位,链路上的设备碰到超过MTU的数据包,不会进行分片处理,而是直接丢掉这个包,并且返回消息,告诉发送方需要进行分片,这样发送方就需要降低MTU,然后再次发送,直到发现MTU的最小值。

   但是,在IPv6就不一样了,IPv6只允许发送源对数据包进行切分,不允许链路上的设备进行分片。

   因此,IPv6不需要另外设置。如果数据包太大,链路上的设备直接丢包,并且返回消息告诉对方太大,这样也是可以发现MTU最小值的。

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

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

相关文章

DeepSeek R1 模型解读与微调

DeepSeek R1 模型是 DeepSeek 团队推出的一款重要的大语言模型,旨在通过强化学习提升大型语言模型的推理能力。 模型架构 DeepSeek-R1-Zero DeepSeek-R1-Zero 是 DeepSeek 团队推出的第一代推理模型,完全依靠强化学习(RL)训练&…

proxmox通过更多的方式创建虚拟机

概述 作为一名资深运维工程师,我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机: 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…

Linux 压缩打包

Linux压缩打包 文章目录 Linux压缩打包压缩的意义和原理压缩的意义压缩的原理压缩与解压缩的好处压缩打包命令.zipzip 命令用法unzip 的用法.gzgzip 的用法gunzip 的用法.bz2bzip2 的用法bunzip2 的用法.xzxz 命令用法tar04-Linux压缩打包课后习题压缩的意义和原理 压缩的意义…

Apache HttpClient

HttpClient是apache组织下面的一个用于处理HTTP请求和响应的来源工具,是一个在JDK基础类库是做了更好的封装的类库。 HttpClient 使用了连接池技术来管理 TCP 连接,这有助于提高性能并减少资源消耗。连接池允许 HttpClient 复用已经建立的连接&#xff0…

【C++】STL——list底层实现

目录 💕1.list的三个类介绍 💕2.list——节点类 (ListNode) 💕3.list——链表类 (List) 💕4.list——迭代器类(重点思考)(ListIterator) 💕5…

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合,旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍: 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…

02、NodeJS学习笔记,第二节:express与中间件

express与中间件 中文官网:https://www.expressjs.com.cn/nodemon工具 nodemon这个工具,能够监听项目文件的变动。 当代码被修改后,nodemon会帮我们自动重启项目,极大的方便了开发和调试##安装 npm i -g nodemon##使用 之前启动…

通向AGI之路:人工通用智能的技术演进与人类未来

文章目录 引言:当机器开始思考一、AGI的本质定义与技术演进1.1 从专用到通用:智能形态的范式转移1.2 AGI发展路线图二、突破AGI的五大技术路径2.1 神经符号整合(Neuro-Symbolic AI)2.2 世界模型架构(World Models)2.3 具身认知理论(Embodied Cognition)三、AGI安全:价…

结合深度学习、自然语言处理(NLP)与多准则决策的三阶段技术框架,旨在实现从消费者情感分析到个性化决策

针对电商个性化推荐场景的集成机器学习和稳健优化三阶段方案。 第一阶段:在线评论数据处理,利用深度学习和自然语言处理技术进行特征挖掘,进而进行消费者情感分析,得到消费者偏好 在第一阶段,我们主要关注如何通过深度学习和自然语…

哪些专业跟FPGA有关?

FPGA产业作为近几年新兴的技术领域,薪资高、待遇好,吸引了大量的求职者。特别是对于毕业生,FPGA领域的岗位需求供不应求。那么,哪些专业和FPGA相关呢? 哪些专业跟FPGA有关? 微电子学与固体电子学、微电子科…

STM32 LED呼吸灯

接线图: 这里将正极接到PA0引脚上,负极接到GND,这样就高电平点亮LED,低电平熄灭。 占空比越大,LED越亮,占空比越小,LED越暗 PWM初始化配置 输出比较函数介绍: 用这四个函数配置输…

记录一次-Rancher通过UI-Create Custom- RKE2的BUG

一、下游集群 当你的下游集群使用Mysql外部数据库时,会报错: **他会检查ETCD。 但因为用的是Mysql外部数据库,这个就太奇怪了,而且这个检测不过,集群是咩办法被管理的。 二、如果不选择etcd,就选择控制面。 在rke2-…

数据库物理备份:保障数据完整性和业务连续性的关键策略

title: 数据库物理备份:保障数据完整性和业务连续性的关键策略 date: 2025/1/29 updated: 2025/1/29 author: cmdragon excerpt: 在现代企业中,数据被视为最重要的资产之一。因此,确保数据的安全性、完整性和可用性是每个数据库管理员(DBA)的首要任务。在数据管理的过程…

【3分钟极速部署】在本地快速部署deepseek

第一步,找到网站,下载: 首先找到Ollama , 根据自己的电脑下载对应的版本 。 我个人用的是Windows 我就先尝试用Windows版本了 ,文件不是很大,下载也比较的快 第二部就是安装了 : 安装完成后提示…

Deepseek v3R1 学习笔记

o1 o1 模型在训练过程中混合了多种奖励函数的设计方法,并且尝试从结果监督转向过程监督,在中间过程进行打分 使用的搜索策略:基于树的搜索和基于顺序修改的搜索 R1 R1-Zero 是从基础模型开始,完全由强化学习驱动,不…

4.PPT:日月潭景点介绍【18】

目录 NO1、2、3、4​ NO5、6、7、8 ​ ​NO9、10、11、12 ​ 表居中或者水平/垂直居中单元格内容居中或者水平/垂直居中 NO1、2、3、4 新建一个空白演示文稿,命名为“PPT.pptx”(“.pptx”为扩展名)新建幻灯片 开始→版式“PPT_素材.doc…

国防科大:双目标优化防止LLM灾难性遗忘

📖标题:How to Complete Domain Tuning while Keeping General Ability in LLM: Adaptive Layer-wise and Element-wise Regularization 🌐来源:arXiv, 2501.13669 🌟摘要 🔸大型语言模型(LLM…

【C++】多态详细讲解

本篇来聊聊C面向对象的第三大特性-多态。 1.多态的概念 多态通俗来说就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态)。 编译时多态:主要就是我们前⾯讲的函数重载和函数模板,他们传不同类型的参数就可以调⽤不同的函数,通…

java进阶1——JVM

java进阶——JVM 1、JVM概述 作用 Java 虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对 应平台上的机器码指令行,每一条 java 指令,java 虚拟机中都有详细定义,如怎么取操 作数&#xff0c…

DeepSeek各版本说明与优缺点分析

DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列,其在不同版本的发布过程中,逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本,从版本的发布时间、特点、优势以及不足之处&#xff0…