Linux——数据链路层

news2025/7/21 6:04:26

1. 认识以太网

认知:以太网是用于局域网数据通信的协议标准,定义了同一局域网内通过电缆/无线怎么在设备之间传输数据帧。

:整个网络世界可以具象看出由许许多多的局域网组成,

  家庭中的设备A and 家庭中的设备B and 家庭路由器(出入口)

  家庭A的路由器 and 家庭B的路由器 and 社区路由器(出入口)

  社区A的路由器 and 社区B的路由器 and 市区路由器(出入口)

  A省的路由器 and  B省路由器 and 国家路由器(出入口)

  A国路由器 and B国路由器 and C国路由器.......

路由器构成了每个局域网的出入口

注:把链路层发送的数据叫做数据帧!

  6位目的地址 and 6位源地址:目的Mac地址 and 源Mac地址

  类型:上层传递下来有效载荷的协议类型,字段对应 IP、ARP、RARP;

:0800对应IP,0806对应ARP,0835对应RARP,后续两个稍后再说

:以太网协议怎么分离报头和有效载荷?

:报头为固定长度

认知:网络中传输的报文带两个地址,一个是MAC地址一个是IP地址,IP地址决定了下一目的地的Mac地址的选择,IP地址是你的最终目的地,MAC地址是中途的临时地址。

2. 局域网的通信过程

假设同一局域网内,主机A发送报文给主机E,主机A会将报文发送到当前局域网中,所有的主机收到该报文时,会将自己的Mac地址和该条报文的前6位字节进行比较,发现不合符目标Mac地址,于是丢弃,上层意识不到下层已经接受过报文了。主机E发现自己的Mac地址和报文中的目的Mac地址相同,于是开始向上层层交付。

认知:局域网就是一个碰撞域,一次只能发送一个数据帧,如果同时发送多个数据,就会出现碰撞问题,导致数据丢失。因此在局域网通信时,单个数据帧要有下限和上限(46~1500)

:这个是硬件工程师规定的。

思考:在网络通信的过程中,对于访问者个人而言,他是知道目的主机的IP的,想想socket通信时,我们需要输入对端的IP+端口号才能够访问,所以知道对端的IP对于主机A不是问题,但是!主机A是怎么知道主机E的Mac地址的

答:ARP协议


3. 认识ARP协议

ARP协议属于数据链路层协议之一,他位于网络层协议和以太网协议的中间,结构如图,属于定长协议

以太网首部、以太网源地址、发送端以太网地址、发送端IP地址、目的IP地址 不过多介绍

  硬件类型:1代表以太网

  协议类型:0800代表IP协议

  op:1表示ARP请求,2表示ARP应答

  目的以太网地址:初始情况下为 FFFFFF

:前面说了,数据帧的下限为46字节,为什么ARP请求只有28?

:末尾的PAD用于填充垃圾数据(0or1),来保证满足数据帧长度的下限,读取的时候不会出问题。

3.1 通过ARP协议如何得知目的IP的Mac地址?

:假设还是主机A发送报文给主机E

        因为主机A不知道主机E的Mac地址,所以起初他会发送ARP协议数据帧,该帧中将op设置为1,表示为请求ARP,将该数据帧在局域网内广播(对应先前讲的广播IP),局域网内所有的主机都会收到该条数据帧,并对其进行ARP协议解析,当发现其目的IP地址与当前主机的IP地址不对应时,就丢弃该条报文。

        主机E做解析后 发现 op字段为1 是请求,并且目的IP地址与自己的IP地址对应,并且为请求, 主机E需要做应答处理,将op设置为2,并且此时ARP协议中的目的以太网地址为主机A的地址,源以太网地址为主机E的Mac地址,将该数据帧再次发送到局域网内,非相关的主机仍然收到了这条数据帧,只不过这次因为目的Mac已知,非相关的主机直接丢弃数据帧

        对于主机A,先看op字段为2 表示应答,得到了主机E的Mac地址,后续就可以将带数据的数据帧发给主机E了

细节1:主机都会在一段时间内(分钟级别),记录下来当前局域网中各个IP对应的Mac地址的映射关系

:为什么不永久记录下来?

:IP是变化的,MAC地址换了网口后也是变化的

