网络基础这个概念听起来像教科书第一章又干又长但真正干活的时候你会发现几乎所有网络问题最后都能归到基础概念上。我这些年带过不少新同事也帮朋友修过各种奇怪的网络故障发现大多数问题并不是什么高深技术而是IP、子网掩码、网关、DNS这几个基础概念没真正吃透。这篇就聊聊我对网络基础的理解适合刚入门的朋友也适合那些能上网但遇到问题不知道怎么定位的人。你不需要把协议栈倒背如流只要把下面这些环节弄明白日常工作和家里的网络问题基本都能应付。1. 先搞懂网络在解决什么问题学网络基础最怕一上来就背协议。TCP/IP、UDP、HTTP这些术语背一堆遇到实际问题照样懵。我的建议是先搞清楚网络到底在解决什么问题后面所有概念其实都是围绕这些问题的答案。两台电脑要通信必须同时解决三件事第一双方得约定一套共同的语言说话语法、用词规则得一致不然数据传过去对方也看不懂这就是协议第二得知道对方在哪里像寄快递一样要有地址这就是IP地址和MAC地址第三得有路把数据送过去直接拿网线连可以经过交换机、路由器也可以这就是组网和路由。网络基础里的一切东西本质上都在这三个框架里打转。你理解了这一点再看IP、子网掩码、网关、DNS会发现它们各管一段职责非常清晰。1.1 网络中最重要的三个基本要素先把协议、地址、路径这三个要素拆开看。协议就是通信的语言规则。好比中国人说中文法国人说法语网络设备之间也要说一种互相听得懂的语言。目前互联网上最通用的语言是TCP/IP协议族它不是一个单一协议而是从底层到应用层的一整套家族。HTTP跑在上面DNS跑在上面你打游戏用的UDP也跑在上面。如果协议不一致数据包就算到了对方门口对方也不知道你这段电信号想表达什么。地址解决的是身份问题。网络里其实存在两套地址IP地址和MAC地址。IP地址是逻辑地址用来在网络中定位一台主机可以理解成“收件人城市和街道”MAC地址是物理地址出厂时烧录在网卡里用来在同一局域网内唯一定位一台设备相当于“楼栋号和门牌号”。两者配合使用数据才能从源头一路送到具体那台机器上。很多新手分不清这两者后面我会讲到它们各自的用途。路径解决的是怎么把数据从A送到B。交换机负责在局域网内按MAC地址转发数据路由器负责在不同网段之间按IP地址选路。你可以这样记同一个局域网内用交换机跨网段必须走路由器。后面讲网关时你会更深刻地理解这句话。1.2 数据包是怎么一步步送到对方手中的我经常用一个寄快递的类比来讲数据包传输。你在电脑上打开一个网页浏览器生成一个HTTP请求这是应用层的内容。操作系统把这段内容交给TCP/UDP处理加上端口信息相当于在快递单上写上“这是给80端口服务的包裹”。接着IP层再套一层写上源IP和目的IP相当于写好发件地址和收件地址。最后网卡驱动把它封装成以太网帧加上源MAC和目的MAC这时候才真正变成能在网线上传输的电信号。每经过一台设备交换机会拆开看MAC地址决定从哪个端口送出去路由器会拆开看IP地址决定往哪条路转发。但负责装信的那层内容始终原封不动一层层往上剥直到到达目的地。这个一层包一层的结构就是常说的分层封装。我最早学习这部分时总在想为什么要搞这么复杂直接在数据上写上所有信息一股脑传过去不行吗答案是分层的核心价值在于解耦。每一层只需要关心自己负责的事不需要知道别的层怎么实现。底层网线换了上层应用不用改应用从网页换成邮件底层传输设备不用动。这就是网络基础里最经典也最值钱的设计思想。1.3 为什么分层设计这么重要打个比方一家公司发通知行政只负责把文件交到各部门部门再发到每个人每个人只需要看懂通知内容不需要关心文件是通过纸质还是邮件送来的。中间送文件的方式随便换不影响通知内容本身。网络协议栈同样如此。物理层只关心电信号能不能在线路上正常跑链路层只关心相邻设备之间的帧能不能送达网络层只关心源IP到目的IP的路由怎么选传输层只关心数据到达端口后和应用进程的对接应用层只操心业务数据本身。每一层都有清晰的接口上层调用下层的能力下层向上层屏蔽实现细节。这对排障的意义非常大。网络出问题时你可以一层一层检查先把物理层的网线、信号问题排除再看链路层能不能通再看网络层能不能到达逐层向上。很多工程师排查问题很厉害不是因为他们记得更多命令而是因为脑子里有清楚的层次模型知道该在哪一层停下去找原因。学习网络基础先把这个思维模式建立起来后面所有的技术点都只是往这个骨架上填充内容。2. 网络基础里的“门牌号”体系现在进入最实操的部分。IP地址、子网掩码、网关、DNS这四个概念我称之为网络里的“门牌号”体系。你家里上网、公司组网、服务器部署天天都在和它们打交道。这四样东西理解到位网络基础就算入了门。2.1 IP地址IPv4格式与私有地址IPv4地址由32位二进制组成为了人方便阅读每8位一组转成十进制用点分隔比如192.168.1.10。每一个0到255之间的数字对应8位二进制。32位地址总量约42亿个听起来很多但互联网设备早就超过这个数了所以才有IPv6。IPv4地址分网络位和主机位。网络位标识你在哪个网段主机位标识你在该网段中的哪台设备。以前按A类、B类、C类固定划分现在已经很少有人手算地址类了普遍用CIDR和子网掩码来表示。比如192.168.1.10/24这个/24就表示前24位是网络位从这一点立马能算出这个网段可用地址范围是192.168.1.0到192.168.1.255。还有一个概念必须记牢私有地址。文档里约定了几段地址只能在局域网内部使用不能在公网上传播包括10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。你去各家各户看路由器默认基本都是192.168.x.x公司内网则很多用10.x.x.x。私有地址之间可以互相通信但访问公网时需要由路由器执行NAT转换把私有地址翻译成公网地址。很多新手在公司内网看到自己的IP是10开头误以为这是公网地址其实它是典型的私有网段。2.2 子网掩码快速判断两台主机是否在同一网段子网掩码的作用非常直接告诉你IP地址里哪些位是网络位哪些位是主机位。子网掩码是255的连续段比如255.255.255.0表示前24位是网络位等价于/24。255.255.0.0等价于/16255.255.255.128等价于/25典型掩码表示法是要熟的。怎么判断两台主机是否在同一网段把IP地址和子网掩码转成二进制做按位与运算得到网络号再比较两台主机的网络号是否相同。举个例子A是192.168.1.10/24B是192.168.1.66/24它们前24位都是192.168.1网络号一样同在一个网段直接就可以通过交换机通信。如果B是192.168.2.66/24那么A和B的网络号分别是192.168.1.0和192.168.2.0不在同一网段就必须通过路由器转发。实际工作中我很少手算按位与有个速算方法子网掩码255对应的IP部分原样保留0对应的部分清零。255.255.255.0下192.168.1.10的网络号就是192.168.1.0255.255.255.128下就需要留意最后一段因为128对应二进制10000000网络位多了一位。遇到这种掩码时老老实实算一下二进制更稳妥。子网划分调错最容易栽在这里比如把/24改成/25后原本同一个广播域的设备会被割成两个网段互相ping不通问题现象非常隐蔽。2.3 网关不同网段互访必须经过的第一跳网关是基础概念里最容易被忽视、但出问题时影响最大的一个。简单说一台设备要访问不在自己网段内的目标数据包先发给网关由网关帮忙转发。网关通常是路由器或三层交换机的接口IP它自己必须属于当前网段。很多人配置静态IP时只填了IP和掩码漏了网关结果发现局域网能访问一上公网就失败。原因就是发往公网的数据包不知道交给谁没有默认路由。网关也被称为默认路由因为当路由表里找不到更精确的路径时所有数据包都会走这一个出口。判断网关配置是否有问题的简单方法是在电脑上ping网关地址。能通说明本机到路由器这一段没问题不通就要查网线、IP配置或路由器状态。再往外一层ping网关能通但ping公网IP不通说明问题出在路由器到运营商这段比如宽带欠费、拨号失败、路由表缺失。这个由内而外的排查顺序在日常工作中能快速分隔故障区域。记住这个口诀可能更直观先看自己再看网关最后看外部。2.4 DNS把域名翻译成IP的“电话簿”DNS的作用是把人类易记的域名翻译成机器能识别的IP地址。你输入一个网址系统需要先拿到对应的IP才能发起连接。这个过程靠DNS服务器完成。我在培训新人时常说网络里最容易“半通不通”的就是DNS。现象很典型能登录聊天软件但打不开网页或者某些网站能开某些网站不行。这是因为聊天软件走的是IP直连或专用通道不需要DNS解析而浏览器访问域名必须解析一旦DNS配置错误或服务器不可用网页自然打不开。日常常用的DNS服务器国内有114.114.114.114、223.5.5.5国外有8.8.8.8。设置成哪个视网络环境而定但公司内网通常要求使用内部DNS才能解析内部域名。这点要特别注意如果把电脑的DNS改成公网地址可能会导致内网的重要系统访问不了。排查DNS问题用nslookup命令很直接先看能不能解析目标域名再看返回的IP对不对逐层确认是本机缓存问题还是DNS服务器问题。3. 常用网络协议与排查命令实战基础概念了解之后就要接触真正干活的内容了。网络基础并不是只靠看书就能掌握的得学会用命令去验证、去观察。这一部分我挑最常用的协议和命令来说每一句都是实际操作中会被反复用到的。3.1 TCP 和 UDP一个打电话一个寄明信片TCP和UDP是传输层两个核心协议格局很像打电话和寄明信片。TCP是面向连接的协议。通信双方先通过三次握手建立连接然后按序传输数据接收方确认收到没收到就重发。整个过程有流量控制、拥塞控制、可靠传输这些机制。缺点是开销大、有延迟但保证数据不丢不乱。网页浏览、文件传输这类要求完整性的场景基本都跑在TCP上。UDP是面向无连接的协议。发数据前不需要握手发出去就不管了速度快、开销小但不保证送达也不保证顺序。拿它来传文件不靠谱但用来传实时视频、语音、游戏操作指令反而合适因为通话和游戏最怕的是卡顿等待偶尔丢一小段数据影响不大重新等一个迟到的包反而更灾难。实际观察两个协议差异最容易的方式是抓包。你打开一个网页时会看到一连串TCP的握手包、确认包打网络游戏或看视频直播时看到的则是大量UDP数据包。看得多了就会形成对协议的直观感知比死记硬背强太多。3.2 端口一台主机上的多个服务门牌IP地址解决了找到哪台主机的问题但一台主机上同时跑着网页服务、邮件服务、数据库服务数据该交给谁这就是端口的作用。端口号是16位数字范围0到65535常见服务有固定的默认端口。有个特别容易混淆的理解误区端口不是单独存在的它必须和IP地址绑定使用。一个完整的通信终点是IP加端口形如192.168.1.10:80。你可以把IP想象成小区的地址端口就是小区里的楼栋号只知道小区地址不告诉楼栋号快递小哥照样没法送到手里。日常必须记住一批常用端口HTTP是80HTTPS是443SSH远程登录是22远程桌面是3389MySQL是3306DNS查询是53。排障时经常要验证某个端口通不通比如检查服务器上的Web服务有没有启动直接尝试连它的80或443端口即可。Windows上用netstat -ano可以查看本机端口监听状态Linux上可以用ss -lntp。看到端口被占用、大量连接处于TIME_WAIT状态网络基础扎实的人立刻会有下一步排查方向而不是干瞪眼。3.3 ping、ipconfig、nslookup 这几个命令怎么读结果命令学得快不如会读结果。很多新人执行完ping看到Reply from就欢呼看到Request timed out就崩溃其实中间有很多细节值得看。ping的结果里time值表示往返延迟。局域网内延迟一般小于1ms跨运营商甚至出国则可能上百毫秒。如果time值忽高忽低说明链路存在抖动典型诱因是无线信号差、带宽跑满或线路质量问题。TTL字段也有含义它代表数据包还允许经过的路由器跳数。Windows系统默认TTL一般是128Linux是64你在ping结果里看到TTL为118大概能估算出经过了10个路由跳数。ipconfigLinux下用ifconfig或ip addr用来查本机IP、掩码、网关和DNS。这一步是任何排障的第一步先确认自己的“身份”对不对。如果IP是169.254开头说明DHCP没拿到地址网卡和交换机之间的链路多半有问题。nslookup用来做域名解析测试。比如nslookup www.example.com能看到DNS服务器和解析结果。如果域名解析超时可能是你配置的DNS服务器不可达如果解析出来的IP与预期不符要怀疑DNS缓存污染或配置了错误的DNS。这些输出信息组合在一起能帮你快速判断问题到底在应用层、还是下层网络链路。4. 实操现场从零排查一个“上不了网”的问题网络基础学得好不好拉到一个真实故障现场一验便知。下面我用一个很典型的场景来演示排障思路某台电脑突然上不了外网但聊天工具还能用局域网共享也正常。4.1 先分类再动手单机故障还是全网故障拿到故障第一件事不是立刻去电脑上敲命令而是先判断故障范围。问身边的人其他人的网络正常吗只有这一台电脑有问题还是整个办公室都不行如果只有单台电脑有问题重点查这台电脑的IP配置、DNS设置、网线连接、网卡状态。如果全网都不行重点查路由器、交换机、光猫和运营商链路。这个判断能帮你少走很多弯路。我见过有人抱着自己的电脑排查了一下午网卡驱动最后发现是整层楼的光纤断了。排障顺序应该是先整体后局部先外围后终端不能上来就钻到细枝末节里。以这个案例为例聊天工具正常但网页打不开第一反应就该怀疑DNS而不是物理链路。因为聊天软件通常走直连IP不受域名解析影响而浏览器必须解析域名才能访问。这已经相当于把故障分隔到了应用层和网络层范围明显缩小了。4.2 按物理层到应用层的顺序逐步缩小范围接下来按层次一步步验证。第一步检查物理层。看网线有没有松交换机端口指示灯亮不亮WiFi是否连接正常。如果无线信号很差先想办法靠近路由器或换网线测试物理层问题不用敲任何命令。第二步验证链路层。在命令行执行ipconfig /allWindows或ip addrLinux看本机有没有正常拿到IP地址。如果拿到的是169.254开头的IP说明DHCP过程失败无法和路由器正常通信常见原因包括网线问题、路由器DHCP服务异常、网卡驱动故障。如果拿到了192.168.x.x之类的正常地址继续往下。第三步验证网络层。先ping网关注册的地址不通说明本机到路由器链路异常通说明本地链路正常。再ping一个公网IP比如114.114.114.114能通说明网络层已经到公网问题在上层不通说明路由器到公网的链路有问题比如拨号掉线、运营商故障或路由表异常。第四步验证DNS。如果公网IP能ping通但域名解析不了执行nslookup看DNS响应情况。是解析超时还是返回错误分别对应不同的修复方案。第五步再看应用层。检查浏览器本身有没有问题清除缓存、换个浏览器试试或者检查是否配置了特殊的系统服务。很多“上不了网”的故障走到这一步就已经解决了。4.3 局域网里最容易踩的几个坑实际操作中一些高频问题反复出现我整理成了一份速查表方便你遇到类似情况时对照参考故障现象可能原因快速排查方法IP地址冲突提示网络上有重名两台设备被分配了相同IP在交换机关闭DHCP前先用arp -a查看冲突MAC再查对应设备能上QQ但打不开网页DNS配置错误或DNS服务器故障nslookup测试解析更换DNS为223.5.5.5验证访问内网服务时偶尔断断续续网线质量差或交换机端口不稳定看交换机端口是否有大量错误包更换网线或端口全网网速突然变慢交换机存在环路或广播风暴查看交换机CPU占用率检查是否存在成环线路新加的电脑获取不到IPDHCP地址池耗尽登录路由器检查租约数考虑缩小租约时间或扩展地址池这些坑的共同特点是不惊心动魄但影响范围广、排查时间长。记下来就能少吃很多亏。4.4 一次真实的排障记录新办公室网速突然变慢分享一个我印象很深的案例。有一次公司搬迁后新办公室网络经常从下午开始卡顿ping网关延迟忽高忽低丢包严重。一开始怀疑是宽带带宽不够但运营商实际测速又没问题问题就蹊跷了。后来我登录一台可网管交换机看端口统计发现某几个端口收到的广播包数量异常高CPU占用也高得离谱。顺着端口往下查发现保洁阿姨用一条普通网线把一个面板的进线和出线接到了同一个交换机上形成了环路。交换机的生成树协议没启用广播包在环路里无限转发直接把网络拖垮了。把那条线拔掉后全网立刻恢复。这件事让我对网络基础有了更深的体会很多高级别的故障根因恰恰是最基础的问题被忽视。如果当时不了解广播域、环路、生成树协议这些基本概念恐怕要在带宽和硬件上浪费很久时间。基础不牢后面排查架构层面的问题也会寸步难行。5. 网络基础的学习路线与新手建议概念和命令都过了一遍最后聊聊怎么把网络基础真正学进脑子里。我个人强烈反对纯看书的学习方式网络这东西必须动手哪怕是在虚拟机里折腾也比看十遍书有效。5.1 用虚拟机搭一套小型实验环境没有真实设备也能练出扎实基础。用虚拟机软件跑三台虚拟机就能模拟出很完整的场景一台当客户端一台当路由器一台当服务器。关键是给虚拟机添加两块网卡练习给路由器配置两个网段的IP并开启转发让两端互通。这个过程能帮助你直观理解网关、路由表和子网掩码的关系。做完基础打通后再尝试在Linux路由器上配置DHCP服务让客户端自动获取地址。这时你能看到DHCP的四次交互过程和IP租约的产生之前抽象的分配流程会变得清晰。比这更高阶一点可以抓取客户端请求IP的报文看DHCP Discover、Offer、Request、ACK分别长什么样。这套实验不需要额外硬件在任何一台普通电脑上都能完成非常适合刚入门的阶段。5.2 抓包工具值得早点接触我在基础阶段最大的遗憾就是太晚上手抓包工具。早点用Wireshark看一眼真实网络数据流很多概念会变得非常直观。比如DNS解析你可以在Wireshark里启动抓包然后在浏览器里访问一个网站。过滤DNS协议后能清楚看到客户端向DNS服务器发送的“这个问题请帮我解析”请求以及服务器返回的“这个域名对应这个IP”的应答。整个过程就是一组请求响应。TCP三次握手也一样抓一次网页访问就能看到SYN、SYN-ACK、ACK三个包的完整时序。抓包并不是专家的专属技能从基础阶段就用来验证概念记忆会扎实得多。你现在学的每个协议都可以抓到报文去验证。看得越多对“协议是一组有规则的信息交换”这句话体会越深。5.3 我的几点维护心得最后分享几条近十年踩坑攒下来的习惯。第一改配置前先把当前状态完整记下来。IP地址、掩码、网关、DNS、路由表一条不落拍照或复制到文本里。很多人改完配置发现上不了网却想不起之前是什么值只能靠猜恢复越搞越乱。网络配置讲究可回退改之前先留后路。第二一次只改变一个变量。测试时不要同时改IP又改DNS又改网关否则故障原因无法定位。先改一项验证一项确认没问题再动下一处。结合上面说的分层排查法这是最稳妥的节奏。第三文档意识要从小养成。网络环境是容易遗忘的隐性资产今天信手拈来的配置半年后可能完全不记得当初为什么这么设计。画一张简单的拓扑图把设备IP、网段划分、物理连接标注清楚后面维护能节省大量时间。第四遇到问题先告诉自己别慌。绝大多数故障都不是玄学按“物理层、链路层、网络层、传输层、应用层”的顺序逐步过一遍一定能找到病灶。网络基础的核心能力并不在于记住多少知识而在于遇到未知问题时有清晰的排查框架。把这套框架练成肌肉记忆你面对任何网络故障都不会再手足无措。网络的迷人之处在于它是一门实践学科刚看完这篇文章就可以在电脑上打开命令行先看看自己的IP和网关再ping一个公网地址试着解释每一个返回结果。把这样的小动作坚持下去用不了多久你就会发现所谓“网络基础”已经长成了自己的一部分。
阅读完成 · 觉得有帮助?