- 用户输入URL地址
- 对URL地址进行DNS域名解析
- 进行TCP连接
- 进行HTTP报文的请求与响应
- 浏览器解析文档资源并渲染页面
DNS域名解析
- 浏览器根据url,在自身缓存中查找DNS中的解析记录。如果存在,则直接返回IP地址;如果不存在,则查找操作系统中的hosts文件是否有该域名的DNS解析记录,如果有就返回
- 若上一步没有解析记录,或者已过期,则向域名服务器发起请求解析这个域名。
- 先向本地域名服务器中请求,若解析不了,再向根域名服务器请求。
- 根域名服务器给本地域名服务器返回一个主域名服务器,本地域名服务器向主域名服务器发起解析请求。
- 主域名服务器收到解析请求后,查找并返回域名对应的域名服务器地址。
- 域名服务器会查询存储的域名和IP的映射关系,返回目标IP记录以及一个TTL(time to live)值。
- 本地域名服务器接收IP和TTL值,进行缓存,缓存的时间由TTL控制。
- 将解析的结果返回给用户,用户根据TTL值缓存在本地系统中,域名解析结束
TCP三次握手与四次挥手
TCP,一种面向连接的、可靠的、基于字节流的传输层通信协议。作用是将数据流从一台主机可靠的传输到另一台主机。
三次握手
- 第一次握手,起初客户端与服务器都处于CLOSED关闭状态,Client将标志位SYN置为1,随机产生一个seq = x,并将该数据包发送给Server,Client进入SYN-SENT状态,等待Server确认。
- 第二次握手,Server收到数据包后,由标志位SYN=1得知Client请求建立链接Server将标志位SYN和ACK都设置为1, ack=x+1,随机产生一个值seq = y,并将该数据包发送给Client。Server进入SYN-RCVD状态,此时操作系统为该TCP连接分配TCP缓存和变量。
- 第三次握手,Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK设置为1,ack=y+1。Server收到数据包后,检查ack是否为y+1,ACK是否为1,如果正确,则建立成功,完成三次握手。
四次挥手
浏览器渲染页面
- 解析HTML,生成DOM tree。
- 解析CSS,生成CSSOM tree。
- 结合DOM 和 CSSOM,生成Render TREE。
- 生成布局(layout),将所有渲染树的所有节点进行平面合成
- 将布局绘制(paint)在屏幕上