ARTICLE DETAIL

资讯详情

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

IP地址分类与网络地址计算:网络排障的核心基础

IP地址分类与网络地址计算:网络排障的核心基础 能看懂IP地址分类能随手算出网络地址你排查网络问题的速度能直接快一半。前段时间同事喊我帮忙说办公室打印机怎么都连不上——电脑显示网络正常WiFi也连着可就是找不到打印机。我过去看了一眼IP配置打印机是192.168.1.200电脑却是192.168.2.25子网掩码都是255.255.255.0问题当场就破案了这俩根本不在同一个网络里。这种“看着都正常实际走不到”的怪毛病十有八九都出在IP地址分类和网络地址计算这类基础概念上。这篇文章不绕弯子专门把IPv4地址的分类规则、网络地址的计算方法掰开揉碎讲清楚。不管你是刚学计算机网络的学生还是刚入行的小运维又或者是准备面试却被“/24”“/27”这种写法搞晕的选手这篇都适合你。我会从最基础的结构讲起再一步步教你把网络地址、广播地址、可用主机范围算明白最后附上我实际排查过程中踩过的坑。1. 为什么网络地址计算是你躲不开的必修课1.1 IP地址的“身份证”与“门牌号”先说个最简单的认知IPv4地址是一串32位的二进制数比如11000000 10101000 00000001 01100100。这串东西要是天天看二进制人类早疯了所以平时都写成点分十进制上面那串变成192.168.1.100。IP地址的本质就是互联网上每台设备的“门牌号”——想要给别人寄信总得知道对方住哪住在哪个片区。但这个门牌号是有内部结构的它分成两段网络号和主机号。网络号负责指出“你住在哪个小区”主机号负责指出“你是小区里的哪一栋哪一户”。比如192.168.1.100当子网掩码是255.255.255.0时192.168.1就是小区名100就是门牌号。两台设备要想直接通信最起码的条件是网络号相同就像两个人在同一个小区里串个门走路就行不在同一个小区就得找物业网关转达。那为什么需要显式地学会计算网络地址因为实际传播中别人告诉你的往往是“IP是192.168.1.100掩码是255.255.255.0”或者更简洁的192.168.1.100/24。你得自己判断这句话里的“小区”到底是哪个网段有哪些设备和自己同住一个小区。判断错了网络配置就是无效的排查问题时能绕死你。1.2 哪部分是网络号子网掩码说了算你可能已经发现单看IP本身看不出网络号占了几位。这必须由一个配角来决定——子网掩码Subnet Mask。子网掩码也是一串32位二进制数它的规则很简单连续的高位是1低位是0。转换成十进制后常见的掩码长这样掩码二进制形态只写前两段示意斜杠写法说明255.0.0.011111111.00000000.../88个1255.255.0.011111111.11111111.00000000.../1616个1255.255.255.011111111.11111111.11111111.00000000/2424个1255.255.255.12811111111.11111111.11111111.10000000/2525个1255.255.255.22411111111.11111111.11111111.11100000/2727个1子网掩码里有多少个连续的1就代表IP地址前多少位是网络号。剩下的位就是主机号。斜杠写法/24就是“前面24位是网络号”的简写。这一点是整个IP计算的核心中的核心后面所有内容都建立在这个规则之上。我见过不少新手记住了A、B、C类地址范围却不明白掩码的意义。结果看到192.168.1.100/25就默认它是C类地址、掩码是255.255.255.0然后按/24去算网络地址一算一个错。务必记住一旦出现斜杠数字就得按斜杠数字来不要被A/B/C类的默认掩码带偏。2. IP地址分类从A到E一张表说清楚2.1 从二进制首位看懂A、B、C三类早期的网络设计者们很聪明他们想让IP地址从开头就能看出这个网络有多大于是规定按二进制首位来分类。这个规则背下来不难难的是理解它为什么这么定。A类地址二进制最高位是0所以第一字节范围是00000000到01111111也就是十进制的0到127。默认掩码/8网络号占8位主机号占24位。A类理论上一共有126个可用的网络每个网络能容纳约1600万台主机2^24 - 2。这个规模的网络现实中几乎没有哪个组织真的用满主要是给超大型网络或运营商骨干网用的。B类地址二进制前两位是10所以第一字节范围是128到191。默认掩码/16网络号16位主机号16位。每个B类网络约能容纳6.5万台主机2^16 - 2。以前大学、大企业会用B类地址。C类地址二进制前三位是110所以第一字节范围是192到223。默认掩码/24网络号24位主机号8位。每个C类网络可用主机数是2^8 - 2 254台。这是中小型网络最常见的类别。只看十进制不好记我给你个土办法A类地址开头是1到126B类开头是128到191C类开头是192到223。A类最稀疏B类只占两段C类一大片。127这一段是特殊的回环地址后面细讲。记忆的时候可以顺口多念几遍“1-126、128-191、192-223”念熟了自然就记住了。2.2 D类、E类和那几段特殊地址A、B、C是给单播用的D类和E类则是另类用途。D类地址范围是224到239专门用于组播Multicast。组播的意思是“一群设备同时收同一份数据”比如视频会议、IPTV直播。普通主机配置IP时不允许把IP设成D类地址。E类地址范围是240到255属于保留地址研究实验用。公网上基本不会出现E类的合法路由你配置IP时也千万别拿E类地址来用很多设备直接不认。还有几段特殊地址需要特别记住127.0.0.0/8是回环地址其中127.0.0.1是“本机自己”。平时大家说“ping通127.0.0.1说明本机网卡协议栈正常”就是这个道理。0.0.0.0一般用来表示“任意地址”或“不知道自己的地址”在路由表、服务器监听中常出现。169.254.0.0/16是Windows系统自动获取IP失败后给自己临时配的地址APIPA如果你看到设备IP是169.254开头的基本可以断定它没从DHCP服务器拿到地址。另外还有私有地址这一说——10.0.0.0/8、172.16.0.0/12、192.168.0.0/16这三段是给局域网内部随便用的公网路由器不会转发这些私有地址的流量。家用路由器背后那串192.168.x.x就是这么来的。因为私有地址不能直接出公网所以家用路由器都做了地址转换NAT把内网私有地址映射成宽带运营商分配的公网地址再向外发。2.3 主类编址为什么不够用既然A/B/C类分得好好的为什么后来又搞出VLSM、CIDR这套东西核心原因只有一个浪费。A类一个网络能放1600多万台主机可实际哪个公司有这个需求B类6.5万台对大多数单位也是浪费。C类254台又常常不够用。于是大量地址被闲置但路由表里还得为每个网络记一条。到90年代人们实在忍不了了提出了无类编址CIDR——彻底抛弃“必须按8/16/24位划分网络号”的老规矩允许你按需求灵活定制比如/25、/26、/27也就是掩码不再是固定的那几种。这就是为什么今天你会经常看到192.168.1.0/25、10.1.1.0/28这种斜杠不是8/16/24的写法。随着无类编址普及A/B/C类只成了历史概念但面试、期末考试、老教材里还常讲所以分类的基础仍然不能丢。而网络地址的计算恰恰因为这种灵活性变得更重要了——不掌握计算方法你连一个子网里到底能塞几台设备都算不出来。3. 网络地址计算从原理到实战3.1 核心原理一次与运算网络地址的计算方法本质上只有一句话把IP地址和子网掩码都转成二进制然后做**按位与AND**运算结果就是网络地址。这里的“与”逻辑很简单两个数都为1时结果才是1只要有一个是0结果就是0。很多教材直接给你真值表但我想用一个生活化的类比帮大家记住——想象你房间里有一盏灯由墙上两个开关串联控制必须两个开关同时开着都为1灯才亮结果为1。只要任何一个开关关着灯就灭。关键来了为什么“与”运算能算出网络地址因为子网掩码的高位全是1低位全是0。IP地址与掩码做与运算掩码为1的位IP里是1还是0都原样保留这部分对应网络号。掩码为0的位无论IP里原本是什么运算结果全变成0这部分对应主机号。结果就是网络号被完整保留主机号被清零。这一步做完IP里的主机号全部归零剩下的“干净的网络号”就是网络地址。举个例子192.168.1.100和掩码255.255.255.0前24位被保留成192.168.1后8位被清零网络地址就是192.168.1.0。实际操作时不需要全程手写32位二进制我这里给一个推荐的计算流程把掩码转成斜杠写法确定网络号位数N。把IP地址写成二进制重点看第N位之后的主机号部分。网络地址 网络号原样保留主机号全部变成0。广播地址 网络号原样保留主机号全部变成1。可用地址范围 网络地址 1 到 广播地址 - 1。这个方法比“逐位列出2进制再按位与”要快得多因为实际上你只需关心主机号那个局部的运算。3.2 手把手算三个例子光说理论很难有感觉我们来实打实算三个例子从易到难。例1192.168.1.128/25这个例子对新手有迷惑性因为很多人一看到192.168.1就条件反射当成/24来算但斜杠25意味着第25位也属于网络号。掩码是255.255.255.128二进制最后一段是10000000。IP最后一个字节是128二进制是10000000。按位与后前1位被保留1后7位被清零0000000得到的最后一段还是10000000也就是128。网络地址是192.168.1.128。那广播地址呢主机号全变成1最后一个字节变成1111111也就是127所以广播地址是192.168.1.255。可用地址范围是192.168.1.129到192.168.1.254一共126台设备。注意192.168.1.128和192.168.1.255都不能配给主机一个是网络地址一个是广播地址。很多人会疑惑“192.168.1.128怎么就不能用了”——因为在一个/25的子网里它代表了“这个网段本身”的身份。例210.10.10.5/24掩码255.255.255.0前24位网络号。很明显网络地址就是10.10.10.0广播地址是10.10.10.255可用主机范围10.10.10.1到10.10.10.254共254台。这个例子没什么难度但正好用来说明当IP地址跨在多个网段时例如10.10.10.5和10.10.11.9在/24掩码下它们就不在同一网络因为第三段10和11不一样。例3172.16.5.75/27这个复杂一点。掩码255.255.255.224最后一段二进制是11100000说明网络号占了27位主机号只剩5位。IP的第四字节75二进制是01001011。注意前3位是010和掩码前3位111相与得到010后5位被清零变成01000000。这个二进制转换成十进制是64。所以网络地址是172.16.5.64。广播地址主机号5位全变1得到01011111也就是十进制95。可用范围是172.16.5.65到172.16.5.94能容纳30台设备2^5 - 2。这里可以引入一个更快的技巧——块大小。用256减去掩码的最后一个非零字节就得到这个子网的大小。比如224的块大小是256-22432所以/27的子网边界依次是0、32、64、96、128、160、192、224。172.16.5.75落在64到95这个区间里那网络地址自然就是64。笔试时用这个方法可以迅速验证手算结果特别省时间。3.3 广播地址、可用主机范围与容量再说说广播地址这个概念。广播地址是“发给这个网段所有主机”的特殊地址它的特征是网络号不变主机号全部是1。比如/24下面192.168.1.255就是广播地址。当ARP需要找目标主机时就向广播地址发起请求询问“192.168.1.50是谁请回答”。如果交换机收到发往广播地址的数据帧会把它转发给同一个局域网里的所有设备代价是占用带宽。所以在实际组网中一个子网不宜太大否则广播风暴能把网络拖垮——这也是大网段要划分成小网段的核心原因之一。可用主机数量的公式是2^(32 - 掩码位数) - 2。为什么要减2因为网络地址和广播地址都不能分配给主机。现实生活中常见的坑就是有人把广播地址配置给了设备导致整个网段通信混乱。我曾见过一台打印机的IP被设成192.168.1.255结果它自己以为自己能收到所有人的消息实际上其他设备根本没法正常获得ARP响应“网络时通时不通”的怪病就是这么来的。计算容量时要注意两个极端/24有254台/25有126台/26有62台/27有30台/28有14台/29有6台。/30只有2台可用但这两个地址恰好是点对点链路的标准配置既不浪费地址也没有多余广播负担。如果你要规划一个能容纳50台设备的小公网最省地址的是/2662台而不是/24254台。很多人习惯只记“C类就是254台”在CIDR时代这是远远不够的。4. 新手最容易踩的坑与排查实录4.1 常见坑之一配了IP却 ping 不通这类问题几乎每个运维新人都遇到过。设备IP配得“看起来很正确”但通信就是不通。我总结出下面几种高频原因按出现概率排序现象原因验证方法本机能ping通网关但ping不通另一台主机两台主机的掩码不一致导致误判不在同一网段逐台检查掩码统一掩码网关IP本身不在自己网段网关地址算错了包被发到错误网关手算网络地址确认网关在可用范围内IP是网络地址或广播地址把192.168.1.0或192.168.1.255配给了主机把IP换成一个可用主机地址DHCP分配的IP冲突子网规划太小可用地址不够两台设备拿到同一个IP查看ARP表、改用更大子网或调整分配范围目标通信正常但上网异常DNS配置有问题或出口需要网关/NAT配合分别测试ping网关和外网域名排查思路其实很线性先确认链路层通不通网线、WiFi再确认三层配置IP、掩码、网关最后再往上走。而三层配置里网络地址的计算是根根错了后面全白搭。还记得文章开头那个打印机案例吗打印机是192.168.1.200电脑是192.168.2.25掩码都是/24网络地址一个是192.168.1.0一个是192.168.2.0。虽然这俩IP肉眼看起来挺像但根本不在一块。解决办法很简单把电脑的IP改成192.168.1.26让它在192.168.1.0/24这个网段里打印机立刻就能访问了。4.2 常见坑之二子网掩码写错问题“团灭”如果一台设备的掩码写错害的不是它自己而是整个网段的通信。比如你打算规划192.168.1.0/25和192.168.1.128/25两个子网但有一台设备却错误地配成了/24掩码。在这种配置下它和两个子网里的设备都能“通信”因为它的广播域会扩大到整个192.168.1.0/24于是ARP请求会收到来自两个子网设备的响应造成IP混乱。还有一个非常典型的场景虚拟机的网络配置。很多人在VirtualBox里给虚拟机配网选择NAT或者桥接模式然后给虚拟机设置“固定IP”。如果你想让宿主机和虚拟机互相通信宿主机在192.168.56.0/24网段虚拟机却配成192.168.1.10/24那两者根本不是一个网段怎么都通不了。这种问题用网络地址计算过一遍5分钟就能定位根本不用瞎猜。配置Ubuntu或CentOS的固定IP时也是一样的逻辑。比如netplan配置文件里写addresses: 192.168.1.100/24这里的/24决定了网络地址是192.168.1.0网关就得填192.168.1.1这种同网段的地址。如果你填了192.168.1.100/24又把网关填成192.168.2.1系统一样会提示“网关不在子网内”。这时候不是你想不想迁就系统的问题而是路由表压根不知道该怎么走。4.3 常用子网速查表之前说了那么多公式和计算说到底是让人能快速查表。我整理了一张常用子网的速查表贴在手边非常管用斜杠写法子网掩码块大小可用主机数网络地址序列以C类为例/24255.255.255.0256254192.168.1.0, 192.168.2.0/25255.255.255.128128126192.168.1.0, 192.168.1.128/26255.255.255.1926462192.168.1.0, .64, .128, .192/27255.255.255.2243230192.168.1.0, .32, .64, .96.../28255.255.255.2401614192.168.1.0, .16, .32, .48.../29255.255.255.24886192.168.1.0, .8, .16, .24.../30255.255.255.25242192.168.1.0, .4, .8, .12...这张表的核心规律就一句话块大小 256 - 掩码的最后一段比如224对应32网络地址序列是块大小的整数倍。背不出公式的时候记住“先确定块大小再把IP对齐到块的边界”基本就不会错。用的过程中我还发现一个特别实用的习惯在纸上先把需要划分的网段写出来比如“办公楼A用192.168.10.0/25办公楼B用192.168.10.128/25”再核对每台设备的IP是否落在对应范围内。规划完再动手配置能省掉后续一大半的调试时间。不建议一边配设备一边临时想地址很容易出现两个子网重叠的情况。说实话IP地址分类和网络地址计算这些内容刚接触时确实显得枯燥但它是排查网络问题的基础中的基础。我自己带新人的时候都会让他们先把/24到/30这几种常用子网的网络地址、广播地址、可用范围各手算十遍。算完十遍之后那些看起来眼花缭乱的数字在你眼里就变成了清晰的网段边界。最后再分享一个小方法平时看任何IP地址都强迫自己在心里先算一遍它的网络地址是多少用不了几个星期这种计算就会变成条件反射在网络排障时你会感谢当年这个习惯。
返回列表