☰
计算机网络学习:网络层IP编址、子网划分与路由转发详解
2026/10/14 3:52:47 网站建设 项目流程

今天进入计算机网络学习第三天。

说实话,前几天把物理层和数据链路层过了一遍,脑子里记了不少概念,但始终觉得网络这东西是散的,形不成一个整体。直到今天把网络层的IP编址、子网划分和路由转发串起来以后,很多之前零碎的知识才突然通了。

DAY3的核心内容,就是网络层。这一层解决的是“数据如何从一个网络到达另一个网络”的问题。听起来好像没多复杂,但深入进去就会发现,这里面的门道一点都不少。尤其是子网划分,很多人在这上面卡住,其实不是难,是没找对理解的角度。

这篇文章就把我DAY3的笔记整理出来。我会把网络层要解决的问题、IP地址的结构、子网划分的实操计算、路由转发的工作原理,以及日常排查网络故障时最常用的思路,一次讲清楚。不管你是正在自学计算机网络的学生,还是刚入行的运维,这天的内容都值得认真过一遍。

1. 网络层在解决什么问题,先搞清楚这个再往下学

1.1 用发快递来理解寻址和路由

我一直觉得,学网络层最好的类比是发快递。假设你从北京寄一个包裹到广州,快递公司需要知道两件事:第一,收件人的地址是什么,这叫寻址;第二,包裹走哪条路线最合适,是走公路、铁路还是航空,途经哪些转运中心,这叫路由。网络层干的事情,本质上跟快递公司一模一样。

快递包裹上写着收件人地址,IP地址就是网络世界的“收件人地址”。IPv4地址是32位的,通常写成点分十进制的样子,比如192.168.1.10。数据中心的路由器就是那些“转运中心”,它们不关心包裹里的内容,只关心包裹要去哪里、下一站该送往哪个方向。这个“看一看地址,决定往哪送”的过程,就叫路由转发。

很多人学网络层,上来就背IP地址分类、背掩码,却不知道这些概念到底在说什么。其实你只要记住“网络层 = 寻址 + 路由”这两个词,后面学的东西都是围绕这两个词展开的。寻址是IP协议干的活,路由是路由器干的活。明白了这个框架,学起来就很顺了。

1.2 网络层和前两天学的知识是怎么衔接的

DAY1和DAY2的内容,主要停留在物理层和数据链路层。物理层关心的是比特怎么在介质上传输,数据链路层关心的是帧怎么在同一网络内的设备之间传输。交换机通过MAC地址转发数据,但交换机有个先天局限:它只认识同一个局域网里的设备。一旦数据要跨出这个局域网,交换机就无能为力了。

网络层就是在数据链路层之上,再套一层“逻辑寻址”机制。源主机的数据包先被封装成IP报文,交给路由器,路由器根据目的IP地址决定下一跳,最终把数据送到目的网络。到了目的网络之后,再由数据链路层通过MAC地址找具体的主机。所以各层各司其职:MAC地址是局域网内的门牌号,IP地址是跨网络通信的定位坐标。

理解这层关系很重要。经常有同学会问,有了MAC地址为什么还要IP地址?原因很简单:MAC地址是硬件自带的、平面的、没有层次结构的。如果全球网络都靠MAC寻址,那每台设备的转发表会膨胀到无法管理,数据包也无法在大规模网络中高效转发。IP地址则是分层次的,它把网络划分成一个个网段,路由设备只需要关心“去哪个网段该怎么走”,而不需要关心每一台设备在哪。这个“分层化”的思想,是网络设计最核心的智慧之一。

1.3 网络层的核心协议族小览

网络层不是一个单独协议在工作,它是一组协议协作的结果。最核心的当然就是IP协议(Internet Protocol),它负责定义地址格式和数据包封装。除此之外,还有两个重要的辅助协议:ARP(地址解析协议)负责把IP地址翻译成MAC地址,ICMP(Internet控制消息协议)负责传递网络层的错误报告和控制信息。平时我们用的ping命令,底层靠的就是ICMP。

