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

《趣谈网络协议》笔记 -- 第24讲

食用说明在找《趣谈网络协议》的学习笔记时候感觉大家可能都是在看刘超老师的pdf文稿 按照新人小白喜欢记录的特性来记录一下自己的学习笔记会记录一些大佬的评论从24讲 开始前面的会慢慢更新尽量保持一天一讲的更新频率本人非科班生对于网络协议有理解 不到位的和错误的希望大佬多多指点拜谢大佬们第24讲云中网络自己拿地成本高购买公寓更灵活一、 从物理机到虚拟机为什么要从物理机到虚拟机传统数据中心直接维持物理机存在问题 采购不灵活需要自己采购、上架、插网线、安装操作系统周期长而且一旦采购了不能退货运维不灵活需要扩容CPU、内存、硬盘都需要要去机房手动去配置麻烦规格不灵活采购的机器往往规格和需要的配置不匹配而且很多应用混合部署在上面端口容易冲突容易互相影响复用不灵活当机器转接客户的时候需要重装操作系统为了解决这些问题云计算利用虚拟化技术在强大的物理机内部“切出”多台虚拟机就像买卖/租赁公寓。虚拟机按需分配CPU、内存和网络即开即用随用随删。qemu-kvmemu是Emulator模拟器的意思Linux环境下主流的开源硬件虚拟化技术。它就像一个“高级模拟器骗子”通过软件层面向虚拟机汇报“你有独立的CPU、内存、网卡”但实际上所有资源都是按比例向底层的物理机申请的。二、 虚拟网卡的原理虚拟网卡原理首先虚拟机需要有一张网卡对于qemu-kvm来说是通过Linux上的TUN/TAP技术实现的虚拟机是在物理机跑着的软件 虚拟机打开称为TUN/TAP的Char Dev字符设备文件之后就能在物理机上看到一张虚拟网卡网络包就往虚拟机里面发网络包 — 虚拟机— 网络包转换成文件流 — 写入字符设备 — TUN/TAP字符设备驱动接收写入的文件流 — 交给TUN/TAP的虚拟网卡驱动 — 驱动将文件流转换成网络包 — TCP/IP协议栈 — 最终从虚拟TAP网卡中发出来成为标准网络包TUN/TAP 设备Linux内核实现的一种纯软件的网络设备。其中TAP工作在二层数据链路层有MAC地址相当于模拟了一张普通的网卡。字符设备文件 (Char Dev)Linux哲学是“一切皆文件”。虚拟网卡在操作系统里被具象化为一个字符设备文件。虚拟机发数据本质上就是在向这个文件写入字节流。三、 虚拟网卡连接到云中为了让虚拟机能正常工作云网络必须解决四大需求共享共用物理网卡、互通互相能通信、隔离租户间互不干扰、灵活随意增删改。1. 共享与互通问题多个虚拟机怎么互通并上网需要引入“虚拟交换机”来连接它们。主要有三种连通方式Host-only仅主机所有虚拟机连在同一个虚拟交换机上彼此互通但完全与外界物理网络断开类似大学宿舍的纯内网打局域网游戏。桥接模式 (Bridge)将虚拟机的网卡和物理机的真实网卡一起“插”在虚拟交换机上。物理机和虚拟机被拉平到了同一个物理网段。缺点如果虚拟机太多会引发全网的广播风暴。NAT 模式 (网络地址转换)虚拟机连在虚拟交换机上形成一个独立的内网有自己的DHCP分配IP。物理机充当“家用路由器”把虚拟机的内网IP转换成物理机的公网IP去访问外网。局域网连接可以通过 Linux 命令 brctl 创建虚拟的网桥brctl addbr br0, 创建出来以后将两个虚拟机的虚拟网卡都连接到虚拟网桥brctl addif br0 tap0上这样将两个虚拟机配置相同的子网网段两台虚拟机就能够相互通信了。外网连接桥接(Bridge)桥接模式下虚拟机和笔记本电脑的都在同一IP网段下在数据中心中采取类似的技术都是Linux系统每台机器都创建网桥和br0虚拟机的网卡都连接到br0上物理网卡也连接到br0上所有的br0都通过物理网卡来连接到物理交换机上网络打平 虚拟机和物理网络会有同样的IP网段广播问题需要通过VLAN数据链路层进行划分另外一种方式为NAT网络层在这种情况下登录到虚拟机里面查看IP地址会发现虚拟机的网络是虚拟机的物理机的网络是物理机的两个不相同。虚拟机要想访问物理机的时候需要将地址NAT成为物理机的地址。还会在你的笔记本电脑里内置一个DHCP服务器为笔记本电脑上的虚拟机动态分配IP地址。因为虚拟机的网络自成体系需要进行IP管理。为什么桥接方式不需要呢因为桥接将网络打平了虚拟机的IP地址应该由物理网络的DHCP服务器分配。数据中心中也是类似的方式虚拟机是你的电脑路由器和DHCP Server相当于家用路由器或者寝室长的电脑物理网卡相当于你们宿舍的外网网口用于访问互联网。所有电脑都通过内网网口连接到一个网桥br0上虚拟机要想访问互联网需要通过br0连到路由器上然后通过路由器将请求NAT成为物理网络的地址转发到物理网络如果是你自己登录到物理机上做个简单配置你可以简化一下。例如将虚拟机所在网络的网关的地址直接配置到br0上不用DHCP Server手动配置每台虚拟机的IP地址通过命令iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE直接在物理网卡ethX上进行NAT所有从这个网卡出去的包都NAT成这个网卡的地址。通过设置net.ipv4.ip_forward 1开启物理机的转发功能直接做路由器而不用单独的路由器这样虚拟机就能直接上网了。虚拟网桥 (br0)通过Linux命令如 brctl创建出来的虚拟交换机。把虚拟机的TAP网卡挂载到 br0 上它们就在物理上连通了。2. 隔离问题如果一台机器上的两个虚拟机不属于同一个用户怎么办呢brctl创建的网桥也是支持VLAN功能的可以设置两个虚拟机的tag这样在这个虚拟网桥上两个虚拟机是不互通的。如何跨物理机互通并且实现VLAN的隔离呢brctl创建的网桥上面的tag是没办法在网桥之外的范围内起作用的因此我们需要寻找其他的方式。有一个命令vconfig可以基于物理网卡eth0创建带VLAN的虚拟网卡所有从这个虚拟网卡出去的包都带这个VLAN如果这样跨物理机的互通和隔离就可以通过这个网卡来实现。首先为每个用户分配不同的VLAN例如有一个用户VLAN 10一个用户VLAN 20。在一台物理机上基于物理网卡为每个用户用vconfig创建一个带VLAN的网卡。不同的用户使用不同的虚拟网桥带VLAN的虚拟网卡也连接到虚拟网桥上。不同的用户由于网桥不通不能相互通信一旦出了网桥由于VLAN不同也不会将包转发到另一个网桥上。出了物理机也是带着VLAN ID的。只要物理交换机也是支持VLAN的到达另一台物理机的时候VLAN ID依然在它只会将包转发给相同VLAN的网卡和网桥所以跨物理机不同的VLAN也不会相互通信。使用brctl创建出来的网桥功能是简单的基于VLAN的虚拟网卡也能实现简单的隔离。但是这都不是大规模云平台能够满足的一个是VLAN的隔离数目太少。VLAN ID只有4096个, 另外一点是这个配置不够灵活。vconfig 命令Linux中用来配置 VLAN 的命令可以基于物理网卡虚拟出带有特定 VLAN Tag 的子网卡。四、 小结本节课核心脉络梳理云计算网络的核心基石是虚拟化其网卡通信原理是借助TUN/TAP 字符设备实现虚拟机内外数据的中转。云网络必须关注共享、隔离、互通、灵活四大痛点。互通主要有桥接和NAT两种流派安全隔离最基础的实现方案是打VLAN 标签。五、 思考题深度解析思考题 1在数据中心里面有一款著名的开源软件 OpenStack这一节讲的网络连通方式对应 OpenStack 中的哪些模型呢【深度解析】OpenStack 是搭建私有云的霸主它的网络模型Nova-network / Neutron与我们课上讲的底层原理高度对应Flat 模式对应课上讲的桥接模式 (Bridge)。虚拟机直接和物理机处于同一网段由物理网络的真实 DHCP 服务器分配 IP。Flat DHCP 模式依然是桥接的思想但是由 OpenStack 自己在虚拟网桥br0上起一个 dnsmasq 进程充当 DHCP 服务器来给虚拟机分配 IP。VLAN 模式对应课上讲的桥接模式 VLAN 隔离。利用 vconfig 划分不同的 VLAN 来实现多租户隔离。(扩展)VPC (虚拟私有云)对应课上讲的NAT 模式组合。每个租户可以在自己独立的网络里折腾最后通过 OpenStack 上的虚拟路由器vRouter本质是用 iptables 做的 NAT 转发连通外部网络Floating IP 机制。思考题 2本节提到的网络配置方式比较不灵活你知道什么更加灵活的方式吗【深度解析】课文末尾提到传统的 VLAN 只有 4096 个 ID 限制远远不够大型云平台用并且使用 brctl 和物理交换机绑定太死板。更灵活的方式是SDN (软件定义网络) 与 Open vSwitch (OVS)淘汰掉简单的 br0 网桥改用 OVS一款强大的企业级虚拟交换机。OVS 支持复杂的流表Flow Table可以通过控制器写代码来“编程”决定网络包该怎么走指哪打哪极其灵活。大二层网络技术 (如 VXLAN / GRE)为了突破 4096 的限制云厂商演进出了 VXLAN 技术。它把虚拟机的二层网络包伪装封装成物理机的 UDP三层数据包发送出去到了目标机器再解包。这使得云平台支持多达 1600 万个租户的网络隔离且虚拟机可以在整个数据中心自由迁移IP地址不变。这也就是专栏后续章节即将拉开的帷幕。

