当前位置: 首页 > news >正文

ip与mac-数据包传输过程学习

你管这破玩意叫网络?

内容来源于飞天闪客,以前没有学习过网络的相关基础知识,只会去瞎设置,现在终于是弄明白了。

多台电脑之间想要通信,可以直接通过一条网线进行连接。但是随着网线的增加,这个就会比较繁杂了。
在这里插入图片描述
所以就有了集线器这样的设备。
在这里插入图片描述
集线器会将包不做任何处理的分给每个设备。这样的话就不知道包是谁发给谁的了,但是每个设备都有自己的mac物理地址,数据中再加上从哪个mac来,发送到目标mac地址就好了。
在这里插入图片描述
当然,这个时候,其他电脑其实还是可以看到不属于自己的包的数据的内容,所以就有了新的需求:将包只发给一个设备就好了——更加智能的集线器:交换机。
在这里插入图片描述
交换机内部维护着一张mac地址表,记录了每个设备的mac地址和对应的交换机端口号。这个时候包在传递的时候就会根据包信息,将包数据传输给对应的端口。
但是最开始的时候mac表是空的,是怎么样一点点维护起来的呢?
在这里插入图片描述
一开始的时候交换机就是一个集线器,不过它知道学习,把流经自己的数据包携带的信息记录下来了,然后就学习到对应的mac映射表:
在这里插入图片描述
这基本就是现在常用的单交换机的形式,但是交换机的端口也不够用了怎么办呢?于是就有了多个交换机之间的通信。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个时候一个端口对应的mac地址也就会变多了,所以要维护的mac地址表也就会逐渐增加,此时应该怎么办呢?
那这时就又有了新的设备了,在交换机与交换机之间连接一个新的设备。没错,就是大家非常常见的路由器了。
在这里插入图片描述
它的功能就是作为一台独立的mac地址设备,将数据包作一次性转发。路由器每个端口都是由独立的mac地址。
左边的端口6对应路由器的mac地址,那问题是端口6的数据怎么先发给路由器的呢(原本是要发给E,F,G,H这四个设备的)?
此时就引入了ip地址的概念了192.168.0.1。此时我们再来看完整的发布过程:
在这里插入图片描述
一包数据带有对应的源mac,目标mac。源ip,目标ip等信息。
a与b通信时,直接可以通过交换机获得信息,通过源mac和目标mac就可以传递。
a与c通信时,a需要先把数据发给路由器,然后再转交给c。
a要给c,过程中先给到路由器,所以数据链路层的目标mac要是路由器的mac地址,网络层的ip必须时a的ip到c的ip。
先看传给路由器的时候,数据是:
在这里插入图片描述
由于数据先给路由器,此时的目标mac和目标ip对应如上所示。接下来路由器给到c的时候,有个神奇的过程,它会把目标mac自动变成目标ip对应的mac地址。
在这里插入图片描述
那么问题就来了,如果a给c发送数据,怎么知道需要路由器转发数据呢?
这里就涉及到子网的概念,如果源ip与目标ip再同一个子网,直接将包通过交换机发出去。如果源ip与目标ip不在同一个子网,就会交给路由器去处理。是否在同一个子网又是通过掩码去判断的,也就是说192.68.0开头的就是同一个子网,否则就不是同一个子网。
掩码常用255.255.255.0,将原ip与掩码进行与运算,相等就是同一个子网。计算结果如下:
在这里插入图片描述
第二个问题,a怎么知道哪个是路由器的呢?
有一个默认网关的概念,默认网关就是一个ip地址。当遇到不是在同一个子网的电脑时,先把包发给默认网关对应的ip地址,所以就会先给路由器的ip地址。
在这里插入图片描述
还有一个问题,数据包在发送时是需要mac地址和ip地址的,现在虽然有了ip的相关数据了,但是没有mac地址。

此时是一个叫ARP协议的东西,这个机制会把ip与mac地址进行对应,同样,需要先进行一次映射。这个协议是广泛使用的,交换机和路由器都会要通过ARP协议维护一个ip与mac的映射表。
在这里插入图片描述
对于交换机来说,还有一个路由表,对应的是ip和端口,把目标ip范围得到,查表得到端口。当然也是存在ARP协议的,将mac地址获取到。
在这里插入图片描述
最后我们来完整看一下数据包的传输过程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
涉及到的三张表分别是mac地址表(交换机)-映射mac地址和端口,路由表-映射ip和端口,arp缓存表(电脑和路由器中都有)-映射ip和mac地址

