应用层协议详解
应用层协议直接为用户提供服务,位于 TCP/IP 模型最上层。
HTTP/HTTPS 深入
HTTP 报文结构
请求报文
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html响应报文
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>HTTP 版本演进
| 版本 | 特点 |
|---|---|
| HTTP/1.0 | 每请求一次 TCP 连接,效率低 |
| HTTP/1.1 | 持久连接、管线化、Host 头 |
| HTTP/2 | 多路复用、头部压缩 HPACK、二进制分帧 |
| HTTP/3 | 基于 QUIC(UDP),解决队头阻塞 |
HTTPS 与 TLS
TLS 握手主要步骤(TLS 1.2):
- ClientHello:客户端发送支持的加密套件
- ServerHello + 证书:服务器选择套件并下发证书
- 证书校验:客户端验证 CA 签名
- 密钥交换:客户端生成预主密钥并用服务器公钥加密发送
- 双方生成会话密钥,之后用对称加密通信
DNS 深入
查询方式
- 递归查询:客户端 → 本地 DNS 服务器,本地服务器负责查询到底
- 迭代查询:本地 DNS 服务器 → 根/顶级/权威服务器逐级返回指引
完整解析流程
浏览器缓存 → 系统缓存 → hosts 文件
↓
本地 DNS 服务器(递归)
↓
根服务器 → .com 顶级服务器 → example.com 权威服务器
↓
返回 A 记录 → 本地服务器缓存 → 返回客户端
常见问题
- DNS 污染/劫持:使用可信 DNS 或 DoH/DoT
- 缓存不生效:修改 TTL 后等待或强制刷新
- 解析慢:检查本地 DNS 服务器性能、上游链路
DHCP
工作原理(DORA)
1. DISCOVER - 客户端广播寻找 DHCP 服务器
2. OFFER - 服务器广播提供 IP 地址
3. REQUEST - 客户端广播请求该地址
4. ACK - 服务器确认并下发租约
租约与续租
- 租期默认 1 天(可配置)
- T1(50%):单播 REQUEST 续租
- T2(87.5%):广播 REQUEST 续租
- 续租失败:租约到期后释放地址
地址池与保留
- 全局地址池 / 接口地址池
- 排除地址(保留给服务器/打印机)
- 静态绑定(根据 MAC 固定分配)
配置示例见 02.03_ARP与DHCP。
FTP
- 双通道:控制连接(21/TCP)+ 数据连接(20/TCP)
- 主动模式 PORT:服务器主动连客户端
- 被动模式 PASV:客户端主动连服务器(更适用于 NAT 环境)
- 传输模式:ASCII / 二进制
SSH 与 Telnet
| 协议 | 端口 | 加密 | 适用 |
|---|---|---|---|
| Telnet | 23 | 明文 | 仅限实验环境 |
| SSH | 22 | 加密 | 生产环境远程管理 |
SSH 认证方式:密码认证、密钥认证(更安全)、证书认证。
邮件协议
| 协议 | 端口 | 用途 |
|---|---|---|
| SMTP | 25/465/587 | 发送邮件 |
| POP3 | 110/995 | 下载邮件到本地 |
| IMAP | 143/993 | 服务器同步管理邮件 |
常用端口速查
| 端口 | 协议 | 端口 | 协议 |
|---|---|---|---|
| 22 | SSH | 53 | DNS |
| 23 | Telnet | 67/68 | DHCP |
| 25 | SMTP | 80 | HTTP |
| 110 | POP3 | 443 | HTTPS |
| 143 | IMAP | 3389 | RDP |
| 161/162 | SNMP | 3306 | MySQL |
💡 抓包验证:Wireshark 过滤
http、dns、dhcp,观察报文交互。
🔗 相关笔记:02.01_网络协议详解 02.03_ARP与DHCP