相关文章:

《趣谈网络协议》笔记 -- 第24讲

食用说明:在找《趣谈网络协议》的学习笔记时候,感觉大家可能都是在看刘超老师的pdf文稿, 按照新人小白喜欢记录的特性,来记录一下自己的学习笔记(会记录一些大佬的评论),从24讲 开始&#xff0c…...

基于ASP.NET Core的医院不良事件管理系统的架构设计

基于ASP.NET Core的医院不良事件管理系统的架构设计 前言 医院不良事件管理是医疗质量安全管理的重要环节,一个优秀的不良事件管理系统需要覆盖事件上报、审核追踪、分析统计的完整闭环。本文将详细介绍如何基于ASP.NET Core构建一个完整的医院不良事件管理系统&…...

17种统计假设检验方法及Python实现指南

1. 统计假设检验的核心价值与应用场景统计假设检验是数据分析师和研究人员最常用的工具之一。它帮助我们基于样本数据对总体特征做出概率性判断,而不是仅凭直觉或表面现象下结论。在实际工作中,我经常遇到这样的场景:产品经理想知道新版本是否…...

终极微信自动化指南:如何用wxauto轻松管理你的微信消息

终极微信自动化指南:如何用wxauto轻松管理你的微信消息 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors…...

终极Elsevier审稿状态追踪指南:3分钟免费安装,实时监控投稿进度

