计算机网络
🧠 一、基础概念类
1. 什么是 TCP 和 UDP?它们有什么区别?
- TCP(传输控制协议):面向连接、可靠传输、顺序保证(如 HTTP)。
- UDP(用户数据报协议):无连接、不保证顺序、无重传机制(如 DNS、视频流)。
区别总结:
特性 | TCP | UDP |
---|---|---|
连接性 | 面向连接 | 无连接 |
可靠性 | 可靠(有确认、重传) | 不可靠 |
顺序保证 | 有 | 无 |
速度 | 慢 | 快 |
应用场景 | HTTP、FTP | DNS、视频直播等 |
2. HTTP 和 HTTPS 的区别是什么?
- HTTPS = HTTP + TLS/SSL 加密层。
- 区别:
- 加密通信:HTTPS 使用非对称+对称加密,保障数据安全。
- 身份验证:HTTPS 需证书认证,避免中间人攻击。
- 端口不同:HTTP 使用 80,HTTPS 使用 443。
- 性能开销:HTTPS 加解密带来略微性能损耗。
3. 什么是三次握手和四次挥手?
TCP 三次握手(建立连接):
- 客户端发送 SYN(同步序列号);
- 服务端返回 SYN + ACK;
- 客户端再发 ACK,连接建立。
TCP 四次挥手(断开连接):
- 客户端发 FIN;
- 服务端返回 ACK;
- 服务端再发 FIN;
- 客户端返回 ACK,连接断开。
🌐 二、HTTP 协议相关
4. 常见 HTTP 状态码有哪些?
- 200:成功
- 301/302:重定向
- 304:缓存命中,未修改
- 400:请求错误
- 401:未认证
- 403:禁止访问
- 404:未找到
- 500:服务器内部错误
5. HTTP 请求有哪些方法?各自作用?
- GET:获取资源,幂等
- POST:创建资源,非幂等
- PUT:更新资源(整体)
- PATCH:部分更新
- DELETE:删除资源
6. Cookie、Session、LocalStorage、Token 的区别?
特性 | Cookie | Session | LocalStorage | Token |
---|---|---|---|---|
存储位置 | 浏览器 | 服务端 | 浏览器 | 浏览器 |
有效范围 | 同源 + 路径 | 服务端 | 同源 | 同源 |
生命周期 | 设定过期时间 | 会话关闭失效 | 永久除非手动清除 | 通常含过期时间 |
安全性 | 低 | 中等 | 低 | 高(若配合 HTTPS) |
前后端分离推荐 | ❌ | ❌ | ❌ | ✅ |
7. 什么是跨域?如何解决跨域问题?
跨域:浏览器的同源策略阻止不同源的请求(域名、协议、端口不同)。
解决方案:
- CORS(服务器设置
Access-Control-Allow-Origin
) - JSONP(仅支持 GET)
- 代理转发(如
devServer.proxy
) - WebSocket(不受同源策略限制)
- postMessage(跨 iframe 通信)
🚀 三、性能优化类
8. 什么是浏览器缓存?有哪些类型?
缓存类型:
- 强缓存:
Expires
:HTTP 1.0 的绝对时间Cache-Control: max-age
:相对时间
- 协商缓存:
Last-Modified
+If-Modified-Since
ETag
+If-None-Match
流程:
- 先查强缓存(命中直接用);
- 如果失效,则进行协商缓存(向服务器确认资源是否变更);
- 若无变更,返回 304。
9. HTTP1.1、HTTP2、HTTP3 有什么区别?
特性 | HTTP/1.1 | HTTP/2 | HTTP/3 |
---|---|---|---|
多路复用 | ❌ 串行阻塞 | ✅ 同一连接复用 | ✅ 更高效 |
头部压缩 | ❌ | ✅ HPACK 压缩 | ✅ QPACK 压缩 |
连接协议 | TCP | TCP | QUIC(基于 UDP) |
优势 | 普及 | 减少阻塞 | 快速连接恢复、防丢包 |
🔐 四、安全相关
10. 常见的 Web 安全问题及防范方法?
- XSS(跨站脚本攻击):用户输入中注入 JS。
- 防范:输出内容做 HTML 转义。
- CSRF(跨站请求伪造):借助用户登录态发起恶意请求。
- 防范:Token 校验、Referer 检查。
- 点击劫持:隐藏 iframe 诱导用户点击。
- 防范:
X-Frame-Options: DENY
- 防范:
- SQL 注入:通过拼接 SQL 查询。
- 防范:使用预编译查询语句(Prepared Statement)。
11. HTTPS 是如何保证安全的?
- 混合加密:
- 非对称加密传输对称密钥;
- 对称加密传输数据。
- 身份认证:使用数字证书校验服务端身份。
- 完整性校验:防止数据篡改(如 SHA + MAC)。
📦 五、前端实用网络知识
12. 浏览器输入 URL 到页面展示经历了什么?
- DNS 解析(域名转 IP)
- 建立 TCP 连接(三次握手)
- 发送 HTTP 请求
- 服务器响应 HTML
- 浏览器解析 HTML
- 加载资源(CSS、JS、图片)
- 渲染页面(构建 DOM、CSSOM → 渲染树)
13. 什么是 CDN?它是如何加速的?
- CDN:内容分发网络(Content Delivery Network)。
- 加速原理:
- 靠近用户的节点缓存资源;
- 减少源站压力和网络延迟;
- DNS 智能调度分配访问节点。
14. WebSocket 与 HTTP 的区别?
特性 | HTTP | WebSocket |
---|---|---|
连接模式 | 请求 - 响应 | 全双工(长连接) |
保持连接 | 否(每次新建) | 是 |
数据实时性 | 差 | 强 |
使用场景 | 表单、接口请求 | 聊天、游戏、推送 |
✅ 六、补充题(常见延伸问题)
15. 浏览器中如何阻止缓存?
- 请求头添加:
Cache-Control: no-cache
Pragma: no-cache
- 在 URL 后添加时间戳:
?t=123
16. 什么是 CDN 回源?什么是缓存穿透?
- 回源:CDN 缓存未命中时向源站请求。
- 缓存穿透:大量无效请求穿透缓存直接打到数据库或服务端,常用于攻击。