【网络】数据链路层知识梳理

news2025/4/21 10:35:52

全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的笔记吧~ 

自己写自己的八股!让未来的自己看懂! (全文手敲,受益良多) 

数据链路层

我们来重新理解一下这个图:

把数据从A主机送到B主机,我们要先把数据交到路由器A吧。IP解决的是AB之间跨网络传输的问题,再怎么跨网络,得先达到下一跳吧,一步一步走。

数据链路层解决的是:直接相连的主机(也包括路由器),进行数据交付的问题。

Mac地址

每一个网卡都有自己的mac地址,mac地址的作用:在同一局域网中,区分不同的主机。

我们来看一看mac的报头:

这个数据部分,大部分情况就是IP交给该层的IP报文。Mac帧就是这个报文,数据部分称为有效载荷。

问题1:Mac帧如何做到解包和封装

     Mac帧解包用到的是定长报文,收到报文的时候就可以把报头和有效载荷进行分离

问题2:Mac帧如何做到分用(交给上层的谁)

     通过类型,如果是0800说明数据是IP数据报…

目的地址: 就是要去的下一跳主机对应的mac地址

源地址:当前主机的mac地址

局域网的通信原理

  

   发送方把mac报头填好目的地址,源地址。然后发到局域网中,局域网中每一台机器都看到了这个报头然后进行比较,如果是给自己的才拿上来。

数据碰撞

局域网中有很多数据的时候,就会发生数据碰撞。要进行数据碰撞避免算法,本质就是让主机停发,避免过多数据碰撞。局域网中,主机数越多,发生数据碰撞的概率越大。

如何看待局域网??

局域网被多台主机共享,又要避免数据碰撞,所以我们可以将其看作多台主机的临界资源。通过网络层的IP协议,知道要去哪个路由器,然后在Mac帧上填上目标Mac地址(IP地址转Mac地址ARP协议)。到达这个路由器的时候,再根据Mac帧的类型向上交付给网络层,网络层去掉Mac的报头,然后再找到下一个要去的路由器,再由Mac帧重新填上目标Mac地址。依次类推,直到找到目标主机!

Mac帧只在局域网中有效!Mac帧的源地址和目的地址一直在变化的!

局域网中,主机数越多,发生数据碰撞的概率越大。怎么办呀?

   随着局域网的主机变多,我们引入新的设备——交换机。交换机可以识别到碰撞发生在哪一侧,如果左边发生碰撞,就不把数据给右边了,防止右边也发生碰撞。交换机可以划分碰撞域,减少局域网碰撞。

反正局域网都会发生碰撞,那我发生长一点的数据帧好呢?还是短一点的好呢?

  数据越长,时间就越长,发生碰撞概率就变大了。所以要求数据大小有范围【46,1500】字节。

数据链路层最多允许上层传1500字节(MTU),这会逼着网络层进行分片,可是分片不太好。我们要在协议里减少分片,我们如何减少分片呢?而IP传多少由TCP决定。所以减少分片的问题根源在TCP。IP报头为20字节,所以TCP最多只能传1480字节,TCP报头标准大小为20字节,所以真正的数据为1460。因为TCP有自己的发送缓冲区,所以每次最多取1460来发就可以了。这个1460就称为MSS(最大发送的数据段)。MMS双方三次握手的时候也会相互交互。

所谓的数据发送到目标网络,本质是通过无数个连续的子网实现的

ARP协议

  也是局域网协议,它要做到:在局域网中,将目标主机的IP地址转化为Mac地址!!!才可以实现路由器的跳转。

   如何让入口路由器R得到,主机B的Mac地址呢?

1.先谈ARP原理:
  

在局域网中广播一条消息:我是主机A,要找某某IP地址,它的Mac地址是什么?这个消息被主机B收到了,然后告诉其自己的Mac地址。

ARP报文:

ARP协议,属于MAC帧上层,但是归属到数据链路层。

硬件类型:表示链路层网络类型,1为以太网(固定写法)

协议类型:要传换的地址类型,0x0800为IP地址(固定写法)

硬件地址长度:对于以太网为6字节(固定写法)

协议地址长度:对于IP地址为4字节(固定写法)

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

目的以太网地址不知道,填为全F

2.模拟ARP过程

