IP地址如何工作:从寻址原理到网络排查实战
写这篇总结之前我先随手翻了翻之前的几篇笔记。基础概念系列连起来看前面已经把分层模型、以太网、交换机转发这些底子打过了这一篇正好接上IP地址是怎么在网络里被用起来的。说白了就是回答一个很实际的问题——当你点开一个网页、连上一个服务数据包是怎么靠IP地址一步步找到目标的。适合刚学网络的在校同学也适合工作里经常跟网络打交道但有些细节始终没捋清楚的从业者。这一篇尽量把关键机制讲透后面排查问题的时候能直接派上用场。1. 先把IP地址放在整个网络体系里的位置搞清楚1.1 IP地址解决的本质问题端到端寻址我们把网络通信想象成寄快递。你寄包裹的时候快递单上要有收件人的地址。这个地址必须足够全局可读邮局系统才能一级一级把包裹送过去。IP地址扮演的就是这个角色它是网络层为每一台设备分配的逻辑地址解决的核心问题是这个数据包应该送到哪里。这里有两个字要特别注意逻辑。与MAC地址烧录在网卡上不同IP地址不是硬件自带的而是由管理员或DHCP服务器分配后写入操作系统的网络配置里的。这意味着它可以随时变更、重新规划不受物理位置限制。你在公司里换一个工位网线一插可能就换了一个IP但你网卡的MAC地址从来没有变过。所以网络层的寻址是逻辑寻址链路层的寻址是物理寻址二者配合才构成了完整的通信链路。有了这个逻辑地址网络设备主要是路由器才能做一件关键的事情路由决策。路由器维护一张路由表里面记录着哪个IP段走哪个接口、下一跳是谁。当一个数据包到达路由器时它会提取目的IP地址查表然后把包转发到正确的出口。这个过程在网络世界里每时每刻都在发生而IP地址正是路由查找的关键索引。1.2 从组网角度看IP地址的静态配置与动态分配实际组网时IP地址怎么落到设备上主要有两种方式静态配置和动态获取。静态配置就是管理员手动在设备的网络设置里填IP、掩码、网关。适用于服务器、网络打印机、路由器互联接口这类地址需要保持固定的场景。好处是可控性强坏处是规模一大就非常费手而且容易因为手误造成冲突。动态获取靠的是DHCP动态主机配置协议。设备开机后发一个DHCP Discover广播DHCP服务器收到后从地址池里挑一个空闲IP连同掩码、网关、DNS一起发给设备这就是所谓的DHCP Offer。整个流程走的是四次握手Discover、Offer、Request、Ack。租约默认一般是24小时到了续租时间设备会再发Request去更新。对终端用户来说完全无感知但对排障来说DHCP这条线是非常关键的排查对象。家用的无线路由器之所以能插上就能上网就是因为它在出厂时默认开启了DHCP服务给你的手机电脑自动下发了一个192.168.x.x的地址。你手动改成静态IP反而容易出问题这个后面在第5章会专门提。2. IP地址的分类逻辑与地址空间划分2.1 早期分类编址Classful Addressing时代的A/B/C类在比较早的互联网设计阶段IP地址被分成了固定几类最常用的就是A、B、C三类。划分依据是地址的最前面几位二进制A类首位为0网络号占8位主机号占24位。范围从1.0.0.0到126.255.255.255适合超大型网络每个A类网络理论上可以容纳约1677万台主机。B类前两位为10网络号占16位主机号占16位。范围从128.0.0.0到191.255.255.255适合中型网络每个网络最多约6.5万台主机。C类前三位为110网络号占24位主机号占8位。范围从192.0.0.0到223.255.255.255适合小型网络每个网络最多254台主机。这套分类在教科书里讲得非常清楚但实际用起来问题特别明显。最典型的就是一刀切导致的空间浪费一个公司可能只需要500个IP地址但你得申请一个B类地址段一给就是6万多剩下的大半都闲置了。反过来如果只有几百台设备却拿到一个C类地址段那又根本不够用。为了解决这个供需错配90年代业界转向了CIDR。2.2 CIDR与VLSM不再按类别划分按前缀长度划分CIDR无类域间路由彻底打破了A/B/C的框框。它的表示法很直接IP地址后面加一个斜杠斜杠后面是前缀长度即网络部分占多少位。比如172.16.4.0/22表示前22位是网络号后10位是主机号。这个写法的好处是你可以按需“切分”地址空间。比如你向某机构申请到一段203.0.113.0/24的地址内部就可以自行切成多个子网/25切出2个子网每个126台可用主机/26切出4个子网每个62台可用主机。这就是VLSM可变长子网掩码的核心思想不搞固定大小的桶按实际需求灵活分配。在路由器层面CIDR也带来了一个额外福利路由聚合。以前要通告相邻的几个C类段得写好几条路由现在如果有连续的地址块比如192.168.4.0/24、192.168.5.0/24、192.168.6.0/24、192.168.7.0/24只要这四段的上游路由行为一致就可以聚合通告为192.168.4.0/22。这样核心路由器的路由表数量大幅减少转发效率明显提升。这也是我排障时喜欢把路由表show ip route summary看一眼的原因之一聚合得好不好直接影响网络的收敛速度。2.3 公网地址与私网地址的划分逻辑聊到IP地址就不能不提公网和私网。RFC 1918规定了三段始终不会被公网路由的私有地址范围地址段前缀范围默认标准掩码10.0.0.0/810.0.0.0 - 10.255.255.255大企业内网常用255.0.0.0172.16.0.0/12172.16.0.0 - 172.31.255.255中型企业常用255.240.0.0192.168.0.0/16192.168.0.0 - 192.168.255.255家庭/小型办公最常用255.255.0.0这些地址可以在任何人的内网里重复使用。你家路由器用192.168.1.1别人家路由器也可以互相不影响因为它们在各自的局域网里私有运转。问题是访问互联网时私网地址不能直接使用必须经过NAT网络地址转换映射成公网地址。最典型的就是家用路由器做的端口多路复用——局域网里几十台设备共用一个公网IP路由器靠端口号区分是哪个内网设备的流量。理解这层关系有助于以后排查很多内网能通、外网不通的问题先看地址是不是私网段再看NAT是否生效最后查公网侧的出入方向基本就能定位到问题点。3. 子网掩码与网段计算3.1 掩码的二进制本质它其实是一把尺子很多人对子网掩码的理解停留在255.255.255.0就代表一个网段这没错但不够。掩码真正的意义在于它定义了IP地址中哪些位属于网络号、哪些位属于主机号。掩码写成二进制高位全是连续的1低位全是连续的0。比如255.255.255.0写成二进制就是24个1后面跟8个0。要判断两个IP是否在同一个网段方法很简单把IP地址和掩码做逐位的与运算得到网络号如果两个IP的网络号相同它们就在同一个二层范围内直接通信不需要经过路由器。举个例子。IP是192.168.1.100掩码是255.255.255.0。192.168.1.100的二进制是两组八位拼接起来与掩码做与运算后主机号部分清零结果就是192.168.1.0也就是网络号。而192.168.1.255是子网广播地址。一台主机可以用的地址范围是192.168.1.1到192.168.1.254共254个。这里有一个值得记住的公式一个前缀长度为n的子网里可用主机数等于2的(32-n)次方减去2。减去的两个地址一个是网络号一个是广播地址。这是配置地址和规划地址池时最基础的计算。3.2 按需划分子网的实例从/24切出两个子网我们拿最常见的192.168.1.0/24来演示。假设你公司有行政和研发两个部门想让他们各自独立、互不干扰就需要把这个网段切成两个子网。从/24往后借一位变成/25得到两个子网子网A192.168.1.0/25掩码255.255.255.128可用地址1.1~1.126广播地址1.127。子网B192.168.1.128/25掩码255.255.255.128可用地址1.129~1.254广播地址1.255。每段可用主机数从254变成126。如果你的设备数不到120台这样切完全够用。如果还不够就继续往后借位/26可以切4段每段62台主机/27切8段每段30台主机/28切16段每段14台主机。切割过程中最需要小心的是不要把广播地址和网络号当成可用IP分配给设备。很多人配置静态IP时随手填了192.168.1.255或192.168.1.0结果一部分设备通信异常还一直找不到原因。这种问题在做地址规划时就要提前避开。3.3 掩码写错导致的假通掩码不匹配导致的症状非常典型两台设备IP同段但掩码不同其中一台认为对方不在同一个网络里于是把发往对方的数据交给网关处理如果网关又没有对应的转发规则通信就直接失败。举个实例。电脑A配置192.168.1.10/24电脑B配置192.168.1.20/16掩码255.255.0.0。A认为B就在本网段直接发ARP请求去找B的MAC地址B收到了会回但B用/16掩码计算后认为A在同一个大网段192.168.0.0/16覆盖了1.10也能直接回。这种情况下两边反而能通。真出问题的往往是更复杂的多网段环境B认为目的IP 192.168.2.30另一网段的设备也在自己的/16范围内于是直接发ARP而实际上目的设备在路由器后面ARP永远得不到响应流量就卡在B这里。这种局域网内有一台大掩码设备造成的路由黑洞在外派支持时遇到过不止一次。查这种问题其实很快在两台设备上分别看ip route或者route print比对它们对目的地址的判定是直连还是经由网关就能看出掩码是否出了偏差。4. 地址解析与报文的实际流转4.1 ARPIP地址怎么找到MAC地址IP地址是网络层的标识但数据真正在以太网上传输时靠的是MAC地址。这就需要一个翻译的过程由ARP地址解析协议完成。当一台主机要向同一网段的另一台主机发包时它先查看自己的ARP缓存表。如果缓存里没有目的IP对应的MAC地址就向整个网段发一个广播帧谁的IP是192.168.1.20请把你的MAC地址告诉我。对应设备收到后发现自己的IP被点名就单播回复一个ARP应答告知自己的MAC地址。之后发送方把这个映射关系缓存下来后续报文直接封装目的MAC发出。这个机制平时工作得很安静但有几个排查要点值得记牢。第一ARP表是会过期的Windows默认缓存时间也就几十秒到几分钟不等所以ping不通但缓存里却有对方MAC这类矛盾时常出现需要手动清缓存。第二如果有人伪造ARP应答就可能实现ARP欺骗把流量引到错误的设备上。所以在不可信的网络环境里对关键设备做静态ARP绑定是有必要的。第三跨网段通信时数据包里的目的MAC地址是网关的MAC而不是最终目的主机的MAC。这一点初学容易混淆。4.2 数据包跨网段时到底发生了什么两台设备不在同一个网段时源主机会怎么处理它把自己的IP和掩码做与运算得出自己的网络号再用目的IP和掩码做与运算得出目的网络号两者不一致于是判定目标在远端。此时源主机把数据包的三层目的IP写为最终目标IP但二层帧的目的MAC写为默认网关的MAC然后把帧发到网关。网关路由器解开二层帧看到三层目的IP查路由表确定下一跳或出接口再做一次二层封装发给下一跳设备。这个解封装、查表、再封装的过程在沿途每一跳路由器上重复执行直到到达目标网段。到达目标网段后路由器把数据包发给最终目标主机前还是要靠ARP解析出目标主机的MAC地址完成最后一跳交付。排查跨网段不通时我一般会分三段来看源主机到网关通不通、沿途路由器每一跳通不通、最后一跳到目标主机通不通。用tracertWindows或tracerouteLinux就能把这些跳点逐层摸出来卡在哪一跳问题基本就集中在哪一跳。4.3 域名解析与IP地址的配合流程平时我们几乎不会直接输入IP地址上网输入的是域名。这里有一个容易被忽视却非常重要的配合关系DNS把域名解析成IP应用层拿着IP去建立连接网络层再按IP寻址转发。如果DNS挂了浏览器会报无法解析服务器的DNS地址这时候即使IP网络完全正常你也上不了网。排障时有一个很基础但很实用的技巧当域名解析有问题时先ping域名看看解析出的IP是什么再用nslookup或dig去独立验证。如果nslookup能返回正确IP但浏览器就是打不开那问题往往在本地DNS缓存或应用层而不在网络本身。Windows下可以用ipconfig /flushdns清空本地缓存Linux下一般是重启systemd-resolved或nscd服务。DNS属于应用层范畴但它直接决定了IP地址工作方式这整条链路能不能跑起来。所以做网络排查时把DNS解析放进检查清单能省掉很多弯路。5. 实战排查IP地址相关的典型问题与速查方案5.1 IP地址冲突最经典的翻车现场IP冲突几乎是内网静态IP环境里最容易碰到的问题。两台设备用了同一个IP表现非常有趣时通时断或者一台能上另一台完全上不了。原因在于ARP缓存——网络里的交换机或其它主机的ARP表一会儿指向这台设备一会儿指向那台设备数据包自然就跟着飘忽不定。排查冲突的快捷办法是在出问题的设备上执行arp -a找到冲突IP对应的MAC地址再逐一比对实际设备。更彻底的办法是上交换机查看接入端口的MAC地址表找到这个IP对应的所有MAC逐端口去定位。Windows系统碰到IP冲突时会在右下角弹窗提示但很多精简版系统或Linux环境没有这个提示所以还是得靠主动排查。5.2 配置了静态IP但上不了网先查这三项很多人把IP从自动获取改成手动填写之后发现上不了网而后台又看不出什么明显报错。这种场景下优先检查三个点掩码、网关、DNS。第一掩码对不对。如果掩码和网关的掩码不一致系统可能判定网关在“远端”直接把包发给一个不存在的下一跳。第二网关地址对不对。家用路由器一般是192.168.1.1或192.168.0.1但也可能是别的段比如有些定制固件是192.168.31.1。填错网关时系统能获取到IP但出不去。第三DNS写没写。很多手工配置只填了IP和掩码DNS留空或者填错结果QQ这类直连IP的软件能上浏览器就是打不开网页。每次看到这类问题我的第一建议都是如果不能明确知道自己要配什么内容就先用回DHCP自动获取让设备自己拿地址。这样往往能瞬间消除一多半的人为配置错误。5.3 DHCP获取不到地址从哪里看起设备连上网络后拿不到IP可能的原因很多由浅入深排下来基本是网线或无线信号问题、交换机端口VLAN配置问题、DHCP服务器故障、地址池耗尽、中继配置错误。优先查看系统日志和DHCP客户端状态。Windows下用ipconfig /release再ipconfig /renew注意观察返回信息如果一直停留在无法联系DHCP服务器大概率是二层链路或DHCP服务本身有问题。Linux下可以查看dhclient或NetworkManager的日志。另一个常见坑是网络中如果有多个DHCP服务器且分配策略冲突会出现IP拿到了但时好时坏的诡异现象。排查时可以用抓包工具过滤dhcp或bootp协议看看设备发出的Discover有没有收到Offer就能快速定位是哪一侧的问题。5.4 快速自查命令速查表场景命令Windows / Linux看什么查看本机地址与掩码ipconfig /all ; ip addr showIP、掩码、网关是否按预期配置测试基本连通性ping 目标IP是否收到回包丢包和延迟情况查DNS解析nslookup 域名 ; dig 域名解析出的IP是否正常查看ARP映射arp -a ; ip neigh show目标IP对应的MAC是否异常追踪路径tracert 目标 ; traceroute 目标卡在哪一跳链路中哪些节点延迟高看路由表route print ; ip route show默认路由和直连路由是否齐全把这张表贴在工位附近遇到日常网络问题可以先按表自查一遍很多故障其实都是配置层面的小问题。真正要抓包的场景再上Wireshark去过滤arp、icmp、dhcp这些协议也不迟。在最后多提一嘴IP地址本身只是一个标识真正让网络跑起来的是围绕它的整套解析、寻址、转发机制。很多看似玄学的网络故障归根结底都是掩码算错、路由缺失、ARP混乱或者地址冲突这老几样。把这篇里的细节吃透再配合命令行去验证遇到问题至少心里会有一个清晰的排查顺序。我觉得对刚接触网络的同学来说与其死背概念不如自己在家里用两台设备搭一个最小网络亲手配一次静态IP、看一次ARP缓存的变化比看十遍书都印象深。