另外还要提一下路由协议。路由器要决定数据往哪走,得靠一张路由表。路由表可以手工配置,这叫静态路由;也可以通过动态路由协议自动学习,常见的动态路由协议有RIP、OSPF、BGP等。DAY3这个阶段不要求你掌握所有细节,但至少要知道路由表这个概念。因为后面所有排障,几乎都要跟路由表打交道。

2. IP编址核心知识点,不懂这些后面寸步难行

2.1 IPv4地址的构成:网络位和主机位

IP地址由两部分组成:网络位和主机位。网络位标识这台设备属于哪个网络,主机位标识它在那个网络里的哪一台设备。这两部分的分界线,就是子网掩码。

掩码的写法有两种。老式的写法是十进制的,比如255.255.255.0;新式的写法是CIDR斜杠表示法,比如/24。两者表达的意思是一样的:连续多少个二进制位是1,从前到后数。255.255.255.0转化成二进制就是24个1,所以就是/24。

我强烈建议你早点习惯CIDR写法。因为它不仅短,而且在计算子网大小时非常方便。比如/24你就知道主机位有32-24=8位,这个子网里能用的IP地址数量是2的8次方减2,也就是254个。为什么要减2?因为每个网络里,主机位全为0的地址是网络地址,主机位全为1的地址是广播地址,这两个地址不能分配给设备使用。

2.2 快速掌握二进制换算的土办法

很多人一看到二进制就头大,其实IPv4地址的换算是很机械的。你只需要记住八个数字:128、64、32、16、8、4、2、1,这是8位二进制每一位对应的十进制值。任何一个0到255之间的十进制数,用这八个数字凑出来就行。

比如192怎么来的?128+64=192,所以192对应的二进制是11000000。168呢?128+32+8=168,所以是10101000。多练几次,你对192.168.1.10这种地址就能直接反应出它的二进制长什么样:11000000.10101000.00000001.00001010。

这个能力看起来很基础,但实际排查问题时很好用。比如你在配置子网掩码时,心里要清楚28位掩码意味着最后4位是主机位,2的4次方是16,减去2就是14个可用地址。如果你只记十进制255.255.255.240,那计算起来就慢很多。多练习“斜杠数字”和“可用地址数”之间的对应关系,网段规划的效率会高很多。

2.3 私有地址与NAT,内网设备的身份证

IP地址资源是有限的,IPv4总共也就40多亿个地址,不可能给每台设备都分配一个全球唯一的公网地址。所以网络设计里规定了几段私有地址,专门用于内网使用,这些地址在公网上不会出现。最常用的就是192.168.0.0/16、172.16.0.0/12和10.0.0.0/8。

家里的路由器给你手机、电脑分配的IP,通常都是192.168.x.x,这些就是私有地址。设备出网时,路由器的NAT(网络地址转换)功能会把内网的私有地址翻译成运营商分配的公网地址。这就好比一栋写字楼里几百人办公,但大楼对外只有一个收发室收件地址,所有员工的快递统一送到收发室,再由收发室根据工位分配到你手里。

学习的时候要注意区分私有地址和公网地址。如果你在内网配置一个10.0.0.10的地址,它只能在内网使用,拿到公网上没有意义。在机房里,不同网段的规划也经常用172开头的地址段,比如172.16.1.0/24这种,都是合法且合理的内网规划。

3. 子网划分实操方法,手把手算给你看

3.1 为什么要划分子网,一个大网段的麻烦

假设你管理一个中型企业网络,300台设备全都放在同一个网段里,比如192.168.1.0/24。这个网段最多只有254个可用地址,再加上广播、噪声、安全隔离等要求,问题马上就来了。所有设备都在同一个广播域里,一台设备发广播包,全网的设备都要处理,网络性能会明显下降;而且一旦某个区域发生故障,整个网络都会受影响。

划分子网的思路,就是把一个大网段切成多个小网段。每个小网段内部的广播不会跨网段传播,安全性和可管理性都能提升。比如把192.168.1.0/24切成4个/26的子网,分别给研发部、市场部、运维部和新品实验室使用,每个子网最多容纳62台设备,互不干扰,路由到哪一段也一目了然。