当主机R要找目的主机B的Mac地址的时候,先填ARP 报头:

,然后向下交付给数据链路层。再添加Mac帧报头,填写之后如下:

然后流向局域网,每台主机都会收到处理这个ARP报文。对于非目的主机,先对Mac帧报头的分离,发现目的地址为全F(广播地址),要受理这个报文,根据0806(类型)交付给该机器的ARP软件层,然后分析报文,发现目的IP地址并不是自己的IP地址,然后就把报文丢弃了。可是任何一台主机都可以发起ARP请求,所以任何一台主机都会收到ARP应答,和别人的ARP请求。所以我们要看op字段(1为请求,2为应答)。只有目的主机(B主机)的IP地址才可以对上,然后进行ARP应答~

重新写APR报文,把请求变为应答

然后再把应答的报文,广播给局域网,然后被主机R拿到,这样就可以拿到主机B的Mac地址啦。

结论:先看op,为1,看目的IP地址。为2看,源Mac地址。主机的mac地址和IP地址会被主机临时缓存起来。

ARP的周边问题

  1. ARP 工作机制:ARP(地址解析协议)用于将 IP 地址解析为 MAC 地址。主机通常会缓存 IP - MAC 映射关系。只有当缓存中的对应记录失效(比如缓存超时 、对应网络设备更改等情况 )时,才会再次发起 ARP 请求来重新获取 MAC 地址。
  2. 获取主机 IP 和 MAC 方法(理论设想):通过自身 IP 地址和子网掩码可确定所在网络号。理论上可通过拼接该网络号内的 IP 地址,然后使用 ping 命令探测网络内主机。在 ping 过程中,主机间交互会触发 ARP 过程,从而获取到对应主机的 MAC 地址。但实际中,这种操作可能受网络权限(如防火墙限制 )、广播域等因素影响。
  3. ARP 应答处理:当主机收到多次相同 IP 地址的 ARP 应答时,一般会以最新收到的应答为准更新自身的 ARP 缓存。这是因为最新应答可能反映了网络中设备当前真实的 MAC 地址情况,确保后续通信能正确寻址。

ARP 欺骗是针对 ARP 协议的攻击技术 。利用 ARP 协议无验证机制的漏洞,攻击者发送伪造 ARP 数据包,使目标主机将攻击者 MAC 地址错当成网关或目标主机 MAC 地址 。

DNS协议

实际上访问的网站是IP地址,因为IP地址不方便记忆。所以用域名,进行域名解析成IP地址就可以了。

浏览器中输入url后,发生的事情(就是输入一个域名后)

 分三个阶段:

  1. http过程+域名解析
    先域名解析,拿到目标IP地址,浏览器会构建http请求,填充请求行,请求报头空行,如果需要的话,还可以带正文。在构建http请求之前要三次握手。进行网络转发,到达目的主机,构建http应答,还有响应报文,再通过TCP链接,把响应返回,浏览器得到之后对报文做解析,提取正文,对正文进行解释,再由浏览器渲染就可以看到结果了。
  2. https提一下
    刚刚的都是最简单的,现在都是https,双方在通信之前除了建立链接,在正常通信之前进行密钥协商…
  3. 谈论细节
    我们底层http的数据其实就是数据流,最后拷贝到TCP的发送缓冲区,那些策略,流量控制,拥塞控制,超时重传,三次握手,面向连接,还问就是IP层,子网划分,查路由表,IP分片,分片和组装,再往下就是Mac帧…

     

ICMP协议
 

   ICMP是网络层的协议。可以对网络当中出现问题时,对IP报文进行应答的。

        ping 命令基于 ICMP, 是在网络层. 而端口号, 是传输层的内容. 在 ICMP 中根本就不关
注端口号这样的信息.

NAT技术(重点)

 我们之前讲过,源IP地址在经过路由器的时候会被替换成WAN口地址。NAT技术本质还是缓解IP地址不足的问题。

可是怎么把收回来的数据,从路由器到源主机呢??

我们有NAPT,NAT转化表

内网中源地址一定是唯一的,我们提前建立映射关系。即使将来通过路由器转换后的地址都相同,但是收回数据的时候,可以根据映射关系来区分是哪个主机的数据。

NAT在替换的时候不仅仅会替换。会加端口号,通过端口号找到源地址~

