输入URL 后浏览器完整的解析过程:
1.用户输入网址,浏览器发起DNS请求查询缓存:
具体过程:
DNS(域名解析),1.浏览器会首先检查缓存中有没有被解析过这个ip地址,如果有解析结束,
2.如果浏览器缓存中没有命中,浏览器会检查操作系统 etc文件下一个叫hosts的文件中
3.如果还是没有命中 ,去本地域名服务器LDNS查找
4.如果还是没有命中, 跳到跟root service域名服务器
根域名服务器返回给本地域名服务器所查询的主域名服务器(.com/cn)
本地服务器再发请求到主域名服务器
主域名服务器收到请求再返回Name Service 地址 ,这个Name Service就是网站注册的域名服务器
根据映射表找到Name Service 对应的ip地址返回给本地域名服务器
本地域名服务器缓存这个ip和域名
本地域名服务器把解析结果返回给用户,浏览器根据TTL值(生存时间值)缓存到本地
TCP连接 三次握手
具体的三次握手:
客户端向浏览器端发送 SYN请求信号,和seq顺序码 seq = n 等
服务器收到后返回ACK确认包、Ack =n+1 和seq 顺序码 seq = m
客户端收到后发生ACK确认 和 Ack = m+1
完成三次握手
发起Http请求
客户端向服务器发送http请求;
服务器响应
浏览器解析渲染页面
浏览器渲染过程:
大概的浏览器渲染过程:
浏览器将HTML、SVG等解析成DOM Tree、将CSS资源解析成CSS Tree
JS通过DOM API 和CSSOM API来操作DOM树和CSS树
最终综合DOM Tree 和CSS Tree 生成 Rendering Tree 然后通过layout和reflow过程完成网页初始化!