江山网站建设/nba最新消息新闻报道
前言:本节内容进入博主讲解的网络层级中的最后一层:数据链路层。 首先博主还是会线代友友们认识一下数据链路层的报文。 然后会带大家重新理解一些概念,比如局域网交换机等等。然后就是ARP协议。 讲完这些, 本节任务就算结束。 那么下面废话不多说,开始我们的学习吧!
ps:建议友友们先学习上三层在学习本节内容哦!
目录
认识报文
局域网
局域网通信原理
如何看待局域网
交换机
MSS和MTU
ARP协议
ARP原理
谈ARP报头
模拟一次过程
ARP周边问题
认识报文
首先, 数据链路层解决的是:直接相连的主机之间,进行数据交付的问题。
接下来这里有两个问题:
1、Mac帧如何做到解包和封装。 2、如何做到分用
对于第一个问题,我们mac帧解包采用的是定长报文。所以当我们收到报文时,根据定长的报文将报头和有效载荷进行分离。
对于第二个何题,如做分用就是根报文里面的一个字段叫做类型,这个类型就是记录了报文的类型,如果是0800,就是数,如果时0806,那么就是ARP请求,如果是8035,那么就是RARP请求。
局域网
局域网通信原理
每一台主机H1、H2等等都有它的Mac地址Mac1、Mac2、Mac3.....Mac7。
我们之前说过,就此如老师问小王你为什么没交作业,其实教室里面的人都听到了,只是大部分的人一听目的地址是小王,说明不关自己的事情,就直接把老师说的报文丢弃了。只有小王收到报文后,目的地址是小王,自己也是小王,那么就知道是发给自己的。然后就拿着报文向上交付。所以,局域网通信的过程,其实是有很多吃瓜群众的。
就比如上面从Mac1发向Mac7的报文。其实Mac1要向局域网内的每一台主机都发送一份这个报文(数据)。但是只有Mac7收到后不会将报文丢弃。
但是这里就有了一个问题,如果一个局域网内的两个主机都发送数据,假如H1和H3发送数据。那么在底层当中,两台主机发送的数据就一定会发生数据碰撞。并目两台主机能够识别碰撞的信息。检测到了后,就实行碰撞避免算法来保证任何时刻只有一台主句在局域网中发送。
并且,局域网中,主机数量越务,发生碰撞的概率太大,这也就是为什么我们在人多的地方有时候网会卡顿,因为发生数据碰撞概率大,一旦发生数据碰撞,那么就要实行 碰撞避免算法,就要等一等。
如何看待局域网
我们可以把局域网看成多台主机所对应的临界资源。
A主机发送数据,数据从上向下进行交付。在网络层先做决策。当我们做完决策,我们发现我们就是要发给中间的某一个路由器,比如说发给路由器R。这个数据发给路由R的时候,一定是数据链路层先收到。然后去掉CRC和报头,再由数据链路层向上交付给网络层。然后网络层就得到了一个带有IP报头的报文。 然后如果又要将这个数据发向别的路由器。那么就要将IP报文重新向下交付。所以,这个整体的过程就是一个解包然后重新封包的过程。
交换机
随着局域网的主机增多,我们会诞生一种新的网络设备。这种设备叫做交换机。这种交换机的设备是工作在数据链路层的。交换机能够识别到数据碰撞,不会影响另一边。所以,假如我们的左边发生了数据碰撞了,那么我们的右边的数据正常转发没有问题。
一般情况下,就是交换机左侧的报文不会发送到右侧,就能减少右侧的报文数量。就不容易发生数据碰撞。所以,综上,交换机有一个特点:划分碰撞域,减少局域网碰撞。
MSS和MTU
正因为数据顿最多字节就是1500, 那么就倒逼着网络层最多发送1500字节的数据,网络层就要分片。 又因为分片不太好, 所以就要尽可能减少分片。
所以如何减少分片呢? 就是规定TCP最多发送多少个字节!那么发送多少, 首先数据最多1500,说明IP报文最多能有1500个字节。然后要知道TCP发送过来的报文是在IP报文的有效载荷部分。IP报头20字节,那么TCP报头加有效载荷就不能超过1480个字节。 TCP的报头加有效载荷是哪里来的? TCP内部有一个流式缓冲区。 倒时候我们就是从流式缓冲区中拿数据。拿多少? TCP的报头加有效载荷为1480,那么有效载荷最多1460。 所以拿1460个字节最多。这个1460就是我们的MSS。这就是为什么当中我们的滑动窗口中要一段一段的滑动。
上面的这个数据帧对多就是1500,这个1500,就是MTU。
ARP协议
我们在学习IP的时候其实就已经知道了,所谓了数据发送到目标网络,本质就是通过无数个连续的子网实现的。我们也学过了,其实我们发送到报文在子网中进行跳跃的时候跳到一个路由器上面就要先解包向上交付到网络层。然后检查dst和src。如果不是的话,再封包向下交付到数据链路层,然后进行跳转。就是下面这个过程:
问题是,如果我们的路由器向上交付后,在网络层发现dst IP就是在自己的局域网中。那么路由器就要重新封装mac顿交给目标主机了。
可是,路由器怎么知道我们的目标主机的mac地址的呢?所以,此时在局域网当中,还要有一种协议:ARP(工作在数据链路层,局域网当中) 。ARP协议的作用是,在局域网中,将目标主机的IP地址,转化为mac地址。
下面是一种局域网
下面是一个IP报文,从A发来的,目的主机是B。
如何将目标主机内的IP地址转化为mac地址呢?
ARP原理
加入上面是主机A和主机B的IP和MAC地址。 如果是主机A想要向主机B发送数据。开始主机A是先进行广播。就是广播说我想要与IP地址170.20.1.2进行通信,我的IP地址是170.20.1.1,MACA。IP地址为170.20.1.2的主机,MAC地址是多少?这个广播就是一次ARP请求。
然后主机B就收到了这个ARP请求。然后就返回一个ARP响应包: 170.20.1.2的MAC地址是XXX。
谈ARP报头
下面是ARP报头以及其中的各个字段:
- 硬件类型指的是网络类型。这个固定写法为1,为以太网。
- 协议类型:指要转化的地址类型, 0x0800为IP地址。
- 硬件地址长度对于以太网地址长度是6
- 协议地址长度对于IP地址为4字节
- OP字段为1,表示ARP请求。OP字段为2表示ARP应答
- 发送端和目的就是我们的路由器和目标主机。
模拟一次过程
此时入口路由收到了一个报文:
因为我们的中转路由要将报文发给主机B。但是他只知道主机B的IP地址,不知道MAC地址,那么怎么办呢。所以中转路由就要发起ARP请求了。 ARP请求报文格式如下。先不填写Mac帧:
怎么填这个报文呢?
- 硬件类型填1,表示以太网。
- 协议类型是IP地址转化为MAC地址。所以填0800
- 硬件长度就是6,协议地址长度就是4。
- 然后OP字段是1。
- 发送端的以太网地址是谁呢? 就是MACR。
- 发送端的IP地址就是IPR。
- 目的以太网地址不知道,所以就是全F。
- 目的IP就是IP B。
然后添加Mac帧
添加好MAC顺之后就发送向局域网了,然后局域网当中的每一合主机都受到了这个报文、所以每合主机都要处理,如果不是B主机。那么就是收到这个报文解包并处理。先进行MAC的解包。然后发现报头的目的以太网地是全F,所以A就要处理2这个报文,然后又看帧类型,是0806,说明就是ARP请求,所以这个主机就要把数据帧向上交付给上层,也就是ARP软件层。然后ARP软件层就查看目的IP地址,是IP B,不是自己。就把这个报文丢弃了。
但是这里有一个问题,任何一个主机,既可以收到ARP清求,也可以收到ARP应答。我怎么知道我这个收到的应答就是我刚刚发过去的请求的应答呢。所以,就要先看一下OP。如果OP是1就是个请求。如果是2就是应答。
如果是主机B,主机B收到后发现就是发给自己的。那么就要应答了。应答的时候,OP字段就不能是1了, OP要变成2。发送方和目的也要调换一下了。
然后就把应答报文发到以太网中。路由就发现这个报文是发给我的。然后就能拿到主机B的MAC地址了。这里要注意的是,在ARP的过程中,收到的任何ARP报文,都是先看OP!!!OP决定了什么呢??OP决定了ARP的类型: 请求或者应答。如果是请求,我们看的是目的MAC地址和目的IP。如果是应答,我们看的是发送端的MAC地址和发送端的IP。看看这两个是否相等。
ARP周边问题
arp,主机的Mac地址和IP地址都是数据,会被主机缓存起来 (临时缓存)可以使用arp-a查看:
1、arp不是每次都要做的,因为它已经被缓存了。 arp只有在缓存失效的时候,才会进行.
2、我可以通过我的IP和子网掩码,得到我的网络号,然后拼接IP地址, ping所有的主机。得到所有主机的IP和mac。
3 、如果我收到多次同样的arp应答,我会以最新的为准。这就导致了一个问题——基于ARP的称为中间人方式。 如下:
上面这种中间主机定向的向目标主机发送大量的arp,构建出虚假的IP地址和Mac地所对应的映射关系。以后所有的报文都会转发给这个主机。这种技术,叫做arp欺骗。
如果以后,中间主机不再丢弃了,而是将数据发给路由器。以后路由器返回数据也会返回给中间主机。然后由中间主机发给原本的主机。以后,原本主机和路由器都不知道中间主机的存在,这台中间主机就成功地成为了一台局域网当中的中间人机器。 这种方式,叫做基于arp的称为中间人的方式。
——————以上就是本节全部内容哦, 如果对友友们有帮助的话可以关注博主, 方便学习更多知识哦!!!
相关文章:

