网络模型
概念
网络模型是理解计算机网络的基础框架。所有网络协议都可以归入某一层,每层只负责特定功能,层与层之间通过接口通信。面试中主要考 OSI 七层模型和 TCP/IP 四层模型的对应关系。
OSI 七层 vs TCP/IP 四层
| OSI 七层 | TCP/IP 四层 | 职责 | 常见协议 |
|---|---|---|---|
| 应用层 | 应用层 | 为用户提供网络服务接口 | HTTP、HTTPS、FTP、SMTP、DNS、SSH |
| 表示层 | ↑ | 数据格式转换、加密解密、压缩 | SSL/TLS、JPEG、JSON |
| 会话层 | ↑ | 建立、管理、终止会话 | RPC、NetBIOS |
| 传输层 | 传输层 | 端到端的可靠传输 | TCP、UDP |
| 网络层 | 网际层 | 路由选择、逻辑寻址 | IP、ICMP、ARP |
| 数据链路层 | 网络接口层 | 帧传输、MAC 寻址、差错检测 | 以太网、Wi-Fi、PPP |
| 物理层 | ↑ | 比特流传输(电信号/光信号) | RJ45、光纤 |
实际使用中以 TCP/IP 四层模型为主,OSI 七层更多用于理论参考。面试中常考的是"说出每一层的职责和代表协议"。
数据封装与解封装
发送数据时,数据从上到下逐层封装:
应用层数据
↓ 加上 TCP/UDP 头 → 段(Segment)
↓ 加上 IP 头 → 包(Packet)
↓ 加上 MAC 头和尾 → 帧(Frame)
↓ 转为比特流 → 物理传输接收时反向解封装:每层剥掉自己的头部,把数据传给上一层。
每层关键概念
应用层
直接为用户的应用程序提供服务。HTTP 请求、DNS 查询、邮件发送都发生在这一层。
传输层
提供端到端的通信。核心问题是可靠性:
- TCP:面向连接、可靠传输、流量控制、拥塞控制
- UDP:无连接、不可靠、快
端口是传输层的概念,用于区分同一主机上的不同应用(HTTP 80、HTTPS 443、MySQL 3306)。
网际层(网络层)
负责将数据包从源主机路由到目标主机:
- IP 地址:逻辑地址,用于跨网络寻址
- 路由:决定数据包走哪条路径
- ICMP:网络诊断(ping 就是 ICMP Echo Request)
- ARP:将 IP 地址解析为 MAC 地址(严格来说跨越了网络层和数据链路层)
网络接口层(数据链路层 + 物理层)
负责在相邻节点之间传输数据帧:
- MAC 地址:物理地址,硬件唯一标识(48 位)
- 以太网帧:包含源 MAC、目标 MAC、数据和 CRC 校验
IP 地址基础
IPv4 vs IPv6
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位(如 192.168.1.1) | 128 位(如 2001:db8::1) |
| 地址数量 | ~43 亿 | 几乎无限 |
| 头部 | 可变长(20-60 字节) | 固定 40 字节 |
| NAT | 需要(地址不够) | 不需要 |
| 配置 | 手动或 DHCP | 支持自动配置(SLAAC) |
常见特殊地址
| 地址 | 用途 |
|---|---|
| 127.0.0.1 | 本机回环(localhost) |
| 0.0.0.0 | 监听所有网络接口 |
| 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 | 私有地址(局域网) |
| 255.255.255.255 | 广播地址 |
子网掩码与 CIDR
子网掩码用于区分 IP 地址中的网络部分和主机部分:
IP: 192.168.1.100
掩码: 255.255.255.0 (即 /24)
网络号: 192.168.1.0
主机号: 100
可用主机: 2^8 - 2 = 254(减去网络地址和广播地址)CIDR 表示法:192.168.1.0/24 = 前 24 位是网络号。
一次 HTTP 请求的网络全流程
面试经典题:从输入 URL 到页面显示发生了什么(网络部分)?
- DNS 解析 — 浏览器缓存 → OS 缓存 → 本地 DNS → 递归查询 → 获得 IP
- 建立 TCP 连接 — 三次握手(SYN → SYN+ACK → ACK)
- TLS 握手(HTTPS) — 协商密钥、验证证书
- 发送 HTTP 请求 — 请求行 + 头部 + 请求体
- 服务器处理 — 解析请求 → 业务逻辑 → 生成响应
- 返回 HTTP 响应 — 状态码 + 头部 + 响应体
- 浏览器渲染 — 解析 HTML → 构建 DOM → 加载 CSS/JS → 渲染
- 关闭连接 — 四次挥手(或 Keep-Alive 复用)
面试常问 & 怎么答
Q1: OSI 七层模型和 TCP/IP 四层模型的区别?
OSI 是理论模型,分七层;TCP/IP 是实际使用的模型,分四层。TCP/IP 把 OSI 的应用层、表示层、会话层合并为应用层,把数据链路层和物理层合并为网络接口层。面试中只要能说出每层的职责和代表协议即可。
Q2: TCP 和 UDP 分别在哪一层?HTTP 在哪一层?
TCP 和 UDP 在传输层,HTTP 在应用层。HTTP 基于 TCP(HTTP/3 基于 QUIC/UDP)。
Q3: 从输入 URL 到页面显示发生了什么?
DNS 解析域名获得 IP → TCP 三次握手建立连接 → TLS 握手(HTTPS)→ 发送 HTTP 请求 → 服务器处理并返回响应 → 浏览器解析 HTML 并渲染 → 四次挥手关闭连接(或 Keep-Alive 复用)。
Q4: ARP 协议的作用?
ARP 将 IP 地址解析为 MAC 地址。同一局域网内通信时,知道目标 IP 但需要知道目标 MAC 才能发送以太网帧。ARP 广播询问"谁是这个 IP?",目标主机回复自己的 MAC 地址。
看到什么就先想到这类
- 出现 OSI 七层、TCP/IP 四层、协议栈。
- 出现"从输入 URL 到页面显示"。
- 出现 IP 地址、子网掩码、CIDR。
- 出现 ARP、ICMP、ping。