这是系列第三篇,也是整个计算机网络基础梳理里信息量最密集的一篇。前两篇我们把计算机网络的整体体系结构、物理层和数据链路层过了一遍,这次进入大部分人既熟悉又陌生的网络层、传输层和应用层——正好对应“浏览器里输入一个网址,按下回车,页面出现”的完整链路。不管你是期末复习对着三次握手头晕,还是准备考研408想搞懂滑动窗口和拥塞控制的计算大题,又或者是面试前被TCP的细节反复折腾,这篇都能帮你把这些知识点串成一条线。我尽量不堆术语,先用生活里的类比把原理讲透,再给可以直接用的排查命令和复习建议。
1. 网络层:数据包该怎么找路
网络层解决的核心问题,用一句话说就是“数据包怎么从源主机到达目的主机”。数据链路层管的是相邻两个节点之间的传输,比如同一根网线、同一个交换机下面的两台电脑;到了网络层,面对的是成千上万个网络互联起来的巨大系统,数据包可能要经过十几个路由器、跨越多张网络才能送到目的地。
这个过程很像快递物流。你在网上下单,快递公司给你的包裹贴上地址面单,这个面单上的地址就是IP地址。包裹从发货地的分拣中心出发,每到一个中转站(路由器),工作人员看一眼面单,决定下一站发往哪个分拣中心,最终送到你手里。整个运输过程中,包裹自己不需要认识路,它只需要知道“下一站去哪”,真正认路的是每个中转站的路由表。
这也是学习网络层最重要的思维转变:不要指望某台设备掌握全网的所有路径信息,只需要让每一跳都做出正确的局部决策即可。下面拆开讲。
1.1 IP地址、子网掩码与CIDR:先学会看懂门牌号
IP地址是网络层给每台设备分配的逻辑门牌号。IPv4地址长32位,为了让人能看懂,通常写成四个十进制数,比如192.168.1.10,每个数字对应8位二进制,取值范围是0到255。
早期IP地址讲究分类编址(Classful Addressing),把地址分成A、B、C、D、E五类。A类地址前8位是网络号,能容纳超大数量的主机,只分配给超大型机构;B类地址前16位是网络号,给中等规模网络;C类地址前24位是网络号,给小型网络。这种划分方式太死板,要么造成巨大的地址浪费,要么不够用。比如一个需要300台主机的单位,B类地址有65534个主机位,浪费严重;C类地址只有254个可用主机位,又不够用。
后来解决办法是CIDR(无类别域间路由,Classless Inter-Domain Routing),它彻底抛弃了固定分类,把IP地址写成“网络前缀/前缀长度”的形式。举一个最常用的例子:192.168.1.0/24。“/24”表示前24位是网络号,后8位是主机号。
子网掩码是配合CIDR使用的一套工具。它的作用就是把IP地址中网络号和主机号切分开。255.255.255.0的二进制是前24位全1、后8位全0,跟IP地址做“按位与”运算,就能得到网络地址。
我直接给一个最常考的计算例子。IP地址192.168.1.130,子网掩码255.255.255.128,问这个地址属于哪个子网、广播地址是多少、可用主机数量是多少。255.255.255.128的二进制是前25位全1,说明这是一个/25的子网。192.168.1.130的二进制最后8位是10000010,跟掩码的128(10000000)做与运算,得到10000000,也就是128,所以网络地址是192.168.1.128。广播地址把主机位全置1,即10111111,也就是191,所以广播地址是192.168.1.191。可用主机数是2的7次方减2,即126个。
实际做网络规划时,我强烈建议别用脑子硬算,先用在线子网计算器快速验证,再自己手动算两三遍,确保流程清楚。面试和考试里手算不能错,这个没有捷径。
1.2 路由表与路由协议:数据包的接力赛
每台路由器内部都维护着一张路由表,路由表的核心字段是“目的网络”和“下一跳地址”。当一个数据包到达路由器,路由器取出目的IP地址,在路由表里查找匹配的目的网络,然后按照对应的下一跳接口把数据包转发出去。如果找不到任何匹配项,就会走默认路由(default route),也就是通常配置的0.0.0.0/0。
路由表里经典的三条路由来源,我常跟朋友这么区分:
- 直连路由:路由器自己接口连着的网段,天生就知道,不用学。
- 静态路由:管理员手动敲命令添加的,适合网络拓扑稳定、规模小的场景。
- 动态路由:路由器之间通过路由协议自动学习到的,适合规模大、拓扑变化频繁的网络。
动态路由协议又分成两大类。内部网关协议(IGP)在同一个自治系统(AS,可以简单理解为一个大型企业或运营商自己管理的网络)内部使用,最常见的是RIP和OSPF。RIP基于距离向量算法,它只告诉邻居“我有多远”,以跳数作为度量值,最大有效跳数是15,所以只能用在很小的网络里。OSPF基于链路状态算法,每台路由器都会收集全网的链路状态信息,然后自己用SPF算法计算最短路径树,收敛速度快,适合中大型企业网。外部网关协议(BGP)用在自治系统与自治系统之间,互联网骨干网层面的路由全靠它,它关心的不是“怎么走最近”,而是“哪条路径经过了哪些AS,符不符合策略”。
这里有个特别多初学者搞混的点:路由协议和路由是两个概念。路由协议是路由器之间交换路由信息的规则,路由则是最终计算出的一张转发决策表,两者是“学习过程”和“学习成果”的关系。
1.3 ARP与ICMP:让数据包能找到下一站
数据包在网络层靠IP地址找路,但真正在物理链路上传输时,以太网帧里装的源地址和目的地址