3.2 子网划分的计算过程和原理

子网划分的本质是借用主机位。主机位每借1位,能划分的子网数量就翻一倍,但每个子网能用的主机数就减少一半。这里要记住一个关键公式:可用主机数 = 2的(主机位数)次方 - 2。

举个例子。把192.168.1.0/24划分成4个子网。我们需要把主机位借走2位,因为2的2次方等于4。原来的/24就变成了/26。此时每个子网的主机位数是32-26=6位,可用主机数就是2的6次方减2,等于62。这4个子网的网络地址分别是192.168.1.0、192.168.1.64、192.168.1.128、192.168.1.192,每个子网的可用范围依次是.1到.62、.65到.126、.129到.190、.193到.254。

很多新手搞不清网络地址是怎么得出来的。其实很简单:每个子网的大小,就是2的剩余主机位数。这里剩余主机位6位,所以子网大小是64,也就是64个地址一块。第一个块从0开始,第二个块从64开始,第三个从128开始,第四个从192开始。每个块的起始地址就是该子网的网络地址,块的最后一个地址(.63、.127、.191、.255)就是广播地址。

3.3 反向计算:给需求反推掩码,这才是实战

实际工作中更多时候是反过来算:需求给了具体主机数,要你选一个合适的子网掩码。比如某会议室需要容纳50台终端设备,还要给未来预留一点余量。这时候你不能直接用/26,虽然62个可用地址刚好够50,但几乎没有余量。我一般会留至少20%的余量,所以优先考虑能容纳62台以上的网段。

如果要容纳62台设备,需要主机位至少6位,也就是/26;如果实际规划是50台,那6位主机位也算合理,但如果要容纳100台甚至更多,就要用/25了。/25的主机位是7位,可用地址数2的7次方减2,等于126,能够提供比较大的余量。这个“需求反推掩码”的能力,在机房规划、网络扩容时特别常用,值得刻意练熟。

3.4 在Linux和Windows上临时配置IP地址

学习阶段完全可以直接在电脑上动手操作。Windows下打开“网络连接”属性,选择IPv4协议,填入IP地址、掩码和网关即可;Linux下如果你用的是带NetworkManager的桌面环境,也可以通过图形界面操作。如果你是纯命令行环境,可以用下面这些命令快速配置:

Linux下用ip命令:

sudo ip addr add 192.168.1.10/24 dev eth0 sudo ip link set eth0 up

查看当前IP和路由:

ip addr show ip route show

Windows下查看和配置:

ipconfig /all netsh interface ip set address name="以太网" static 192.168.1.10 255.255.255.0 192.168.1.1

注意这些都是临时生效的,重启网络服务或重启机器后就没了。生产环境改配置请用配置文件或网络管理工具,同时还要确认改动不会影响现有业务的连通性。要知道网段一旦配错,最明显的结果就是ping不通网关、上不了外网,这种低级失误在排障时最费时间。

4. 路由转发怎么工作的,把“下一跳”这个概念弄明白

4.1 路由表:数据包出门之前的“查表决策”

主机要发送数据时,会先看目的IP地址跟自己是不是在同一个网段。如果在同一个网段,直接通过交换机用MAC地址通信就行;如果不在同一个网段,主机就会把数据包交给默认网关,由路由器去继续转发。所以每台主机上至少要有两项配置:自己的IP地址和默认网关的IP地址,否则跨网段通信就直接失败了。

路由器内部维护着一张路由表,里面记录的是“去往某某网段,下一跳是某某地址”。数据包到达路由器以后,路由器提取目的IP地址,在路由表里找到匹配的条目,把包交给对应的下一跳设备,一步一步往前送,直到到达目的网络。这个查表、决策、转发的动作,在每个路由器上都会发生一次,所以叫“逐跳转发”。

4.2 最长前缀匹配规则,查表时先看掩码长度

