这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记。 本篇笔记针对于回答爆火的面试题:“从用户输入网址到网页展示都发生了什么?”。我会基于时间顺序阶段性回答这个问题。
第一阶段:DNS 域名解析。
当我们输入网址后,网址中就包含目标主机的域名,但是计算机不能直接从域名找到目标主机,所以,首先需要把域名解析成 IP 地址。 域名解析通常由 DNS (Domain Name System)服务器负责。DNS 解析是基于 UDP 协议的,所以通常速度很快,解析过程中如果当前 DNS 服务器没有解析成功,会递归请求下一级 DNS 服务器进行解析。这个过程叫做递归解析。
第二阶段:HTTPS 请求与返回
在得到目标主机的 IP 地址后,客户端就可以向目标主机发送 HTTPS 请求。因为 HTTPS 是基于 TCP/IP 的,所以首先需要经过 IP 路由,三次握手建立 TCP 连接。HTTPS 请求发送后,会首先建立 TLS 安全连接,TLS 握手阶段会验证目标主机的证书和协商后续阶段需要使用的密钥。TLS 建立完成后,就会发送 HTTP 请求,服务器收到请求后,就会返回相应的信息。
FAQ
Timewait
Timewait 是 TCP 协议中一个比较复杂的概念。主要是防止连接异常关闭。主动关闭方在收到被动关闭方的FIN包后并返回ACK后,会进入TIME_WAIT状态,TIME_WAIT状态又称2MSL状态,每个TCP连接都必须有一个最大报文段生存时间MSL,在网络传输中超过这个时间的报文段将被丢弃。当TCP连接发起一个主动关闭,并发出最后一个ACK时,必须在TIME_WAIT状态停留两倍MSL时间,在2MSL等待期间,定义这个连接的插口(客户端IP地址和端口号,服务器IP地址和端口号的四元组)将不能再被使用。2MSL状态存在有两个理由:
-
1.允许老的重复报文分组在网络中消逝。\
-
2.保证TCP全双工连接的正确关闭。\
\