计算机网络¶
一、网络体系结构¶
1.1 OSI 七层模型¶
| 层次 | 功能 | 协议/设备 | 数据单元 |
|---|---|---|---|
| 7 应用层 | 网络应用 | HTTP、FTP、SMTP、DNS | 报文 |
| 6 表示层 | 数据格式转换、加密 | SSL/TLS、JPEG | 报文 |
| 5 会话层 | 会话管理与同步 | NetBIOS、RPC | 报文 |
| 4 传输层 | 端到端通信 | TCP、UDP | 段 |
| 3 网络层 | 路由与转发 | IP、ICMP、ARP、OSPF | 包 |
| 2 数据链路层 | 帧传输、差错控制 | 交换机、以太网、PPP | 帧 |
| 1 物理层 | 比特流传输 | 集线器、中继器、网线 | 比特 |
1.2 TCP/IP 四层模型¶
应用层(HTTP、HTTPS、DNS、FTP、SMTP)
↓
传输层(TCP — 可靠连接 / UDP — 快速无连接)
↓
网络层(IP、ICMP、IGMP、路由协议)
↓
网络接口层(以太网、WiFi、ARP)
1.3 数据封装过程¶
二、物理层与数据链路层¶
2.1 物理层¶
- 任务:在传输介质上传输原始比特流
- 传输介质:双绞线、同轴电缆、光纤、无线
- 编码方式:NRZ、曼彻斯特编码、4B/5B
2.2 数据链路层¶
功能:封装成帧、透明传输、差错检测、流量控制
差错检测: - CRC(循环冗余校验):通过多项式除法生成校验码 - 校验和:简单累加求和 - 奇偶校验:检测奇数位错误
流量控制: - 停止-等待协议:发送一帧等待确认 - 滑动窗口协议:连续发送多帧,提高效率
MAC 地址:48 位物理地址,每个网络接口唯一标识。
三、网络层¶
3.1 IP 协议¶
IP 协议提供无连接、不可靠的数据报传输服务。
IPv4 地址:32 位,通常用点分十进制表示。
IP 地址分类: | 类别 | 范围 | 默认子网掩码 | 用途 | |------|------|-------------|------| | A 类 | 1.0.0.0 ~ 126.255.255.255 | 255.0.0.0 | 大型网络 | | B 类 | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 | 中型网络 | | C 类 | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 | 小型网络 | | D 类 | 224.0.0.0 ~ 239.255.255.255 | — | 组播 | | E 类 | 240.0.0.0 ~ 255.255.255.255 | — | 保留 |
特殊地址: - 127.0.0.1:本地回环地址 - 255.255.255.255:有限广播地址 - 私有地址:10.x.x.x、172.16~31.x.x、192.168.x.x
3.2 子网划分与 CIDR¶
通过借用主机位作为子网位,将网络划分为多个子网。
CIDR(无类域间路由) 表示法:IP 地址/前缀长度,如 192.168.1.0/24
3.3 ARP 协议¶
将 IP 地址解析为 MAC 地址。发送 ARP 广播请求,目标主机单播回复。
3.4 ICMP 协议¶
用于报告网络错误和诊断信息。典型应用: - Ping:发送 ICMP Echo 请求,检测网络连通性 - Traceroute:利用 TTL 超时报文追踪路由路径
3.5 路由协议¶
| 协议 | 类型 | 算法 | 描述 |
|---|---|---|---|
| RIP | 距离向量 | Bellman-Ford | 跳数度量,最大15跳 |
| OSPF | 链路状态 | Dijkstra | 计算最短路径,收敛快 |
| BGP | 路径向量 | 策略路由 | 自治系统间路由 |
四、传输层¶
4.1 TCP vs UDP¶
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 可靠传输(确认重传) | 不可靠,尽力而为 |
| 有序性 | 保证数据按序到达 | 不保证有序 |
| 流量控制 | 滑动窗口机制 | 无 |
| 拥塞控制 | 慢开始、拥塞避免、快重传 | 无 |
| 速度 | 较慢(开销大) | 快速 |
| 首部长度 | 20~60 字节 | 8 字节 |
| 适用场景 | 网页、文件传输、邮件 | 视频直播、在线游戏、DNS |
4.2 TCP 三次握手¶
Client Server
| |
|---- SYN (seq=x) ------------>| 第一次:客户端请求建立连接
| |
|<--- SYN+ACK (seq=y, ack=x+1)-| 第二次:服务器同意连接
| |
|---- ACK (seq=x+1, ack=y+1) ->| 第三次:客户端确认
| |
|<======== 连接建立 ===========>|
为什么是三次而不是两次?防止已失效的连接请求到达服务器导致错误。
4.3 TCP 四次挥手¶
Client Server
| |
|---- FIN ------------------->| 第一次:客户端请求断开
| |
|<--- ACK --------------------| 第二次:服务器确认
| |
|<--- FIN --------------------| 第三次:服务器也要断开
| |
|---- ACK ------------------->| 第四次:客户端确认
| |
|<======== 连接断开 ==========>|
4.4 TCP 拥塞控制¶
| 算法 | 描述 |
|---|---|
| 慢开始 | 拥塞窗口从 1 开始,每 RTT 翻倍 |
| 拥塞避免 | 窗口达到阈值后,每 RTT 增加 1 |
| 快重传 | 收到 3 个重复 ACK 立即重传 |
| 快恢复 | 快重传后,将阈值设为当前窗口的一半 |
五、应用层¶
5.1 HTTP/HTTPS¶
| 特性 | HTTP | HTTPS |
|---|---|---|
| 端口 | 80 | 443 |
| 加密 | 明文传输 | SSL/TLS 加密 |
| 安全 | 不安全,可被窃听 | 安全,防止中间人攻击 |
| 证书 | 不需要 | 需要 CA 证书 |
HTTP 请求方法:GET(获取资源)、POST(提交数据)、PUT(更新)、DELETE(删除)
HTTP 状态码: | 状态码 | 含义 | |--------|------| | 1xx | 信息性 | | 2xx | 成功(200 OK) | | 3xx | 重定向(301 永久/302 临时) | | 4xx | 客户端错误(404 Not Found) | | 5xx | 服务器错误(500 内部错误) |
5.2 DNS 解析¶
将域名解析为 IP 地址的分布式系统。
解析过程: 1. 浏览器查询本地 DNS 缓存 2. 未命中则查询本地 DNS 服务器(递归查询) 3. 本地 DNS 服务器迭代查询:根 DNS → 顶级域 DNS → 权威 DNS 4. 返回 IP 地址给浏览器
5.3 其他应用层协议¶
| 协议 | 端口 | 用途 |
|---|---|---|
| FTP | 20/21 | 文件传输 |
| SMTP | 25 | 发送邮件 |
| POP3 | 110 | 接收邮件 |
| IMAP | 143 | 邮件管理与同步 |
| DHCP | 67/68 | 自动分配 IP 地址 |
| SSH | 22 | 远程安全登录 |
常见面试题¶
高频考点
- TCP 三次握手的过程及原因? 防止失效连接请求。
- TCP 和 UDP 的区别? 面向连接 vs 无连接,可靠 vs 不可靠。
- HTTP 和 HTTPS 的区别? HTTPS 多了 SSL/TLS 加密层。
- 从浏览器输入 URL 到显示页面发生了什么? DNS 解析 → TCP 连接 → HTTP 请求 → 服务器处理 → 响应返回 → 浏览器渲染。
- 拥塞控制和流量控制的区别? 拥塞控制防止网络过载,流量控制防止接收方过载。