跳转至

计算机网络

一、网络体系结构

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 数据封装过程

应用数据
    → [TCP/UDP 头 + 数据]  传输层加头部
    → [IP 头 + TCP 段]     网络层加头部
    → [帧头 + IP 包 + 帧尾] 链路层加头部和尾部
    → 比特流                物理层传输

二、物理层与数据链路层

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 远程安全登录

常见面试题

高频考点

  1. TCP 三次握手的过程及原因? 防止失效连接请求。
  2. TCP 和 UDP 的区别? 面向连接 vs 无连接,可靠 vs 不可靠。
  3. HTTP 和 HTTPS 的区别? HTTPS 多了 SSL/TLS 加密层。
  4. 从浏览器输入 URL 到显示页面发生了什么? DNS 解析 → TCP 连接 → HTTP 请求 → 服务器处理 → 响应返回 → 浏览器渲染。
  5. 拥塞控制和流量控制的区别? 拥塞控制防止网络过载,流量控制防止接收方过载。