← 返回目录

第 11 卷

第 11 / 21 卷日期:

  1. 检测预解析效果:通过浏览器开发者工具(Chrome的“Network”面板→“DNS”选项卡)查看

预解析状态,确认是否成功缓存解析结果,避免配置错误导致优化失效。

✅ 核心要点总结

DNS预解析的核心是“提前占位,异步并行”,将DNS解析耗时从资源加载阶段提前到页面空闲阶段,是低成本、高收益的前端优化手段。实际应用中,需结合页面资源分布,通过主动标签配置+动态

触发的方式精准预解析必要域名,同时避免过度优化,确保性能提升的同时不增加额外负担。

  1. TCP和UDP的基本区别是什么?

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是TCP/IP协议簇中最核心的两个传输层协议,分别面向“可靠传输”和“高效传输”设

计,核心差异体现在“可靠性、连接性、传输效率”等维度,具体区别如下:

一、核心区别对比(面试必背,10个核心维度)

对比维度TCPUDP
连接性面向连接:通信前必须通过三无连接:通信前无需建立连
次握手建立TCP连接,通信结接,直接发送数据,发送方和
束后需四次挥手关闭连接接收方无状态关联
可靠性可靠传输:通过序列号、确认不可靠传输:无确认应答、无
应答、重传机制、流量控制、重传机制,数据可能丢失、重
拥塞控制等保障数据准确、完复、乱序到达,接收方不返回
整、有序到达,无丢失、无重确认信息

复

传输效率效率低:连接建立/关闭、确效率高:无额外开销,数据直
认应答、重传等机制会产生额接发送,延迟低、吞吐量高,
外网络开销和延迟,适用于对适用于对效率要求高的场景

效率要求不高的场景

数据有序性有序传输:通过序列号标记数无序传输:数据以数据报为单
据顺序,接收方按序列号重组位独立发送,接收方按到达顺
数据,确保数据按发送顺序到序处理,无法保证与发送顺序
达一致
流量控制支持:通过滑动窗口机制,根不支持:发送方无限制发送数
据接收方的缓存大小动态调整据,不考虑接收方处理能力,
发送速率,避免接收方因资源可能导致接收方数据溢出丢失

不足无法处理数据

拥塞控制支持:通过慢启动、拥塞避不支持:发送方无视网络状态
免、快速重传、快速恢复等算持续发送数据,可能在网络拥
法,检测网络拥塞并调整发送塞时导致大量数据丢失,加剧
速率,避免加剧网络拥堵拥堵
头部开销头部较大:TCP头部固定20字头部较小:UDP头部固定8字
节,包含序列号、确认号、窗节,仅包含源端口、目的端
口大小等多个字段,额外开销口、数据长度、校验和,额外
大开销小
适用场景适用于要求可靠、有序的场适用于要求高效、实时的场
景:HTTP/HTTPS、FTP、景:DNS解析、视频/音频流
SMTP、SSH、数据库连接传输(如直播、短视频)、实
(如MySQL)等时通讯(如微信语音/视

频)、游戏数据传输等

21. 描述TCP的三次握手

TCP三次握手是客户端与服务端建立可靠TCP连接的过程,核心目的是通过双向通信确认双方的“发送能力”和“接收能力”均正常,同时协商初始序列号(ISN),为后续可靠数据传输奠定基础。因需三

次交互,故称为“三次握手”,具体过程基于TCP报文的“标志位”(SYN、ACK)和“序列号”(Seq)实现。

一、核心概念铺垫

• 标志位:TCP报文头部的控制位,三次握手核心使用2个: SYN(同步位,用于发起连接、同步序

列号)、 ACK(确认位,用于确认接收的报文);

• 序列号(Seq):用于标识TCP报文的顺序,确保数据按序重组,避免丢失或乱序;初始序列号

(ISN)由双方随机生成,不重复;

• 确认号(Ack):表示“期望接收的下一个序列号”,即对收到的Seq的确认(Ack = 对方发送的

Seq + 1)。

此时客户端状态变为 SYN_SENT(等待服务端确认),服务端未明确客户端接收能力,仅知道客户端发送能力正常。

  1. 第二次握手(服务端→客户端:确认连接+同步自身序列号):

服务端监听端口并接收客户端的SYN报文后,确认“客户端发送能力正常”,随即回复“确认+同步报文”,报文特征: SYN=1(同步自身序列号)、 ACK=1(确认客户端的SYN报文)、

Seq=y(y为服务端生成的初始序列号,如y=200)、 Ack=x+1(确认收到客户端Seq=x,期望下次接收x+1);

此时服务端状态变为 SYN_RCVD(等待客户端最终确认),客户端未明确服务端接收能力,仅知道服务端发送能力正常。

  1. 第三次握手(客户端→服务端:最终确认):

客户端接收服务端的SYN+ACK报文后,确认“服务端发送能力和接收能力均正常”,随即回复“最终确认报文”,报文特征: ACK=1(确认服务端的SYN报文)、 Seq=x+1(客户端序列号递

增)、 Ack=y+1(确认收到服务端Seq=y,期望下次接收y+1);

此时客户端状态变为 ESTABLISHED(连接建立完成),服务端接收该ACK报文后,状态也变为 ESTABLISHED,双方正式进入“数据传输阶段”。

✅ 核心要点与面试高频问题

  1. 为什么需要三次握手,而非两次?

答:核心是“避免历史无效连接干扰”和“完整验证双向通信能力”。若仅两次握手,服务端发送 SYN+ACK后即认为连接建立,但客户端可能因网络延迟未收到该报文,服务端会持续等待数据,浪

费资源;三次握手通过客户端的最终ACK,确保双方均确认“对方能发、自己能收”,且无历史无效连接残留。

  1. 三次握手过程中,Seq序列号为什么是随机的?

答:避免与“历史连接的残留报文”混淆。若Seq固定为0或1,当网络中存在历史连接的延迟报文时,可能被当前连接误判为有效数据,导致数据传输错误;随机生成ISN可大幅降低序列号重复的

概率,保障传输安全性。

  1. 三次握手完成后,双方已协商好哪些核心信息?

答:双方的初始序列号(客户端ISN=x,服务端ISN=y)、窗口大小(后续流量控制使用)、MSS (最大报文段长度,避免IP分片)等。

22. 解释TCP的四次挥手断开连接过程

全站分卷索引 · 21 卷
  1. 1第 1 卷
  2. 2第 2 卷
  3. 3第 3 卷
  4. 4第 4 卷
  5. 5第 5 卷
  6. 6第 6 卷
  7. 7第 7 卷
  8. 8第 8 卷
  9. 9第 9 卷
  10. 10第 10 卷
  11. 11第 11 卷
  12. 12第 12 卷
  13. 13第 13 卷
  14. 14第 14 卷
  15. 15第 15 卷
  16. 16第 16 卷
  17. 17第 17 卷
  18. 18第 18 卷
  19. 19第 19 卷
  20. 20第 20 卷
  21. 21第 21 卷