【Linux系统化学习】数据链路层

news2024/12/23 18:34:46

目录

数据链路层解决的问题

以太网

认识局域网

以太网帧格式

两个问题

认识MAC地址

认识MTU

ARP协议

ARP协议的作用

ARP数据报格式

ARP协议的工作流程


数据链路层解决的问题

对于TCP/IP四层协议来说,数据链路层才是真正从传送数据进行跑腿办事情的;传输层的TCP协议通过各种策略确保了数据传输的可靠性;网路层IP协议通过路由和转发可以将数据报从一个子网传送到另外一个子网,最后传送到目标主机所在的子网;而数据链路层就要实现TCP协议的能力和IP协议跨网络转发;最重要的是实现网络层的跨网络转发,是如何从源主机一步一步通过mac地址跳转到转发路由器,转发路由器通过下一跳跳转到目标主机的子网,最后到达目标主机。

通俗的来说数据链路层解决的就是局域网内的通信问题源主机是如何将数据包一步一步交给本地子网网关,由这个网关进行跨网络的路由转发。

源主机在发送消息时,首先会检查目标主机的IP地址是否与自己处于同一子网。如果是,则使用ARP协议获取MAC地址并进行通信;如果不是,则使用ARP协议获得路由器的mac地址将数据包发送到本地子网的默认网关(路由器的LAN口),由路由器根据路由表进行转发。

以太网

数据链路层要解决局域网通信问题,我们就要对局域网有所了解。

认识局域网

以太网(Ethernet)

  • 以太网是最常用的局域网技术之一。它基于IEEE 802.3标准,使用双绞线作为传输介质。

Wi-Fi

  • Wi-Fi是一种无线局域网技术,通过无线信号进行数据传输和通信。

令牌环网

  • 令牌环网是一种采用环形拓扑结构的局域网技术,其中数据沿着一个逻辑上的环形路径进行传输。 

以太网帧格式

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  • 帧末尾是CRC校验码。

两个问题

如何将报头和有效载荷进行分离?

以太网MAC帧的帧头和帧尾都是固定长度的,因此当底层收到一个MAC帧后,直接提取出MAC帧当中固定长度的帧头和帧尾,此时剩下的就是有效载荷了。

有效载荷如何向上交付? 

以太网MAC帧对应的上层协议不止一种,因此在将MAC帧的报头和有效载荷分离后,还需要确定应该将分离出来的有效载荷交付给上层的哪一个协议。

在MAC帧的帧头当中有2个字节的类型字段,因此在分离出报头和有效载荷后,根据该字段将有效载荷交付给对应的上层协议即可。

认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

理解MAC地址和IP地址

实际数据在路由过程中会存在两套地址,一套是源IP地址和目的IP地址,还有一套是源MAC地址和目的MAC地址。

  • IP地址描述的是路途总体的起点和终点。
  • MAC地址描述的是路途上的每一个区间的起点和终点。

就像唐僧西天取经的时候,源IP就是长安城,目的IP就是天竺;而MAC地址就是中间路上的每一个站点向女儿国、火焰山等等。 因此数据在路由过程中,源IP地址和目的IP地址可以理解成是不会变化的,而数据每进行一跳后其源MAC地址和目的MAC地址都会变化。

认识MTU

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);不同的数据链路层标准的MTU是不同的;

MTU对IP协议的影响

由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包.
将较大的IP包分成多个小包, 并给每个小包打上标签;
每个小包IP协议头的 16位标识(id) 都是相同的;
每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为1, 否则置为0);
到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;
一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;

MTU对UDP的影响 

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了.

MTU对TCP的影响

TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size);TCP在建立连接的过程中, 通信双方会进行MSS协商.最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值.然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.MSS的值就是在TCP首部的40字节变长选项中(kind=2);

MSS和MTU的关系

ARP协议

虽然我们在这里介绍ARP协议, 但是需要强调, ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议; 地址解析协议(Address Resolution Protocol,ARP)协议,是根据IP地址获取MAC地址的一个TCP/IP协议。

ARP协议的作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;因此在通讯前必须获得目的主机的硬件地址;

ARP数据报格式

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。

  • 硬件类型指链路层网络类型,1为以太网;
  • 协议类型指要转换的地址类型,0x0800为IP地址;
  • 硬件地址长度对于以太网地址为6字节;
  • 协议地址长度对于和IP地址为4字节;
  • op字段为1表示ARP请求,op字段为2表示ARP应答。

ARP协议的工作流程

