应用层协议详解

应用层协议直接为用户提供服务,位于 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):

  1. ClientHello:客户端发送支持的加密套件
  2. ServerHello + 证书:服务器选择套件并下发证书
  3. 证书校验:客户端验证 CA 签名
  4. 密钥交换:客户端生成预主密钥并用服务器公钥加密发送
  5. 双方生成会话密钥,之后用对称加密通信

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

协议端口加密适用
Telnet23明文仅限实验环境
SSH22加密生产环境远程管理

SSH 认证方式:密码认证、密钥认证(更安全)、证书认证。

邮件协议

协议端口用途
SMTP25/465/587发送邮件
POP3110/995下载邮件到本地
IMAP143/993服务器同步管理邮件

常用端口速查

端口协议端口协议
22SSH53DNS
23Telnet67/68DHCP
25SMTP80HTTP
110POP3443HTTPS
143IMAP3389RDP
161/162SNMP3306MySQL

💡 抓包验证:Wireshark 过滤 http、dns、dhcp,观察报文交互。

🔗 相关笔记:02.01_网络协议详解 02.03_ARP与DHCP