
1. 这期笔记讲什么网络基础为什么值得认真过一遍计算机基础系列写到第11期本来想接着前面的存储体系往下聊结果中途被一个实际场景打断了——帮朋友排查一台电脑死活连不上公司打印机折腾了半天发现是 IP 段规划问题。那一刻我意识到网络基础这块内容如果只是停留在知道个大概的程度遇到问题根本没法下手。所以这期笔记干脆把计算机网络的基础知识系统梳理一遍从分层模型、IP 地址规划、核心协议到实际排障一次性讲透。这期内容适合三类人刚学完计算机组成原理、想衔接网络知识的学生工作中经常需要配路由器、调网络却一直靠感觉来的开发或运维以及准备面试、想系统过一遍网络八股但又不想死记硬背的人。我的目标是看完之后你能自己解释清楚打开一个网页背后到底发生了什么并且遇到常见的网络故障能有一套自己的排查思路而不是只会重启路由器。2. 分层模型OSI 与 TCP/IP 到底怎么对照2.1 OSI 七层模型不是背完就完很多人一提到网络就条件反射背出物理层、数据链路层、网络层、传输层、会话层、表示层、应用层但背完就完了完全不知道这东西能拿来干嘛。我自己的体会是OSI 七层模型最大的价值不是让你考试拿分而是给你一套故障定位的坐标系。出问题的时候你至少要能判断这个问题发生在哪一层是网线没插好物理层还是 IP 配错了网络层还是服务没启动应用层举个例子你访问某网站打不开浏览器提示无法访问此网站。这时候你脑子里应该有这张表OSI 层典型问题排查手段物理层网线松动、光猫红灯看指示灯、换线数据链路层MAC 地址冲突、交换机端口故障看交换机状态、查 ARP网络层IP 配置错误、路由不通ping 网关、tracert 路由传输层端口被占用、防火墙拦截telnet 端口、查监听应用层服务崩溃、配置错误看日志、查进程这张表我一直贴在工位上。遇到问题不是瞎试而是逐层往上查效率高很多。2.2 TCP/IP 四层模型才是实战主角说句实话现实世界里没人天天带着 OSI 七层干活大家真正操作的都是 TCP/IP 四层模型网络接口层、网络层、传输层、应用层。OSI 的会话层和表示层在 TCP/IP 里基本被应用层吸收了这也是为什么面试里问OSI 和 TCP/IP 的区别时除了说层数不同更要理解到TCP/IP 是实战模型OSI 是理论参考模型。举一个实际对照的例子。你在浏览器输入网址回车这个动作在 TCP/IP 模型里横跨了应用层HTTP 请求、传输层TCP 建立连接、网络层IP 寻址、网络接口层通过网卡发出去。每一层都各司其职上一层的数据交给下一层处理时会被加上该层的头部信息这个过程叫封装。理解封装特别重要因为网络抓包工具比如 Wireshark里你看到的每一个报文都是层层加头的产物。你看到的一个 HTTP 数据包实际包含着 TCP 头源端口、目的端口、序号等、IP 头源 IP、目的 IP、TTL 等、以太网头源 MAC、目的 MAC抓包的时候一层层展开对应的就是 TCP/IP 模型的各层。反过来接收方的处理顺序是剥头先剥以太网头看 MAC再剥 IP 头看地址再剥 TCP 头看端口最后把数据交给应用层。2.3 数据封装与解封装的全过程这里我用一个具体的例子把封装过程走一遍因为光看理论记不住。假设你在一台电脑上要给另一台电脑发一个GET /index.html的请求。第一步应用层把 HTTP 报文请求行、请求头、请求体形成后交给传输层。传输层协议选择 TCP因为 HTTP 默认用 TCP它会在这段数据前面加上 TCP 头其中最关键的信息是源端口随机生成的一个高端口比如 53214和目的端口80 或 443。加完头这层的数据单位叫段。第二步网络层收到段之后加上 IP 头核心信息是源 IP 和目的 IP。这层的数据单位叫包。这里有一个容易忽略的点IP 头里有个 TTL 字段默认一般是 64 或 128每经过一个路由器减 1减到 0 还没到目的地包就被丢弃了。TTL 的设计初衷是防止数据包在网络里死循环。第三步数据链路层拿到包之后要给它加上以太网头里面最重要的是目的 MAC 地址。这里有个关键问题你的电脑怎么知道目的 IP 对应的 MAC 地址答案是 ARP 协议——它会先查本地 ARP 缓存没有的话就在局域网里广播一个谁是 192.168.1.10请告诉我你的 MAC拿到响应后才封装完整的数据帧。这层的数据单位叫帧。接收端收到帧后按相反顺序剥头最终把干净的 HTTP 报文交给应用层的浏览器解析。这个过程我在学网络抓包的时候才真正看明白建议你也装个 Wireshark 过滤一个 HTTP 请求亲眼看看每一层的头长什么样。3. IP 地址与子网划分从理论到能动手配网3.1 IP 地址的分类与私有网段IP 地址是网络层的核心概念但很多人对它的理解停留在就是给电脑编个号。实际上IPv4 地址一共 32 位分成了 A、B、C、D、E 五类真正有意义的区分在于公网地址和私有地址。私有网段是必须记住的三段因为你在家里、在公司、在学校配网络永远绕不开它们A 类私有地址10.0.0.0/810.0.0.0 到 10.255.255.255B 类私有地址172.16.0.0/12172.16.0.0 到 172.31.255.255C 类私有地址192.168.0.0/16192.168.0.0 到 192.168.255.255为什么要区分公网和私有因为 IPv4 地址总量只有 43 亿左右全球设备早就超过这个数了。私有地址可以在局域网内部随便用但在公网上不可路由大家用私有地址上网时统一通过 NAT网络地址转换把私有 IP 映射成公网 IP。家用路由器干的最核心的事就是 NAT。这里我补充一个容易踩坑的点很多人以为192.168.1.1和192.168.2.1只要不在同一个网段就能互相通信但实际上跨网段通信必须经过路由器。两个设备分别接在同一个交换机上、但 IP 网段不同它们之间是 ping 不通的因为交换机是二层设备只在数据链路层工作不认识 IP 网段而设备的 ARP 广播在另一个网段没人会响应。3.2 子网掩码与 CIDR 的基础计算子网掩码是很多人学网络时第一个卡住的地方。通俗理解子网掩码就是把 IP 地址切分成网络号 主机号的标尺。255.255.255.0对应的 CIDR 写法是/24意思是前 24 位是网络号后 8 位是主机号。我在实际配置里最常用的几个 CIDR整理一下CIDR子网掩码网段内可用 IP 数典型场景/24255.255.255.0254家用、小型办公/25255.255.255.128126部门级网络/26255.255.255.19262小规模子网/16255.255.0.065534大型企业内部计算可用 IP 数的方法很简单主机位数是 32 减去网络位可用数就是 2 的主机位次方减 2去掉一个网络地址和一个广播地址。比如 /24 有 8 位主机位2^8 - 2 254。为什么要会算这个因为规划子网的时候如果算错就会出现网段看起来够用实际设备一接就冲突的尴尬。我见过有人给一个 200 人的办公室配了个 /26只有 62 个可用 IP结果上到一半就上不去了。规划之前先数清楚设备数量留 30% 的余量这是基本素养。3.3 手动规划一个小局域网的完整过程我把身边一个具体的规划案例放进来当示范。假设你要给一个小办公室布置网络设备情况是员工电脑 35 台、打印机 2 台、监控摄像头 6 台、NAS 存储 1 台、访客 WiFi 设备若干。总共数量估算下来在 60 台左右。规划步骤是这样走的选网段192.168.10.0/24可用 IP 254 个余量充足。分配路由器地址网关固定用192.168.10.1。划分用途区间192.168.10.2 ~ 192.168.10.50员工电脑DHCP 自动分配192.168.10.51 ~ 192.168.10.60打印机、NAS、摄像头静态绑定192.168.10.61 ~ 192.168.10.200访客 WiFiDHCP 分配192.168.10.201 ~ 192.168.10.254预留在路由器里把 DHCP 地址池设置为192.168.10.2 ~ 192.168.10.200但要注意把静态设备的 IP 排除在 DHCP 池之外否则容易发生冲突。这个方案看起来简单但我在实际执行时吃过亏一开始没在 DHCP 池里排除静态绑定设备的 IP结果有一台打印机 IP 被 DHCP 分给了别的电脑打印机就时好时坏。后来学乖了要么把静态设备放在独立网段要么在 DHCP 池里严格排除。静态绑定 IP 和 DHCP 自动分配绝不能重叠这是铁律。4. 核心协议与工作流程网页是怎么打开的4.1 HTTP/HTTPS 的交互过程网络协议里跟日常开发关系最紧密的就是 HTTP。一个完整的 HTTP 请求生命周期包含建立连接、发送请求、服务端处理、返回响应、断开连接。在 HTTP/1.1 里连接默认是 keep-alive 的也就是一次 TCP 连接可以发送多个请求避免频繁握手带来的开销。HTTP 报文本身的格式值得背一下。请求行里GET /index.html HTTP/1.1这三部分分别代表方法、路径、协议版本。请求头里常见的Host、User-Agent、Accept、Cookie各有作用。响应报文第一行是状态行200 OK表示成功301是永久重定向403是权限不足404是资源不存在500是服务器内部错误。这些状态码必须熟练因为排查接口问题的时候光看状态码就能排除一大半原因。HTTPS 比 HTTP 多的核心是 TLS 握手。打开一个 HTTPS 网站时浏览器先拿到服务器的证书然后通过非对称加密协商出对称密钥后续数据都用对称加密传输。我的理解是非对称加密解决安全地交换密钥的问题对称加密解决高效传输数据的问题。平时用抓包工具看 HTTPS 请求会显示密文除非提前配置了 SSLKEYLOGFILE 导出密钥这也是很多人第一次抓 HTTPS 包时一脸懵的原因。4.2 DNS 解析从域名到 IP 的完整链路你输入网址回车第一件事不是直连服务器而是先解析域名。DNS 就是互联网的电话簿把人类好记的域名翻译成机器好找的 IP。解析过程大概是这样浏览器先查自己的 DNS 缓存没有就去查操作系统的 hosts 文件和本地 DNS 缓存还没有就向本地配置的 DNS 服务器比如家用路由器上的192.168.10.1或运营商的 DNS发起递归查询。本地 DNS 拿到请求后会依次查询根域名服务器、顶级域名服务器比如.com和权威域名服务器最终拿到目标 IP 后返回并且会在本地缓存一段时间TTL。实际排障中DNS 问题占比非常高。最常见的现象是网页打不开但 ping IP 能通。这时候先查 DNSWindows 上用nslookup或nslookup 域名 8.8.8.8指定公共 DNS 查询如果指定 DNS 能解析出 IP 而默认 DNS 不行基本可以确定是你配置的 DNS 服务器出问题了。还有一个高频问题是宿主机的 hosts 文件被改过比如某些软件为了屏蔽广告会往 hosts 里加规则一旦加了0.0.0.0 某域名这个域名就永远打不开了。遇到域名打不开优先查 hosts 文件我处理过好几次神秘打不开都是这个原因。4.3 TCP 三次握手与四次挥手TCP 三次握手是被讲烂了的话题但很多人只是背了个顺口溜SYN、SYN-ACK、ACK不知道为什么要这样设计。我的理解是三次握手的核心目的是让通信双方确认彼此的收发能力都正常。第一次客户端发 SYN告诉服务器我要建立连接第二次服务器回 SYN-ACK表示我收到你的请求我也要建立连接第三次客户端回 ACK表示我收到你的确认。为什么不是两次因为两次握手时服务器无法确认客户端是否真的收到了自己的 SYN-ACK 包。如果客户端发出的 SYN 因为网络原因重传了两次握手会导致服务器白白建立多余的连接浪费资源。三次握手之后双方都确认了对方能收能发才开始传数据。四次挥手的过程我也提一句实际观察到的细节断开连接时主动方发 FIN 表示我这边没数据了被动方回 ACK 表示收到然后被动方可能还要发剩余数据发完再回 FIN最后主动方回 ACK 确认。因为 TCP 连接是全双工的两条方向的通道要分别关闭所以是四次而不是三次。平时排查端口被占用或连接卡在 TIME_WAIT状态都和挥手有关。TIME_WAIT 状态会持续 2 个 MSL报文最大生存时间如果服务器上有大量 TIME_WAIT 连接多半是短连接请求太频繁可以考虑开启连接复用。5. 网络排查实战从现象到定位的思路5.1 ping 不通的逐层分析法ping 是每个网络工程师的第一把刀但很多人只会傻 ping不知道结果意味着什么。我总结了一套递进式排查法先 ping 回环地址127.0.0.1通说明本机 TCP/IP 协议栈正常。再 ping 自己的 IP比如192.168.10.8通说明网卡和 IP 配置正常。ping 网关192.168.10.1通说明局域网通路正常。ping 外部 IP比如114.114.114.114通说明外网路由正常。最后 ping 域名比如某网址的域名通说明 DNS 正常。哪一步不通问题就锁定在哪一段。这里有个细节ping 外部 IP 通但 ping 域名不通是 DNS 问题ping 网关都不通是网线、网卡、交换机或 IP 配置的问题ping 自己 IP 不通多半是网卡驱动或 IP 绑定出了问题。另外要留意很多服务器默认禁 ping防火墙会丢弃 ICMP 请求。所以ping 不通不代表网络不通还需要配合端口测试来判断。之前我给一台 Linux 服务器配置网络怎么 ping 都不通排查半天发现是云平台的安全组规则把 ICMP 禁了服务本身是正常的。所以看到请求超时先别急着怀疑链路先确认目标设备是否允许 ICMP。5.2 端口不通怎么定位端口是传输层的概念排查端口是否可达Windows 下常用telnet IP 端口Linux 下常用nc -vz IP 端口或curl -v IP:端口。telnet在 Windows 上默认没启用需要去启用或关闭 Windows 功能里勾选 Telnet 客户端很多人第一次用 telnet 失败其实是这个原因。实际场景里端口不通的原因通常有四类原因分类典型表现排查方向服务未启动端口根本没监听netstat -ano查看监听端口防火墙拦截telnet 一直连接超时查本机防火墙入站规则安全组限制云服务器端口不通查云平台安全组配置NAT 映射错误局域网外访问不了查路由器的端口转发配置我的个人经历是有次部署一个 Web 服务局域网内访问正常但从外网怎么也访问不了。查了一遍代码、服务状态都没问题最后发现是光猫的 NAT 模式有问题——家里的光猫拨号会产生一层 NAT路由器的端口转发要配置在光猫上才生效很多人都忽略了双层 NAT的场景导致端口转发配了等于白配。5.3 常用工具的搭配组合除了 ping 和 telnet我还有几个常用的排障工具组合分享出来ipconfig /allWindows或ip addrLinux看本机 IP、网关、DNS 配置是否正常。tracertWindows或tracerouteLinux追踪路由路径定位卡在哪一跳。路径上哪一跳开始超时瓶颈大概率就在那附近。netstat -ano查看端口监听和连接状态配合任务管理器看 PID 对应哪个进程。nslookup诊断 DNS 解析问题。arp -a查看 ARP 缓存排查 IP 冲突和异常设备。排障时刻要遵循一个原则一次只改变一个变量。很多人排障变得混乱是因为同时改了 IP、换了网线、又关了防火墙最后通了却不知道是哪个操作起了作用。老老实实按顺序来每一步都有记录问题定位才可复现。另外别忘了重启大法在网络排障中的合理性路由器长时间运行会内存耗尽、ARP 表错乱重启能解决很多说不清道不明的问题这不算玄学是设备状态清理。6. 常见问题与排查技巧实录6.1 局域网 IP 冲突的处理姿势IP 冲突是办公室网络最常见的故障之一表现是设备上不了网、网络时断时续系统弹窗提示检测到 IP 地址冲突。原因几乎都是有人手动配了 IP 或者 DHCP 和静态绑定重叠。我的处理经验是先找到冲突证据在交换机上或者路由器后台查 ARP 表看同一个 IP 对应了几个 MAC 地址两个不同 MAC 就说明真冲突了。然后逐个拔网线定位是哪台设备手动配了这个地址。更稳妥的做法是给网络里的固定设备做 DHCP 静态绑定在路由器里把设备的 MAC 地址和指定 IP 绑死这样 DHCP 就不会把同一地址分出去。这里提醒一句MAC 地址和 IP 的静态绑定要绑定设备的有线网卡 MAC不是无线网卡。很多笔记本有线和无线是两张网卡绑定错了照样冲突。查 MAC 用ipconfig /all看物理地址那一行注意有线网卡和无线网卡的物理地址不同。6.2 DNS 缓存导致打不开网页症状很典型某个域名别人都能打开就你打不开或者打开的是旧页面。这时候十有八九是本地 DNS 缓存出了问题。处理方法是刷新 DNS 缓存Windows 下管理员身份运行ipconfig /flushdnsLinux 下根据发行版不同可能是systemd-resolve --flush-caches或者重启 network 服务。但我见过更隐蔽的一种情况路由器层面的 DNS 缓存错误。刷新本机缓存没用把路由器也重启一遍就好了。还有一种情况是某些系统服务比如某些加速软件会劫持 DNS 查询通过修改系统网络配置或 hosts 注入实现这种需要检查网络代理设置以及排查 hosts 文件。判断是 DNS 问题还是网络问题有一个快捷技巧用 IP 访问目标服务。如果 IP 能访问、域名不能基本锁定 DNS。如果 IP 都不能访问就是链路或服务的问题DNS 只是躺枪。6.3 防火墙拦截的迷惑现场防火墙是最容易背黑锅的组件。有一次我部署一个内网服务客户端连不上但服务端已经确认监听正常。一路排查到服务端防火墙发现入站规则没放行对应端口。你在本机用netstat -ano看端口明明在监听但在另一台机器上telnet不通十有八九是防火墙。Windows 防火墙的操作重点是入站规则里要新建规则并选择端口之后填写 TCP/UDP 和具体端口号然后选择允许连接。这里有个坑如果你选择了允许安全连接但没配置对应的连接安全规则那就等于没放行这个选项要选允许连接才行。Linux 下常用firewall-cmdCentOS 系列或ufwUbuntu 系列管理防火墙。CentOS 用户容易踩的坑是改了firewall-cmd配置忘了--permanent参数重启后规则丢失。正确姿势是firewall-cmd --permanent --add-port8080/tcp然后firewall-cmd --reload。最后分享一个经验型判断如果远程访问不通而服务端本地访问正常先别急着看代码先在服务端本地测端口再在同网段机器测最后跨网段测这个由近及远的测试顺序能帮你在五分钟内把问题压缩到最小范围。7. 学习网络基础的一些心得体会学网络基础最容易犯的毛病是光看书不动手。我当年刚学 IP 地址和子网掩码的时候觉得公式会了就行了结果第一次真正配路由器的时候手忙脚乱把 DHCP 地址池和静态 IP 弄重叠整个办公室断网一个小时。从那以后我的原则就很明确每学一个概念都要在一个真实环境里验证一次。没有真实环境的话自己搭虚拟实验环境也行。电脑上装个虚拟机软件跑两台 Linux 虚拟机配置一个自定义的内部网络动手做 IP 分配、子网划分、路由配置这些实操比看十遍教程都管用。模拟器类的网络工具也可以用来练手搭一个家用网络的拓扑调整 IP 段和子网掩码观察设备之间通不通这个过程能帮你把理论真正内化。这期笔记只覆盖了网络基础的主干内容很多细节——比如路由协议、NAT 的多种模式、IPv6、HTTP/2 与 HTTP/3 的区别——都是可以继续深入的方向。我的建议是先用这期的内容把基础打牢下次遇到网络问题先按分层模型定位再用工具组合排查等这些熟练了后面的进阶知识学起来会轻松很多。