🧱 网络基础
分层模型 · DNS 解析 · 输入 URL 全过程 · IP 与端口
1. OSI 七层和 TCP/IP 四层模型?各层协议?
| OSI 七层 | TCP/IP 四层 | 代表协议 |
|---|---|---|
| 应用层 | 应用层 | HTTP / DNS / FTP / SMTP / SSH |
| 表示层 / 会话层 | (TLS 通常算在会话层与表示层之间) | |
| 传输层 | 传输层 | TCP / UDP |
| 网络层 | 网际层 | IP / ICMP / 路由协议 |
| 数据链路层 | 网络接口层 | 以太网 / MAC / VLAN / ARP |
| 物理层 | 网线 / 光纤 / 信号 |
分层的好处:每层独立演进、透明封装(上层不管下层细节)、故障定位分层。
🎯 面试要点
- TCP vs UDP:TCP 可靠有序面向连接(HTTP/数据库);UDP 不可靠快(DNS 查询、视频、游戏、QUIC)
- 端口:HTTP 80、HTTPS 443、MySQL 3306、Redis 6379、DNS 53、SSH 22
- 常见工具:ping(ICMP)、telnet/nc(测端口)、traceroute(路由追踪)、dig/nslookup(DNS)
2. DNS 解析过程?(递归 vs 迭代)
- 浏览器查本地 DNS 缓存 → 没有则查 hosts → 没有则发起系统 DNS 请求
- 请求到达本地 DNS 服务器(运营商/公司):本地也没有 → 递归查询
- 递归查询:本地 DNS 代查根服务器(.)→ 根返回 顶级域服务器(.com)地址
- 查 .com 服务器 → 返回 权威服务器(example.com)地址
- 查权威服务器 → 返回 www.example.com 的 A 记录(IP)
- 本地 DNS 缓存结果返回给浏览器(TTL 内复用)
根服务器全球 13 组(任播),顶级域由 ICANN 管理;企业内网域名走私有 DNS。CDN 加速的核心也是 DNS:权威服务器返回离用户最近的节点 IP。
🎯 面试要点
- 递归 vs 迭代:递归"替你查完给你答案";迭代"告诉你下一步找谁"——本地 DNS 对客户端递归,对上游迭代
- 记录类型:A(IPv4)、AAAA(IPv6)、CNAME(别名)、MX(邮件)、TXT、NS
- DNS 污染/劫持:公共 DNS(8.8.8.8/223.5.5.5)+ DoH/DoT
3. 从输入 URL 到页面展示,发生了什么?(必背大题)
- URL 解析:浏览器解析协议/域名/端口/路径
- DNS 解析:域名 → IP(上述流程)
- TCP 连接:三次握手(HTTPS 则 + TLS 握手)
- 发送 HTTP 请求:请求行(方法/路径/协议)+ 请求头(Host/Cookie/User-Agent)+ 请求体
- 服务器处理:反向代理(Nginx)→ 应用(Spring MVC)→ 数据库 → 生成响应
- 返回响应:状态行 + 响应头(Content-Type/Set-Cookie)+ 响应体(HTML)
- 浏览器渲染:解析 HTML → 构建 DOM → 解析 CSS → 执行 JS → 布局绘制
- 四次挥手(HTTP/1.1 关闭时)或连接复用
🎯 面试要点
- 这道题是"一条链路问到底":DNS → TCP → HTTP → 后端 → 渲染,任何一段都可能被追问
- 加分点:提到 CDN(静态资源就近分发)、HTTP 缓存(强缓存/协商缓存)、Nginx 反向代理