细节2:相同局域网内的两台主机会通过上述方法得知目标Mac地址,对于不同局域网内的两台主机,通信时,会先通过上述方法,知道当前局域网内路由器的Mac地址,然后发送报文,报文到达了新的路由器时,他得找下一个路由器的Mac地址,就会重复上述过程,直至发给目标主机。目标IP不会变,但是Mac地址一直会变,所以路由器中只需要记录IP地址,可以通过ARP协议的请求与应答去查下一目的地的Mac地址


4. NAT技术的相关问题

问题:先前讲述了NAT技术的含义,报文从主机A通过公网传到服务器的过程大致理解了,那么服务器的应答怎么通过公网传给主机A?

:借助NAPT转换表

NAPT转换表:记录 源IP+port/目的IP+端口NAT路由器wan口IP地址 + 端口/目的IP+端口 的映射关系   当外部服务器发送回应时,他的 目的 IP+端口 是NAT路由器的WAN口IP+端口,他会查表做对应替换,更改目标ip+端口、

  这张表是路由器自己维护的

  除了ip会替换,必要的时候NAT路由器内的端口号也会替换,为了避免冲突(多个主机访问同一个服务器的时候)

  私有IP在不同内网中可以重复,同一个内网中不可以重复

  这张表从内到外,从外到内都是唯一键值对wan口ip+端口是唯一的,多个主机访问同一路由器,wan口ip相同,但是端口是不同的(IP相同不要紧,端口不同就可以)

  从内往外访问服务器时,途径的每个由路由器都会构建NAPT表,回来的时候就可以做内网穿透

内网穿透:借助NAPT转换表 内网设备能够被外网访问,

认知1:NAT就是这个世界网络的真相

认知2:上述路由表内的键值关系越多,路由器越好也越贵,所以就区分了家用路由器和企业路由器

认知3:外网无法直接到内部,这就是为什么所有的服务器你得必须登录后才能访问,用户得先做些什么,服务器才能够给你回应。用户访问服务器的过程就是在建表的过程。


5. 正向代理

