在浏览器输入网址后,
- 浏览器会先解析 URL,解析出域名、资源路径、端口等信息,准备发送 HTTP 请求,
- 检查浏览器缓存是否有缓存该资源,如果有就直接返回;没有的话就进入下一步网路请求;
- 接着进行DNS域名解析,来获取请求域名的 IP 地址,如果请求协议是 HTTPS,那么还会需要建立 TLS 连接,DNS 解析时会按照 本地浏览器缓存 -> 本地 host 文件 -> 本地 DNS 服务器 -> 根域名服务器 -> 顶级域名服务器 -> 权威域名服务器的顺序查询对应 IP,直到找到为止
- 由于 HTTP 是基于 TCP 传输的,还需要进行三次握手,在第一次握手的时候TCP头部会填上 SYN 标记位,和目标端口和源端口的信息,源端口是浏览器随机生成的,目标端口要看是 HTTP还是 HTTPS,分别默认是 80 和 443
- 然后到网络层,会加上IP头,同时填上目标IP地址和源IP地址。
- 然后到数据链路层,会通过ARP协议,获取路由器的MAC地址,然后会加上MAC头,填上目标MAC地址和源
MAC地址。 - 然后到物理层之后,直接把数据包,转发给路由器路由器再通过下一跳,最终找到目标服务器,然后目标服务器收到客户的 SYN 报文后,会响应第二次握手。
- 当双方都完成三次握手后,如果是 HTTP 协议,客户端就会将 HTTP 请求就会发送给目标服务器;如果是
HTTPS 协议,客户端还要和服务端进行 TLS 四次握手之后,客户端才会将HTTP报文发送给目标服务器。 - 目标服务器收到 HTTP 请求消息后,就返回 HTTP 响应消息,浏览器会对响应消息进行解析渲染,呈现给用户
以上就是输入网址之后,期间发生的事情。