相关新闻

Ubuntu 16.04搭建mmdetection实战:版本匹配与踩坑记录

Ubuntu 16.04搭建mmdetection实战:版本匹配与踩坑记录

1. 在16.04上做这件事前,先想清楚三件事1.1 为什么Ubuntu 16.04折腾:GLIBC和Python生态的年代差先说个现实问题:Ubuntu 16.04发布于2016年,自带GLIBC 2.23,而mmdetection的现代版本和配套编译工具链,很多编…

2026/10/19 2:02:37 阅读更多 →
网络药理学全流程实操:从靶点预测到Cytoscape网络图构建

网络药理学全流程实操:从靶点预测到Cytoscape网络图构建

简介:网络药理学将传统“一药一靶”的研究范式拓展为“一药多靶一网”,借助虚拟筛选与分子对接技术,在计算层面快速预测化合物与潜在靶点之间的相互作用。其核心原理是基于化合物结构特征与已知蛋白数据库进行反向匹配,并通过通路…

2026/10/17 23:47:45 阅读更多 →
Nacos启动报load jdbc.properties error的根源与三重校验法

Nacos启动报load jdbc.properties error的根源与三重校验法

1. 问题本质:这不是Nacos故障,而是配置加载链路的“第一道关卡”失守你看到控制台里那行醒目的红色报错:Caused by: java.lang.RuntimeException: [db-load-error]load jdbc.properties error,第一反应可能是“数据库连不上”&…

