DNS 解析
DNS 解析的流程像 “层层问路”:
浏览器先查本地 DNS 缓存,如果有对应 IP,直接使用;
缓存没找到,本地域名服务器(比如运营商的 DNS 服务器)会先问根域名服务器;
根服务器不知道具体 IP,会指引本地服务器去问顶级域名服务器(.com 服务器);
顶级域名服务器再指引去问目标域名服务器(百度的 DNS 服务器);
最终拿到 IP 后,会把结果写入 DNS 缓存,方便后续复用。
浏览器做的第一件事不是直接请求数据,而是要知道这个域名对应的 IP 地址 —— 这就是 DNS(域名系统)的核心作用。
TCP-建立可靠连接
三次握手:
TCP 连接的建立必须经过三次 “确认”,少一次都不行:
客户端发 SYN 包:“我想和你建立连接”,客户端进入 SYN_SENT 状态;
服务器回 SYN-ACK 包:“我收到你的请求了,我也同意建立连接”,服务器进入 SYN_RECEIVED 状态;
客户端发 ACK 包:“我确认收到你的同意了”,客户端进入 ESTABLISHED 状态。
四次挥手:
TCP 断开连接需要四次交互,因为连接是双向的,关闭也需要双方确认:
客户端发 FIN 包:“我这边数据发完了,想断开连接”,客户端进入 FIN_WAIT_1 状态;
服务器回 ACK 包:“我收到你的断开请求了,你等我处理完剩余数据”,服务器进入 CLOSE_WAIT 状态;
服务器处理完数据后发 FIN 包:“我这边也处理完了,咱们断开吧”,服务器进入 LAST_ACK 状态;
客户端回 ACK 包:“确认断开”,客户端进入 TIME_WAIT 状态(等待 2MSL,确保服务器收到确认)。