局域网网络传输流程图

两台主机在同一个局域网,是否能够直接通信?
        以太网原理举例:上课,老师点名小王让他站起来回答问题。教室里的其他人是可以听见的,为什么其他人不响应?因为老师叫的是小王,和其他人无关。因此教室发送消息,并不是只有一个人能收到,而是有吃瓜群众(发消息有点类似消息队列,有类型的数据块)
每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac地址。

以太网原理

        以太网发送数据,数据是用一个结构封装的,src:源主机mac地址,dst:目标主机mac地址,data:数据。

结论:

  • 以太网中,任何时刻,只允许一台机器向网络中发送数据。
  • 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞。
  • 没有交换机的情况下,一个以太网就是一个碰撞域。
  • 所有发送数据的主机要进行碰撞检测和碰撞避免。

        工作流程:所有主机 先发 数据,然后进行碰撞检测,检测到碰撞进行碰撞避免,执行碰撞避免算法,例如发数据的主机休眠一段随机的时间后重发。如果没有检测到碰撞,收集到数据的主机对数据判断dst是否是自己,不是就丢弃,是就留下。

        理解记忆:以太网本质就是共享的资源!-> 临界资源,互斥属性(与互斥锁不同的是,主机是先发在处理)

主机间通信的本质

主机之间通信:本质是两个协议栈在通信

数据发送的原始动力:人(90%情况)

TCP/IP协议栈理解

        用户通信流程:用户A发送数据,用户层添加用户层报头,传输层添加传输层报头,以此类推,直到数据链路层,将数据交给网卡,网卡把数据发送给用户B的主机,传到数据链路层,然后往上传层层解包分用(对端同层,要先解包:报头和有效载荷进行分离),到用户B就拿到了数据。
        报文=报头+有效载荷
为什么要自顶向下封装?
        必须贯穿操作系统,贯穿协议栈(发送数据需要网卡,OS是硬件网卡的管理者)。
封装和解包实现了,同层之间,在直接通信,因为我收到的,就是你发送的!、
细节1:
  • 报头必须要能做到,和有效载荷进行分离的能力。
  • 报头中必须包含,如何将自己的有效载荷,交付给上层的那一个具体协议。