源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中;每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

ARP缓存表

为什么要有缓存表?

  1. 提高效率:缓存表可以存储最近解析的地址映射关系,当需要再次访问相同的目标时,可以直接从缓存表中获取对应的地址,而无需再次发起网络查询。这样可以大大减少网络查询的次数,提高通信效率。

  2. 减少网络负载:如果没有缓存表,每次通信都需要进行地址解析,这将导致大量的网络查询流量,增加网络负载。缓存表可以有效减少这种不必要的网络流量。

  3. 快速响应:缓存表使得地址解析变得迅速,从而减少了通信的延迟,提高了网络的响应速度。

为什么表项要有过期时间而不是一直有效?

  1. 动态网络环境:在网络环境中,设备的IP地址和MAC地址可能会发生变化。如果缓存表中的表项一直有效,那么当目标设备的地址发生变化时,缓存表中的旧地址信息将导致通信失败。通过设置过期时间,可以确保缓存表中的地址信息保持最新。

  2. 防止资源耗尽:如果缓存表无限制地增长且表项永不过期,那么随着时间的推移,缓存表将占用越来越多的内存资源,可能导致系统资源耗尽。过期机制有助于定期清理旧的、不再需要的表项,从而释放内存资源。

  3. 安全性考虑:在网络中,可能存在恶意设备试图通过伪造ARP响应来实施ARP欺骗攻击。过期时间可以限制这种伪造响应的影响时间,因为伪造的表项会在一段时间后自动失效。

  4. 网络变化适应性:网络环境和配置可能会发生变化,例如设备的添加、移除或IP地址的更改。过期时间确保了缓存表能够适应这些变化,并及时更新以反映最新的网络状态。


今天对Linux数据链路层的分享到这就结束了,希望大家读完后有很大的收获,也可以在评论区点评文章中的内容和分享自己的看法;个人主页还有很多精彩的内容。您三连的支持就是我前进的动力,感谢大家的支持!!! 

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

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

相关文章

display: flex 和 justify-content: center 强大居中

你还在为居中而烦恼吗,水平居中多个元素、创建响应式布局、垂直和水平同时居中内容。它,display: flex 和 justify-content: center 都可以完成! display: flex:将元素定义为flex容器 justify-content:定义项目在主轴…

分享:咕嘎批量查找文件移动存储系统,一次性查找多个PDF文件,如何根据txt文本列出的文件名批量查找指定文件夹里的文件,并复制到新的文件夹,不需要写任何代码,点点鼠标批量处理一次性搞定

简介: 该文介绍了一个批量查找PDF文件(不限于找PDF)的工具,用于在多级文件夹中快速查找并复制特定文件。用户可以加载PDF库,输入文件名列表,设置操作参数(如保存路径、复制或删除)及…

一个非常好的美图展示网站整站打包源码,集成了wordpress和开源版ripro主题,可以完美运营。

一个非常好的美图展示网站整站打包源码,集成了wordpress和开源版ripro主题,可以完美运营。 自带了5个多g的美图资源,让网站内容看起来非常大气丰富,可以快速投入运营。 这个代码包,原网站已经稳定运营多年&#xff0…

影响转化率的多元因素分析及定制开发AI智能名片S2B2C商城系统小程序的应用案例

摘要:在互联网时代,转化率是衡量营销活动成功与否的关键指标。本文首先分析了影响转化率的多种因素,包括活动页面的设计、活动的限时性、主题文案的吸引力、从众心理的运用,以及最核心的产品质量与优惠力度。接着,本文…

问题:4、商业保险与政策性保险的主要不同之处是:经营主体不同、经营目标不同、承保机制不同。 #学习方法#其他#学习方法

问题:4、商业保险与政策性保险的主要不同之处是:经营主体不同、经营目标不同、承保机制不同。 参考答案如图所示

SQL Server 使用 OPTION (RECOMPILE) 和查询存储的查询

设置 我们正在使用 WideWorldImporters 数据库,您可以从 Github 下载【sql-server-samples/samples/databases/wide-world-importers at master microsoft/sql-server-samples GitHub】。我正在运行SQL Server 2017 的最新 CU【https://sqlserverbuilds.b…

Adobe国际认证详解-网页设计认证专家行业应用场景解析

在当今数字化时代,网页设计已成为各行各业不可或缺的一环。而网页设计认证专家,作为经过Adobe国际认证体系严格考核的专业人才,正逐渐成为行业内炙手可热的存在。他们凭借深厚的网页设计理论基础和实践经验,为各行各业提供了高质量…