NAT的缺陷

  1. 无法从NAT外部向内部建立连接
  2. 转换表的生成和销毁都需要额外开销
  3. 如果NAT路由器异常了,所有的TCP连接都会断开

内网穿透:通过一个公共的服务器,实现2个局域网主机的相互通信

代理服务器

正向代理(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标

服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请

求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这

种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问

控制等。

工作原理

• 客户端将请求发送给正向代理服务器。

• 正向代理服务器接收请求,并根据配置进行处理,如缓存查找、内容过滤等。

• 正向代理服务器将处理后的请求转发给目标服务器。

• 目标服务器处理请求,并将响应返回给正向代理服务器。

• 正向代理服务器将响应返回给客户端。

反向代理

概述

• 反向代理服务器是一种网络架构模式,其作为 Web 服务器的前置服务器,接收

来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回

给客户端。这种架构模式可以提升网站性能、安全性和可维护性等基本原理

• 反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先

会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的 Web

服务器,并将 Web 服务器的响应返回给客户端。在这个过程中,客户端并不知道实际

与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信。


下篇文章我将更新——多路转接~期待你的关注👉【A charmer】 

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

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

相关文章

积木报表查询出现jdbc.SQLServerException: 对象名 ‘user_tab_comment 的解决方法

目录 前言1. 问题所示2. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 1. 问题所示 使用帆软报表无错,后续使用积木报表查询出错: 没有显示报表: 具体错误信息如下:

数字孪生废气处理工艺流程

图扑数字孪生废气处理工艺流程系统。通过精准 3D 建模,对废气收集、预处理、净化、排放等全流程进行 1:1 数字化复刻,实时呈现设备运行参数、污染物浓度变化等关键数据。 借助图扑可视化界面,管理者可直观掌握废气处理各环节状态&#xff0c…

【某比特币网址请求头部sign签名】RSA加密逆向分析

目标:aHR0cDovL21lZ2FiaXQudmlwL21hcmtldA 直接搜索sign不方便定位,可以换个思路搜asi_uuid或者user_info 为什么搜这个,因为都是请求头里面的参数,基本上会在一起 实际上就是Object(h.a)((new Date).getTime()) 直接在这里打断点…

基于WebRTC技术的EasyRTC:支持任意平台设备的实时音视频通信解决方案

一、技术架构与核心优势 EasyRTC是一套基于WebRTC技术的实时音视频通信框架,旨在为开发者提供高效、稳定、跨平台的通信解决方案。其核心优势在于支持任意平台设备,包括Web端、移动端、桌面端和嵌入式设备,真正实现“一次开发,多…

DNS解析失败怎么解决?

在互联网时代,畅快地浏览网页、使用各类网络服务已成为生活常态。然而,当屏幕突然弹出 “DNS解析失败”的提示,原本顺畅的网络连接戛然而止,让人倍感困扰。DNS即域名系统,它如同互联网的 “电话簿”,负责将…

2025年4月19日

1.英语 1.单词 2.翻译 老年人食堂 In recent years, elderly population in China has continued to grow. The Chinese government is taking various measures to advance the construction of the elderly care service system and to make the later lives of the elde…

【Vue】组件通信(Props/Emit、EventBus、Provide/Inject)

个人主页:Guiat 归属专栏:Vue 文章目录 1. Props/Emit 父子组件通信1.1 Props 向下传递数据1.2 Emit 向上传递事件 2. EventBus 跨组件通信2.1 创建事件总线2.2 使用事件总线2.3 EventBus 优缺点 3. Provide/Inject 深层组件通信3.1 基本使用3.2 响应式处…

QT实现串口透传的功能

在一些产品的开发的时候,需要将一个串口的数据发送给另外一个串口进行转发。 具体的代码如下: #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::Ma…

动态规划入门:背包问题求具体方案(以0-1背包问题为例)

本质&#xff1a;有向图最短&#xff08;长&#xff09;路问题 字典序最小方案&#xff1f;--贪心思路&#xff1f;&#xff08;本题未使用&#xff09; 分析第一个物品&#xff1a; 写代码时tip&#xff1a;要考虑“边读边做”还是“先读后做” #include<iostream> #i…

WEMOS LOLIN32 开发板引脚布局和技术规格

&#x1f517; 快速链接ESP32 Development Boards, Sensors, Tools, Projects and More https://megma.ma/wp-content/uploads/2021/08/Wemos-ESP32-Lolin32-Board-BOOK-ENGLISH.pdf WEMOS LOLIN32 Development Board Details, Pinout, Specs WEMOS LOLIN32 Development Board …

mysql中的group by用法详解

MySQL中的GROUP BY是数据聚合分析的核心功能&#xff0c;主要用于将结果集按指定列分组&#xff0c;并结合聚合函数进行统计计算。以下从基本语法到高级用法进行详细解析&#xff1a; 一、基本语法与核心功能 SELECT 分组列, 聚合函数(计算列) FROM 表名 [WHERE 条件] GROUP B…

java基础从入门到上手(九):Java - List、Set、Map

一、List集合 List 是一种用于存储有序元素的集合接口&#xff0c;它是 java.util 包中的一部分&#xff0c;并且继承自 Collection 接口。List 接口提供了多种方法&#xff0c;用于按索引操作元素&#xff0c;允许元素重复&#xff0c;并且保持插入顺序。常用的 List 实现类包…

从malloc到free:动态内存管理全解析

1.为什么要有动态内存管理 我们已经掌握的内存开辟方法有&#xff1a; int main() {int val 20;//在栈空间上开辟四个字节char arr[20] { 0 };//在栈空间上开辟10个字节的连续空间return 0; }上述开辟的内存空间有两个特点&#xff1a; 1.空间开辟的时候大小已经固定 2.数组…

AutoSAR从概念到实践系列之MCAL篇(二)——Mcu模块配置及代码详解(上)

欢迎大家学习我的《AutoSAR从概念到实践系列之MCAL篇》系列课程,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走一波!感谢各位的支持! 根据上一篇内容中…

【数据库】事务

目录 1. 什么是事务&#xff1f; 2. 事务的ACID特性 3. 为什么使用事务&#xff1f; 4. 如何使用事务 4.1 查看支持事务的存储引擎 4.2 语法 4.3 保存点 4.4 自动/手动提交事务 5. 事物的隔离性和隔离级别 5.1 什么是隔离性 5.2 隔离级别 5.3 查看和设置隔离级别 1…

使用Redis实现实时排行榜

为了实现一个实时排行榜系统&#xff0c;我们可以使用Redis的有序集合&#xff08;ZSet&#xff09;&#xff0c;其底层通常是使用跳跃表实现的。有序集合允许我们按照分数&#xff08;score&#xff09;对成员&#xff08;member&#xff09;进行排序&#xff0c;因此非常适合…

6. 字符串

1.反转字符串 2.替换数字 3.反转字符串中的单词 4.KMP算法 5.重复的子字符串&#xff08;看具体证明&#xff09; 太6了&#xff08;真不是人做的&#xff09;

Redis ④-通用命令

Redis 是一个 客户端-服务器 结构的程序&#xff0c;这与 MySQL 是类似的&#xff0c;这点需要牢记&#xff01;&#xff01;&#xff01; Redis 固然好&#xff0c;但也不是任何场景都适合使用 Redis&#xff0c;一定要根据当前的业务需求来选择是否使用 Redis Redis 通用命令…

卷积神经网络(CNN)与VGG16在图像识别中的实验设计与思路

卷积神经网络&#xff08;CNN&#xff09;与VGG16在图像识别中的实验设计与思路 以下从基础原理、VGG16架构解析、实验设计步骤三个层面展开说明&#xff0c;结合代码示例与关键参数设置&#xff0c;帮助理解其应用逻辑。 一、CNN与VGG16的核心差异 基础CNN结构 通常包含33~55个…

玩机搞机基本常识-------小米OLED屏幕机型怎么设置为永不休眠_手机不息屏_保持亮屏功能 拒绝“烧屏” ?

前面在帮一位粉丝解决小米OLED机型在设置----锁屏下没有永不休眠的问题。在这里&#xff0c;大家要明白为什么有些小米机型有这个设置有的没有的原因。区分OLED 屏幕和 LCD屏幕的不同。从根本上拒绝烧屏问题。 OLED 屏幕的一些优缺点&#x1f49d;&#x1f49d;&#x1f49d; …