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

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

食用说明:在找《趣谈网络协议》的学习笔记时候,感觉大家可能都是在看刘超老师的pdf文稿, 按照新人小白喜欢记录的特性,来记录一下自己的学习笔记(会记录一些大佬的评论),从24讲 开始,前面的会慢慢更新,尽量保持一天一讲的更新频率(本人非科班生,对于网络协议有理解 不到位的和错误的,希望大佬多多指点,拜谢大佬们)

第24讲云中网络:自己拿地成本高,购买公寓更灵活

一、 从物理机到虚拟机

为什么要从物理机到虚拟机

传统数据中心直接维持物理机存在问题 :

  1. 采购不灵活:需要自己采购、上架、插网线、安装操作系统,周期长,而且一旦采购了不能退货
  2. 运维不灵活:需要扩容CPU、内存、硬盘,都需要要去机房手动去配置,麻烦
  3. 规格不灵活:采购的机器往往规格和需要的配置不匹配,而且很多应用混合部署在上面,端口容易冲突,容易互相影响
  4. 复用不灵活:当机器转接客户的时候,需要重装操作系统

为了解决这些问题,云计算利用虚拟化技术,在强大的物理机内部“切出”多台虚拟机(就像买卖/租赁公寓)。虚拟机按需分配CPU、内存和网络,即开即用,随用随删。

  • qemu-kvm:emu是Emulator(模拟器)的意思,Linux环境下主流的开源硬件虚拟化技术。它就像一个“高级模拟器(骗子)”,通过软件层面向虚拟机汇报“你有独立的CPU、内存、网卡”,但实际上所有资源都是按比例向底层的物理机申请的。

二、 虚拟网卡的原理

虚拟网卡原理


  1. 首先虚拟机需要有一张网卡,对于qemu-kvm来说,是通过Linux上的TUN/TAP技术实现的
  2. 虚拟机是在物理机跑着的软件, 虚拟机打开称为TUN/TAP的Char Dev(字符设备文件),之后就能在物理机上看到一张虚拟网卡
  3. 网络包就往虚拟机里面发
  4. 网络包 —> 虚拟机—> 网络包转换成文件流 —> 写入字符设备 —> TUN/TAP字符设备驱动接收写入的文件流 —> 交给TUN/TAP的虚拟网卡驱动 —> 驱动将文件流转换成网络包 —> TCP/IP协议栈 — > 最终从虚拟TAP网卡中发出来,成为标准网络包
  • TUN/TAP 设备:Linux内核实现的一种纯软件的网络设备。其中TAP工作在二层(数据链路层,有MAC地址),相当于模拟了一张普通的网卡。
  • 字符设备文件 (Char Dev):Linux哲学是“一切皆文件”。虚拟网卡在操作系统里被具象化为一个字符设备文件。虚拟机发数据,本质上就是在向这个文件写入字节流。

三、 虚拟网卡连接到云中

为了让虚拟机能正常工作,云网络必须解决四大需求:共享(共用物理网卡)、互通(互相能通信)、隔离(租户间互不干扰)、灵活(随意增删改)。

1. 共享与互通问题

多个虚拟机怎么互通并上网?需要引入“虚拟交换机”来连接它们。主要有三种连通方式:

  1. Host-only(仅主机):所有虚拟机连在同一个虚拟交换机上,彼此互通,但完全与外界物理网络断开(类似大学宿舍的纯内网打局域网游戏)。
  2. 桥接模式 (Bridge):将虚拟机的网卡和物理机的真实网卡,一起“插”在虚拟交换机上。物理机和虚拟机被拉平到了同一个物理网段。
    • 缺点:如果虚拟机太多,会引发全网的广播风暴。
  3. 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,如果这样,跨物理机的互通和隔离就可以通过这个网卡来实现。

  1. 首先为每个用户分配不同的VLAN,例如有一个用户VLAN 10,一个用户VLAN 20。在一台物理机上,基于物理网卡,为每个用户用vconfig创建一个带VLAN的网卡。不同的用户使用不同的虚拟网桥,带VLAN的虚拟网卡也连接到虚拟网桥上。

  2. 不同的用户由于网桥不通,不能相互通信,一旦出了网桥,由于VLAN不同,也不会将包转发到另一个网桥上。

  3. 出了物理机,也是带着VLAN ID的。只要物理交换机也是支持VLAN的,到达另一台物理机的时候,VLAN ID依然在,它只会将包转发给相同VLAN的网卡和网桥,所以跨物理机,不同的VLAN也不会相互通信。

使用brctl创建出来的网桥功能是简单的,基于VLAN的虚拟网卡也能实现简单的隔离。但是这都不是大规模云平台能够满足的,一个是VLAN的隔离,数目太少。VLAN ID只有4096个, 另外一点是这个配置不够灵活。

  • vconfig 命令:Linux中用来配置 VLAN 的命令,可以基于物理网卡虚拟出带有特定 VLAN Tag 的子网卡。

四、 小结

本节课核心脉络梳理:

  1. 云计算网络的核心基石是虚拟化,其网卡通信原理是借助TUN/TAP 字符设备实现虚拟机内外数据的中转。
  2. 云网络必须关注共享、隔离、互通、灵活四大痛点。
  3. 互通主要有桥接NAT两种流派,安全隔离最基础的实现方案是打VLAN 标签