终极Elsevier审稿状态追踪指南:3分钟免费安装,实时监控投稿进度 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在为Elsevier期刊投稿后的漫长等待而焦虑吗?Elsevier Tracker是…...

基于大语言模型的智能问答代理:WebQA Agent 架构解析与实战

1. 项目概述:当大模型遇上结构化知识库最近在折腾一个挺有意思的项目,叫MigoXLab/webqa-agent。简单来说,这是一个基于大语言模型(LLM)的智能问答代理,但它不是简单地让模型“凭空想象”答案,而…...

Elsevier投稿返修时,如何用LaTeX的xcolor宏包精准修改参考文献颜色(附完整代码)

Elsevier投稿返修时如何用LaTeX的xcolor宏包精准修改参考文献颜色 收到期刊返修意见时,参考文献的格式调整往往是让研究者头疼的环节。特别是当审稿人要求"将修改过的参考文献条目标记为蓝色"时,许多作者发现常规的\textcolor{blue}{...}命令在…...

微信聊天记录永久保存完整指南:如何用WeChatMsg守护你的数字记忆

微信聊天记录永久保存完整指南:如何用WeChatMsg守护你的数字记忆 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…...

一张表说清网络底层:看完你也能当半个“网管”

网络基础知识(详细版)一、什么是网络?网络是通过传输介质(网线、光纤、无线电波)和网络设备(路由器、交换机等)将两台以上计算机或智能设备连接起来,实现数据通信和资源共享的系统。…...