路由表可能同时存在多条匹配同一个目的地址的路径,比如一条写的是192.168.0.0/16,另一条写的是192.168.1.0/24。此时目的地址192.168.1.10到底该走哪条?规则很简单:谁掩码长,谁精确,就优先匹配谁,也就是“最长前缀匹配”。

这个特性在实际排障时特别有用。比如你配了一条默认路由0.0.0.0/0指向运营商网关,又配了一条192.168.1.0/24指向内网交换机,那么发往192.168.1.5的数据包就会优先走精确的那条内网路由,不会误打误撞发到外网去。我调试网络时经常先用ip route show table all查看完整路由表,再按“最长前缀匹配”的规则推断流量路径,定位问题往往比盲目清缓存快得多。

4.3 静态路由配置实例,动手配一次就懂

在Linux上增加静态路由非常简单。比如要让本机访问172.16.0.0/16这个网段,所有流量都经过192.168.1.254这个网关,命令是:

sudo ip route add 172.16.0.0/16 via 192.168.1.254

或者用传统的route命令:

sudo route add -net 172.16.0.0 netmask 255.255.255.0 gw 192.168.1.254

配置完成后,用ip route查看,你会看到对应的路由条目已经存在。如果你要模拟两个设备跨网段通信,通常的步骤是:A设备配网段1的IP和网关,B设备配网段2的IP和网关,中间加一台路由器同时配两个网段的IP,然后再在路由器上或主机上配置必要的静态路由,让两个网段可以互相访问。这种实验做完一遍,你对网关、路由表、下一跳的理解会扎实很多。

4.4 动态路由协议,网络规模变大后的选择

当网络规模变大,手动配置静态路由就不现实了。假设有50个网段、十几台路由器,任何一条链路状态变化,静态路由都得手动改,运维工作量极大。这时候就需要动态路由协议,让路由器之间自动交换网络信息、动态计算路由。

常见的动态路由协议中,RIP适合非常小的网络,OSPF适合中大型企业网和数据中心,BGP则用于互联网级的路由交换。DAY3阶段不需要深入配这几个协议,但我建议至少去看一下配置命令长什么样,理解它们能做什么。等你日后管理稍微大一点的网络,就不会被“路由表怎么才能自动更新”这种问题困住。

5. ARP和ICMP,日常排查离不开的两个工具协议

5.1 ARP协议:通过IP地址找到MAC地址

认为学完IP编址和路由就够了吗?还差一步。数据最终还是要在数据链路层通过MAC地址传输,但是你的IP数据包里只有目的IP地址,没有目的MAC地址。那么谁来负责把IP地址翻译成MAC地址?答案是ARP协议。

ARP的工作机制可以简单理解成在局域网里“喊一嗓子”:某设备想知道192.168.1.1的MAC地址,就在局域网里广播一个ARP请求:“192.168.1.1请告诉我你的MAC地址”。收到请求的IP地址对应的设备会单播回复:“我是192.168.1.1,我的MAC地址是xx:xx:xx:xx:xx:xx”。请求方收到后,把这条映射记录存进ARP缓存,下次再通信就不用喊了。

Windows和Linux下查看ARP缓存都很方便:

arp -a ip neigh show

删除某条缓存记录用arp -d <IP>。实战中有个经验:当两台设备明明配了同一个网段的IP,却突然互相ping不通时,很多时候是ARP缓存里有旧记录。把缓存刷掉,问题直接就就好了。这个坑我踩过好多次。

5.2 ICMP协议:ping和traceroute的作用原理

ICMP是网络层的“报信员”。当数据包在传输中出错,比如TTL超时、目的不可达,网络设备会通过ICMP向源地址回传错误信息。平时最常用的ping命令,底层就是发ICMP回显请求,对方收到后回一个ICMP回显应答。能ping通,至少说明源和目的之间的IP层基本是通的。

traceroute则利用ICMP报文和TTL字段来探测路径。每经过一个路由器TTL减1,当减到0时路由器就会回一个ICMP超时报文,于是我们就能知道路径上的每一跳IP。排查跨网段延迟高、某段丢包严重的问题,用traceroute能快速定位是哪一跳出了问题。

