严格来说这不是一篇教程而是我今晚临时起意把脑子里那堆零散的网络知识重新捋了一遍之后的笔记。标题就叫“今天学了点网络知识记一下”。起因特别简单下午家里网突然卡成PPT视频会议开到一半直接掉线我重启了三遍路由器都没解决最后发现是光猫的光纤接头氧化松动重新插紧就好了。当时我就想天天在用网络可真到排查问题的时候我居然只会重启路由器这一招。这不行。于是晚上抽了两个小时把TCP/IP、DNS、HTTP这些概念从头过了一遍拿自己的电脑做了几个小实验顺手把家里的小网络拓扑也画了出来。这篇就是今天这份笔记的整理版尽量用大白话写争取让零基础的读者也能看懂我在折腾什么如果你已经有一定网络基础也可以直接跳到中间几节看看我踩过的坑和排查思路说不定能补上一些你平时忽略的细节。1. 从一次断网说起为什么突然想补网络知识1.1 那个让我卡了半天的故障先说说今天下午那次断网。当时我正在开线上会议突然画面开始模糊声音断断续续接着直接提示“网络连接已断开”。我下意识地跑到客厅看了一眼路由器指示灯全亮看起来一切正常。于是我开始执行那套“祖传操作”——拔电源、等十秒、插回去、等灯变绿。结果呢恢复了大约五分钟又开始卡。反复折腾了三次之后我决定换个思路。既然路由器指示灯正常、Wi-Fi也能连上说明问题大概率不在路由器本身。我顺手拔下光猫上的光纤接头看了一眼发现插头表面有点发黑像是氧化了。用纸巾蘸酒精擦了擦重新插紧网络立刻满血复活。这件事给了我一个很直接的刺激网络问题不是一个“重启”就能包治百病的东西。你得会判断问题出在哪一层是物理链路、是IP配置、是DNS解析还是应用本身。这种判断力靠的是对网络基础知识的理解而不是靠运气。1.2 网络知识其实是“分层的”以前我总觉得“网络协议”这种东西离自己很远直到这次排查才意识到它其实就是一套分层的规矩。你可以把数据从你的电脑发到服务器想象成寄快递。快递要能送到必须有几个环节你得先写好收件人地址应用层快递公司给你一个运单号传输层运输系统规划路线把它送到对应的城市网络层最后由当地的卡车把它拉到家门口链路层。这个比喻对应到网络里就是经典的TCP/IP四层模型应用层、传输层、网络层、链路层。每一层各司其职只关心自己的事。比如路由器主要工作在第三层网络层它负责看IP地址来转发数据交换机主要工作在第二层链路层它根据MAC地址来转发数据而浏览器、微信这类软件则属于应用层。为什么要分层因为分层之后出了问题才好在固定的位置排查。就像快递丢了你不会去怪生产包裹的工厂而是先查是运输环节丢了还是派送环节丢了。网络也是同样道理页面打不开你首先要判断是应用的问题比如服务器挂了、解析的问题DNS查不到、网络的问题链路不通还是设备的问题路由器坏了。这个判断能力就是我今天最大的收获。1.3 我给自己安排的入门路径晚上坐下来之后我没有一上来就去啃协议原文而是给自己划了一条主线先搞清楚最常用的几个概念再做实验再回头看理论。我的顺序是这样的先弄懂IP地址和子网掩码因为这是网络世界最基本的“门牌号”体系再理解DNS因为域名解析是上网的第一步然后看HTTP/HTTPS因为这是你在浏览器里天天打交道的东西最后学几个排查命令比如ping、tracert、nslookup用来验证前面的理论。走完这条线你会发现一条非常清晰的映射关系你电脑上输入的网址经过DNS变成IP通过IP找到主机再通过TCP建立连接最后用HTTP把网页内容拉回来。每一步的背后都有对应的协议在工作而每一个协议都能用一套命令去排查。2. 今天啃下的三块硬骨头IP、DNS与数据包2.1 IP地址和子网掩码门牌号和门牌范围先聊IP地址。IPv4地址是一个32位的数字为了方便记忆通常写成四段十进制比如192.168.1.100。这个数的每一个段落范围都在0到255之间加起来总共可以表示约42亿个地址。听起来很多但今天的互联网设备数量早已远超这个数所以后来又出了IPv6地址长度是128位数量级大到可以给地球上的每一粒沙子分配一个地址。IP地址又分公网地址和私有地址。公网地址是在互联网上真实可路由的相当于你在全世界都能被找到的固定门牌号而私有地址只在局域网内部使用比如家里路由器默认分配的192.168.x.x就是私有网段。私有地址不会直接出现在公网上因为公网路由器根本不知道怎么把数据送回这个地址。这里最关键的是子网掩码。有了IP地址还需要知道“哪些地址跟我属于同一个局域网”。比如我家的路由器默认网段是192.168.1.0/24斜杠后面的24表示子网掩码是255.255.255.0也就是说前24位是网络部分后面的8位是主机部分。这样一来从192.168.1.1到192.168.1.254共254个地址都属于同一局域网。我试着手动算了一下192.168.1.0/24这个网段里第一个地址192.168.1.0是网络地址用来标识这个网段本身最后一个192.168.1.255是广播地址用来向该网段所有设备发消息中间254个地址才能分配给设备。这个计算不复杂但搞明白之后再看路由器后台的“DHCP地址池”设置就完全不懵了。DHCP就是自动分配IP的协议你家每台设备一连上Wi-Fi路由器就会从地址池里挑一个空闲IP给它。2.2 DNS解析从网址到IP的翻译官IP地址再重要也没法要求你每次访问网站都输入一长串数字。所以就有了DNS域名系统它干的事就相当于手机里的通讯录你存了一个联系人叫“老王”拨电话时系统查通讯录自动翻译成老王的真实号码。浏览器输入example.comDNS服务器会翻译成对应的IP地址比如93.184.216.34。这个查询过程是递归的。你电脑先问本地路由器路由器问运营商的DNS服务器运营商服务器若没有缓存就一路查到根服务器、顶级域服务器最后找到权威服务器把IP返回给你。整套过程一般只需要几十毫秒但一旦某个环节出问题就会造成“能上微信但网页打不开”这种奇怪现象。我在电脑上试了一下nslookup www.baidu.com看到返回的IP之后又用ping www.baidu.com验证了一遍。这时候就有一个很重要的认知ping通不代表网站没问题因为ping走的是ICMP协议而网页走的是TCP/HTTP协议。很多服务器出于安全策略会禁掉ICMP响应这就导致一个常见场景——“能解析出IPping不通但浏览器又能正常打开”。所以判断连通性的时候不能只用一条命令下结论得分场景综合判断。2.3 数据包与TCP三次握手寄包裹和确认收货搞懂了地址和解析下一个问题是数据是具体怎么送出去的上网的过程本质上就是一堆数据包在网络中穿梭。你下载一个文件文件会被协议栈拆成许多小块每一块加上源IP、目标IP、序号等信息成为一个数据包。这些包到达目的地后会被重新组装成完整的文件。这个过程像极了寄快递一件大货分成几个小箱子每个箱子贴好地址和编号到站后再拼起来。TCP在传输层做的核心事情之一就是建立可靠的连接。它最出名的机制就是“三次握手”客户端先发送一个SYN包告诉服务器“我想建立连接”服务器收到后回一个SYN-ACK包表示“收到我也准备好了”客户端再回一个ACK包确认“知道了”。完成这三步双方才开始正式传数据。为什么必须是三次而不是两次因为要考虑一个经典场景客户端第一次发的SYN包因为网络拥塞迟迟没到客户端等超时后重发SYN这次连接成功两边愉快传完数据关闭连接。结果第一次那个SYN包这时候才姗姗来迟服务器收到后以为客户端想开新连接就回了SYN-ACK等客户端回复。如果只有两次握手服务器在收到第一次SYN时就已经分配了资源可客户端根本没想建立这个连接会造成资源浪费甚至安全隐患。有了第三次ACK服务器发现自己等不到这个ACK就不会为失效的SYN建立连接。这个设计精妙的地方在于它让连接双方都确认了“对方能说话我也能说话”避免半开连接。3. 抓包实测用一个晚上看清网络请求的全过程3.1 用浏览器开发者工具观察请求理论再丰满不动手验证一遍总觉得不踏实。我今晚最推荐的实验就是打开浏览器自带的开发者工具去看一个网页加载的全过程。我随便打开了一个资讯页面按下F12切到Network面板再刷新一次页面。这时候你能看到密密麻麻的请求列表HTML文档、CSS样式、JavaScript脚本、图片、字体……每一项都记录了请求的URL、状态码、协议类型、耗时、大小。我第一次看到这个列表的时候最大的感受是原来打开一个网页背后是几十上百个请求在并行、排队、加载缺一个可能就会影响页面显示。这里有两个状态码值得特别注意200表示成功返回304表示“未修改”也就是浏览器本地缓存还有效直接复用缓存就可以了。看到大量304不是坏事恰恰说明浏览器缓存配置得好省流量也省时间。如果看到404那就是资源在服务器上找不到看到500通常是服务器端出错了。学会看这个列表你就能快速分辨“网页打不开是前端问题还是后端问题”。3.2 理解HTTP与HTTPS的差异同样在开发者工具里你会发现大多数请求的协议都是https而不是http。这俩的差别简单说就是HTTP是明文传输像个没封口的信封沿途任何一个节点都能看到你写了什么HTTPS则是在HTTP外面套了一层TLS加密相当于把信封封好、加了防拆标记中途即使有人拿到也看不懂内容。加密还只是HTTPS的一部分它同时解决了“对方是不是他说的那个人”的身份验证问题。浏览器会去校验服务器的数字证书确认它是由受信任的CA机构签发的。你在浏览器地址栏看到的那把小锁就是“证书校验通过”的直观标志。但这里有个坑我得说一下HTTPS不保证“这个网站是安全的”它只保证“你和这个网站之间的传输过程是加密的”。如果网站本身是钓鱼站也有合法的证书浏览器上的锁依然是绿色的。所以不要因为看到小锁就放松警惕尤其是在输入账号密码之前还是要核对域名是不是你真正想访问的那个。3.3 本地DNS排查nslookup与ping的组合用法在Windows上DNS查询最常用的命令是nslookup在Linux和macOS上还可以用dig只是dig需要额外安装。我用一个组合实验来演示排查思路。假设有用户反馈“输入域名打不开网页”我按这个顺序来查nslookup www.example.com如果返回Non-existent domain说明纯解析失败如果返回了IP再看下一步ping www.example.com如果解析正常但ping超时说明要么目标服务器禁ping要么中间链路有问题需要进一步用tracert看路径如果ping通但浏览器依然打不开就得检查是不是TCP端口通常是443或80没通或者HTTPS证书有问题。有一次我遇到一个更隐蔽的情况nslookup返回的IP跟正常情况下不一样但命令看起来又没报错。后来查了半天才发现是路由器里的DNS设置被改成了一个第三方解析服务。这种情况虽然不常见但提醒了我一个经验——排查DNS问题时不光要看能不能解析还要看解析结果是否合理、是否符合预期。4. 家庭组网实战路由器、交换机与Wi-Fi频段4.1 光猫、路由器、交换机的分工今天搞明白的另一个大事是分清家里那几个盒子到底各干什么活。过去我以为光猫就是“放大网络的”路由器就是“发射Wi-Fi的”至于交换机很多人家里根本没有。直到我理清了数据流才彻底想通。光猫全称是“光调制解调器”它的主要任务是把光纤里的光信号转换成电信号你可以把它理解成光信号和电信号之间的“翻译官”。运营商通常会把入户光缆接到这里再由它提供一个出口接路由器。需要注意的是很多光猫其实也自带Wi-Fi和路由功能但性能往往一般所以很多人会把它设置成“桥接模式”让它只背书光转换的职责把路由和拨号交给后面的独立路由器。路由器则负责两件大事NAT和DHCP。NAT让全家几十台设备共用同一个公网IP出去上网DHCP负责自动给每台设备分配内网IP。它同时提供无线信号把家里所有无线设备汇聚成一个局域网。交换机就简单了它在同一个局域网内部扩展接口和带宽。比如书房只有一根网线但台式机、打印机、树莓派都要插网线那就加一个小型交换机一根进线分成多根出线。我个人的建议是如果家里只有五六台设备普通路由器自带的几个LAN口完全够用没必要专门加交换机但如果你是搞智能家居或者装修时只预埋了一两根网线那交换机几乎就是必需品。4.2 2.4G与5G Wi-Fi怎么选很多路由器默认会把Wi-Fi拆成两个信号一个叫”xxx_2.4G“一个叫”xxx_5G“。这两个频段的差异几乎决定你家各处网速的好坏。我用一个表格来总结它们的区别对比项2.4G频段5G频段频率2.4GHz5GHz信号覆盖好穿墙能力强差穿墙容易衰减干扰程度高邻居路由器、蓝牙、微波炉都干扰它低信道干净最高速率相对较低高适合大流量场景典型场景隔墙、远距离连接同房间高清视频、下载、游戏实操原则很简单在路由器同一房间优先连5G隔着墙或者隔了两道墙老老实实连2.4G。很多用户抱怨“5G信号满格但网速很慢”实际上多半是信号压根没覆盖到位手机在满格但速率低的状态下反复重连。用手机自带的速度测试软件分房间测一遍你就能摸清自己家的信号分布。如果某个位置两个频段都弱那就不是切换频段能解决的得考虑调整路由器摆放位置或者加Mesh节点了。4.3 端口转发与NAT为什么外网访问不了家里设备今天还专门研究了一个困扰我很久的问题为什么在公司想访问家里的NAS通常连不上根源就是NAT。家里所有设备共用一个公网IP外部设备请求到这个公网IP时路由器不知道应该把数据发给哪台内网设备于是默认拒绝了。这就好比快递员把包裹送到小区门口但保安亭不知道楼栋和房号就只能拒收。解决办法是端口转发。比如你家里NAS的IP是192.168.1.50月盘服务端口是5000你可以在路由器后台设置一条规则把公网IP的5000端口收到的数据全部转发给192.168.1.50的5000端口。这样外部设备访问“公网IP:5000”就能找到NAS了。不过我要给一个非常强烈的建议不要随便开启端口转发。每开一个端口就相当于把家里的一扇门露在公网上一旦服务程序有漏洞就可能被扫描到并利用。如果你是纯新手只是想远程访问一下自己家设备更稳妥的方案是利用运营商分配的公网IP结合DDNS或者用支持内网穿透的专业工具不要自己盲目改路由器防火墙。5. 网络故障排查几个常用命令与判断思路5.1 ping不通问题出在哪一层学会分层之后排查网络故障就变得很有秩序了。我的习惯是自下而上先证明本机没问题再看局域网最后看外网。第一层测试本机网络协议栈ping 127.0.0.1这是回环地址根本不会走到网卡外。如果这条都不通说明电脑的TCP/IP协议栈损坏概率极小但存在通常重装网卡驱动能解决。第二层测试局域网连通性ping 192.168.1.1这里换成你自己路由器的网关地址。如果不通问题就在本机到路由器之间检查网线、Wi-Fi连接、IP是否没有自动获取成功。我遇到过一种情况是网线水晶头接触不良电脑显示“正在识别”这时候ipconfig一看IP是169.254.x.x说明DHCP分配失败基本可以锁定物理层问题。第三层测试互联网出口ping 223.5.5.5这是阿里云公共DNS的IP用IP地址测是为了跳过DNS解析环节。如果不通说明要么运营商线路出问题要么光猫到路由器之间有问题。第四层测试域名解析ping www.baidu.com这一步就把DNS解析因素加进来了。如果上一步通、这一步不通基本可以断定是DNS的问题。5.2 tracert定位链路tracertWindows/tracerouteLinux、macOS是排查“中间链路丢包”的利器。它会向目标地址发送一串逐跳递增TTL的数据包每一跳都返回路径信息让你看到数据包从你家路由器出发经过运营商节点最终到达目标服务器经过的每一步。我实际跑过一次tracert www.example.com输出大概是这样1 1ms 192.168.1.1 2 5ms 100.64.x.x 3 12ms 61.139.x.x 4 * * 请求超时 5 20ms 202.97.x.x ...如果中间某几跳显示*不要慌很多路由器出于安全策略会丢弃TTL超时的数据包这并不代表链路断了。关键要看最后一跳通不通。如果目标IP能到但网页慢就要看中间每一跳的延迟是否异常飙高尤其是连续几跳都在100ms以上那基本可以判断有拥塞或绕路。5.3 常见问题速查表把今天学到的东西整理成一个速查表下次遇到问题直接对着看现象可能原因排查方向所有设备都断网光猫或运营商线路故障查看光猫指示灯检查光纤接头联系运营商只有一台设备断网Wi-Fi密码错误、IP冲突、网卡故障重新连接Wi-Fiipconfig /release和ipconfig /renew能发微信网页打不开DNS解析异常nslookup检查解析更换DNS为223.5.5.5下载慢但网页正常单线程下载限速、服务器限速多线程工具测试换节点测试5G信号满格但网速慢信号强度虚高实际信噪比差靠近路由器测试换2.4G对比外网无法访问家中设备NAT/端口转发未配置检查路由器端口转发规则确认服务端口排查网络问题最怕的就是没有章法地乱试。我自己吃过不少亏最后总结出的经验就一句先确定是“这单个设备的问题”还是“整个网络的问题”再确定是“解析的问题”还是“链路的问题”。按这个顺序来绝大多数故障都不会绕太远。今天的笔记就记到这里。我这个把月网线插拔、重启路由器的老毛病终于被一套正经的排查思路换掉了。网络这东西确实是越学越有味道——那些看似玄乎的卡顿、掉线、慢加载背后全是可解释、可定位、可解决的逻辑链条剩下没消化完的IPv6、VLAN和动态路由协议就留到下次再记了。