以下是前端开发者在面试中常涉及的计算机网络知识点整理,涵盖了基础概念、高频问题和深入理解的方向:
一、基础知识
-
HTTP/HTTPS
- HTTP的基本工作原理(请求/响应模型)。
- HTTP请求方法:GET、POST、PUT、DELETE 等的区别和使用场景。
- HTTP状态码:常见的 200、301、302、403、404、500 等。
- HTTPS的工作原理,TLS/SSL协议,握手过程。
- HTTP1.1、HTTP2、HTTP3 的区别及特性。
-
TCP/IP 协议
- TCP 三次握手与四次挥手的详细过程。
- TCP与UDP的区别及应用场景。
- IP地址、子网掩码、网关的概念。
- DNS解析过程(从域名到IP地址的转换)。
- NAT、ARP、ICMP 的基本原理和作用。
-
Websocket
- Websocket协议的工作原理和与HTTP的关系。
- Websocket的使用场景。
- 长轮询、SSE(Server-Sent Events)与Websocket的区别。
-
RESTful API 和 GraphQL
- RESTful API的设计原则。
- RESTful 与 SOAP 的对比。
- GraphQL 的优缺点,和 RESTful 的对比。
二、前端特定网络问题
-
浏览器渲染与加载
- 浏览器加载资源时,DNS解析、TCP连接、发送请求、接收响应的整个过程。
- 浏览器缓存机制:强缓存(Expires/Cache-Control)与协商缓存(ETag/Last-Modified)。
- 浏览器的同源策略和跨域问题(CORS、JSONP)。
-
性能优化
- 减少请求数量:资源合并、懒加载。
- 减少请求大小:压缩(gzip/brotli)、图片优化(webp)。
- CDN的作用与原理。
- 前端性能监控:TTFB、FCP、LCP、CLS。
-
安全问题
- XSS攻击及防护措施。
- CSRF攻击及防护措施。
- HTTPS及HSTS的重要性。
- Cookie的属性(HttpOnly、Secure、SameSite)及安全性。
三、常见问题总结
-
从输入URL到页面加载完成的全过程
涉及DNS解析、TCP连接、HTTP请求、服务器处理、浏览器渲染等。 -
为什么需要HTTPS?
保护数据传输的安全性,避免中间人攻击,防止数据篡改和窃取。 -
TCP为什么需要三次握手?为什么四次挥手?
三次握手确保双方都准备好通信,四次挥手确保双方关闭连接。 -
HTTP1.1相比HTTP1.0的改进?
支持长连接(Connection: keep-alive)、分块传输编码(Chunked Transfer Encoding)、虚拟主机支持等。 -
HTTP2如何提升性能?
多路复用、头部压缩、二进制格式传输、优先级机制等。 -
跨域解决方案有哪些?
CORS(推荐)、JSONP(仅限GET)、服务器代理。
四、进阶知识点
-
CDN 原理与边缘计算
- 缓存机制。
- 边缘节点的作用。
-
负载均衡与反向代理
- 负载均衡的算法(轮询、加权轮询、一致性哈希)。
- Nginx、HAProxy 在负载均衡中的作用。
-
HTTP/3 和 QUIC 协议
- 为什么引入HTTP/3?
- QUIC协议的优势(基于UDP,减少延迟)。
-
零拷贝技术
- 在数据传输中的应用。
-
服务端推送技术
- HTTP/2 Server Push。
- WebSocket的落地方案。
以下是对上述问题的详细解析:
1. 从输入URL到页面加载完成的全过程
- DNS解析:
- 将域名解析为IP地址。
- 优先使用浏览器缓存、系统缓存,再查询DNS服务器。
- TCP连接:
- TCP三次握手建立连接。
- 发送HTTP请求:
- 浏览器根据URL生成HTTP请求报文。
- 请求头包含User-Agent、Cookie等信息。
- 服务器处理请求:
- 服务器根据请求路径处理逻辑(静态资源或动态内容)。
- 响应数据:
- 服务器返回HTTP响应,包含状态码和内容。
- 浏览器渲染:
- 解析HTML,生成DOM树。
- 解析CSS,生成CSSOM。
- 结合JS,生成渲染树并绘制。
2. 为什么需要HTTPS?
- 加密传输:数据通过TLS加密,防止中间人窃取。
- 数据完整性:校验数据未被篡改。
- 身份验证:确保与访问的是真实服务器。
- 避免中间人攻击:攻击者无法伪装服务器。
3. TCP为什么需要三次握手?为什么四次挥手?
-
三次握手:
- 客户端发送SYN,表示请求建立连接。
- 服务器回复SYN-ACK,表示确认并同意连接。
- 客户端发送ACK,确认连接已建立。
原因:确保双方都能通信,防止已失效的连接请求再次被处理。
-
四次挥手:
- 客户端发送FIN,表示请求断开连接。
- 服务器回复ACK,确认断开请求。
- 服务器发送FIN,表示准备断开。
- 客户端回复ACK,断开连接。
原因:确保双方的发送和接收都已完成,避免数据丢失。
4. HTTP1.1相比HTTP1.0的改进?
- 支持长连接:默认开启Connection: keep-alive,减少重复建立连接的开销。
- 分块传输编码:通过Chunked Encoding支持动态内容。
- Host头支持:支持同一IP下多个域名的虚拟主机。
- 状态码扩展:新增了100(Continue)等状态码。
5. HTTP2如何提升性能?
- 多路复用:一个TCP连接可以承载多个请求,同时传输不阻塞。
- 头部压缩:通过HPACK算法减少重复头部信息的大小。
- 二进制分帧:更高效的数据传输。
- 优先级和流量控制:允许设置请求优先级。
6. 跨域解决方案有哪些?
-
CORS(推荐):
- 通过服务器配置允许特定来源跨域请求。
- 常用头部:
Access-Control-Allow-Origin
。
-
JSONP:
- 动态插入
<script>
标签,获取返回的JS数据。 - 仅支持GET请求。
- 动态插入
-
服务器代理:
- 前端请求自己的服务器,由服务器转发。
7. CDN原理与边缘计算
-
CDN原理:
- 将资源缓存到全球分布的边缘节点。
- 用户请求会被分配到最近的节点,提高加载速度。
-
边缘计算:
- 在靠近用户的节点上处理部分计算任务。
- 减少延迟,提高实时性。
8. 负载均衡与反向代理
-
负载均衡算法:
- 轮询:每个请求按顺序分配。
- 加权轮询:根据服务器性能设置权重。
- 一致性哈希:确保相同请求分配到相同服务器。
-
反向代理:
- 代理服务器接收用户请求并转发到内部服务。
- 提供缓存、负载均衡等功能。
9. HTTP/3 和 QUIC协议
-
HTTP/3特点:
- 基于UDP实现更快的连接建立。
- 无需TCP三次握手,减少延迟。
- 集成TLS加密。
-
QUIC协议优势:
- 即使切换网络(如Wi-Fi到4G),连接不会中断。
- 多路复用避免了TCP的“队头阻塞”。
10. 零拷贝技术
- 定义:数据从内存到网络传输时,不经过CPU拷贝,直接从硬盘或内存转发到网卡。
- 作用:大幅提高传输效率。
11. 服务端推送技术
-
HTTP/2 Server Push:
- 服务端在用户请求资源时,提前推送相关资源。
- 提高首屏渲染速度。
-
WebSocket:
- 实现全双工通信,适用于实时应用(如聊天、在线游戏)。
如果需要深入了解某个主题,可以进一步探讨!