第 2 章 · 应用层

应用层离用户最近,只关心「说什么、怎么说」(数据编码、请求表达);可靠传输交给 TCP(见第 3、4 章)。

2.1 HTTP 报文:请求与响应

HTTP 是无状态、基于文本的请求-响应协议。报文分请求响应两种,格式对称:

GET /index.html HTTP/1.1        ← 请求行:方法 + 路径 + 版本
Host: www.example.com           ← 首部(键值对)
User-Agent: curl/8.0
Accept: text/html

                                ← 空行结束首部
(可选的请求体,POST 才有)
请求方法语义幂等
GET获取资源
POST提交数据、创建资源
PUT整体替换资源
DELETE删除资源
HEAD只取首部不取体
状态码类别常见示例
1xx信息100 Continue
2xx成功200 OK、201 Created、204 No Content
3xx重定向301 永久、302 临时、304 Not Modified
4xx客户端错误400、401 未认证、403 禁止、404 Not Found
5xx服务器错误500、502 网关、503 服务不可用

响应报文 = 状态行(版本 + 状态码 + 原因短语)+ 首部 + 空行 + 响应体。

2.2 DNS:把域名变成 IP

网络层只按 IP 寻址(见第 5 章),人记域名,所以用**域名系统(DNS)**做转换。DNS 是分层、分布式的数据库:

根域名服务器(.)  →  顶级域服务器(.com)  →  权威服务器(example.com)

解析 www.example.com

  1. 查本机 hosts 文件、浏览器/DNS 缓存;
  2. 未命中,向本地 DNS 服务器(递归查询)发起请求;
  3. 本地服务器从开始迭代:根 → .com 顶级域 → example.com 权威服务器;
  4. 权威服务器返回 IP,本地服务器缓存后交给客户端。

对比:递归查询是「你替我去查到底」(客户端→本地服务器,只问一次);迭代查询是「我告诉你下一步问谁」(本地服务器→各级服务器,各自接力)。现实中两者混合。

2.3 电子邮件:SMTP / POP3 / IMAP

邮件分「发送」和「接收」两条链路:

协议作用方向端口
SMTP发送/转发邮件客户端→服务器、服务器→服务器25/465/587
POP3下载邮件(默认下载后删除)服务器→客户端110/995
IMAP同步邮件(服务器留存,多设备同步)服务器↔客户端143/993
  • SMTP 是「推」协议,把邮件推到目标邮箱服务器;POP3/IMAP 是「拉」协议,把邮件取回来。
  • POP3 适合单设备本地保存;IMAP 适合多设备云端同步。

2.4 DHCP:自动分配 IP

DHCP 让主机无需手工配置 IP,接入即自动获得地址。经典 DORA 四步:

步骤报文方向内容
DiscoverDHCPDISCOVER客户端→广播「有人能给我 IP 吗?」
OfferDHCPOFFER服务器→客户端「我建议用这个 IP」
RequestDHCPREQUEST客户端→广播「我就要这个 IP」
AckDHCPACK服务器→客户端「成交,租约给你」

对比:IPv6 用 SLAAC(前缀 + 自生成接口标识,无需服务器)+ DHCPv6(补充 DNS 等)取代 IPv4 的 DHCP 独大。第 5 章详述 IPv6 地址。

对比:HTTP/1.0 每请求新建一次 TCP;HTTP/1.1 持久连接(keep-alive)串行复用但队头阻塞;HTTP/2 多路复用(multiplexing)同一连接并发多路,消除队头阻塞。