第29篇:ONNX格式详解——实现跨框架模型转换与部署的桥梁(原理解析)

文章目录现象引入:为什么我的PyTorch模型在TensorFlow Serving上跑不起来?提出问题:能否有一种通用的“模型中间件”?原理剖析:ONNX如何构建这座“桥梁”?1. 模型表示层:基于计算图的静态描述2.…...

Python高级应用系列(十五)测试驱动开发:pytest高级用法与测试工程化

前言 测试是软件质量的护城河,而测试工程化则是让这条护城河持续有效的关键。 在Python生态中,pytest几乎是单元测试的代名词——它的设计哲学是「简单用例简单写,复杂用例也有优雅写法」,零配置即能运行,同时也支持从基本到高级的各类复杂场景。 本文将带你从pytest基…...

ComfyUI IPAdapter Plus完整指南:从零开始掌握AI图像风格迁移

ComfyUI IPAdapter Plus完整指南:从零开始掌握AI图像风格迁移 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 想要在ComfyUI中实现精准的图像风格控制吗?ComfyUI IPAdapter Plus…...

Gemma-4-26B-A4B-it-GGUF实战案例:金融研报关键信息抽取+风险点结构化呈现

Gemma-4-26B-A4B-it-GGUF实战案例:金融研报关键信息抽取风险点结构化呈现 1. 项目概述 Google Gemma 4系列中的高性能MoE(混合专家)模型Gemma-4-26B-A4B-it-GGUF,凭借其256K tokens的超长上下文处理能力和结构化输出特性&#x…...

如何让无导航的PDF文档拥有智能目录?pdfdir一键生成书签解决方案

如何让无导航的PDF文档拥有智能目录?pdfdir一键生成书签解决方案 【免费下载链接】pdfdir PDF导航(大纲/目录)添加工具 项目地址: https://gitcode.com/gh_mirrors/pd/pdfdir 在数字化阅读时代,PDF文档已成为我们工作学习中…...

告别云端依赖:手把手教你离线打包uni-app自定义基座(Android Studio实战)

离线开发全攻略:Android Studio构建uni-app自定义基座深度实践 在数字化转型浪潮中,跨平台开发框架uni-app凭借"一次开发,多端部署"的优势,已成为移动应用开发的重要选择。然而,当开发环境受限或需要高度自主…...

别只盯着Arduino IDE!用PlatformIO配置Seeeduino XIAO开发环境,顺便搞定USB驱动

用PlatformIO解锁Seeeduino XIAO的进阶开发体验 当大多数开发者第一次接触Seeeduino XIAO时,Arduino IDE往往是默认选择。但如果你已经厌倦了手动管理库依赖、缺乏现代IDE功能的工作流,PlatformIO可能是你一直在寻找的解决方案。作为一个开源的跨平台嵌入…...

Unreachable code 代码不可达

