00. 计算机网络基础(面试必会版)¶
计网面试最常见的翻车方式是:TCP 三次握手背得滚瓜烂熟,但 OSI 模型答不清、IP 地址分类说不出、ARP/ICMP/NAT 一问就卡。
这些"太基础不想看"的知识点,恰恰是面试第一个问题最容易出的地方——而且一旦答不好,后面再深的东西面试官都不会问了。
这一章建议按“先把地基打牢,再顺着高频问法展开,最后补难点和边界”的顺序阅读。
先把这一章的知识骨架搭起来¶
网络基础不是给 TCP 铺个前菜,它本身就是整套网络知识的地基。你至少要先把 分层、寻址、转发、局域网与广域网角色分工 理顺。应用层关心协议语义,传输层关心端到端通信,网络层关心跨网络寻址和转发,链路层关心同一链路上的帧传输。
当你理解了“数据一层层封装出去,再一层层解封装回来”,后面再看 IP、MAC、ARP、NAT、ICMP、子网划分时就不会碎。因为这些东西都不是孤立定义,而是在回答:包怎么找到下一跳、主机怎么找到对端、私网怎么出公网、网络出问题时怎样反馈。
基础网络题常常决定面试官是否继续深挖,所以这章必须先把地基打平。
第一部分:先把概念和主线讲清楚¶
进入问答前,先把最小前置知识补齐¶
网络基础题真正的地基,是先把“分层”和“寻址”两件事想清楚。应用层处理业务语义,传输层处理端到端传输,网络层处理跨网络寻址和转发,链路层处理同一条链路上的帧传输。
然后再理解两类地址:IP 地址负责跨网络定位主机,MAC 地址负责同一链路上的下一跳识别。ARP、ICMP、NAT、子网划分这些看似分散的知识点,其实都在补这张图:包怎么找到对端、私网怎么出公网、链路或路由出问题时怎么反馈。
1. OSI 七层模型 vs TCP/IP 四层模型¶
| OSI 七层 | TCP/IP 四层 | 功能 | 常见协议/设备 |
|---|---|---|---|
| 应用层 | 应用层 | 为应用提供网络服务 | HTTP, FTP, DNS, SMTP |
| 表示层 | ↑ | 数据格式转换、加密/解密 | SSL/TLS, JPEG, ASCII |
| 会话层 | ↑ | 会话管理、同步 | RPC, NetBIOS |
| 传输层 | 传输层 | 端到端的可靠/不可靠传输 | TCP, UDP |
| 网络层 | 网络层 | 路由和寻址 | IP, ICMP, ARP, OSPF |
| 数据链路层 | 网络接口层 | 帧传输、差错检测 | Ethernet, PPP, 交换机 |
| 物理层 | ↑ | 比特流传输 | 光纤、网线、集线器 |
面试怎么答:
OSI 是理论参考模型,实际工程用的是 TCP/IP 四层模型。面试里如果问"网络分几层",最好两个都提,然后说清楚映射关系。
常见追问:
Q:为什么要分层? A:分层是为了解耦——每一层只关心自己的职责,上层不需要知道下层的实现细节。这样可以独立演进、替换和调试。
Q:TCP/IP 模型把 OSI 的哪些层合并了? A:应用层合并了 OSI 的应用层、表示层和会话层;网络接口层合并了数据链路层和物理层。
2. IP 地址基础¶
2.1 IPv4 地址分类¶
| 类别 | 范围 | 默认子网掩码 | 用途 |
|---|---|---|---|
| A 类 | 1.0.0.0 ~ 126.255.255.255 | 255.0.0.0 (/8) | 大型网络 |
| B 类 | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 (/16) | 中型网络 |
| C 类 | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 (/24) | 小型网络 |
| D 类 | 224.0.0.0 ~ 239.255.255.255 | — | 组播 |
| E 类 | 240.0.0.0 ~ 255.255.255.255 | — | 保留/实验 |
2.2 私有地址范围¶
| 类别 | 私有地址范围 |
|---|---|
| A | 10.0.0.0 ~ 10.255.255.255 |
| B | 172.16.0.0 ~ 172.31.255.255 |
| C | 192.168.0.0 ~ 192.168.255.255 |
面试高分点: 127.0.0.0/8 是环回地址,不属于 A 类可用地址。0.0.0.0 表示"本网络"或"所有地址"。255.255.255.255 是受限广播地址。
2.3 子网掩码与 CIDR¶
- 子网掩码用于区分 IP 地址中的网络部分和主机部分
- CIDR(无类别域间路由)用
/n表示前缀长度,如192.168.1.0/24 - 子网划分的本质是从主机位借位给网络位
常见追问:
Q:192.168.1.0/24 能容纳多少个主机? A:2^8 - 2 = 254 个(减去网络地址和广播地址)。
Q:两个 IP 地址怎么判断是否在同一子网? A:分别和子网掩码做 AND 运算,结果相同就在同一子网。
3. ARP 协议¶
作用: 根据 IP 地址解析出对应的 MAC 地址(网络层 → 数据链路层的地址映射)。
工作流程:
- 主机 A 要发数据给同一子网的主机 B
- A 先查本地 ARP 缓存,有 B 的 MAC 就直接用
- 没有就广播 ARP 请求:"谁是 192.168.1.5?请告诉 192.168.1.1"
- B 收到后单播回复自己的 MAC 地址
- A 缓存这个映射,后续直接使用
常见追问:
Q:ARP 欺骗是什么? A:攻击者伪造 ARP 响应,把自己的 MAC 绑定到目标 IP 上,从而截获或篡改流量。防御手段包括静态 ARP 绑定、DAI(动态 ARP 检测)等。
Q:跨子网通信时 ARP 解析的是谁的 MAC? A:解析的是网关(路由器)的 MAC,不是目标主机的 MAC。因为跨子网需要先发给网关转发。
4. ICMP 协议¶
作用: 用于网络设备之间传递控制消息和错误报告。
常见应用:
ping:发送 ICMP Echo Request,收到 Echo Reply 说明网络可达traceroute:利用 TTL 递增和 ICMP Time Exceeded 消息,逐跳探测路径
常见追问:
Q:ping 用的是什么协议? A:ICMP(Internet Control Message Protocol),工作在网络层。
Q:为什么有时候 ping 不通但服务可以访问? A:可能是目标主机或中间防火墙禁止了 ICMP 报文,但 TCP/UDP 端口仍然开放。
5. NAT(网络地址转换)¶
作用: 将私有 IP 地址转换为公有 IP 地址,解决 IPv4 地址不够用的问题。
NAT 类型:
- 静态 NAT: 一对一映射,一个私有 IP 固定对应一个公有 IP
- 动态 NAT: 从公有 IP 池中动态分配
- NAPT(端口地址转换): 多个私有 IP 共享一个公有 IP,通过端口号区分(最常见)
常见追问:
Q:NAT 会带来什么问题? A:① 外部无法主动连接内部主机(需要端口映射或 UPnP);② 某些协议(如 FTP 主动模式)在 NAT 下会出问题;③ 增加了连接跟踪的开销。
Q:NAT 和代理有什么区别? A:NAT 工作在网络层,对应用透明;代理工作在应用层,需要应用配置。NAT 只改地址/端口,代理可以做内容审查、缓存等。
第二部分:围绕高频追问继续展开¶
6. 交换机、路由器、网关的区别¶
| 设备 | 工作层 | 功能 | 寻址依据 |
|---|---|---|---|
| 交换机 | 数据链路层 | 同一网络内帧转发 | MAC 地址 |
| 路由器 | 网络层 | 不同网络间数据包转发 | IP 地址 |
| 网关 | 可以在任何层 | 不同网络/协议之间的翻译 | 取决于类型 |
面试注意: 家用路由器通常集成了路由器 + 交换机 + NAT + DHCP 等多个功能,面试时说的"路由器"通常指纯三层设备。
7. 从输入 URL 到页面显示的完整链路(网络部分)¶
- DNS 解析: 浏览器缓存 → 系统缓存 → 本地 DNS → 递归/迭代查询 → 拿到 IP
- TCP 建连: 三次握手(如果是 HTTPS 还要 TLS 握手)
- HTTP 请求: 客户端发送请求报文(方法、URL、头部、Body)
- 服务端处理: Web 服务器/应用服务器处理请求
- HTTP 响应: 服务端返回状态码 + 响应体
- TCP 关连: 四次挥手
- 浏览器渲染: 解析 HTML/CSS/JS → 构建 DOM → 渲染
这道题的回答策略: 从上到下分层讲,每一层点到即止,等面试官追哪一层再展开。不要一上来就把所有细节全倒出来。
细看: TCP、UDP、HTTP、HTTPS / RPC、消息队列、DNS、CDN
8. MAC 地址和 IP 地址的区别¶
| 维度 | MAC 地址 | IP 地址 |
|---|---|---|
| 层次 | 数据链路层 | 网络层 |
| 长度 | 48 位(6 字节) | IPv4: 32 位 / IPv6: 128 位 |
| 分配方式 | 出厂烧录(理论上全球唯一) | 网络管理员分配或 DHCP |
| 作用范围 | 本地网络(局域网内) | 全局可路由 |
| 可变性 | 通常不变(但可以修改) | 可以变(DHCP、移动网络) |
面试高分点: 网络通信需要两种地址配合:IP 地址负责"找到目标在哪个网络",MAC 地址负责"在本地网络里找到具体设备"。跨网络时,IP 地址不变,MAC 地址逐跳改变。
9. IPv4 和 IPv6 的区别¶
| 维度 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位 |
| 地址表示 | 点分十进制(192.168.1.1) | 冒号分隔十六进制(2001:db8::1) |
| 地址空间 | 约 43 亿 | 约 3.4 × 10^38 |
| NAT | 广泛使用 | 理论上不需要 |
| 头部 | 可变长,复杂 | 固定 40 字节,更简洁 |
| 安全性 | IPSec 可选 | IPSec 内置 |
第三部分:把难点、边界和代价吃透¶
10. DHCP 工作流程¶
作用: 自动分配 IP 地址、子网掩码、网关、DNS 等网络配置。
流程(DORA):
- Discover: 客户端广播"谁能给我一个 IP?"
- Offer: DHCP 服务器回复"我这里有一个 IP 给你"
- Request: 客户端选择一个 Offer 并广播确认
- Acknowledge: 服务器确认分配
常见追问:
Q:DHCP 分配的 IP 是永久的吗? A:不是,有租约时间。到期后需要续租或重新获取。
Q:为什么 DHCP Discover 和 Request 都是广播? A:Discover 是因为客户端还不知道 DHCP 服务器在哪;Request 广播是为了通知其他 DHCP 服务器"我选了这个 Offer"。
11. 路由选择协议¶
静态路由 vs 动态路由:
- 静态路由:手动配置,适合小型网络
- 动态路由:路由器之间自动交换路由信息
常见动态路由协议:
| 协议 | 类型 | 特点 |
|---|---|---|
| RIP | 距离矢量 | 简单,最多 15 跳,收敛慢 |
| OSPF | 链路状态 | 基于 Dijkstra,收敛快,适合大型网络 |
| BGP | 路径矢量 | 互联网骨干使用,AS 间路由 |
12. TTL(Time To Live)¶
- IP 报文头部的字段,每经过一个路由器减 1
- 减到 0 时路由器丢弃该报文并发送 ICMP Time Exceeded
- 作用:防止报文在网络中无限循环
traceroute就是利用 TTL 递增来逐跳探测路径
13. 网络排障常用命令¶
| 命令 | 作用 |
|---|---|
ping |
测试网络可达性(ICMP) |
traceroute / tracert |
跟踪数据包路径 |
nslookup / dig |
DNS 查询 |
netstat / ss |
查看网络连接状态 |
tcpdump / Wireshark |
抓包分析 |
ifconfig / ip addr |
查看/配置网络接口 |
arp -a |
查看 ARP 缓存 |
curl |
测试 HTTP 请求 |