1.浏览器输入URL后,点击回车产生在操作系统中会产生一个浏览器上的一个事件,同时触发了浏览器提前为这个事件绑定好的一组动作。(控制权转移到浏览器)。
2.浏览器判断输入的是不是URL?
如果不是URL,浏览器会使用内部设置的默认搜索引擎网站进行搜索操作。
如果是URL,会按照正常URL的方式处理。
3.浏览器处理HTTP协议(应用层角度)
1.把URL解析成(协议、域名、端口、Path)。
2.域名解析,将域名转换为IP(逐层向上询问IP),如果有就拿到IP,如果没有就显示连接到服务器。
3.发起TCP连接(HTTP基于TCP),建立TCP连接。
4.发起HTTP请求;请求格式(GET + URL + Version + 请求头)。
5.等待HTTP响应;按照响应格式解析(是否成功、响应内容类型)。
6.拿到响应的内容,按照响应内容的格式解析响应内容。
7.如果有附带的资源,比如JS、CSS、多媒体信息,浏览器会发起新的请求,把所有需要的资源全部请求下来。
8.如果需要运行JS代码,就运行JS代码得到一颗修改后的DOM树,并且结合CSS做渲染。
9.提交操作系统显示。
**浏览器的角色:**用户的响应器、DNS的客户、HTTP客户端、HTML、CSS、JS解析器、JS虚拟机、CSS渲染器。
单独一个应用层包的过程
1.建立TCP连接。
2.三次握手建立TCP连接。
3.网络层拿到应用层数据,在传输层封装TCP头信息(源端口,目标端口,序列号、ACK、确认序列号)。
4.传输层将数据交到网络层,网络层对数据再次封装IP协议头信息(源IP、目标IP、TTL、长度)。
5.通过ARP协议(介于数据链路层和网络层的协议)获取目标MAC地址。
5.网络层将数据交到数据链路层,链路层封装MAC地址。
6.通过物理层将数据传输到目标。
7.数据到达目标地址后进行解包。