2026/10/17 23:47:45 阅读更多 →

最新新闻

EMC设计整改与仿真应用:从PCB正向设计到实验室超标排查实战

EMC设计整改与仿真应用:从PCB正向设计到实验室超标排查实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:02:29 阅读更多 →
deepagents中间件:30行代码搞定AI Agent文件系统、记忆与上下文压缩基建

deepagents中间件:30行代码搞定AI Agent文件系统、记忆与上下文压缩基建

1. 从"手搓轮子"到"搭积木":Agent 基建的痛点到底在哪如果你最近半年在折腾 AI Agent,大概率经历过这样一个阶段:一开始兴致勃勃地写了个 ReAct 循环,觉得"不过如此";等到真正要把它做成…

2026/10/19 2:02:29 阅读更多 →
Spring AI Alibaba Graph实战:ReAct Agent与Workflow混合编排的企业级AI应用

Spring AI Alibaba Graph实战:ReAct Agent与Workflow混合编排的企业级AI应用

1. 从“能聊天”到“能干活”:企业级AI编排的真实分水岭很多团队做AI应用,第一步都是接个大模型,写个对话接口,跑通“你问我答”就以为大功告成。但真正落到企业业务里,你会发现单轮问答根本撑不起一个完整流程。比如一…

2026/10/19 2:02:29 阅读更多 →
移动端AIcoding落地成本与端云协同选型实战