细节2:

        底层收到报文,但是报文不是发送给我的,数据链路层直接丢弃(数据链路层的报头有起始mac地址和目标mac地址

细节3:

        协议栈,栈的理解:自顶向下封装的过程(入栈),自底向上解包分用的过程(出栈)

拓展:网卡和数据链路层,混杂模式,抓包工具的原理(目标mac地址即便不是自己,也保留数据)

同层之间,都认为自己在和对方同层协议直接通信理解:

        同层之间,报文的结构一样(报头结构一样,有效载荷结构也一样)

网络中的地址管理---认识IP地址

IP地址,用来表示,全球范围内,主机的唯一性(公网IP)

IP和MAC理解:

        唐僧带着四个徒弟去西天取经,逢人便说,贫僧自东土大唐而来,要去往西天求取真经(东土大唐是起点,西天是终点)。他们到车迟国面见国王,车迟国国王说离我最近的是女儿国,你下一站是女儿国(车迟国是短期起点,女儿国是短期终点)。

从哪来,到哪去 --- 源IP,目标IP地址

上一站从哪里来,下一站去哪里 --- 源MAC,目标MAC地址

总结:MAC地址是标识局域网主机唯一性的地址,IP地址是标识广域网主机唯一性的地址。

跨网络传输流程(一切皆IP)

主机A发送数据给主机B,主机A的IP地址:192.168.2.2,主机B的IP地址:172.168.2.2,。

        主机A不知道172主机在哪里!但是主机A一定能确定,报文绝对不是发送给本地网络的主机的!(有了目的IP,可以判定要将报文发送给路由器)

        路由:发现不能发给自己局域网主机的报文,就推送给路由器

网络层报头包含:源IP地址和目标IP地址

数据链路层报头包含:源MAC地址和目标MAC地址

        主机A发送数据到网卡,A局域网来发送,发给路由器的网卡macLeft。路由器数据链路层拿到数据,进行解包分用,报头去掉传到网络层。数据链路层对IP地址做分析,发现是B局域网内的IP,封装主机B的MAC地址,通过B局域网传到主机B。

结论:

  • 路由过程中,IP地址不变,mac地址一直在变(mac地址只会在本局域网内有效)
  • 无论底层用的是以太网,无线LAN还是自定义局域网通信原理,都可以
  • 网络层+IP的本质意义:给网络提供了一层虚拟化层,让世界上所有的网络,都叫做IP网络(一切皆IP,类比一切皆文件,封装了struct file,屏蔽底层硬件差异)

        只要IP地址,技术上可以实现网络通信吗?可以,IP地址是唯一的,局域网内也是唯一的,使用IP地址替换MAC地址技术上可以做到。

为什么不这么做?

        网络的发展是从局部到整体的,局域网到广域网,MAC地址是比IP地址先出,复用MAC地址那套成本更低,兼容性更好,且只使用IP地址并不会给效率带来显著的提高(类比C语言翻译成汇编,汇编在翻译成2进制)。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高并发内存池】六、三种缓存的回收内存过程

文章目录前言Ⅰ. thread cache的内存回收Ⅱ. central cache的内存回收Ⅲ. page cache的内存回收前言 ​ 前面我们将内存的申请流程都走通了,现在就是内存回收的过程,主要是从 thread cache 开始,一层一层往下回收,因为我们调用的…

DeerFlow 实践:华为IPD流程的评审智能体设计

目录 一、项目背景与目标 二、IPD 流程关键评审点与 TR 点解析 (一)4 个关键评审点 (二)6 个 TR 点 三、评审智能体详细设计与协作机制 机制设计核心原则 (一)概念评审(CDCP)…

【ubuntu】ubuntu中找不到串口设备问题排查

ubuntu中找不到串口问题排查1. 检查设备识别情况2. 检查并安装驱动3. 检查内核消息4. 禁用brltty服务1. 停止并禁用 brltty 服务2. 完全移除 brltty 包3. 重启系统或重新插拔设备5.输出结果问题:虚拟机ubuntu中,已经显示串口设备连接成功,但是…

Unity 性能优化 之 静态资源优化 (音频 | 模型 | 纹理 | 动画)

Unity 之 性能优化 -- 静态资源优化参考性能指标静态资源资源工作流程资源分类原理小结Audio 实战优化建议模型导入工作流程DCC中模型导出.DCC中Mesh生产规范模型导出检查流程模型优化建议纹理优化纹理基础概念纹理类型纹理大小纹理颜色空间纹理压缩纹理图集纹理过滤纹理Mipmap…

GitHub 热榜项目 - 日榜(2025-09-13)

GitHub 热榜项目 - 日榜(2025-09-13) 生成于:2025-09-13 统计摘要 共发现热门项目:18 个 榜单类型:日榜 本期热点趋势总结 本期GitHub热榜项目呈现三大技术热点:AI开发工具化(如GenKit、ROMA多智能体框架&#xff…

Pytest 常见问题及其解决方案

常见问题及解决方案 1. 测试通过了,但覆盖率不达标 现象: 虽然所有测试都通过了,但覆盖率报告显示某些代码没有被覆盖。 解决方案: 检查覆盖率配置:确保 .coveragerc 或 pytest.ini 中正确设置了要分析的源代码路径。 使用标记(markers)排除测试文件本身:避免测试代…

直击3D内容创作痛点-火山引擎多媒体实验室首次主持SIGGRAPH Workshop,用前沿技术降低沉浸式内容生成门槛

当3D、VR技术在游戏、教育、医疗、文化领域遍地开花,“内容短缺”却成了制约行业爆发的关键瓶颈——传统3D/4D创作不仅耗时耗力、依赖专业技能,还难以适配消费级设备,让许多创作者望而却步。近日,由火山引擎多媒体实验室联合领域顶…

华为基本命令

我们使用的是华为官方的模拟器eNSP 一、华为设备的模式 华为的设备有两种模式: 用户视图和系统视图 用户视图只能读取,或者进行一些基础查询 系统视图能对设备和接口进行一些配置管理,和一些高级操作 在“用户视图”下使用system-view系统可…

2025.9.14英语红宝书【必背16-20】

单词组合 中文速记句子 英文句子 confine, misery, necessitate, negotiate, preach, precaution, precision, stretch 病人被 confine(限制) 在床上,感受 misery(痛苦),情况 necessitate(需要) 医生 negotiate(商讨),牧师 preach(布道) 并提醒 precaution(预防)…

HUST-STAR电控组视觉任务

视觉任务 注意:视觉部分建议采用 python 完成,下面教程也大多针对 python。其原因在于 python 配置相应环境更为轻松,且内置库较为丰富,属于初学者友好类型。没接触过 python 也不必担心,它的大体逻辑与 C 相近&#…

压缩和归档 文件传输

压缩和归档压缩:4G----1.5Gbzip2-bunzip2 gzip-gunzip xz-unxzgzip 要压缩的文件原来的文件就会被删除 (压缩和解压缩)会生成一个 aaa.gz 的文件归档: 4G----4G 打包tarc 创建归档文件 v 看到创建的详细过程 f 文件类型 t 不展开归档文件&…

深入探索 C++ 元组:从基础到高级应用

在现代 C 编程中,元组(std::tuple)是一个强大且灵活的容器,能够存储和操作多个不同类型的数据。它在标准库中扮演着重要角色,并在实际开发中提供了诸多便利。本文将全面探讨 C 元组的各个方面,从基础用法到…

Excel批量处理一列数据---分列功能

0 Preface/Foreword当有多行数据需要处理时,为了减少手动操作,可以EXCEL数据分列功能可以提高效率。1 数据分列1.1 数据分类步骤如下:选中需要处理的一列数据;选择菜单栏中的“数据”;选择分列按照需求设置即可1.2 查找…

HTTPS + 域名 + 双向证书认证(下)

文章目录1. .p12文件1.1 主要特点1.2 常见用途1.3 常见操作1.4 与其他格式的区别1.5 与公钥的区别和联系1.6 安全性注意事项2. Nginx 配置2.1 location指令2.2 alias 与 root 指令的区别3 双向认证配置3.1 创建根证书3.1.1 生成根CA的私钥3.1.2 生成请求证书3.1.3 生成自签署CA…

嵌入式 - ARM3

一、arm启动C语言1. 配置异常向量表2. 实现了软件中断的部分注:ldmfd sp!, {r0-r12, lr} ldmfd sp!, {r0-r12, pc}^ bx lr 左半部分:繁琐易理解的返回方式:先弹出所有通用寄存器和lr &…

如何通过标签和分类提升知识复用效率

通过标签和分类提升知识复用效率,其核心在于构建一个结构化与灵活性兼备的知识组织体系。这需要将分类的“确定性”与标签的“多维性”进行有效结合,为知识的存储与检索建立清晰的“骨架”和丰富的“神经网络”。具体实践中,要求我们进行顶层…

ZYNQ PS读写PL BRAM

一、实验室任务 本章的实验任务是 PS 将数据写入BRAM,然后从 BRAM 中读出数据,并通过串口打印出来;与此同时,PL 从通过自定义ip核从BRAM中同样读出数据,并通过ILA 来观察读出的数据与串口打印的数据是否一致。这里是通…

LinuxC++项目开发日志——高并发内存池(5-page cache框架开发)

PageCachepage cache 设计逻辑一、PageCache 的核心定位:理解它与 CentralCache 的本质区别二、PageCache 的内存分配流程:从 “精确匹配” 到 “拆分适配”三、PageCache 的内存释放流程:合并小 Span,解决内存碎片问题page cache…

Matplotlib:绘制你的第一张折线图与散点图

Matplotlib入门:绘制你的第一张折线图与散点图导语 欢迎来到 Matplotlib 的世界!对于任何使用 Python 进行数据分析或机器学习的人来说,数据可视化都是一项至关重要的技能。Matplotlib 是 Python 中最流行、最基础的可视化库,它功…

MySQL保姆级安装教程

MySQL 安装详细文档,适用于 Windows、macOS 和 Linux 系统,包含了从下载到验证安装的完整步骤: 一、Windows 系统安装 MySQL 1. 下载 MySQL 安装包 访问 MySQL 官方下载页:https://dev.mysql.com/downloads/installer/选择 “MySQ…