← 返回首页
一、网络分层模型
- OSI 七层:物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层
- TCP/IP 四层:网络接口层 → 网络层(IP)→ 传输层(TCP/UDP)→ 应用层(HTTP/DNS/FTP)
- 数据封装:应用数据 → 段(Segment)→ 包(Packet)→ 帧(Frame)→ 比特流
- 每层核心设备:物理层(集线器)/ 数据链路层(交换机)/ 网络层(路由器)
二、TCP 协议
三次握手
- 客户端 → SYN(seq=x) → 服务端
- 服务端 → SYN+ACK(seq=y, ack=x+1) → 客户端
- 客户端 → ACK(ack=y+1) → 服务端,连接建立
- 为什么三次:防止历史重复连接初始化、同步双方初始序列号
四次挥手
- 主动方 → FIN → 被动方 → ACK → (被动方发送剩余数据)→ 被动方 → FIN → 主动方 → ACK
- TIME_WAIT:主动关闭方等待 2MSL(60s),确保最后 ACK 到达 + 旧连接报文消亡
- 大量 TIME_WAIT:短连接高并发场景,优化:连接池复用 /
tcp_tw_reuse
可靠传输机制
- 序列号+确认号:保证数据有序、不丢失、不重复
- 滑动窗口:发送方窗口控制发送速率,接收方通告窗口大小
- 流量控制:接收方通过窗口大小(rwnd)限制发送速率,防止接收方溢出
- 拥塞控制:慢启动 → 拥塞避免 → 快重传 → 快恢复,cwnd 动态调整
- 超时重传:RTO 超时未收到 ACK 则重传;快重传:收到 3 个重复 ACK 立即重传
三、UDP 协议
- 特点:无连接、不可靠、无拥塞控制、头部仅 8 字节(源端口/目的端口/长度/校验和)
- 优势:低延迟、支持广播/多播、开销小
- 应用场景:DNS 查询、视频直播、游戏、VoIP、QUIC 协议
- TCP vs UDP:TCP 可靠有序面向连接(文件传输/网页);UDP 快速简单无连接(实时音视频)
四、HTTP / HTTPS
- HTTP 方法:GET(幂等,获取)/ POST(非幂等,提交)/ PUT(幂等,更新)/ DELETE / PATCH
- 状态码:200 OK / 301 永久重定向 / 302 临时重定向 / 304 未修改 / 400 请求错误 / 401 未认证 / 403 禁止 / 404 未找到 / 500 服务器错误 / 502 网关错误 / 503 服务不可用
- HTTP/1.1:持久连接(Keep-Alive)、管道化(实际很少用)、分块传输
- HTTP/2:二进制分帧、多路复用(解决队头阻塞)、头部压缩(HPACK)、服务器推送
- HTTP/3:基于 QUIC(UDP),解决 TCP 队头阻塞,0-RTT 建连
- HTTPS:HTTP + TLS 加密,握手过程:TCP 连接 → TLS 握手(证书验证+密钥协商)→ 对称加密通信
- TLS 1.3:1-RTT 握手(比 1.2 少一次往返),废弃不安全算法
五、DNS
- 解析流程:浏览器缓存 → 系统缓存(hosts)→ 本地 DNS → 根域名服务器 → 顶级域 → 权威域名服务器
- 记录类型:A(域名→IPv4)/ AAAA(→IPv6)/ CNAME(别名)/ MX(邮件)/ TXT(文本验证)
- 递归 vs 迭代:客户端到本地 DNS 是递归查询;本地 DNS 到各级服务器是迭代查询
- DNS 优化:DNS 预解析(
dns-prefetch)/ 就近接入(CDN 利用 DNS 调度)
六、IP 与网络层
- IPv4 地址:32 位,子网掩码划分网络号和主机号,CIDR 表示法 192.168.1.0/24
- 私有地址:10.0.0.0/8 / 172.16.0.0/12 / 192.168.0.0/16
- ARP:IP 地址 → MAC 地址的映射,广播请求单播响应
- ICMP:网络诊断协议,ping(Echo Request/Reply)/ traceroute(TTL 递增探测路径)
- NAT:私有 IP 转公网 IP,解决 IPv4 地址不足,NAPT 端口映射
七、经典面试题
- 浏览器输入 URL 全过程:DNS 解析 → TCP 三次握手 → TLS 握手 → HTTP 请求 → 服务器处理 → 响应返回 → 浏览器渲染
- Cookie vs Session:Cookie 存客户端(大小限制 4KB);Session 存服务端(SessionID 通过 Cookie 传递)
- GET vs POST:GET 参数在 URL(有长度限制)、幂等、可缓存;POST 参数在 Body、非幂等、不缓存
- WebSocket:全双工通信,HTTP 升级握手后保持长连接,适合实时推送