有一个细节要注意:某些网络设备出于安全策略会丢弃ICMP报文,所以ping不通不代表网络一定故障。真正严谨的排障思路,是结合TCP端口的连通性测试,比如用telnet或nmap去探测目标端口是否能连上,不能只盯着ping的结果。

6. 常见网络层故障排查实录

6.1 现象一:ping不通网关,先排查这几项

如果你配好静态IP之后,发现ping不通网关,不要慌。按照下面这个顺序一步步查,大多数问题都能定位清楚。第一步,ipconfig /all或ip addr show确认本机IP、掩码、网关填得对不对。第二步,ping 127.0.0.1检查本机协议栈是否正常。第三步,ping自己网卡的IP地址,检查网卡和驱动是否正常。第四步,ping网关地址,检验本网段连通性。

在机房实操时我遇到过一例:电脑IP配的是192.168.1.10/24,网关是192.168.1.1,但怎么ping都不通。查配置后发现掩码被误填成了255.255.255.252,可用主机只有两个,设备在逻辑上跟网关根本不在同一个网段,这就是典型的掩码错误。另外还要确认本机防火墙有没有拦截ICMP,以及交换机的端口是否做了MAC绑定或VLAN隔离,这些都可能让ping结果异常。

常见问题速查表:

表现可能原因处理方向
ping 127.0.0.1都不通协议栈异常或网卡未启用重置或启用网卡
ping 本机IP不通网卡IP配置错误或网卡故障检查网卡驱动和IP配置
ping 网关不通掩码、VLAN、物理链路、交换机端口问题重查配置、检查链路状态
ping 网关通,ping 外网IP不通缺默认路由或DNS异常检查路由表、DNS配置
IP地址冲突提示局域网内有设备使用了同一IP排查并更改一方IP地址

6.2 现象二:跨网段通信失败,重点查路由

同一VLAN内通信没问题,一旦跨网段就失败,90%的情况出在路由上。先用ip route show看看主机上有没有默认路由,再检查网关路由器是否知道目的网段的路由。如果中间路由器没有去往目的网段的条目,它会把数据包丢弃并可能向源地址回一个“网络不可达”的ICMP报文。

还有种情况是路由环路。数据包在两个路由器之间来回丢,跳数一直不减少,最终因TTL超时被丢弃。用traceroute能看到数据包在某一跳反复出现,这时就要检查路由表里有没有相互矛盾的静态路由配置。删除错误路由并补上正确的下一跳以后,网络才能恢复。这种问题在生产环境很隐蔽,我当年排查过一次,浪费了小半天,后来发现就是一条静态路由的下一跳写错了IP。

6.3 实战排查工具与思路分享

网络排障要用好工具,但更重要的是有清晰的思路。我的习惯是先分层。先看物理层有没有链路,交换机端口是up还是down;再看链路层能不能正常获取到ARP信息;再看网络层路由表、网关通不通。逐层递进,不会东一榔头西一棒子。

常用命令做个小总结:

ping 127.0.0.1 # 检查本机协议栈 ping <本机IP> # 检查本机网卡 ping <网关IP> # 检查本网段链路 ping <外网IP> # 检查路由与NAT traceroute <目标IP> # 检查路径逐跳状态 ip addr show # 查看所有接口地址 ip route show # 查看路由表 ip neigh show # 查看ARP缓存 netstat -rn # 查看路由表(Windows/Linux通用)

我个人实际用下来的感受是,DAY3这一天内容的信息量很大,但这些都是后面学传输层、应用层的基础。尤其是子网划分和路由表,这两位是你之后无数次调试、排查都会反复使用的核心工具。如果你觉得哪里卡住了,不用急着往后翻,多花点时间用GNS3或虚拟机搭几个小实验,亲手把两个网段打通一次,比单纯看十遍书都管用。等后面学到传输层的端口和连接机制时,很多今天建立起来的框架刚好能用上,那时候你会觉得整个知识体系慢慢长成了一整棵树。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询