DNS 及其他应用层协议
medium计算机网络DNSFTPSMTPDHCPWebSocket
DNS 域名解析
DNS(Domain Name System)将域名(如 www.example.com)解析为 IP 地址(如 93.184.216.34),是互联网的"电话簿"。
DNS 层次结构
根域名服务器 (.)
╱ │ ╲
.com .org .cn
╱ │ ╲
example wiki baidu
│ │ │
www en www
解析过程
浏览器输入 www.example.com
1. 浏览器 DNS 缓存 → 未命中
2. 操作系统 DNS 缓存 → 未命中
3. 本地 DNS 服务器(递归查询)
│
├─▶ 根域名服务器: ".com 去找 .com 的 DNS"
├─▶ .com TLD 服务器: "example.com 去找它的权威 DNS"
└─▶ example.com 权威 DNS: "www.example.com = 93.184.216.34"
4. 本地 DNS 缓存结果并返回给浏览器
DNS 记录类型
| 类型 | 作用 | 示例 |
|---|---|---|
| A | 域名 → IPv4 | example.com → 93.184.216.34 |
| AAAA | 域名 → IPv6 | example.com → 2606:2800:: |
| CNAME | 域名别名 | www.example.com → example.com |
| MX | 邮件服务器 | example.com → mail.example.com |
| NS | 域名服务器 | example.com → ns1.example.com |
| TXT | 文本记录 | SPF、域名验证 |
为什么 DNS 用 UDP?
DNS 查询报文通常很小(< 512字节),UDP 的无连接特性省去了握手开销,一个请求一个响应就够了。但当响应超过 512 字节(如域传送场景),会切换到 TCP。
其他应用层协议
FTP(文件传输协议)
FTP 使用两个 TCP 连接:
- 控制连接(端口 21):传输命令(登录、目录操作)
- 数据连接(端口 20):传输文件内容
SMTP / POP3 / IMAP(邮件协议)
发件人 → SMTP → 发件服务器 → SMTP → 收件服务器 → POP3/IMAP → 收件人
SMTP (端口 25): 发送邮件
POP3 (端口 110): 接收邮件(下载到本地,服务端可删除)
IMAP (端口 143): 接收邮件(在线管理,邮件保留在服务端)
DHCP(动态主机配置协议)
DHCP 自动为设备分配 IP 地址、子网掩码、网关、DNS 服务器等网络参数。
客户端 DHCP 服务器
│ DHCP Discover (广播) │
│ ───────────────────────────▶│
│ DHCP Offer (提供 IP 等) │
│ ◀───────────────────────────│
│ DHCP Request (确认使用) │
│ ───────────────────────────▶│
│ DHCP Ack (确认分配) │
│ ◀───────────────────────────│
WebSocket
WebSocket 提供全双工实时通信:
HTTP 升级握手:
GET /chat HTTP/1.1
Upgrade: websocket
Connection: Upgrade
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
握手后: 双向实时通信,无需轮询
客户端 ◀─── 消息 ───▶ 服务端
| 对比 | HTTP | WebSocket |
|---|---|---|
| 通信方式 | 请求-响应(半双工) | 全双工 |
| 连接 | 短连接或 Keep-Alive | 持久连接 |
| 开销 | 每次带完整 Header | 帧头仅 2~10 字节 |
| 适用场景 | 页面加载、API 调用 | 聊天、游戏、实时数据 |
生产高频题
DNS 的解析过程?
浏览器缓存 → 系统缓存 → 本地 DNS 服务器 → 根域名服务器 → TLD 服务器 → 权威 DNS 服务器。本地 DNS 使用递归查询,各级 DNS 之间使用迭代查询。
WebSocket 和 HTTP 的区别?
HTTP 是请求-响应模式,服务端不能主动推送。WebSocket 通过 HTTP 升级握手建立持久连接,之后双向实时通信,帧头开销极小,适合实时场景。