在 Vue 组件中,data 和 props 是同级关系。它们都是定义在组件选项对象顶层的属性,与 methods、computed 等选项并列。export default {// props 和 data 在这里是并列的同级选项props: [messageFromParent], data() {return {messageFromMe: Hello!}},m…...

保姆级教程:手把手教你用Visdom可视化SimCLR在PyTorch中的完整训练过程(含Loss/Acc曲线)

深度解析:用Visdom实时监控SimCLR在PyTorch中的训练动态与调参实战 当你在深夜盯着终端里不断跳动的loss数值,是否曾希望训练过程能像仪表盘一样直观呈现?SimCLR作为对比学习的经典框架,其两阶段训练特性使得可视化监控变得尤为重…...

ORB-SLAM2特征点提取器(ORBextractor)的八叉树筛选与图像金字塔实战调参指南

ORB-SLAM2特征点提取器实战调参:八叉树筛选与图像金字塔深度优化 1. ORBextractor核心机制解析 在视觉SLAM系统中,特征点提取的质量直接影响后续的跟踪精度和建图效果。ORB-SLAM2的ORBextractor模块通过创新的八叉树筛选机制和图像金字塔策略&#xff0c…...

Windows 11任务栏拖放功能增强工具:从技术原理到个性化配置的完整探索

Windows 11任务栏拖放功能增强工具:从技术原理到个性化配置的完整探索 【免费下载链接】Windows11DragAndDropToTaskbarFix "Windows 11 Drag & Drop to the Taskbar (Fix)" fixes the missing "Drag & Drop to the Taskbar" support i…...

Windows下从零跑通PULSE算法:手把手解决dlib安装报错和‘Could not find a face’问题

Windows下PULSE算法实战指南:从环境搭建到人脸超分辨率重建 最近两年,图像超分辨率重建技术取得了突破性进展,其中PULSE算法因其独特的人脸生成能力备受关注。不同于传统超分方法,PULSE通过生成对抗网络(GAN)的逆向推理&#xff0…...

Qt6.5安装后,如何在VS2022里配置插件并创建第一个项目?

Qt6.5与VS2022开发环境深度配置指南 对于习惯使用Visual Studio进行C开发的程序员来说,将Qt6.5集成到VS2022中能充分发挥两者的优势。本文将详细介绍从插件安装到项目创建的全流程,帮助开发者快速搭建高效的Qt开发环境。 1. 安装Qt Visual Studio Tools插…...

【花雕动手做】嵌入ESP32S3的具身智能体:AI Agent 四大核心能力的物理化重构

当AI Agent的载体是一个基于ESP32S3的物理机器人时,其四大核心能力被赋予了全新的物理化内涵:它们不再依赖云端无限的算力与存储资源,而是需适配MCU(微控制单元)的功耗限制、内存约束与实时性要求,同时获得…...

如何在5分钟内用Python获取专业级金融数据:Finnhub API完整指南

如何在5分钟内用Python获取专业级金融数据:Finnhub API完整指南 【免费下载链接】finnhub-python Finnhub Python API Client. Finnhub API provides institutional-grade financial data to investors, fintech startups and investment firms. We support real-ti…...

快递鸟批量快递查询Skill,正式上线 Clawhub!可在WorkBuddy一键安装技能!

快递鸟批量快递查询Skill,正式上线 Clawhub!可在WorkBuddy一键安装技能!快递鸟 2026-04-21企业数字化转型浪潮下,AI Agent正在重塑业务交互模式。从智能客服到办公助手,越来越多的企业开始探索将AI能力融入日常工作流程…...

从拒稿到接收:我如何通过优化论文格式让Journal of Intelligent Fuzzy Systems审稿人眼前一亮

从拒稿到接收:学术论文格式优化的实战经验分享 第一次收到Journal of Intelligent & Fuzzy Systems的拒稿邮件时,我盯着屏幕足足五分钟——不是因为研究内容被质疑,而是审稿人那句"图表分辨率不足,引用格式混乱"让我…...

数字孪生落地指南与技术选型:从选型到交付全流程避坑实战 | 数字孪生实战训练营

⚠️ 说明:本文内容偏实践经验总结,更适合有数字孪生项目背景或正在推进相关工作的读者阅读。 在数字化转型的深水区,数字孪生已不再仅仅是炫酷的视觉概念,而是深入业务一线、赋能决策的核心工具。然而,从概念雏形到最…...

企业无线网反复弹认证页面?排查这3个AC配置项和2个手机设置就够了

企业无线网络认证弹窗故障排查指南:从AC配置到终端优化的全流程解决方案 当企业员工频繁抱怨"明明已经认证过,为什么又弹出登录页面"时,作为网络管理员的你该如何快速定位并解决问题?这种反复弹窗的认证故障不仅影响工作…...

企业如何选择适合自己的电商系统技术架构?(实操落地版)

一、先明确4个核心前提(选架构的基础) 企业不要盲目追「微服务、云原生」高端概念,先自查自身条件: 业务体量:日订单量、用户规模、是否做大促/直播爆单;经营模式:单商户自营、多商户入驻、S2B2…...

别再手动排班了!用 Vue 和 Element UI 封装一个可复用的日历排班组件(支持批量操作)

基于Vue与Element UI构建企业级可视化排班系统 在医疗、零售、客服等行业中,排班管理一直是困扰管理者的难题。传统表格形式的排班方式不仅操作繁琐,而且难以直观展示复杂的班次关系。本文将介绍如何利用Vue.js和Element UI组件库,从零开始构…...