正向代理:(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等

工作原理:
  客户端将请求发送给正向代理服务器。
  正向代理服务器接收请求,并根据配置进行处理,如缓存查找、内容过滤等。
  正向代理服务器将处理后的请求转发给目标服务器。
  目标服务器处理请求,并将响应返回给正向代理服务器。
  正向代理服务器将响应返回给客户端。
缓存功能:正向代理服务器可以缓存经常访问的资源,当客户端再次请求这些资
源时,可以直接从缓存中获取,提高访问速度。
  内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、
阻止恶意网站等。
  访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作
时间访问娱乐网站。
  隐藏客户端身份:正向代理可以隐藏客户端的真实 IP 地址,保护客户端的隐私。
  负载均衡:在多个目标服务器之间分配客户端请求,提高系统的可扩展性和可靠
性。

6. 反向代理

反向代理:服务器是一种网络架构模式,其作为 Web 服务器的前置服务器,接收
来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回
给客户端。这种架构模式可以提升网站性能、安全性和可维护性等

基本原理:反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先
会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的 Web
服务器,并将 Web 服务器的响应返回给客户端。在这个过程中,客户端并不知道实际
与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信。


7. NAT和代理服务器

  路由器往往都具备 NAT 设备的功能, 通过 NAT 设备进行中转, 完成子网设备和其他子
网设备的通信过程

  代理服务器看起来和 NAT 设备有一点像. 客户端像代理服务器发送请求, 代理服务器将
请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户

:代理服务器和NAT有何区别?

  从应用上讲, NAT 设备是网络基础设备之一, 解决的是 IP 不足的问题 、代理服务器则是更贴近具体应用, 比如通过代理服务器进行科学上网, 另外像迅游这样的加速器, 也是使用代理服务器.

  从底层实现上讲, NAT 是工作在网络层, 直接对 IP 地址进行替换. 代理服务器往往工作在应用层.

  从使用范围上讲, NAT 一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网

  从部署位置上看, NAT 一般集成在防火墙, 路由器硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.


8. 内网打洞

内网打洞:是指通过 NAT 穿透 技术,使得 两个内网设备(或一个内网设备和外网设备)之间能够直接通信,而不需要借助中介服务器。内网打洞一般用于 P2P(对等)通信,使得两台设备可以通过直接连接互相通信。


9. 交换机

交换机:如果一个局域网内的主机数量过多,就需要用到交换机,交换机工作在数据链路层

交换机的核心作用:划分碰撞域

主机A如果想把数据发给主机D,交换机识别到主机A和主机D在一个碰撞域中,就不会做转发,减小另一个碰撞域的碰撞概率。


10. 回顾TCP/IP网络的四层结构体系

  应用层:解决 业务处理 ,如Web游浏览、电子邮件、文件传输

回答了我收到报文该怎么处理的问题。

  传输层:解决 通信可靠性、数据传输的完整性、流量控制 等问题

回答了我该如何将报文有效传给对方的问题。

  网络层:解决 长距离通信 的问题

回答了我该将报文传给谁的问题。

  链路层:解决子网内通信 问题

回答了同一局域网内,报文怎么传给对方的问题

网络四层从下到上:怎么传 → 传给谁 → 怎么可靠的传 → 传过去后怎么处理的?

问题:描述一下浏览器从发起http到得到网页的整个过程,越详细越好

①. 解析URL,获得域名、参数、路径、协议

②. 解析域名获得 IP地址 and 端口号

③. connect 发起三次握手请求,该过程不会传输有效载荷,只含报头

:三次请求的过程中,确定了双方接收缓冲区的大小从而确定了内部滑动窗口的大小,确定了传输层每次发送最大报文的大小

④. 该报文通过网络层做路径选择,根据目的IP确定下一跳IP地址,链路层获得下一跳的Mac地址,将报文路由给下一跳

:这里涉及了一个网络IP的划分,从公网到内网的一个转换,内网ip是怎么转到公网的,公网ip又是怎么把回应发到内网的(内网发送报文时,会在各个路由器内将源IP和路由器的WAN口ip做转换,转换时会维护一张NAPT表,好做后续的内网穿透,当WAN口IP是公网IP时,不再转换)

⑤. 三次握手成功,客户端发送请求

⑥. 服务端回复相应

⑦. 客户端渲染界面

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

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

相关文章

游戏引擎学习第310天:利用网格划分完成排序加速优化

回顾并为今天的内容做个铺垫 昨天我们完成了一个用于排序的空间划分系统,但还没有机会真正利用它。昨天的工作刚好在结束时才完成,所以今天我们打算正式使用这个空间划分来加速排序。 现在我们在渲染代码中,可以看到在代码底部隐藏着一个“…

数据结构 - 树的遍历

一、二叉树的遍历 对于二叉树,常用的遍历方式包括:先序遍历、中序遍历、后序遍历和层次遍历 。 1、先序遍历(PreOrder) 先序遍历的操作过程如下: 若二叉树为空,则什么也不做;否则&#xff0…

时序模型介绍

一.整体介绍 1.单变量 vs 多变量时序数据 单变量就是只根据时间预测,多变量还要考虑用户 2.为什么不能用机器学习预测: a.时间不是影响标签的关键因素 b.时间与标签之间的联系过于弱/过于复杂,因此时序模型依赖于时间与时间的相关性来进行预…

【第4章 图像与视频】4.4 离屏 canvas

文章目录 前言为什么要使用 offscreenCanvas为什么要使用 OffscreenCanvas如何使用 OffscreenCanvas第一种使用方式第二种使用方式 计算时长超过多长时间适合用Web Worker 前言 在 Canvas 开发中,我们经常需要处理复杂的图形和动画,这些操作可能会影响页…

尚硅谷redis7 74-85 redis集群分片之集群是什么

74 redis集群分片之集群是什么 如果主机宕机,那么写操作就被暂时中断,后面就要由哨兵进行投票和选举。那么一瞬间若有大量的数据修改,由于写操作中断就会导致数据流失。 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行…

WPF的基础控件:布局控件(StackPanel DockPanel)

布局控件(StackPanel & DockPanel) 1 StackPanel的Orientation属性2 DockPanel的LastChildFill3 嵌套布局示例4 性能优化建议5 常见问题排查 在WPF开发中,布局控件是构建用户界面的基石。StackPanel和DockPanel作为两种最基础的布局容器&…

apache的commons-pool2原理与使用详解

Apache Commons Pool2 是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…

打印Yolo预训练模型的所有类别及对应的id

有时候我们可能只需要用yolo模型检测个别类别,并显示,这就需要知道id,以下代码可打印出 from ultralytics import YOLO# 加载模型 model YOLO(yolo11x.pt)# 打印所有类别名称及其对应的ID print(model.names) {0: person, 1: bicycle, 2: c…

设计模式26——解释器模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 解释器模式(Interp…

在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3,运行demo,显示label

在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3 一、硬件平台二、实现功能三、移植步骤1、下载LVGL-8.42、MDK中安装LVGL-8.43、配置RTE4、配置头文件 lv_conf_cmsis.h5、配置lv_port_disp_template 四、添加心跳相关文件1、在STM32CubeMX中配置TIM7的参数2、使能…

ArcGIS 与 HEC-RAS 协同:流域水文分析与洪水模拟全流程

技术点目录 洪水淹没危险性评价方法及技术介绍基于ArcGIS的水文分析基于HecRAS淹没模拟的洪水危险性评价洪水风险评价综合案例分析应用了解更多 —————————————————————————————————————————————————— 前言综述 洪水危险性及…

多模态大语言模型arxiv论文略读(九十九)

PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文标题:PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文作者:Junyi Li, Junfeng Wu, Weizhi Zhao, Song Bai, Xiang Bai ➡️ 研究机构…

Fine-tuning:微调技术,训练方式,LLaMA-Factory,ms-swift

1,微调技术 特征Full-tuningFreeze-tuningLoRAQLoRA训练参数量全部少量极少极少显存需求高低很低最低模型性能最佳中等较好接近 LoRA模型修改方式无变化局部冻结插入模块量化插入模块多任务共享不便较便非常适合非常适合适合超大模型微调❌✅✅✅(最优&…

XCTF-web-mfw

发现了git 使用GitHack下载一下源文件&#xff0c;找到了php源代码 <?phpif (isset($_GET[page])) {$page $_GET[page]; } else {$page "home"; }$file "templates/" . $page . ".php";// I heard .. is dangerous! assert("strpos…

电机控制选 STM32 还是 DSP?技术选型背后的现实博弈

现在搞电机控制&#xff0c;圈里人都门儿清 —— 主流方案早就被 STM32 这些 Cortex-M 单片机给拿捏了。可要是撞上系统里的老甲方&#xff0c;技术认知还停留在诺基亚砸核桃的年代&#xff0c;非揪着 DSP 不放&#xff0c;咱也只能赔笑脸&#xff1a;“您老说的对&#xff0c;…

.NET 开源工业视觉系统 OpenIVS 快速搭建自动化检测平台

前言 随着工业4.0和智能制造的发展&#xff0c;工业视觉在质检、定位、识别等场景中发挥着越来越重要的作用。然而&#xff0c;开发一个完整的工业视觉系统往往需要集成相机控制、图像采集、图像处理、AI推理、PLC通信等多个模块&#xff0c;这对开发人员提出了较高的技术要求…

AI智能分析网关V4室内消防逃生通道占用检测算法打造住宅/商业/工业园区等场景应用方案

一、方案背景​ 火灾严重威胁生命财产安全&#xff0c;消防逃生通道畅通是人员疏散的关键。但现实中通道被占用、堵塞现象频发&#xff0c;传统人工巡查监管效率低、不及时。AI智能分析网关V4结合消防逃生通道占用算法&#xff0c;以强大的图像识别和数据分析能力&#xff0c;…

关于无法下载Qt离线安装包的说明

不知道出于什么原因考虑&#xff0c;Qt官方目前不提供离线的安装包下载&#xff0c;意味着网上各种文章提供的各种下载地址都失效了&#xff0c;会提示Download from your IP address is not allowed&#xff0c;当然目前可以在线安装&#xff0c;但是据说只提供了从5.15开始的…

Java开发经验——阿里巴巴编码规范实践解析4

摘要 本文主要介绍了阿里巴巴编码规范中关于日志处理的相关实践解析。强调了使用日志框架&#xff08;如 SLF4J、JCL&#xff09;而非直接使用日志系统&#xff08;如 Log4j、Logback&#xff09;的 API 的重要性&#xff0c;包括解耦日志实现、统一日志调用方式等好处。同时&…

HTML应用指南:利用GET请求获取全国捞王锅物料理门店位置信息

随着新零售业态的快速发展&#xff0c;门店位置信息的获取变得越来越重要。作为知名中式餐饮品牌之一&#xff0c;捞王锅物料理自2009年创立以来&#xff0c;始终致力于为消费者提供高品质的锅物料理与贴心的服务体验。经过多年的发展&#xff0c;捞王在全国范围内不断拓展门店…