深入理解 网络协议 的核心原理,掌握大厂面试高频考点。从底层 Socket 到应用层 HTTP/2,为您提供结构化、深度化的知识图谱。
面试常考基础,需清晰区分各层职责:
理解数据如何从应用层向下封装:
面试官常问易混淆点:
TCP是面试的重中之重,请重点掌握状态机、拥塞控制及粘包处理。
目的:建立连接,同步序列号(ISN),确认对方的接收能力。
| 步骤 | 方向 | 标志位 | 序列号 | 说明 |
|---|---|---|---|---|
| 1 | Client → Server | SYN=1 | seq=x | 客户端请求建立连接,进入SYN_SENT状态。 |
| 2 | Server → Client | SYN=1, ACK=1 | seq=y, ack=x+1 | 服务端确认客户端请求,并请求建立连接,进入SYN_RCVD状态。 |
| 3 | Client → Server | ACK=1 | seq=x+1, ack=y+1 | 客户端确认服务端请求,连接建立,进入ESTABLISHED状态。 |
为什么是三次? 防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。两次握手无法保证双方都确认了对方的发送和接收能力。
目的:可靠地终止连接,确保双方数据发送完毕。
为什么需要TIME_WAIT? 1. 确保最后一个ACK能到达Server;2. 防止已失效的连接请求报文段出现在本连接中。
面试中常要求画出或解释状态转换:
核心机制:慢启动、拥塞避免、快重传、快恢复。
HTTP/1.1:支持持久连接、管道化,但存在队头阻塞问题。
HTTP/2:二进制分帧、多路复用、头部压缩(HPACK)、服务器推送。解决了队头阻塞,提升性能。
HTTP/3:基于QUIC协议(运行在UDP上),彻底解决应用层队头阻塞,握手更快(0-RTT)。
混合加密:非对称加密用于密钥交换,对称加密用于数据传输。
数字证书:由CA机构签发,包含公钥、域名、有效期等,用于验证服务器身份,防止中间人攻击。
TLS 握手流程:
1. Client Hello:支持协议版本、加密套件、随机数。
2. Server Hello:选定加密套件、服务器证书、随机数。
3. 密钥交换:客户端验证证书,生成预主密钥,用服务器公钥加密发送。
4. 生成会话密钥:双方根据随机数和预主密钥生成对称密钥。
WebSocket 基于 HTTP 协议进行握手,使用 Upgrade 头部切换到 WS 协议。
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13
服务器返回 101 Switching Protocols 后,连接建立,双方可进行全双工通信。
1. 浏览器缓存:检查本地hosts文件和浏览器DNS缓存。
2. 操作系统缓存:检查操作系统DNS缓存(ARP表等)。
3. 路由器缓存:检查本地路由器DNS缓存。
4. ISP DNS:向运营商提供的DNS服务器(递归解析器)发起请求。
5. 根域名服务器:递归解析器向根服务器查询顶级域名(TLD)服务器地址。
6. TLD服务器:向.com/.cn等服务器查询权威域名服务器地址。
7. 权威DNS服务器:查询最终IP地址并返回给递归解析器。
8. 返回结果:递归解析器将结果缓存并返回给客户端。
原因:TCP是流式协议,无边界。发送方发送消息过快,接收方缓冲区不足,导致多个消息合并接收;或接收方处理慢,导致消息积压。
解决方案:
1. 定长消息:每条消息固定长度,不足补空格。
2. 分隔符:使用特定字符(如\n, \r\n)作为消息结束标志。
3. 消息长度+消息体:在头部添加4字节长度字段,指定后续Body长度。
4. 应用层协议:如HTTP/1.1的Content-Length,HTTP/2的二进制帧。
原因:浏览器的同源策略(Same-Origin Policy)限制,协议、域名、端口任一不同即跨域。
解决方案:
1. CORS(跨域资源共享):后端设置响应头 Access-Control-Allow-Origin。
2. JSONP:利用
```