建筑工程企业项目管理系统哪个好?试试企智汇工程项目管理系统

在建筑工程行业中,项目管理的复杂性和挑战性是众所周知的。随着项目规模的扩大和技术的不断进步,传统的管理方法已经难以满足现代建筑工程的需求。企智汇工程项目管理系统应运而生,为建筑工程企业提供了一个全面、智能、高效的解决方案。 一…

“生日悖论”简析——公式计算、代码模拟

“生日悖论”共享生日概率,通项公式计算,代码模拟计算。 (笔记模板由python脚本于2024年07月17日 18:16:40创建,本篇笔记适合会基础编程的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free&…

Flutter Dart Macro 宏简化 JSON 序列化

Flutter Dart Macro 宏简化 JSON 序列化 视频 https://youtu.be/gBZYjBmoOcU https://www.bilibili.com/video/BV1tT421a7ev/ 前言 原文 https://ducafecat.com/blog/using-dart-macros-to-simplify-json-serialization 今天我们将会体验 dart 语言新特性 macro 宏&#xff…

Vue3中实现自然滚动表格列表,可调整滚动快慢

实现效果如图所示,可以调整滚动的快慢,可以实现内容高度不够的时候停止滚动的效果。 1.实现原理: 创建一个dom为ul,赋值为当前列表数据,然后拷贝这个dom赋值给第二个ul,然后判断屏幕高度跟滚动高度对比&a…

第三届智能机械与人机交互技术学术会议(IHCIT 2024)

【北航主办丨本届SPIE独立出版丨已确认ISSN号】 第三届智能机械与人机交互技术学术会议(IHCIT 2024) 2024 3rd International Conference on Intelligent Mechanical and Human-Computer Interaction Technology 2024年7月27日----中国杭州&#xff0…

Redis深度解析:从基础到高级特性,剖析关键技术

一、关于Redis Redis介绍 REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。 Redis 是一个开源的使用 ANSIC 语言编写、遵守 BSD(开源协议) 协议、支持网络、可基于内存…

Linux云计算 |【第一阶段】ENGINEER-DAY5

主要内容: SELinux、系统故障修复、HTTPD/FTP服务搭建、防火墙策略管理、服务管理 一、SELinux安全制度 SELinux(Security-Enhanced Linux),美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系&…

6. dolphinscheduler-3.0.0伪集群部署

环境说明: 主机名:cmc01为例 操作系统:centos7 安装部署软件版本部署方式centos7zookeeperzookeeper-3.4.10伪分布式hadoophadoop-3.1.3伪分布式hivehive-3.1.3-bin伪分布式clickhouse21.11.10.1-2单节点多实例dolphinscheduler3.0.0单节…

【JavaScript 算法】拓扑排序:有向无环图的应用

🔥 个人主页:空白诗 文章目录 一、算法原理二、算法实现方法一:Kahn算法方法二:深度优先搜索(DFS)注释说明: 三、应用场景四、总结 拓扑排序(Topological Sorting)是一种…

测试数据科学家深度学习基础知识的 45 个问题(以及解决方案)

测试数据科学家深度学习基础知识的 45 个问题(以及解决方案) 一、介绍 早在2009年, 深度学习还只是一个新兴领域。只有少数人认为这是一个富有成效的研究领域。今天,它被用于开发应用程序,这些应用程序在一段时间前被认为是困难或不可能做到的。 语音识别、图像识别、在数…

<Qt> 初识Qt

目录 一、项目文件解析 widget.h main.cpp widget.cpp widget.ui .pro文件 二、QT 实现Hello World程序 (一)按钮控件 1. 纯代码 2. 图形化 (二)标签控件 1. 纯代码 2. 图形化 三、内存泄漏问题 四、qdebug()的使用…

MySQL(事务、索引)MyBatis

目录 事务 概述 四大特性(ACID) 索引 结构 语法 MyBatis 数据库连接池 lombok 基本操作--增删改查 根据主键删除 新增 更新 查询(根据ID查询) 查询(条件查询) XML映射文件 动态SQL 动态条…

Web安全:未验证的重定向和转发.

Web安全:未验证的重定向和转发. 未验证的重定向和转发漏洞是一种常见的Web安全漏洞,它允许攻击者将用户重定向到一个恶意的URL,而不是预期的安全URL。这种漏洞通常发生在应用程序处理重定向和转发请求时,未能对目标URL进行适当的…