DNS与网络协议学习笔记

5 阅读6分钟

一、DNS相关知识点

1. 浏览器DNS缓存

  • 核心需求:解析速度越快越好
  • Chrome浏览器查看/操作入口:chrome://net-internals/#dns
  • 解析逻辑:搜索域名(domain)后,返回IP地址数组
  • 底层支撑:采用分布式服务器集群
  • IP地址特点:返回的是Nginx代理服务器IP,而非直接的应用服务器IP
  • 代理与负载均衡:代理服务器背后反向代理成百上千台应用服务器(类比“媒婆”,负责匹配请求与服务器);通过轮询机制,判断服务器负载,实现负载均衡
  • 地域优化:采用地域特性机房,优先在离用户最近的区域安排服务器集群,提升访问速度

2. 本地操作系统DNS缓存

  • 核心配置文件:hosts文件(本地域名与IP地址的映射配置文件,作用关键)

  • 应用场景:开发者本地测试(例:抖音开发者本地有官网代码,可通过配置hosts实现带域名的本地测试)

  • 配置示例:localhost douyin.com(将抖音域名映射到本地)

  • 关联知识点:cookie、token(与本地访问验证相关)

  • Windows系统操作:

    • hosts文件路径:C:\Windows\System32\drivers\etc\hosts
    • 编辑方式:管理员权限打开(win+r调出运行框),输入notepad C:\Windows\System32\drivers\etc\hosts

3. 特殊域名解析

  • 部分特殊域名(如localhost)无需DNS解析,可直接映射
  • 配置注意:# 符号为注释,配置时无需携带(例:127.0.0.1 www.baidu.com 正确,#127.0.0.1 www.baidu.com 为注释,不生效)

二、HTTP响应与传输相关

1. 200状态码与Content-Type

  • 常见响应:200 + Content-Type: text/html(表示请求成功,返回HTML类型内容)
  • 后续流程:返回下载内容后,进入传输(transport)阶段

2. 传输通道建立:TCP三次握手

  • 核心作用:建立可靠的TCP传输通道,是HTTP传输的基础

  • 具体流程:

    • A(客户端)向B(服务器)发送请求:SYN(序号j)
    • B向A响应:ACK(确认号j+1),同时可合并自身的SYN请求,确认双方发送/接收能力
    • 补充:理论上双方发送与接收确认需4次交互,第二次握手可合并,最终简化为3次

三、OSI七层协议

HTTP协议属于应用层协议,基于OSI七层架构实现数据传输,各层核心职责如下:

  • 物理层:传输二进制数据(0和1),依赖物理介质(如网线、光纤)

  • 数据链路层:封装mac地址+数据,mac地址是上网设备的唯一物理ID

  • 网络层:封装IP地址+mac地址+数据,负责将数据包送达目标主机

  • 传输层:制定数据传输规则,核心协议为UDP和TCP

    • UDP(用户数据报协议):

      • 特点:快速传输,无确认、重发、排序机制,允许数据丢失
      • 适用场景:视频、音频等实时传输场景
      • 补充:数据包有大小上限,大文件会拆分为多个数据包,分批次、分通道并发传输,可能出现丢失(需TCP/IP补充重发、排序)
    • TCP:

      • 特点:传输可靠,速度稍慢,确保数据完整到达
      • 核心机制:序号(解决数据包乱序问题)、确认(解决数据包丢失问题,超时重传)
      • 适用场景:浏览器请求、邮件等对数据可靠性要求高的应用
      • 数据封装:TCP(序号等)+ IP地址 + mac地址 + 数据

四、前端性能相关(FP与TTFB)

1. FP(First Paint,首次渲染时间)

  • 定义:从页面加载到首次开始绘制的时长,是前端性能核心指标之一
  • 计算公式:FP = TTFB + HTML DOM树构建时间 + CSSDOM时间 + 渲染树(RenderTree)构建时间 + 布局树构建时间 + 首次渲染时间

2. TTFB(Time To First Byte,首字节时间)

  • 定义:从浏览器发送请求到收到服务器返回第一个字节的时间
  • 组成部分:DNS解析时间(IP查找+负载均衡) + TCP/TLS连接时间 + 服务器执行时间(含慢查询) + 响应下载时间

3. 前端性能核心意义

  • 关键指标:页面加载速度、打开速度,直接影响用户留存、付费欲望及PV、UV数据
  • 优化方向:网络优化(基于OSI七层架构、IP、TCP/UDP、HTTP、TLS等协议),定位并解决Web性能问题

五、数据包传输相关

1. 互联网本质与数据包作用

  • 互联网:由一套理念和不同版本协议组成的体系架构
  • 数据传输载体:数据包(又称数据报),大文件会拆分为多个小数据包传输,提升带宽利用率和并发效率
  • 优化方式:利用带宽、多路复用技术,拆分数据为二进制数据帧传输

2. 各层对数据包的处理

  • 网络层(IP协议):通过IP地址将数据包送达目标主机,可能出现数据包丢失、出错问题

  • 传输层:负责确保数据到达目标应用

    • UDP:通过端口号定位目标应用,简单快速,适合实时应用,但无法满足HTML等Web资源的严格传输需求
    • TCP:解决UDP的不足,通过序号、确认、重传机制,确保数据包完整、有序到达

3. 补充:TCP四次挥手

  • 作用:终止TCP连接,双方需分别确认关闭发送和接收通道,共4次交互(无法像三次握手那样合并,因双方发送和接收通道需独立确认关闭)。
  • 核心前提:TCP是双向通信协议,连接建立后双方可同时发送和接收数据,因此关闭连接时,需分别关闭“发送通道”和“接收通道”,需四次交互完成。
  • 具体流程: 第一次挥手(客户端→服务器):客户端主动发起关闭请求,发送FIN报文(表示客户端不再发送数据,但仍可接收服务器数据),序号为u。
  • 第二次挥手(服务器→客户端):服务器收到FIN报文后,先发送ACK确认报文(确认号为u+1),表示已收到客户端的关闭请求,此时服务器仍可向客户端发送剩余数据。
  • 第三次挥手(服务器→客户端):服务器发送完所有剩余数据后,主动向客户端发送FIN报文(表示服务器不再发送数据,可关闭自身发送通道),序号为v。
  • 第四次挥手(客户端→服务器):客户端收到服务器的FIN报文后,发送ACK确认报文(确认号为v+1),表示已收到服务器的关闭请求;客户端需等待一段时间(确保服务器收到确认)后,彻底关闭连接,服务器收到确认后立即关闭连接。

补充说明:四次挥手无法合并的核心原因的是,第二次挥手仅确认“客户端发送通道关闭”,服务器此时可能仍有数据未发送,需完成数据传输后,再发起第三次挥手关闭自身发送通道,两次交互无法合并。