浏览器输入URL发生了什么
1.解析url(uniform resource locator)
协议:http或https
域名:www.example.com
路径:/page
参数:?q=query
2.DNS(domain name system)解析
检查本地是否有域名的ip地址记录
若本地缓存没有则查询ISP(Internet service provider)的DNS服务器
若ISP没有则递归查询根DNS服务器、顶级域名DNS服务器,直到找到对应的ip
3.建立连接
获得ip地址后,浏览器与该ip地址的服务器简历连接
TCP:通过三次握手过程(SYN,SYN-ACK,ACK),浏览器与服务器建立TCP连接
TLS:如果是HTTPS 浏览器和服务器通过tls协议建立安全加密连接
4.发送http请求
建立连接后,浏览器构建并发送一个http请求报文到服务器,报文包含
请求行:如GET /page1 HTTP/1.1
请求头:包含浏览器信息,cookies等
请求体:可有可无,如POST请求中的数据在请求体中
5.服务器处理请求
服务器接收到请求后,处理请求并生成响应
查询数据库
执行服务端脚本
生成HTML内容
6.返回HTTP响应
服务器将处理结果封装在HTTP响应报文中,发送回浏览器。
状态行:如 HTTP/1.1 200 OK
响应头:如Content-Type:text/html
响应体:如 HTML内容、图像、JSON数据等
7.浏览器解析响应
浏览器接收到响应后,开始解析和渲染内容
解析HTML:浏览器解析HTML文档,构建DOM数
解析CSS:如果HTML中包含CSS,浏览器会解析CSS并应用样式
解析JavaScript:如果HTML中包含JavaScript,浏览器会执行JavaScript代码
加载资源:如果HTML中包含其他资源如图像、视频、CSS、JavaScript文件,浏览器会发起后续的HTTP请求加载这些资源
8.渲染页面
浏览器根据解析结果,渲染最终的页面显示在用户面前
布局
绘制
总结
浏览器输入URL后的过程包括DNS解析、建立连接、发送HTTP请求、服务器处理请求、返回HTTP响应以及浏览器解析和渲染页面。每一步都涉及多个子步骤和复杂的技术细节,这些过程共同协作,实现用户从输入URL到看到完整网页的体验。