Linux网络 | 进入数据链路层,学习相关协议与概念
前言:本节内容进入博主讲解的网络层级中的最后一层:数据链路层。 首先博主还是会线代友友们认识一下数据链路层的报文。 然后会带大家重新理解一些概念,比如局域网交换机等等。然后就是ARP协议。 讲完这些, 本节任务就算结束。 那…...

芝法酱学习笔记(2.6)——flink-cdc监听mysql binlog并同步数据至elastic-search和更新redis缓存
一、需求背景 在有的项目中,尤其是进销存类的saas软件,一开始为了快速把产品做出来,并没有考虑缓存问题。而这类软件,有着复杂的业务逻辑。如果想在原先的代码中,添加redis缓存,改动面将非常大,…...

JavaScript系列(58)--性能监控系统详解
JavaScript性能监控系统详解 📊 今天,让我们深入探讨JavaScript的性能监控系统。性能监控对于保证应用的稳定性和用户体验至关重要。 性能监控基础概念 🌟 💡 小知识:JavaScript性能监控是指通过收集和分析各种性能指…...

GESP2023年12月认证C++六级( 第三部分编程题(1)闯关游戏)
参考程序代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <string> #include <map> #include <iostream> #include <cmath> using namespace std;const int N 10…...

git 新项目
新项目git 新建的项目如何进行git 配置git git config --global user.name "cc" git config --global user.email ccexample.com配置远程仓库路径 // 添加 git remote add origin http://gogs/cc/mc.git //如果配错了,删除 git remote remove origin初…...