相关文章:

ip与mac-数据包传输过程学习

你管这破玩意叫网络? 内容来源于飞天闪客,以前没有学习过网络的相关基础知识,只会去瞎设置,现在终于是弄明白了。 多台电脑之间想要通信,可以直接通过一条网线进行连接。但是随着网线的增加,这个就会比较…...

【Qwen开源】WorldPM: 扩展人类偏好建模

受语言建模中的缩放定律启发,该定律展示了测试损失如何随着模型和数据集的规模呈幂律关系扩展,我们发现类似的定律也存在于偏好建模中。我们提出了世界偏好建模(WorldPM)来强调这种扩展潜力,其中世界偏好体现了人类偏好…...

如何设计一个二级缓存(Redis+Caffeine)架构?Redis 6.0多线程模型如何工作?

一、二级缓存(RedisCaffeine)架构设计 1. 设计目标 通过「本地缓存(Caffeine) 分布式缓存(Redis)」的分层结构,实现: 低延迟:热点数据本地缓存(内存级访问…...

MYSQL8.0常用窗口函数

MYSQL8.0常用窗口函数 一、窗口函数的基本概念 窗口函数,顾名思义,就是在查询结果集中定义一个“窗口”,在这个窗口内进行数据的计算和分析。与普通聚合函数不同,普通聚合函数会将结果集分组并返回每组的单一汇总值,…...

【Pandas】pandas DataFrame pct_change

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

Model 复现系列(一)OpenVLA

这个系列用来记录一些开源模型在本地部署或测试时遇到的一些坑以及解决方案。 系列第一篇文章给了 OpenVLA,该模型是具身智能与VLA领域的必读模型之一,虽然现在有很多模型号称超越了它,但作为行业的基石仍然有非常高的地位。 项目链接&…...

Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器配置版本-v5.2.3-beta+charts图表

最近同事告诉我说要重新部署一套blockscout浏览器,我一想,之前有部署流程文档-《Web3:使用Docker-compose方式部署blockscout浏览器+charts图表》,这不手拿把掐吗。 但还是出现了一些问题,之前服务器系统是centos,现在是Ubuntu系统,而且之前docker镜像也没那么难获取,于…...

ECharts-柱状图

柱状图样式设置 Ⅰ、柱条样式 柱条的样式可以通过 series.itemStyle 设置,包括: 柱条的颜色(color);柱条的描边颜色(borderColor)、宽度(borderWidth)、样式&#xff…...

理解UDP协议

在计算机网络中,UDP(用户数据报协议)常被称为“轻量级”传输协议。它不像TCP那样追求可靠传输,而是以简洁高效的设计满足特定场景的需求。本文将带你深入UDP的核心特性、技术细节及其实际应用。 UDP的协议设计​​ UDP协议的核心…...

Web 技术与 Nginx 网站环境部署

这里写目录标题 一. Web基础域名和DNS域名的概念域名的结构域名结构类型 Hosts文件Hosts文件的作用修改Hosts文件 DNS域名注册 网页与HTML网页概述HTML概述HTML基本标签HTML语法规则HTML文件结构 网站和主页Web1.0 与 Web2.0 静态网页与动态网页静态网页动态网页动态网页语言 H…...

分布式天线系统 (DAS, Distributed Antenna System)

1. 概述 分布式天线系统(DAS) 是一种通过多个分散的天线节点来增强无线信号覆盖和容量的网络架构。它主要用于解决大型建筑、地下设施、体育场馆等场景中的信号盲区或容量不足问题。 2. 主要组成 DAS系统通常包括以下关键组件: 信号源&…...

hexo博客搭建使用

搭建 Hexo 演示主题为:Keep 使用 文章 创建新文章 ➜ zymore-blog-keep git:(main) ✗ hexo new "告别H5嵌入!uniApp小程序文件下载与分享完整解决方案" INFO Validating config INFO Created: ~/Desktop/HelloWorld/zymore-blog-k…...

Git上传项目到GitHub

Git上传项目到GitHub 下载Git客户端配置Git设置GitHub上传本地项目到Github 下载Git客户端 网址:Git Windows客户端。选择Standalone Installer(单独安装程序),并点击64bit Git for Windows Setup(64位Git for Windows安装程序)进行下载。然后一路默认选…...

隨筆20250519 Async+ThreadPoolTaskExecutor⾃定义线程池进阶实战

1.ThreadPoolTaskExecutor线程池 有哪⼏个重要参数, 什么时候会创建线程 1.核心綫程數 查看核心綫程數目是否已經滿,未滿 創建一條綫程 執行任務,已滿負責執行第二部 2.阻塞隊列 查看阻塞隊列是否已經滿,未滿將任務加入阻塞隊列&…...

YoloV8改进策略:卷积篇|风车卷积|即插即用

文章目录 论文信息论文翻译摘要引言相关研究红外搜索与跟踪检测和分割网络红外搜索与跟踪数据集的损失函数红外搜索与跟踪数据集方法风车形卷积(PConv)基于尺度的动态损失SIRST - UAVB数据集实验实验设置与其他方法的比较多模型上的消融实验结论致谢代码改进方法测试结果总结…...

HGDB中如何为表增加自增主键

文章目录 环境文档用途详细信息 环境 系统平台:N/A 版本:4.5 文档用途 本文主要介绍在瀚高数据库中如何为表增加新主键,便于业务改造和查询。 实现原理:通过添加序列自增字段和唯一约束实现。 详细信息 可以根据数字类型来设…...

升级mysql (rpm安装)

#备份以防万一 备份配置文件: /etc/my.cnf.d/server.cnf 备份数据: mysqldump -u your_username -p --all-databases > all_databases.sql #停止 systemctl stop mysql #卸载旧版 yum remove mariadb #安装新版( 通过yum安装报错,死活安装不了,只能rpm安装) 下载地址…...

ALTER COLLATION使用场景

ALTER COLLATION 是 SQL 中用于修改字符集排序规则(Collation)的操作。排序规则定义了字符数据的比较和排序方式,包括字母顺序、大小写敏感性、重音符号处理等。ALTER COLLATION 的使用场景主要集中在需要调整数据库或表的字符集排序规则时。…...

Python实例题:Python 实现简易 Shell

目录 Python实例题 题目 代码实现 功能说明 基本命令执行: 内置命令: 环境变量: 管道: 重定向: 信号处理: 使用方法 注意事项 Python实例题 题目 Python 实现简易 Shell 代码实现 import o…...

大中型病险水库大坝除险加固监测实施方案

一、方案背景 我国80%以上的水库修建于20世纪50至70年代,经过几十年的运行,大部分水库已超过设计使用年限,功能老化现象较严重,出现病险具有一定的客观性。受超标洪水、强烈地震等自然灾害影响,水库一旦遭遇突发暴雨洪…...

[长城杯 2024]anote

题解前的小吐槽:终于还是狠下心复现了一下长城杯的这个赛题,第一次觉得汇编比函数看的方便,不过这题好写是好写的[心虚](还是看了一些大佬的wp) [长城杯 2024]anote(堆溢出C) [长城杯 2024]anote 1.准备 motalymotaly-VMware-Virtual-Platform:~$ fi…...

verify_ssl 与 Token 验证的区别详解

verify_ssl 与 Token 验证的区别详解 在开发或调用 API 接口时,我们经常会遇到两个看似相关但实际上作用完全不同的安全参数: 传输层的 verify_ssl应用层的 Authorization(最常见是 Bearer Token) 虽然它们都与“安全”有关&am…...

Python集合

一、Python集合概述 Python集合(set)是一种无序、可变且不包含重复元素的数据结构。集合在Python中通过哈希表实现,这使得它在成员检测和去重操作中具有极高的效率。 集合与列表、元组的主要区别: 无序性:元素没有固定顺序 唯一性&#x…...

容器化-K8s-镜像仓库使用和应用

一、K8s 镜像仓库使用 1、启动镜像仓库 cd/usr/local/harbor ./install.sh2、配置镜像仓库地址 在 master 节点和 slaver 节点上,需要配置 Docker 的镜像仓库地址,以便能够访问本地的镜像仓库。编辑 Docker 的配置文件 vi /etc/docker/daemon.json(如果不存在则创建),添…...

解决报错 Flask-SQLAlchemy TypeError: ‘float‘ object is not callable

Flask-SQLAlchemy TypeError: ‘float’ object is not callable Flask-SQLAlchemy 与 Python 版本兼容性问题解决方案 日期:2025 年 5 月 19 日 分类:后端开发、Python、Flask 标签:Flask-SQLAlchemy, Python 版本兼容,错误修复…...

k8s节点维护的细节

k8s节点维护的细节 Kubernetes(k8s)节点维护是保障集群稳定运行的重要工作,涉及节点升级、故障排查、资源优化等多个方面。维护步骤和操作命令: 一、节点维护前的准备工作 1. 查看集群状态 kubectl get nodes # 查看所有节点状…...

基于STM32的光照测量报警Proteus仿真设计+程序设计+设计报告+讲解视频

基于STM32的光照测量报警仿真设计 1.**主要功能****2.仿真设计****3.程序设计****4.设计报告****5.下载链接** 基于STM32的光照测量报警仿真设计 (Proteus仿真程序设计设计报告讲解视频) 仿真图Proteus 8.9 程序编译器:keil 5 编程语言:C语…...

Docker 运维管理

Docker 运维管理 一、Swarm集群管理1.1 Swarm的核心概念1.1.1 集群1.1.2 节点1.1.3 服务和任务1.1.4 负载均衡 1.2 Swarm安装准备工作创建集群添加工作节点到集群发布服务到集群扩展一个或多个服务从集群中删除服务ssh免密登录 二、Docker Compose与 Swarm 一起使用 Compose 三…...

五分钟本地部署大模型

前提:个人PC机,配置:CPU:i5-13600KF 显卡:RTX3080 内存:32GB 1.安装ollama 访问https://ollama.com/,点击下载,完成后傻瓜式安装即可; 2.修改环境变量 默认大模型下载在C盘&…...

RSA(公钥加密算法)

RSA(Rivest-Shamir-Adleman)是一种常见的公钥加密算法,广泛应用于安全通信中。它是由三位计算机科学家Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出的,是一种基于数论问题的加密算法。 一、RSA的基本原理 RSA是基于大数…...

Go语言测试用例的执行与分析

在软件开发过程中,测试用例是确保代码质量的关键环节。Go语言作为一种现代的编程语言,它内置了强大的测试框架,可以帮助开发者轻松编写和执行测试用例。本文将介绍如何在 Go 语言中编写、执行测试用例,并对测试结果进行分析。 ## …...

动态规划-LCR 089.打家劫舍-力扣(LeetCode)

一、题目解析 结合示例1,我们能得知对于小偷而言不能连续偷相连的房间,且需要保证偷窃的金额最高。 二、算法解析 1.状态表示 我们想知道到最后一个房子时所偷窃的最高金额,所以dp[i]表示在i位置时,所偷到的最大价值。 但我们…...

leetcode hot100:解题思路大全

因为某大厂的算法没有撕出来,怒而整理该贴。只有少数题目有AC代码,大部分只会有思路或者伪代码。 技巧 只出现一次的数字 题目 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出…...

2022年下半年信息系统项目管理师——综合知识真题及答案(4)

2022年下半年信息系统项目管理师 ——综合知识真题及答案(4) 零、时光宝盒 (https://blog.csdn.net/weixin_69553582 逆境清醒) 双向奔赴的善意 网上看到的视频。 家里开包子店的男孩冒雨放学,路口的交警叔叔担心孩…...

大语言模型(LLM)本身是无状态的,怎么固化记忆

大语言模型(LLM)本身是无状态的,无法直接“记住”历史对话或用户特定信息 大语言模型(LLM)本身是无状态的,无法直接“记住”历史对话或用户特定信息,但可以通过架构改进、外部记忆整合、训练方法优化等方案实现上下文记忆能力。 一、模型内部记忆增强:让LLM“记住”…...

ISO 26262-5 硬件详细设计

7 Hardware detailed design 硬件详细设计个人理解包含各种理论计算和分析 为了避免常见的设计缺陷, 应运用相关的经验总结。 在硬件详细设计时, 应考虑安全相关硬件元器件失效的非功能性原因, 如果适用, 可包括以下的影响因素&…...

C# NX二次开发-求体、面的最小包容圆柱

NX自带ufun函数里有求体、面的最小包容方块。(UF_MODL_ask_bounding_box、UF_MODL_ask_bounding_box_aligned、UF_MODL_ask_bounding_box_aligned),但没有求最小包容圆柱。但有很多时候需要求最小包容圆柱。比如零件开圆棒料。这时需要通过一些方法来计算出最小包容圆柱。 …...

vue2.0 组件之间的数据共享

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...

11.4/Q1,GBD数据库最新文章解读

文章题目:Global, regional, and national burden of neglected tropical diseases and malaria in the general population, 1990-2021: Systematic analysis of the global burden of disease study 2021 DOI:10.1016/j.jare.2025.04.004 中文标题&…...

【愚公系列】《Manus极简入门》048-自然探险之旅:“户外活动规划师”

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…...

生命科学温控物流:现状、驱动因素与发展趋势深度洞察

在生命科学产业蓬勃发展的当下,生命科学温控物流作为保障药品、疫苗等温度敏感产品安全运输的关键环节,正受到越来越多的关注。根据QYResearch报告出版商调研统计,2031年全球生命科学温控物流市场销售额预计将达到3563.3亿元,年复…...

2025-2030年制造业数字化转型发展趋势展望

随着科技的飞速发展,数字化转型已成为制造业提升竞争力、实现高质量发展的核心路径。从2025年到2030年,这一趋势将进一步深化,新技术、新模式和新生态将为制造业注入强劲动力。作为小编,今天带大家一起来看看未来五年制造业数字化…...

OSD原理以及模块的讲解

一.原理讲解 1.OSD的概念: OSD(on-screen-display)中文名称是屏幕菜单调节显示方式,它的作用是对屏幕显示器做各种工作指标,包括:色彩、几何图形等进行调整,从而使得整个显示器得到最佳的状。 最常见的OSD调试就是在…...

SQL注入——Sqlmap工具使用

一、Sqlmap介绍 Sqlmap 是一个使用python语言开发的开源的渗透测试工具,可以用来进行自动化检测,利用 SQL 注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,…...

如何有效提高海外社媒矩阵曝光率,避免封号风险?

在全球社交媒体营销的过程中,海外矩阵社媒的运营已经成为一个不可或缺的策略。通过建立多个社媒账号,可以有效地扩展市场覆盖、提高品牌曝光率,但与此同时,账号之间的关联问题也需要引起足够重视。过度的关联可能导致社媒平台对账…...

B树与B+树全面解析

B树与B树全面解析 前言一、B 树的基本概念与结构特性1.1 B 树的定义1.2 B 树的结构特性1.3 B 树的节点结构示例 二、B 树的基本操作2.1 查找操作2.2 插入操作2.3 删除操作 三、B 树的基本概念与结构特性3.1 B 树的定义3.2 B 树的结构特性3.3 B 树的节点结构示例 四、B 树与…...

代码随想录60期day41

完全背包 #include<iostream> #include<vector>int main() {int n,bagWeight;int w,v;cin>>n>>bagWeight;vector<int>weight(n);vector<int>value(n);for(int i 0;i <n;i){cin>>weight[i]>>value[i];}vector<vecotr&l…...

语言幻觉测试用例及相关策略总结

文章目录 语言幻觉测试用例及相关策略总结如何判断内容是否存在语言幻觉&#xff1f; 一、语言幻觉测试用例类型1.1 事实性错误测试用例 1&#xff1a;时效性强的事实用例 2&#xff1a;跨领域常识用例 3&#xff1a;动态变化的规则 **1.2 逻辑矛盾测试**用例 1&#xff1a;同一…...

云原生攻防1(基础介绍)

什么是云原生 云原生是一套技术体系和方法论。 云:表示应用程序位于云中 原生:表示应用程序从设计之初就考虑到云的环境,原生为云而设计,在云上以最佳状态运行。 CNCF(Cloud Native Compute Foundation) 是 Linux 基金会旗下的一个组织,主要作用是在推动以容器为中心的…...

云原生环境下的事件驱动架构:理念、优势与落地实践

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:从服务调用到事件流动的转变 随着云原生技术的兴起,软件架构正经历一场深刻变革。传统以请求响应为主的服务通信方式,在高度动态、分布式的云原生环境下暴露出诸多挑战:强同步耦合、高延迟链路…...