数据包从出发到抵达:Windows+VMware实战TCP/IP与三层网络 📅 发布时间:2026/9/15 14:27:12 👁 浏览次数: 昨天下午我蹲在VMware Workstation前面用Wireshark盯着两台Windows虚拟机之间的交互头一回把“一个数据包从网卡出去之后到底发生了什么”完整讲出来。这次复盘让我把TCP/IP协议栈、网络设备层次和局域网三层架构串成了一条线。如果你也总是一会懂一会懵或者想用Windows VMware搭个实验环境自测一下这篇文章应该能帮你省下不少时间。我要先说一句很多教程会把TCP/IP、交换路由、企业网络架构分开讲每个单点都容易懂但连起来的时候就卡壳。真正的理解来自“一个数据包从应用层产生到变成以太网帧再经过交换机、路由器最后到达另一台Windows机器”的完整链路。所以我这次复盘不按协议章节走而是跟着一个数据包走完整个网络再回头解释设备层次和三层架构。1. 一个数据包的旅行地图为什么从TCP/IP讲起才算入门1.1 先把“分层”装进脑子里TCP/IP出现的原因非常简单网络通信太复杂不可能让一台主机自己处理所有事。你的浏览器要管界面系统要管传输网卡要管电压信号中间还有无数设备帮忙转发。如果不分层硬件厂商、软件开发商、网络管理员之间根本没法协作。分层就像寄快递。应用层是你写的那封信内容随意传输层是快递单号负责让收发双方知道“这封信是第几号包裹、有没有缺页”网络层是邮政编码和城市地址保证包裹能跨城市运输链路层是快递车和小区货架负责把包裹实际送到收件人手里。每一层只关心自己的那一小段工作不需要知道别的层面怎么实现。我这次在Windows虚拟机里跑实验时用Wireshark抓到的每一个包都在验证这个分层模型。你在应用层看到的是HTTP请求到了传输层被切成TCP段到了网络层变成IP包到了链路层才变成以太网帧。所以“数据包”这个词在不同位置有不同叫法这是后面积累经验最需要注意的地方。1.2 封装与解封装从一个HTTP请求说起假设我在Win10-A这台Windows虚拟机里打开浏览器访问内网另一台服务器上的HTTP网页。先别管页面内容单看数据诞生过程浏览器先生成一个HTTP GET请求这就是应用层数据。操作系统把这个请求交给TCP层TCP在数据前面加一个TCP头包含源端口比如50000多和目的端口80表示“这是给Web服务的”。接着IP层再往上包一层IP头源IP是10.0.2.10目的IP是10.0.3.10表示“这个包该去哪台机器”。最后链路层把整个IP包塞进以太网帧里加上源MAC本机网卡的MAC和目的MAC下一跳设备网卡的MAC变成一串可以在网线上跑的比特流。数据到达对端后过程完全反过来。网卡先收到以太网帧去掉帧头和帧尾把IP包交上去IP层看到目的IP是自己去掉IP头把TCP段交给TCP层TCP确认端口号没错去掉TCP头把HTTP请求交给应用层。这一套“发送时逐层加头接收时逐层去头”的机制就是TCP/IP通信的核心。我在虚拟机里抓包的那一瞬间看到的就是这些头部信息一层层叠加、再一层层拆掉的过程。如果不懂封装和解封装看抓包文件就像在看天书懂了之后每一列的Source、Destination、Protocol其实都在告诉你这个包现在“走到哪一层了”。2. 在Windows里面拆开网络栈从应用缓冲区到网卡队列2.1 Windows网络栈不是黑盒协议绑定与网卡驱动很多初学者觉得Windows的网络栈是个黑盒其实不是。你打开“网络适配器属性”能看到“Microsoft网络客户端”“文件共享”“Internet协议版本4(TCP/IPv4)”这些东西这就是协议绑定的顺序。系统把TCP/IP栈作为一个协议组件绑定到网卡驱动上应用调用的Socket接口只负责把数据往下传剩下的分段、封装、路由都由协议栈完成。在Windows中同一块物理网卡或VMware虚拟网卡上可以绑定多个协议和服务。数据从应用层到达socket后进入传输层、网络层、链路层最后写到网卡驱动的环形缓冲区里由网卡转换成电信号或虚拟化环境的网络I/O。我一度以为“数据包”是某种实体小球后来想想更准确的比喻是一条流水线每经过一道工序就贴一个标签最终变成一辆满载的“货车”开出去。这里有一个实用的排查思路如果一台Windows机器网络不通先看协议栈是否正常再看到达网卡驱动是否正常。用netsh winsock show catalog可以查看socket目录用ipconfig /all查看网卡是否拿到IP用ping 127.0.0.1测试协议栈本身。一步一步缩小范围比瞎重启管用得多。2.2 看Windows自己怎么说ipconfig、route、arp的实战输出Windows命令行里的几个网络命令是理解TCP/IP最直接的入口。我在VMware环境里每配置一个网段都会先在命令行敲三连ipconfig /all查看网卡IP、子网掩码、默认网关、DNS、MAC地址。route print查看完整路由表尤其注意默认路由0.0.0.0/0的下一跳。arp -a查看ARP缓存里记录的IP与MAC映射。只要一看ipconfig /all就能判断这台Windows机器的“网络身份”。比如看到VMware Network Adapter VMnet8的IPv4地址是192.168.x.1就知道这是NAT模式下主机连接虚拟网络的入口看到某张虚拟网卡没有默认网关就说明它所在的VMnet网络是一个“孤岛”跨网段必须靠软路由。route print输出最容易被忽略。路由表决定了一个IP包是直接走链路层找目标MAC还是先发给网关。我在实验里把Windows Server的IPEnableRouter打开后route print里会发现多了一条到另一个网段的直连路由这就是它能当软路由的原因。理解路由表的“最长前缀匹配”跨网段通信就完全不玄学了。2.3 抓包前的环境准备Wireshark在Windows上的那些坑用Wireshark抓虚拟机流量时我踩过最大的坑是选错网卡。VMware Workstation会给每块虚拟网卡在Windows主机上对应一个“VMware Network Adapter VMnetX”如果你在Wireshark里选了物理无线网卡那当然抓不到虚拟机之间的流量因为流量根本不过物理网卡。另外Windows上安装Wireshark时一定要装Npcap或WinPcap驱动而且要允许它在“混杂模式”下工作。否则你只能看到发给自己网卡的包看不到广播包也看不到同一虚拟交换机上其他虚拟机的包。当然如果是抓自己这台虚拟机发出的包即使不混杂也能抓到因为操作系统在把包交给网卡前Wireshark的NDIS驱动已经复制了一份。还有一个很容易被忽略的坑Windows防火墙默认会阻止ICMP回显请求。所以两台Windows虚拟机互相ping不通的时候第一反应不是怀疑网卡和IP而是先检查防火墙。我习惯在实验前统一用一条命令放行ICMPnetsh advfirewall firewall add rule nameICMPv4 protocolicmpv4 dirin actionallow这条命令执行之后ping测试才能反映真实的网络连通性而不是被安全策略拦在半路。3. VMware虚拟网络搭建用三台虚拟机还原一台“企业网络”3.1 VMware的三种虚拟网络模式到底隐喻了什么VMware Workstation里有三种最常用的虚拟网络模式桥接、NAT、仅主机。很多人只是会选但不知道它们在数据包层面到底意味着什么。桥接模式虚拟机直接接到物理交换机上和物理机在同一个二层网络里。你可以把它理解为把虚拟机网线插到了办公室的墙上它需要从路由器/交换机那里获取IP。NAT模式虚拟机在一个私有网段里VMnet8主机充当“默认网关地址转换器”。数据包出去时源IP会被改写成物理机的IP回来时再被翻译回虚拟机的私有IP。这是家庭和实验环境最常用的因为不占物理局域网地址。仅主机模式虚拟机只能和主机以及同一VMnet下的其他虚拟机通信外面完全不通。这相当于一张独立的封闭交换机适合做隔离实验。我在这次复盘里故意不用NAT而是自定义了两个仅主机网络目的就是完全模拟企业内网中不同网段之间的通信。只有把虚拟机放在隔离网络里才能真正观察到“跨网段走网关”的过程。3.2 这次复盘用到的实验拓扑和IP规划我用了三台虚拟机两台Windows 10作为客户端一台Windows Server 2016作为软路由。VMware Workstation 17 Pro里自定义了两个仅主机网络VMnet2对应10.0.2.0/24VMnet3对应10.0.3.0/24。虚拟机虚拟网卡连接到IP地址默认网关作用Win10-AVMnet210.0.2.10/2410.0.2.1客户端AWinServer-RVMnet210.0.2.1/24无软路由路由转发WinServer-RVMnet310.0.3.1/24无软路由另一个接口Win10-BVMnet310.0.3.10/2410.0.3.1客户端B这就是一个迷你版的企业内网Win10-A在左边网段Win10-B在右边网段中间那台Windows Server承担“接入汇聚/核心网关”的角色。Win10-A要去Win10-B数据包必须先发给网关10.0.2.1再由Server路由转发到10.0.3.0/24。这个拓扑最重要的意义在于它让我绕开了NAT的干扰。NAT会把源IP改掉初学者看抓包时很容易糊涂而纯路由转发不改IP数据包的源IP从头到尾都是10.0.2.10只有MAC地址在变化这样就能清楚看到二层与三层之间的协作。3.3 从零搭建这套环境的关键步骤搭建过程其实不复杂但有几个细节如果你不注意可能一晚上都通不了。第一步在VMware“虚拟网络编辑器”里添加VMnet2和VMnet3都选择“仅主机模式”然后取消DHCP手动配置子网IP。为什么要关DHCP因为企业网络里网关和终端IP通常是规划的不是随机分配的。我手动分配能让实验更可控。第二步给Win10-A和Win10-B各加一块虚拟网卡分别连接到VMnet2和VMnet3给WinServer-R加两块虚拟网卡一块VMnet2、一块VMnet3。注意顺序最好先把网卡模式都设好再开机否则容易出现网络识别错乱。第三步配置IP。Win10-A的IP是10.0.2.10网关10.0.2.1Win10-B是10.0.3.10网关10.0.3.1Server的两块网卡分别设成10.0.2.1和10.0.3.1。这里有个习惯网关地址取网段的最后一个或者第一个我用的是.1方便记忆。第四步在Server上开启路由转发。最简单的做法是打开注册表把HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下的IPEnableRouter改成1然后重启。更接近真实企业环境的是安装“路由和远程访问”角色在里面启用LAN路由。我实验时先用注册表方法验证通不通通了之后再换RRAS看行为有没有区别。最后不要忘记快照。两台客户端以网络配置完成、防火墙放行ICMP为节点各拍一个快照。后面再怎么折腾一个回滚就能回到干净的实验状态。4. 数据包离开主机之后交换机转发、路由器选路与设备层次边界4.1 交换机只认MAC的“车间传送带”在真正的企业网络里Win10-A的网线通常会插到一台接入交换机上。交换机不像集线器那样把数据无脑广播给每个端口它会维护一张MAC地址表记录“哪个MAC地址从哪个端口进来”。数据包以以太网帧的形式到达交换机时交换机看的是“目的MAC”。如果MAC表里有对应条目就把帧从那个端口转发出去如果没有就向除了接收端口以外的所有端口泛洪。这个泛洪操作很像一个不认识路的人拿喇叭在走廊里喊“小张在吗小张在吗”直到有人回应。我在VMware环境里虽然看不到物理交换机但VMnet默认虚拟交换机就是干这件事的。同网段内Win10-A给Win10-B发ARP请求时虚拟交换机会广播这个帧Win10-B回应后虚拟交换机学习到Win10-B的MAC对应哪个虚拟端口后续的帧就不再泛洪而是精准转发。这里必须强调一个关键点交换机是二层设备它完全不管IP地址。交换机转发的依据是以太网帧头里的MAC地址而不是IP包里的IP地址。如果目的MAC不在同一广播域内交换机根本不知道该怎么办它只能把帧交给网关由路由器来做三层决策。4.2 路由器看IP办事的“路口交警”企业网络的网段之间要通信就必须靠路由。路由器工作在第三层它不看MAC只看IP包里的“目的IP地址”。路由器内部维护着一张路由表记录了“哪些网段可以从哪个接口出去”。当Win10-A要访问10.0.3.10时本机路由表发现目标不在直连网段于是将IP包交给默认网关10.0.2.1。Server路由器收到这个IP包后用目的IP匹配自己的路由表发现10.0.3.0/24在自己另一块网卡上于是重新封装以太网帧源MAC改成自己VMnet3网卡的MAC目的MAC改成Win10-B的MAC然后把帧从VMnet3接口转发出去。在这个过程里源IP、目的IP始终不变变的只有MAC地址。这是路由与NAT最根本的区别。很多初学者以为经过路由器就会改IP其实只有在做地址转换时才会改IP。纯路由转发只是“换车头”不换“货物”。TTLTime To Live也是路由器的经典特征。IP包头里的TTL每经过一台路由器就减1减到0就丢弃同时向源IP发送ICMP超时消息。这个机制防止数据包在网络环路里无限打转。我在Windows命令行跑tracert 10.0.3.10时第一跳是10.0.2.1第二跳是目标主机正好验证了TTL逐跳递减的过程。4.3 “网络设备层次”有两种理解别混在一起标题里提到的“网络设备层次”至少可以从两个维度看。第一个维度是OSI/TCP/IP协议层次物理层有中继器、集线器二层有交换机三层有路由器再往上有防火墙、负载均衡器。这个维度的核心是“每层设备处理不同字段”。交换机处理MAC路由器处理IP防火墙处理会话状态和应用协议。一个数据包每经过一层设备就被“剥开”一层“皮”设备也只检查自己关心的那部分信息。第二个维度是园区网络的设备层级接入交换机、汇聚交换机、核心交换机、出口路由器/防火墙。这是物理拓扑和设计层面的概念强调的是规模、冗余和管理边界。接入层面向终端汇聚层做策略和网关核心层负责高速转发出口层连接外网。很多人在学习时把这两个维度混在一起导致看到“三层架构”就以为只有三种设备看到“三层交换机”又以为是路由器。实际上三层交换机就是把交换机的二线高速转发和路由器的三层选路能力合在一个设备里。它既查MAC又查IP支持VLAN间路由是企业网络里最重要的设备类型之一。5. 企业局域网的三层架构接入、汇聚、核心分别解决什么问题5.1 为什么不是一张“大二层”广播域、故障域、管理边界刚学完交换机原理时我产生过一个疑问既然交换机可以无限端口为什么不把所有设备连在一台大交换机上企业网络为什么非要分接入、汇聚、核心最直接的原因是广播。二层通信依赖ARP广播等机制如果所有终端都在同一个广播域里一台机器发广播其它几千台机器都要处理。广播风暴可能让整个网络瘫痪。更麻烦的是故障域一台交换机出故障、一个环路出现影响范围可能是全网。所以企业网络要通过路由器或三层交换机把网络切成多个广播域网段。每个网段就是一个小“房间”房间内的二层通信随便广播但跨房间就必须经过三层网关。这样无论广播还是故障都被限制在一个较小的范围内。三层架构就是在这一思想下的具体落地接入层让终端“住进”房间汇聚层把多个房间汇聚起来做策略控制核心层再把所有汇聚点高速串联起来。它本质上是把“能通”变成“可控、可扩展、可冗余”。5.2 接入层给终端一个“上桌”的口子接入层是终端设备PC、IP电话、打印机、AP直接连入网络的入口。它通常是二层交换机主要工作是划分VLAN、限制端口数量、做端口安全以及在某些场景下给AP和IP电话供电PoE。我在实验里的VMnet2、VMnet3其实可以看作两个不同的VLAN。Win10-A在一个“接入交换机”的VLAN 10里Win10-B在VLAN 20里。接入层不关心跨VLAN通信它只负责把设备分门别类地送进对应的二层域。接入层的设计重点是便宜、端口密度高、部署方便。它的交换容量不需要大得夸张因为上行带宽通常只有1G或10G真正的高速交换在后面。如果接入层就上核心级设备成本高得离谱而且管理复杂度也高。5.3 汇聚层策略与网关的“集散地”汇聚层是三层架构里最有“脑力”的一层。它通常由三层交换机组成承担VLAN间路由网关、ACL访问控制、QoS、路由汇总等任务。简单说接入层把设备分进不同VLAN汇聚层负责让这些VLAN能互相通信同时按需控制谁允许访问谁。在我VMware实验里Windows Server-R就承担了汇聚层的角色10.0.2.1和10.0.3.1这两个网关相当于Server上为两个VLAN配置的虚接口。Win10-A要访问Win10-B数据包到网关之后由Server做路由转发这个行为就是三层交换机里的VLAN间路由。汇聚层还经常做冗余设计比如两台汇聚交换机堆叠或者跑VRRP/HSRP协议让终端网关有主备。终端网卡网卡的默认网关是一个虚拟IP由两台设备共享一台挂了另一台马上接管。这个机制在虚拟化环境里不好模拟但其思想很简单单点是危险的网关不能只有一个物理实体。5.4 核心层只做一件事——高速转发核心层一般由高性能三层交换机组成处于网络中心连接各个汇聚层设备。它的核心原则是快、稳、简单。尽量不做ACL、不做QoS策略、不部署大量服务因为这些操作会消耗CPU增加转发时延也容易在核心引入配置错误。核心层的设计思路可以用一句话概括“让数据包少拐弯”。它的接口带宽最高交换容量最大通常采用双核心或堆叠保证任意一条链路、任意一台设备故障时网络都不中断。企业里很多核心交换机支持线速转发目的就是把转发能力堆到极限。在我这个迷你实验里核心层其实被“简化”成了一个Server的背部总线它连接两个网段路由转发很快不做别的花活。真正的企业核心不会直接接终端设备它只连接汇聚层和出口防火墙。你可以把核心理解为整个企业网络的“高铁枢纽”。5.5 把三层架构映射回VMware实验会更有体感三层架构很容易背下来但如果不和实验对应理解就很空。我在VMware里做了一次映射接入层 两个自定义VMnet网络VMnet2、VMnet3对应的虚拟交换机。虚拟机终端接入它们相当于PC插在接入交换机上。汇聚层 Windows Server-R。它在两个网段上做网关用IPEnableRouter或RRAS执行跨网段转发。这就是汇聚层最常见的职责。核心层 Server转发路径中的内部高速交换能力。如果你把实验再扩大把两个Server接在一起组成一个更大的路由域那个连接点就接近核心层的概念。这样映射有一个好处当你看到一个真实企业拓扑图时不会再把接入、汇聚、核心当作三个孤立名词而是能想到“终端接入后数据包先到接入交换机再穿过汇聚网关最后走核心到达另一个汇聚、另一个接入”。6. Windows命令行 Wireshark实测把理论变成可看见的帧6.1 实验一同网段ping先看到ARP再看到ICMP我先把Win10-A和Win10-B都放在VMnet2里暂时不接Server的路由功能模拟同一个网段内通信。用Wireshark在Win10-A上抓包然后在命令行ping 10.0.2.20假设Win10-B在这个网段。第一次ping的时候抓包结果一定会有四条记录Win10-A发ARP广播问“谁是10.0.2.20”Win10-B回ARP单播说“我是10.0.2.20我的MAC是xx”然后Win10-A发ICMP Echo RequestWin10-B回ICMP Echo Reply。如果ping第二次ARP这一步可能就没了因为MAC缓存还在直接用缓存里的MAC发ICMP。这个实验虽然简单但价值很大它揭示了二层通信的完整逻辑。目的主机和源主机在同一网段时不需要经过网关两台机器直接用MAC地址通信。所谓“ping通”不只是ICMP协议在工作背后还有ARP这个幕后功臣。6.2 实验二跨网段ping见证网关修改MAC地址接下来把拓扑恢复到3.2节的规划Win10-A在VMnet2Win10-B在VMnet3中间Server开路由转发。在Win10-A上抓包ping 10.0.3.10。抓包结果会有几个关键特征Win10-A先查询自己的路由表发现目标在10.0.3.0/24不是直连网段于是把帧发给默认网关10.0.2.1。抓到的ICMP Echo Request里源IP是10.0.2.10目的IP是10.0.3.10但目的MAC是网关10.0.2.1对应网卡的MAC而不是Win10-B的MAC。这个帧到达Server后Server路由器重新封装从VMnet3接口发出目的MAC变成Win10-B的MAC源MAC变成VMnet3接口的MAC但源IP仍是10.0.2.10。如果只看Win10-A上的Wireshark你是看不到Server重新封装后那个帧的因为抓包点不在Server出口。所以我在Server的两个网卡上分别又抓了一份对比后发现同样一个IP包在两个网段上的“外壳”完全不同。这是本次复盘最强烈的一刻——二层是“路段”三层是“目的地”路由器就是在不同路段之间换车的接驳站。6.3 实验三用浏览器访问HTTP服务观察TCP三次握手光看ICMP还是有点干我把实验升级了一下在Win10-B上装了一个极简HTTP服务如果你不想装IIS可以用Python的python -m http.server 8000然后在Win10-A的浏览器里访问http://10.0.3.10:8000。在Win10-A上用Wireshark抓包过滤tcp.port 8000。你会看到完整的TCP三次握手第一个包是SYN客户端说自己要建立连接seq初始序号是随机值第二个包是SYNACKServer回应并带上自己的序号第三个包是ACK连接建立完成。紧接着HTTP GET请求从客户端发出去Server回一个HTTP响应再后面是TCP的关闭过程。这个实验把TCP的可靠传输特点展示得清清楚楚。三次握手就是为了让双方都知道“我发你收、你发我收”。序号seq和确认号ack让接收方能重新拼接乱序的报文。Wireshark里那些长度、窗口大小、标志位每一个都和性能、可靠性有关。我也把TCP握手时的IP层细节打开看能看到源IP和目的IP都保持不变因为同一次通信的终端始终是那两台机器。但如果这段TCP连接经过了NAT源IP就会被改写Wireshark里会看到一个“翻译”过程。这也是为什么学网络必须区分“路由”和“NAT”的原因。6.4 排查抓包看不到流的常见原因抓包大概率不会一次成功。我遇到最多的情况是点了开始抓包但列表里什么流量都没有。这时候按顺序检查有没有选对网卡。VMware虚拟机里的流量要在“VMware Network Adapter VMnetX”对应的接口上抓或者在虚拟机内部的网卡上抓。如果你在物理无线网卡上抓只可能看到物理局域网流量。防火墙有没有拦流量。Windows防火墙默认拦ICMP也可能拦HTTP。如果ping不通、页面打不开先看防火墙再看网卡配置。是不是在抓“出去的包”但过滤条件写错。比如过滤http却访问的是https那你只能看到TLS握手看不到明文HTTP。是否用了“混杂模式”。如果同一虚拟交换机上有其它虚拟机流量但你没开混杂模式Wireshark可能就抓不到发给其它MAC的帧。还有一个小技巧先在命令行里用ping测试连通性连通之后再开Wireshark抓包可以减少无关流量。抓包文件保存成pcapng格式方便后面复盘和给别人看。7. 复盘后我整理出的几个关键认知与一个提醒7.1 “数据包”不是一个词是四个词学完这一整套我最大的认知变化是以后说话不能再笼统地说“数据包”。在应用层它是流在TCP层它是段segment在IP层它是包packet在以太网层它是帧frame。这四个词对应的是同一个数据在不同阶段的不同形态。Wireshark里经常能看到Protocol列写着ICMP、TCP、HTTP这不是冲突而是Wireshark帮你识别出了“当前列表里这个记录主要是哪个协议层的头部信息”。展开帧时你能看到Frame、Ethernet II、Internet Protocol Version 4、Transmission Control Protocol、Hypertext Transfer Protocol几层嵌套那就是封装的直观体现。如果你面试或者给别人讲网络时能准确说出“这是一个IP包被封装在以太网帧里”而不是含糊地说“这个数据包怎么怎么样”说明你真的理解了分层。7.2 设备没有绝对高低只有定位是否合适我以前总觉得路由器比交换机高级核心交换机比接入交换机高级。复盘之后发现设备高低不在于它跑什么协议而在于它在网络里的定位。一台普通二层交换机放在核心层转发性能再强也做不了VLAN间路由所以不适合一台三层交换机放在接入层功能强大但成本高、管理复杂属于杀鸡用牛刀。家用路由器集成了交换机、路由器、NAT、DHCP甚至Wi-Fi能上网但企业网络不会拿它当核心因为性能和可靠性不够。这就是“网络设备层次”的真实含义不是等级高低而是各司其职。核心层追求速度汇聚层追求策略接入层追求端口密度和成本。设备能力要和位置匹配架构才健康。7.3 虚拟机网络模式用错实验结果全乱这次复盘最大的一个“坑”是我刚开始把三台虚拟机的网卡全部选成了桥接模式。结果Win10-A和Win10-B都从物理路由器拿了一堆IP看起来都通但完全隔离不了网络也没法模拟跨网段通信。后来我改用自定义仅主机模式才明白VMware网络模式的核心逻辑桥接 虚拟机和物理设备混在同一个二层网络。NAT 虚拟机躲在主机后面模拟上网。仅主机 完全封闭的虚拟交换机适合隔离实验。如果你要给公司网络设计做模拟我建议优先用“仅主机”加“自定义VMnet”把所有网段掌握在自己手里。如果只是让虚拟机上网NAT就够了。混搭模式是很多虚拟化环境出问题的根源。7.4 给初学者的一个实际建议如果你也想做一次类似的学习复盘我的建议是不要一开始就在GNS3或EVE-NG里搭庞大拓扑先用VMware Workstation加三台Windows虚拟机把一个数据包从一台机器到另一台机器的每一步抓下来。等你在Wireshark里能看到ARP、ICMP、TCP三次握手并且能解释为什么源IP不变而MAC在变再往企业网络架构扩展。每次改配置前拍快照每次抓包后保存结果过段时间回看你会发现这些“当初记不住的细节”已经变成直觉了。我到现在都还留着那几份抓包文件偶尔翻出来对照协议文档再看一遍每次都有新的理解。