系统URL整合系列视频一(需求方案)
视频 系统URL整合系列视频一(需求方案) 视频介绍 (全国)某大型分布式系统Web资源URL整合需求实现方案讲解。当今社会各行各业对软件系统的web资源访问权限控制越来越严格,控制粒度也越来越细。安全级别提高的同时也增…...

Vue.js 使用组件库构建 UI
Vue.js 使用组件库构建 UI 在 Vue.js 项目中,构建漂亮又高效的用户界面(UI)是很重要的一环。组件库就是你开发 UI 的好帮手,它可以大大提高开发效率,减少重复工作,还能让你的项目更具一致性和专业感。今天…...

计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战
前一篇文章,Tensor 基本操作5 device 管理,使用 GPU 设备 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started PyTorch 计算图和 Autograd 微积分之于机器学习Computational Graphs 计算图Autograd…...

51单片机入门_05_LED闪烁(常用的延时方法:软件延时、定时器延时;while循环;unsigned char 可以表示的数字是0~255)
本篇介绍编程实现LED灯闪烁,需要学到一些新的C语言知识。由于单片机执行的速度是非常快的,如果不进行延时的话,人眼是无法识别(停留时间要大于20ms)出LED灯是否在闪烁所以需要学习如何实现软件延时。另外IO口与一个字节位的数据对应关系。 文…...

如何获取sql数据中时间的月份、年份(类型为date)
可用自带的函数month来实现 如: 创建表及插入数据: create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份: select MONTH(begindate)…...

【单层神经网络】softmax回归的从零开始实现(图像分类)
softmax回归 该回归分析为后续的多层感知机做铺垫 基本概念 softmax回归用于离散模型预测(分类问题,含标签) softmax运算本质上是对网络的多个输出进行了归一化,使结果有一个统一的判断标准,不必纠结为什么要这么算…...

使用开源项目:pdf2docx,让PDF转换为Word
目录 1.安装python 2.安装 pdf2docx 3.使用 pdf2docx 转换 PDF 到 Word pdf2docx:GitCode - 全球开发者的开源社区,开源代码托管平台 环境:windows电脑 1.安装python Download Python | Python.org 最好下载3.8以上的版本 安装时记得选择上&#…...

保姆级教程Docker部署KRaft模式的Kafka官方镜像
目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 四、部署可视化工具 1、创建挂载目录 2、运行Kafka-ui容器 3、Compose运行Kafka-ui容器 4、查看Kafka-ui运行状态 …...

ChatGPT提问技巧:行业热门应用提示词案例--咨询法律知识
ChatGPT除了可以协助办公,写作文案和生成短视频脚本外,和还可以做为一个法律工具,当用户面临一些法律知识盲点时,可以向ChatGPT咨询获得解答。赋予ChatGPT专家的身份,用户能够得到较为满意的解答。 1.咨询法律知识 举…...

