十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

IP地址、子网掩码、网关与DNS:从原理到排错全解

IP地址、子网掩码、网关与DNS:从原理到排错全解 刚接触计算机网络时IP地址、子网掩码、网关、DNS这几个词经常一起出现但真正把它们放进同一张网络拓扑里理解的人并不多。很多人能背出 A 类、B 类、C 类地址范围也能写出255.255.255.0可一旦遇到“为什么两台电脑 IP 一样却不在同一网段”“为什么 ping 不通网关但能 ping 通自己”“为什么能上微信却打不开网页”这类问题还是会卡住。这篇文章就围绕一条主线展开一台电脑从配置 IP 到访问一个网站中间到底经历了哪些网络判断每个判断由谁负责出错时应该看哪里。学完之后你可以自己解释本机的ipconfig输出可以手工完成一次子网划分可以按顺序排查“网络不通”的大部分常见原因。1. 先建立整体网络模型IP、掩码、网关、DNS 如何协同工作1.1 用寄快递理解四者的分工把网络通信想象成寄快递。IP 地址是收件人地址用来定位一台设备在网络中的位置。子网掩码是“哪一部分是小区、哪一部分是门牌号”的规则。网关是你所在小区的门卫室凡是寄往其他小区的包裹统一交给门卫转发。DNS是通讯录帮你把“百度官网”这种名字翻译成具体的收件地址。这套类比虽然简化但抓住了本质IP 地址解决“我在哪”子网掩码解决“这里的人是不是和我同小区”网关解决“出小区走哪个门”DNS 解决“名字换成地址”。四者不是孤立概念而是一条完整数据链路的不同环节。1.2 四者的准确技术定义从技术角度再精确一点IP 地址网络层地址用于标识一个网络接口。IPv4 地址是 32 位二进制数通常写成点分十进制例如192.168.1.10。子网掩码也是一个 32 位二进制数用来把 IP 地址分成“网络位”和“主机位”。网络位相同的设备认为彼此在同一广播域内。网关连接不同网络的设备接口地址。对主机来说默认网关是“发往其他网段的数据包下一跳地址”通常是一台路由器的接口 IP。DNS域名系统。作用是把www.example.com这样的域名解析成 IP 地址让应用层能够基于域名发起连接。1.3 一个数据包从本机到互联网的完整过程假设你在浏览器输入www.example.com按下回车后背后至少发生这些事浏览器先检查本地 DNS 缓存再检查操作系统 DNS 缓存。如果没有缓存操作系统把解析请求交给本地 DNS 服务器。DNS 服务器完成递归或迭代查询返回域名对应的 IP 地址。浏览器拿到 IP 地址后交给操作系统发起 TCP 连接。操作系统判断目标 IP 与本地 IP 是否在同一子网依据是 IP 与子网掩码做与运算。如果在同一子网直接查 ARP 获取目标 MAC 地址发送。如果不在同一子网数据包的目标 MAC 地址填网关的 MAC 地址交给网关转发。网关继续查路由表把数据包送往下一跳直到到达目标服务器。关键点在第 5 步判断“目标在不在同一个子网”不是只看 IP而是“本地 IP 和子网掩码做与运算”与“目标 IP 和同一个子网掩码做与运算”是否相等。这个运算决定数据包是直接送出去还是先交给网关。1.4 常见误区把 IP、掩码、网关、DNS 当成独立配置项一个非常普遍的误区是“我有 IP 地址有网关有 DNS网络就能通。”实际上它们解决的是不同阶段的问题。IP 和掩码负责接口配置和本地连通性网关负责跨网段路由DNS 负责域名解析。如果你的目标只是访问某个 IP 地址DNS 不参与如果你的两台设备在同一个子网网关不参与。这就是为什么排查网络问题时永远要先用目标明确再定位故障层。2. IP 地址与子网掩码为什么不能只看 IP还要看掩码2.1 IPv4 地址的结构与分类IPv4 地址由 32 位二进制组成为了方便记忆每 8 位转成一个十进制数中间用点隔开例如11000000.10101000.00000001.00001010写成192.168.1.10。传统分类方法把 IPv4 地址分成 A、B、C、D、E 五类。A 类前 8 位是网络位B 类前 16 位是网络位C 类前 24 位是网络位。对应默认掩码地址类首字节范围默认子网掩码适用规模A 类1 - 126255.0.0.0大型网络B 类128 - 191255.255.0.0中型网络C 类192 - 223255.255.255.0小型网络D 类224 - 239无组播E 类240 - 255无保留这个分类方法在早期网络中很重要但在实际工程中CIDR无类域间路由已经取代了严格分类。现在更常见的写法是192.168.1.0/24斜杠后面的数字表示子网掩码中连续 1 的位数。/24等于255.255.255.0/16等于255.255.0.0/8等于255.0.0.0。2.2 子网掩码的作用区分网络位和主机位子网掩码的作用不是“掩盖 IP”而是告诉主机32 位 IP 中前面多少位是网络位后面多少位是主机位。以192.168.1.10/24为例IP 二进制11000000 10101000 00000001 00001010掩码二进制11111111 11111111 11111111 00000000网络位是前 24 位192.168.1主机位是后 8 位10主机位全为 0 的地址192.168.1.0是网络地址用来表示这个子网本身主机位全为 1 的地址192.168.1.255是广播地址用来向本子网内所有主机发送数据。可分配的主机地址是192.168.1.1到192.168.1.254共 254 个。注意一台主机把网关地址、DNS 服务器地址配置成192.168.1.0或192.168.1.255都是错误做法因为这两个地址不是普通主机地址。2.3 用二进制与运算判断是否同一网段子网掩码的关键判断逻辑是“与运算”。IP 地址和子网掩码逐位做 AND1 AND 1 1其他情况为 0。结果就是网络地址。判断两台主机是否在同一子网时要使用同一个子网掩码分别与两台主机的 IP 做与运算主机 AIP192.168.1.10掩码255.255.255.0主机 BIP192.168.1.20掩码255.255.255.0主机 CIP192.168.2.10掩码255.255.255.0A 的网络地址是192.168.1.0B 的网络地址是192.168.1.0C 的网络地址是192.168.2.0。因此 A 和 B 在同一子网A 和 C 不在同一子网。如果掩码不是255.255.255.0例如/23掩码255.255.254.0那么192.168.1.10和192.168.2.10可能就在同一子网了。所以“同一网段”必须同时给定 IP 和掩码。只把 IP 放进同一个192.168.1.x并不能保证同网段。2.4 子网划分为什么要划怎么划子网划分的核心原因有两个节省地址空间、缩小广播域。一个 C 类网段192.168.1.0/24最多只有 254 个可用地址如果分给 5 个部门使用每个部门 30 台设备全放在一个网段里会产生大量广播流量也会让地址管理混乱。更合理的做法是把这个网段切成多个子网比如每个子网可容纳 30 台主机。子网划分就是在主机位里“借位”作为子网位。每借 1 位子网数量翻倍但每个子网可用主机数减半。例如把192.168.1.0/24划分成 4 个子网向主机位借 2 位掩码变成/26即255.255.255.192子网块大小为 64子网网络地址依次是192.168.1.0、192.168.1.64、192.168.1.128、192.168.1.192每个子网可用主机地址是 62 个因为网络地址和广播地址不可分配给主机参数记忆方法掩码CIDR子网掩码可用主机数借 1 位/25255.255.255.128126借 2 位/26255.255.255.19262借 3 位/27255.255.255.22430借 4 位/28255.255.255.24014借 5 位/29255.255.255.2486借 6 位/30255.255.255.25222.5 手动计算子网的完整示例假设你拿到网段192.168.10.0/24需要分成 6 个子网每个子网至少 20 台主机。计算步骤确定需要的主机位数。20 台主机需要至少 5 个主机位因为 2^5 - 2 30够用4 个主机位只有 14 个不够。32 位地址中主机位占 5 位网络前缀就是 32 - 5 27掩码255.255.255.224。子网块大小是 2^5 32。从192.168.10.0开始每 32 个地址一个子网192.168.10.0/27192.168.10.32/27192.168.10.64/27192.168.10.96/27192.168.10.128/27192.168.10.160/27192.168.10.192/27192.168.10.224/27从这些子网中取前 6 个使用每个子网可用地址范围是网络地址 1 到广播地址 -1。例如192.168.10.32/27的可用地址范围是192.168.10.33到192.168.10.62广播地址是192.168.10.63。这个计算过程在考试和实际规划中都会用到。日常工作中可以使用子网计算器但必须理解原理否则很容易在边界地址上犯错。2.6 为什么 127.0.0.1 不需要子网掩码解释127.0.0.1是回环地址表示本机自己。它不是用来连接外部网络的普通网段操作系统会特殊处理发往127.0.0.0/8的数据包根本不会发送到网卡外面。所以不要把它当成一个需要网关转发的目标地址。ping 127.0.0.1主要用于验证本机 TCP/IP 协议栈是否正常。3. 网关跨网段通信的出口3.1 网关的本质是路由器的接口地址网关不是一种独立的协议而是一个设备接口地址。对主机来说默认网关可以理解成“发往其他网段的默认下一跳”。在家庭网络中网关通常是光猫或路由器 LAN 口地址常见为192.168.1.1或192.168.0.1。在办公网络中网关可能是三层交换机的 VLAN 接口地址。主机配置网关时要求网关 IP 和主机 IP 必须在同一个子网内否则主机会认为网关不可达。3.2 同网段与不同网段通信的差异同网段通信主机直接通过 ARP 解析目标 IP 的 MAC 地址然后发送以太网帧不需要经过网关。跨网段通信时主机发现目标网络地址和自己不同就会把以太网帧的目的 MAC 地址填成网关 MAC 地址。数据包被送到网关后网关查找路由表再决定下一跳。这个“把 IP 包交给下一跳 MAC 地址”的过程是理解网络通信的关键。因此可以这样判断没有配置网关只能和同一子网内的设备通信。网关配置错误数据包会被送到错误的下一跳或直接被丢弃。网关地址不在本子网内主机通常会在配置时提示错误某些系统即使接受也无法通信。3.3 默认网关的配置与验证Windows 图形界面配置路径是网络适配器属性 - Internet 协议版本 4 (TCP/IPv4) - 属性填 IP、掩码、网关、DNS。命令行配置示例# Windows 下配置静态 IP 和网关 netsh interface ip set address name以太网 static 192.168.1.100 255.255.255.0 192.168.1.1 # 查看当前 IP 配置 ipconfig /all # 查看路由表 route printLinux 下使用 netplan 时配置文件通常是/etc/netplan/01-network-manager-all.yamlnetwork: version: 2 ethernets: eth0: addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 223.5.5.5 - 114.114.114.114配置完成后可以这样验证# 查看当前网关 ip route show default # 测试网关连通性 ping 192.168.1.13.4 网关配置错误的典型表现现象可能原因检查方式能 ping 通自己ping 不通其他电脑掩码或网关错误对比两台设备 IP 和掩码能 ping 通网关ping 不通外网网关上游路由、运营商线路或防火墙问题用tracert或traceroute看数据包在哪一跳丢失ping 网关一直请求超时网关设备故障、网线/网卡问题、网关地址错误更换接口重新配置网关网关配置后提示“默认网关不在同一 IP 地址子网内”网关 IP 与主机 IP 不在同一网段重新核对掩码和网关地址注意在很多学习环境中主机的 IP、网关、DNS 由 DHCP 自动下发手动配置静态地址前一定要先记录原有配置避免配置完成后无法恢复。4. DNS把域名翻译成 IP 地址的分布式系统4.1 DNS 解决什么问题互联网用户习惯记域名但网络传输只认 IP 地址。DNSDomain Name System就是负责把域名映射为 IP 地址的分布式服务。它被设计成分布式系统是因为全球域名数量巨大单台服务器不可能保存全部映射也无法承受全部查询请求。DNS 采用分层结构根域名服务器负责顶级域名顶级域名服务器负责.com、.cn等权威域名服务器负责具体域名。本地 DNS 服务器代替用户完成递归查询用户只需要配置一个可用的 DNS 服务器地址。4.2 一次域名解析的完整过程以www.example.com为例浏览器检查本地缓存发现没有结果。操作系统检查hosts文件和系统 DNS 缓存。系统把查询请求发送给本地 DNS 服务器例如192.168.1.1或运营商分配的地址。本地 DNS 服务器先查自己的缓存如果没有则从根服务器开始查.com服务器再查example.com权威服务器。权威服务器返回www.example.com对应的 A 记录本地 DNS 服务器把结果缓存并返回给用户电脑。操作系统拿到 IP 后发起连接。这个过程中每一级都可能缓存结果所以修改 DNS 记录后不会立刻全球生效。TTLTime To Live控制缓存时长TTL 越短生效越快但权威服务器的查询压力越大。4.3 基础 DNS 记录类型记录类型作用示例A把域名解析到 IPv4 地址www.example.com A 93.184.216.34AAAA把域名解析到 IPv6 地址www.example.com AAAA 2606:2800:220:1:...CNAME把域名别名指向另一个域名www.example.com CNAME example.comMX指定邮件服务器example.com MX 10 mail.example.comNS指定域名的权威 DNS 服务器example.com NS ns1.example.comTXT文本记录常用于验证和 SPFexample.com TXT vspf1 include:... -all在实际项目中如果需要给域名配置解析先确认域名托管平台支持哪些记录类型再按需求添加。A 记录用于直接指向服务器 IPCNAME 适合把子域名指向已有域名MX 是邮件服务必须配置的记录。4.4 本机 DNS 配置与查看Windows 下查看 DNSipconfig /all输出中DNS Servers一行显示本机配置的 DNS 地址。Windows 下清理 DNS 缓存ipconfig /flushdnsLinux/macOS 下查看 DNScat /etc/resolv.confmacOS 清理 DNS 缓存sudo dscacheutil -flushcache测试域名解析nslookup www.example.com # 指定 DNS 服务器查询 nslookup www.example.com 223.5.5.5dig命令在 Linux 和 macOS 下更常用dig www.example.com关注ANSWER SECTION中的A记录即可。如果返回NXDOMAIN说明域名不存在如果返回SERVER FAILED可能是权威服务器故障。4.5 DNS 常见问题与排查现象常见原因处理建议能 ping 通 IP打不开网页DNS 解析失败或 DNS 地址错误先nslookup域名检查 DNS 配置能打开网页但部分域名打不开域名解析记录未生效、DNS 缓存污染清缓存用公共 DNS 测试DNS 地址被自动改掉路由 DHCP 下发错误、设备中存在其他网络代理配置查看 DHCP 配置重置网络设置修改 DNS 后不生效hosts 文件有相关条目、系统缓存未更新检查 hosts 文件刷新 DNS 缓存在家庭或办公网络中自定义 DNS 可以提升一部分域名的解析速度但不要迷信“换一个 DNS 就能大幅提速”。解析速度的影响因素包括本地 DNS 服务器响应速度、缓存命中率和网络链路质量。自建 DNS 服务器适合企业内部域名解析但需要维护缓存、监控和稳定性不建议零基础用户直接在业务环境中部署。5. 在电脑上亲手验证这套网络体系5.1 Windows 环境看懂 ipconfig /all 输出打开命令提示符运行ipconfig /all重点看以下几项IPv4 地址本机实际地址。子网掩码和 IP 配合决定网段。默认网关跨网段出口。DNS Servers域名解析服务器。如果地址段是169.254.x.x说明 DHCP 获取失败系统使用了自动专用地址。此时网络通常不通需要检查网线、无线连接、DHCP 服务或手动配置静态地址。5.2 Linux/macOS 环境查看本机网络参数Linux ip addr ip route show default cat /etc/resolv.confmacOS ifconfig netstat -rn scutil --dns注意ip addr输出的inet行例如inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0这里的/24表示掩码是255.255.255.0。scope global说明这是全局可路由地址scope link则用于链路本地地址。5.3 用 ping 命令验证 IP、掩码、网关、DNS 是否正常按顺序执行以下测试# 1. 验证本机协议栈 ping 127.0.0.1 # 2. 验证本机网卡 IP 是否生效 ping 192.168.1.100 # 3. 验证同一子网内的其他设备 ping 192.168.1.20 # 4. 验证网关是否可达 ping 192.168.1.1 # 5. 验证外网 IP 连通性 ping 223.5.5.5 # 6. 验证 DNS 域名解析和连通性 ping www.example.com如果第 3 步失败问题在同网段内先查 ARP、防火墙、网线如果第 4 步失败问题在网关层如果第 4 步成功而第 5 步失败问题在路由器出口或运营商链路如果第 5 步成功而第 6 步失败问题大概率在 DNS。5.4 用 nslookup 验证 DNS 解析执行nslookup www.example.com正常结果会显示Name和Address。如果显示*** server cant find www.example.com: NXDOMAIN说明域名本身不存在或输入错误。如果显示connection timed out; no servers could be reached说明本机无法连接 DNS 服务器需要检查 DNS 配置和到 DNS 服务器的网络连通性。5.5 查看路由表理解“数据包下一步去哪”Windows 下route printLinux/macOS 下ip route show重点看默认路由default via 192.168.1.1 dev eth0如果默认路由缺失即使配置了 IP 和 DNS也无法访问外网。此时可以手动添加默认路由sudo ip route add default via 192.168.1.1 dev eth0这个操作适合临时验证生产环境应通过网络管理工具或配置文件持久化。6. 常见问题排查网络不通时按什么顺序查6.1 排查链路总览网络排查不能随机猜。建议按“从下往上、从近到远、先连通再解析”的顺序检查物理层网线、Wi-Fi 是否连接网卡是否禁用。检查本机 IP有没有拿到合法 IP是否出现169.254.x.x。检查同网段通信ping 同网段其他设备。检查网关ping 默认网关。检查外网 IPping 一个公网 IP。检查域名解析nslookup 一个域名。检查应用层浏览器、防火墙、代理设置。每一步都能快速缩小故障范围。实际工作中最常见的低效排查就是从第 6 步开始查结果发现网线没插好。6.2 典型问题速查表问题现象可能原因检查方式解决建议ipconfig显示169.254.x.xDHCP 获取失败查看 DHCP 服务、网卡连接状态重启 DHCP 客户端或配置静态 IP能 ping 同网段ping 不通网关网关地址错误、网关设备异常检查网关 IP 和路由表核对默认网关检查网关设备能 ping 外网 IP打不开网页DNS 配置错误nslookup测试域名更换 DNS清缓存能打开网页但某些软件无法联网软件代理设置或防火墙规则查看系统代理、程序日志检查代理配置放行应用端口IP 地址冲突网段内另一台设备使用了相同 IP查看 ARP 表检查 DHCP 排除范围改为 DHCP 分配或设置保留地址6.3 现象能上 QQ 不能开网页这是一个很经典的场景。QQ 类软件内置了服务器 IP不依赖域名解析浏览器必须先把域名解析成 IP。如果 DNS 配置错误或 DNS 缓存损坏就会出现“聊天软件正常、网页打不开”的现象。排查步骤# 1. 测试能否访问公网 IP ping 223.5.5.5 # 2. 测试域名解析 nslookup www.qq.com # 3. 刷新 DNS 缓存 ipconfig /flushdns # 4. 如果还不行临时换成公共 DNS 测试如果ping 223.5.5.5成功但nslookup失败基本可以确定是 DNS 问题。也可以检查hosts文件部分软件会写入异常条目。6.4 现象IP 地址冲突两个设备使用相同 IP 时系统会提示“检测到 IP 地址冲突”或在网络连接状态中显示“有限的访问权限”。这是因为 ARP 表中同一个 IP 对应了多个 MAC 地址数据包可能被发到错误的设备。处理方式在路由器 DHCP 设置中查看租约找到冲突设备。为重要设备配置 DHCP 保留让同一 MAC 地址每次都获得固定 IP。避免在 DHCP 池中手动配置静态 IP除非这些 IP 被排除在自动分配范围之外。6.5 现象子网掩码或网关配置错误常见的掩码错误是用255.255.255.0连接本应使用255.255.255.128的网络。比如192.168.1.10/25和192.168.1.130/25从字面上看都在192.168.1.x但只要把掩码改为/25它们的网络地址分别是192.168.1.0和192.168.1.128并不在同一子网。此时即使配了同一个网关也可能出现部分设备能通、部分设备不能通的怪现象。检查方式# Windows 显示当前子网掩码 ipconfig /all # 计算本机网络地址 # 可以用 PowerShell 快速验证PowerShell 验证网络地址$ip [System.Net.IPAddress]::Parse(192.168.1.130) $mask [System.Net.IPAddress]::Parse(255.255.255.128) $network [System.Net.IPAddress]::Parse(([System.Net.IPAddress]($ip.Address -band $mask.Address)).ToString()) $network输出192.168.1.128说明网络地址正确。实际项目中最好在规划阶段就输出一份子网划分表避免后续因手工计算错误导致配置散乱。6.6 最佳实践与学习建议网络基础不要只背概念要配合实际操作。零基础学习时建议准备一台路由器和两台电脑或者用虚拟机做实验把下面这些内容全部验证一遍手工配置静态 IP、掩码、网关、DNS。用ping测试同网段和跨网段通信。用nslookup和dig观察 DNS 解析结果。把一台设备改成错误掩码观察故障表现。在虚拟机中划分两个子网用路由器或三层交换机打通。练习环境可以随意改配置生产环境则要严格遵循变更流程。生产网络修改 IP、网关、DNS 之前至少要完成三件事备份原配置、确认变更窗口、准备回滚方案。尤其不能在远程维护时直接修改网关地址一旦配置错误远程连接会立即断开如果人不在现场恢复会非常困难。把本文中的排查顺序当作一个固定清单先看本机 IP再看同网段接着看网关然后看 DNS最后看应用层。这套顺序覆盖了大多数常见的网络故障也帮助你把零散的网络知识串成一条可以复用的工程链路。
返回列表