6.1 域名系统 DNS
DNS (Domain Name System)
将域名解析为 IP 地址的分布式层次数据库系统,采用 UDP 协议,端口 53。DNS 采用层次树状结构:根域名 → 顶级域名(TLD) → 二级域名 → …。域名层次示例:www.example.com.(末尾点为根,通常省略)
- 根域名服务器:最高层,知道所有 TLD 服务器地址。
- 顶级域名服务器 TLD:负责 .com / .org / .cn 等。
- 权威域名服务器:负责具体组织域名(如 example.com)。
- 本地域名服务器:主机配置的默认 DNS,代理用户查询。
查询方式
| 方式 | 过程 | 典型位置 |
|---|---|---|
| 递归查询 | 被请求方负责完成全部查询并返回最终结果 | 主机 → 本地域名服务器 |
| 迭代查询 | 被请求方返回下一步应查询的服务器地址,由请求方继续 | 本地域名服务器 → 根/TLD/权威 |
记忆:客户端对本地服务器是"递归"(你帮我查到底),本地服务器对外部是"迭代"(我自己逐级问)。
解析顺序:浏览器缓存 → 操作系统缓存(hosts)→ 本地域名服务器缓存 → 上述逐级查询。命中缓存则直接返回,极大提升效率。
6.2 万维网与 HTTP
HTTP (HyperText Transfer Protocol)
超文本传输协议,基于 TCP,默认端口 80。是无状态协议,可通过 Cookie 维持状态。HTTP 报文分为请求报文与响应报文。
请求方法
| 方法 | 含义 |
|---|---|
| GET | 请求读取 URL 标识的信息 |
| POST | 向服务器提交数据(表单) |
| HEAD | 请求响应首部,不含体 |
| PUT | 上传/替换资源 |
| DELETE | 删除资源 |
HTTP 版本
| 版本 | 特点 |
|---|---|
| HTTP/1.0 | 非持久连接,每个对象需单独建立 TCP |
| HTTP/1.1 | 持久连接(keep-alive),可流水线 |
| HTTPS | HTTP + SSL/TLS,端口 443,加密传输 |
状态码:1xx 信息;2xx 成功(200 OK);3xx 重定向(301/302);4xx 客户端错误(404 Not Found);5xx 服务器错误(500)。
HTTP 请求-响应过程动画
演示浏览器与Web服务器之间的HTTP请求响应完整过程:DNS解析→TCP连接→HTTP请求→服务器处理→HTTP响应→浏览器渲染→TCP关闭。
HTTP 请求响应过程
交互式动画速度 1x
步骤 0/0
6.3 文件传输协议 FTP
FTP (File Transfer Protocol)
基于 TCP 的文件传输协议,使用两个连接:控制连接(端口 21)与数据连接(端口 20)。控制连接贯穿整个会话,数据连接按需建立。| 模式 | 数据连接建立方式 |
|---|---|
| 主动模式 PORT | 服务器从端口 20 主动连接客户端指定端口 |
| 被动模式 PASV | 服务器开放端口,由客户端主动连接 |
FTP vs HTTP:FTP 使用两个 TCP 连接(控制+数据),HTTP 单连接;FTP 有状态(保持登录),HTTP 无状态。
6.4 电子邮件协议
电子邮件系统由三部分构成:用户代理 UA、邮件服务器、协议(SMTP/POP3/IMAP)。
| 协议 | 作用 | 传输层 | 端口 |
|---|---|---|---|
| SMTP | 发送邮件(推送),客户端→服务器、服务器→服务器 | TCP | 25 |
| POP3 | 接收邮件(拉取),下载后可删除 | TCP | 110 |
| IMAP | 接收邮件,邮件保留在服务器,支持文件夹 | TCP | 143 |
SMTP
简单邮件传输协议,推送式工作。发送方邮件服务器通过 SMTP 把邮件推送给接收方邮件服务器。SMTP 只能传送 ASCII 文本,多用途扩展 MIME 支持二进制/多媒体。邮件发送流程:
- 发送方 UA 用 SMTP 将邮件发送到发送方邮件服务器。
- 发送方邮件服务器用 SMTP 将邮件推送到接收方邮件服务器。
- 接收方 UA 用 POP3/IMAP 从接收方邮件服务器拉取邮件。
关键点:SMTP 是"推",POP3/IMAP 是"拉"。邮件在服务器间只能用 SMTP。
6.5 网络应用模型
网络应用在体系结构上可划分为客户/服务器模型(C/S)、对等模型(P2P)以及二者结合的混合模型。
客户/服务器模型(C/S)
Client/Server Model
一端为服务器(Server),提供共享资源与服务;另一端为客户机(Client),发起请求并获得服务。服务器持续运行并监听固定端口,客户机按需主动连接。| 特点 | 说明 |
|---|---|
| 主从结构 | 服务器是核心,客户机之间不能直接通信 |
| 集中式管理 | 所有资源和数据集中存放在服务器 |
| 易维护 | 升级只需在服务器端进行 |
| 可扩展性差 | 服务器端易成为性能瓶颈 |
| 单点故障 | 服务器宕机则整个系统不可用 |
典型应用:HTTP/HTTPS、FTP、SMTP、POP3、DNS、数据库系统等。
对等模型(P2P)
Peer-to-Peer Model
网络中每个节点(Peer)地位平等,既充当客户机又充当服务器,节点之间直接共享资源,无需中央服务器。| 特点 | 说明 |
|---|---|
| 去中心化 | 没有单一中心节点,所有节点功能对等 |
| 可扩展性强 | 节点越多,整体服务能力越强 |
| 鲁棒性好 | 单个节点失效不影响整体运行 |
| 管理复杂 | 资源发现与调度难度大 |
| 安全风险高 | 节点匿名,易存在恶意节点与版权问题 |
典型应用:
- BitTorrent:基于"分片+种子"思想,把文件切成小块,每个对等节点下载的同时向其他节点上传,有效解决大文件分发的扩展性问题。
- eDonkey / eMule:基于 KAD(Kademlia)分布式哈希表进行资源发现,每个节点维护 DHT 的一部分,实现分布式文件搜索与下载。
- Gnutella、Kazaa、迅雷等也属于 P2P 思想的应用。
混合模型(Hybrid)
Hybrid Model
结合 C/S 与 P2P:通过一个或多个中心服务器完成用户认证、目录索引等轻量功能,而实际的数据传输在节点之间直接进行。典型代表:Skype
- 登录:客户端登录到中央服务器(C/S 部分)完成用户认证。
- 呼叫建立:服务器协助两个客户端建立 UDP/TCP 直连通道。
- 媒体传输:通话数据在两端点之间直接传输(P2P 部分),避开服务器瓶颈。
- NAT 穿透:当一端处于内网时,Skype 通过超级节点(Supernode)中继,超级节点本身也是网络中功能较强的普通主机。
小结:C/S 简单可靠但扩展性差;P2P 扩展性强但管理复杂;混合模型在二者之间取得平衡,是当前大规模实时通信与内容分发的主流架构。
6.6 MIME 协议
MIME (Multipurpose Internet Mail Extensions)
多用途互联网邮件扩展。在基本 SMTP 之上扩展,使邮件能够支持非 ASCII 文本、二进制附件、图像、音视频等多媒体内容。MIME 并不替代 SMTP,而是通过新增邮件首部与编码规则来扩展 SMTP 的承载能力。MIME 报文结构
MIME 报文由首部(Headers)与主体(Body)构成,主体通过边界(boundary)区分不同部分。关键首部字段如下:
| 首部字段 | 含义 | 示例 |
|---|---|---|
| Content-Type | 声明主体的媒体类型 | text/plain、image/jpeg、application/pdf |
| Content-Transfer-Encoding | 声明主体采用的编码方式 | 7bit、quoted-printable、base64 |
| Content-ID | 为报文部分定义唯一标识,便于在其他部分引用 | CID: logo@example.com |
| Content-Disposition | 指示是内联显示还是作为附件下载 | attachment; filename="report.pdf" |
| MIME-Version | 声明 MIME 版本 | 1.0 |
| Content-Type (multipart) | 多部分报文的类型与边界 | multipart/mixed; boundary="----=_Part_1" |
MIME 编码方式
| 编码方式 | 原理 | 适用场景 |
|---|---|---|
| 7bit | 直接传输 ASCII 字符,每字节高位为 0 | 纯英文文本 |
| Quoted-Printable | 非打印字节用"=XX"表示(XX 为十六进制) | 含少量非 ASCII 字符(如中文、法语重音)的文本 |
| Base64 | 每 3 字节二进制数据编码为 4 个 ASCII 字符,使用 A–Z、a–z、0–9、+、/ 共 64 个字符 | 任意二进制数据(图片、压缩包、可执行文件) |
| 8bit / Binary | 扩展编码,需 ESMTP 服务器支持 | 已较少使用 |
MIME 与 SMTP / POP3 的关系
- SMTP:MIME 报文通过 SMTP 发送,SMTP 仅负责传输,不解析 MIME 内容。发送前,客户端通常先用 Base64 / Quoted-Printable 编码。
- POP3 / IMAP:收取邮件时,服务器原样返回 MIME 报文,由用户代理(UA)解析 Content-Type 与编码并还原附件与正文。
- ESMTP 在 SMTP 基础上扩展了 8BITMIME 等扩展,可直接传输 8 位数据,是现代邮件系统的基础。
记忆:MIME = 首部规范 + 编码方案,它让 SMTP 邮件从"纯文本信封"升级为"可装载任意内容的集装箱"。
6.7 DHCP 动态主机配置协议
DHCP (Dynamic Host Configuration Protocol)
动态主机配置协议,用于自动为网络中的主机分配 IP 地址及相关网络参数(如子网掩码、网关、DNS 服务器等)。基于 UDP,默认使用服务器端口 67、客户端端口 68。DHCP 工作流程
DHCP 交互由四个典型报文组成,常被称为 DORA 流程(Discover → Offer → Request → Ack)。
| 阶段 | 报文 | 方向 | 关键说明 |
|---|---|---|---|
| ① 发现 | DHCP Discover | 客户端 → 服务器 | 客户端以 0.0.0.0 为源、255.255.255.255 广播,寻找可用 DHCP 服务器 |
| ② 提供 | DHCP Offer | 服务器 → 客户端 | 服务器在可用地址池中选择 IP,以单播或广播回送 Offer |
| ③ 请求 | DHCP Request | 客户端 → 服务器 | 客户端在多个 Offer 中选择一个,向对应服务器请求租用该 IP |
| ④ 确认 | DHCP ACK | 服务器 → 客户端 | 服务器确认租用,下发完整配置参数(租期、DNS、网关等) |
续租:租期到达 50% 时,客户端向原服务器单播 Request 续租;若失败,在 87.5% 时以广播形式重新请求。
DHCP 报文格式
| 字段 | 长度(字节) | 含义 |
|---|---|---|
| OP | 1 | 操作码:1=BOOTREQUEST(客户端),2=BOOTREPLY(服务器) |
| HTYPE | 1 | 硬件类型(1=以太网) |
| HLEN | 1 | 硬件地址长度(6=MAC 地址) |
| HOPS | 1 | 跳数,由 DHCP 中继递增 |
| XID | 4 | 事务 ID,用于匹配请求与响应 |
| SECS | 2 | 客户端等待时间 |
| FLAGS | 2 | 标志位(是否广播响应) |
| CIAddr | 4 | 客户端 IP(已有 IP 时填入) |
| YIAddr | 4 | 服务器分配给客户端的 IP("你"的 IP) |
| SIAddr | 4 | 下一个服务器 IP(用于引导) |
| GIAddr | 4 | 网关 IP(由中继填入) |
| CHAddr | 16 | 客户端硬件地址(MAC) |
| SName | 64 | 服务器主机名 |
| File | 128 | 引导文件名 |
| Options | 可变 | 选项字段(子网掩码、DNS、网关、租期等) |
DHCP 的应用场景
- 家庭/企业局域网:路由器作为 DHCP 服务器,为接入设备自动分配 IP,避免手工配置。
- 公共无线网络:机场、咖啡馆、校园网中,用户设备接入后自动获取 IP 与 DNS。
- 云与虚拟化环境:虚拟机、容器在启动时通过 DHCP 快速获取网络配置,实现弹性部署。
- 移动网络:3G/4G/5G 核心网中使用 DHCP 为移动终端分配 IP 参数。
- 零配置网络:配合 DNS、NTP 等服务,实现设备"上电即用"。
优缺点:DHCP 显著降低了 IP 管理成本,支持移动设备的频繁接入;但广播机制本身存在安全隐患(DHCP 嗅探、伪造 DHCP 服务器),需通过 DHCP Snooping、端口安全等机制加固。