openRv1126 AI算法部署实战之——Tensorflow模型部署实战
在RV1126开发板上部署Tensorflow算法,实时目标检测RTSP传输。视频演示地址 rv1126 yolov5 实时目标检测 rtsp传输_哔哩哔哩_bilibili 一、准备工作 从官网下载tensorflow模型和数据集 手动在线下载: https://github.com/tensorflow/models/b…...

STM32 TIM定时器配置
TIM简介 TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能ÿ…...

51单片机 05 矩阵键盘
嘻嘻,LCD在RC板子上可以勉强装上,会有一点歪。 一、矩阵键盘 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式;采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。…...

SSRF 漏洞利用 Redis 实战全解析:原理、攻击与防范
目录 前言 SSRF 漏洞深度剖析 Redis:强大的内存数据库 Redis 产生漏洞的原因 SSRF 漏洞利用 Redis 实战步骤 准备环境 下载安装 Redis 配置漏洞环境 启动 Redis 攻击机远程连接 Redis 利用 Redis 写 Webshell 防范措施 前言 在网络安全领域࿰…...

kubernetes学习-配置管理(九)
一、ConfigMap (1)通过指定目录,创建configmap # 创建一个config目录 [rootk8s-master k8s]# mkdir config[rootk8s-master k8s]# cd config/ [rootk8s-master config]# mkdir test [rootk8s-master config]# cd test [rootk8s-master test…...

python 语音识别
目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…...

一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答:包括671B满血版和各个蒸馏版的部署
前言 自从deepseek R1发布之后「详见《一文速览DeepSeek R1:如何通过纯RL训练大模型的推理能力以比肩甚至超越OpenAI o1(含Kimi K1.5的解读)》」,deepseek便爆火 爆火以后便应了“人红是非多”那句话,不但遭受各种大规模攻击,即便…...

[mmdetection]fast-rcnn模型训练自己的数据集的详细教程
本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练,数据集是自制图像数据。废话不多说,下面进入训练步骤教程。 注:本人使用linux服务器进行展示,Windows环境大差不差。另外࿰…...

1. Kubernetes组成及常用命令
Pods(k8s最小操作单元)ReplicaSet & Label(k8s副本集和标签)Deployments(声明式配置)Services(服务)k8s常用命令Kubernetes(简称K8s)是一个开源的容器编排系统,用于自动化应用程序的部署、扩展和管理。自2014年发布以来,K8s迅速成为容器编排领域的行业标准,被…...

linux下ollama更换模型路径
Linux下更换Ollama模型下载路径指南 在使用Ollama进行AI模型管理时,有时需要根据实际需求更改模型文件的存储路径。本文将详细介绍如何在Linux系统中更改Ollama模型的下载路径。 一、关闭Ollama服务 在更改模型路径之前,需要先停止Ollama服务。…...

本地Ollama部署DeepSeek R1模型接入Word
目录 1.本地部署DeepSeek-R1模型 2.接入Word 3.效果演示 4.问题反馈 上一篇文章办公新利器:DeepSeekWord,让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm1001.2014.3001.5501https://blog.csdn.net/qq…...

【自学笔记】Git的重点知识点-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Git基础知识Git高级操作与概念Git常用命令 总结 Git基础知识 Git简介 Git是一种分布式版本控制系统,用于记录文件内容的改动,便于开发者追踪…...

[EAI-028] Diffusion-VLA,能够进行多模态推理和机器人动作预测的VLA模型
Paper Card 论文标题:Diffusion-VLA: Scaling Robot Foundation Models via Unified Diffusion and Autoregression 论文作者:Junjie Wen, Minjie Zhu, Yichen Zhu, Zhibin Tang, Jinming Li, Zhongyi Zhou, Chengmeng Li, Xiaoyu Liu, Yaxin Peng, Chao…...

实现数组的扁平化
文章目录 1 实现数组的扁平化1.1 递归1.2 reduce1.3 扩展运算符1.4 split和toString1.5 flat1.6 正则表达式和JSON 1 实现数组的扁平化 1.1 递归 通过循环递归的方式,遍历数组的每一项,如果该项还是一个数组,那么就继续递归遍历,…...

登录认证(5):过滤器:Filter
统一拦截 上文我们提到(登录认证(4):令牌技术),现在大部分项目都使用JWT令牌来进行会话跟踪,来完成登录功能。有了JWT令牌可以标识用户的登录状态,但是完整的登录逻辑如图所示&…...

pytorch实现门控循环单元 (GRU)
人工智能例子汇总:AI常见的算法和例子-CSDN博客 特性GRULSTM计算效率更快,参数更少相对较慢,参数更多结构复杂度只有两个门(更新门和重置门)三个门(输入门、遗忘门、输出门)处理长时依赖一般适…...