一、应用层在 TCP/IP 中的位置
最顶层,直接为用户的应用程序提供网络服务。
不关心底下几层如何传输,只关心“消息语义”与“交换规则”。
典型交互模型:
客户/服务器(C/S)
P2P(对等)
混合(边缘 P2P + 索引服务器)
二、应用层需要解决的核心问题
如何标识通信双方的应用进程?→ 端口号(transport 层已提供)
如何标识要访问的资源?→ 域名、URL、URI、URN
如何约定消息格式?→ 协议文本(RFC)、TLV、JSON、XML、Protobuf…
如何保障安全?→ TLS/SSL、HTTPS、SSH、应用层签名/加密
如何提升性能?→ 缓存、CDN、连接复用、无状态设计、压缩、HTTP/2 帧、HTTP/3 QUIC
三、域名系统 DNS(53/UDP, 53/TCP)
层次命名空间:根 → 顶级(TLD)→ 二级 → 子域。
递归解析器 vs 权威服务器。
记录类型:A/AAAA、CNAME、MX、NS、TXT、PTR、SRV、CAA。
一次完整解析流程(含缓存、EDNS0 Client-Subnet)。
安全扩展:DNSSEC(RRSIG、DNSKEY、DS、NSEC),链式信任锚。
隐私/加速:DoT(853/TCP)、DoH(443/TCP)、DNS-over-QUIC。
四、万维网与 HTTP
URI 格式:scheme:[//authority]path[?query][#fragment]
HTTP/1.1 报文结构:请求行 / 响应行 + 头部(Host 必填)+ 实体。
方法:GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS、CONNECT、TRACE。
状态码:
1×× 信息
2×× 成功(200、204、206)
3×× 重定向(301、302、304)
4×× 客户端错(400、401、403、404)
5×× 服务器错(500、502、503)
特性:
无状态 → Cookie / Session / JWT 维持状态
管道化(1.1)→ 队头阻塞
分块传输 Transfer-Encoding: chunked
缓存控制:Expires、Cache-Control、ETag、Last-Modified、304 Not Modified。
HTTPS = HTTP + TLS
握手:TCP→TLS1.3 1-RTT / 0-RTT 恢复
证书链校验、SNI、ALPN(h2/http/1.1 协商)
HTTP/2
二进制帧、多路复用、头部压缩 HPACK、服务器推送。
HTTP/3(QUIC)
基于 UDP,内置加密,0-RTT 握手,连接迁移(CID),解决队头阻塞。