五、 思考题深度解析

  • 思考题 1:在数据中心里面,有一款著名的开源软件 OpenStack,这一节讲的网络连通方式对应 OpenStack 中的哪些模型呢?

    【深度解析】

    OpenStack 是搭建私有云的霸主,它的网络模型(Nova-network / Neutron)与我们课上讲的底层原理高度对应:

    1. Flat 模式:对应课上讲的桥接模式 (Bridge)。虚拟机直接和物理机处于同一网段,由物理网络的真实 DHCP 服务器分配 IP。
    2. Flat DHCP 模式:依然是桥接的思想,但是由 OpenStack 自己在虚拟网桥(br0)上起一个 dnsmasq 进程(充当 DHCP 服务器)来给虚拟机分配 IP。
    3. VLAN 模式:对应课上讲的桥接模式 + VLAN 隔离。利用 vconfig 划分不同的 VLAN 来实现多租户隔离。
    4. (扩展)VPC (虚拟私有云):对应课上讲的NAT 模式组合。每个租户可以在自己独立的网络里折腾,最后通过 OpenStack 上的虚拟路由器(vRouter,本质是用 iptables 做的 NAT 转发)连通外部网络(Floating IP 机制)。
  • 思考题 2:本节提到的网络配置方式比较不灵活,你知道什么更加灵活的方式吗?

    【深度解析】

    课文末尾提到,传统的 VLAN 只有 4096 个 ID 限制(远远不够大型云平台用),并且使用 brctl 和物理交换机绑定太死板。更灵活的方式是:

    1. SDN (软件定义网络) 与 Open vSwitch (OVS):淘汰掉简单的 br0 网桥,改用 OVS(一款强大的企业级虚拟交换机)。OVS 支持复杂的流表(Flow Table),可以通过控制器写代码来“编程”决定网络包该怎么走,指哪打哪,极其灵活。
    2. 大二层网络技术 (如 VXLAN / GRE):为了突破 4096 的限制,云厂商演进出了 VXLAN 技术。它把虚拟机的二层网络包,伪装封装成物理机的 UDP(三层)数据包发送出去,到了目标机器再解包。这使得云平台支持多达 1600 万个租户的网络隔离,且虚拟机可以在整个数据中心自由迁移,IP地址不变。这也就是专栏后续章节即将拉开的帷幕。
http://www.jsqmd.com/news/699022/

相关文章:

  • 构建智能安全运维体系,谷歌上线 Agent 及全链路治理能力
  • PCL2启动器资源下载失败的终极解决指南:3步告别文件损坏烦恼
  • 嵌入式老鸟的私房菜:手把手教你交叉编译mjpg-streamer到ARM板,并集成拍照告警功能
  • 解决Blender到Unity FBX转换的终极指南:告别模型旋转错乱
  • 5分钟轻松掌握喜马拉雅VIP音频高效下载的实用方案
  • 终极指南:如何用Idle Master轻松实现Steam卡片自动化收集
  • MicroBlaze程序太大BRAM放不下?试试SREC Bootloader从SPI Flash加载到DDR(附lwip实例调试心得)
  • 2026年目前靠谱的百叶窗帽加工厂家哪家好,无动风帽/厨房风帽/旋转风帽/异形蘑菇形风帽,百叶窗帽非标定制推荐 - 品牌推荐师
  • AI Agent的延迟优化与性能调优
  • 机器学习必备统计学知识体系与经典书籍推荐
  • 3大核心突破:开源实验室管理系统如何重塑数字化转型路径
  • MagicSkills:AI智能体技能管理框架,解决技能碎片化与复用难题
  • Layerdivider终极指南:3步将单张图片转换为专业PSD分层文件
  • 别再傻傻分不清!Python Turtle里setheading()和left()/right()到底啥区别?
  • 告别‘鬼影’!手把手教你调试IPS屏VCOM电压,解决残影难题
  • 2026年3月遮阳棚生产厂家推荐,停车棚/景观棚/雨棚/充电桩棚/小区车棚/体育看台/膜结构,遮阳棚源头厂家哪家强 - 品牌推荐师
  • S32K344 Flash Driver实战:手把手教你用C40_Ip库实现任意字节写入与扇区解锁
  • IT问题分类与精准定位指南
  • Python怎么创建AI编程助手?
  • Qwen3.5-4B-AWQ一文详解:AWQ量化原理+Qwen3.5架构适配技术解析
  • Cadence IC617蒙特卡洛仿真实操:手把手教你搞定运放失调电压的统计分布分析
  • 抖音批量下载终极指南:免费开源工具解决视频收集难题
  • 无锡专业杀虫|灭鼠|消杀|白蚁防治公司公司技术解析:从资质到服务全维度拆解 - 速递信息
  • 文本作数据库怎么用?文本文件怎么实现数据库功能?
  • 用WildCard虚拟卡搞定GitHub Copilot付费订阅,实测避坑指南(含手续费提醒)
  • Qwerty Learner 实战部署与架构解析:键盘工作者的单词记忆与肌肉记忆训练解决方案
  • 测试环境的搭建
  • 实验室数字化转型终极指南:如何用SENAITE LIMS开源系统实现全流程自动化管理
  • 新型CrystalRAT恶意软件:远程控制、数据窃取与“恶作剧“功能并存
  • 2026年郑州铝单板与全国幕墙装饰材料采购指南:从官方渠道到避坑秘诀 - 优质企业观察收录