移动端AIcoding落地成本与端云协同选型实战

1. 移动端 AIcoding 落地,为什么大家都在算这笔账移动端 AIcoding 这个词,最近半年在圈子里被反复提起。我最早接触这个概念是在一个跨平台工具链项目里,当时团队想把代码补全和自然语言生成代码的能力塞进手机和平板端,让开发者在…

2026/10/19 2:02:29 阅读更多 →
移动端AIcoding真实成本账:端侧适配与上下文管理占大头

移动端AIcoding真实成本账:端侧适配与上下文管理占大头

1. 这笔账为什么值得算移动端接入 AIcoding,前两年大家聊的都是“能不能做”,现在聊的是“划不划算”。我所在的团队从去年下半年开始,把一个内部代码辅助工具从桌面端往移动端搬,前后折腾了差不多两个季度,踩过的坑、…

2026/10/19 2:02:29 阅读更多 →
1~30秒参考音频克隆任意声音:Seed-VC 零样本语音转换完整零训练指南

1~30秒参考音频克隆任意声音:Seed-VC 零样本语音转换完整零训练指南

1~30秒参考音频克隆任意声音:Seed-VC 零样本语音转换完整零训练指南 【免费下载链接】seed-vc zero-shot voice conversion & singing voice conversion, with real-time support 项目地址: https://gitcode.com/GitHub_Trending/se/seed-vc 有一场会要开…

2026/10/19 2:01:28 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →