从浏览器地址栏输入url到页面展示的过程中发生了什么?

423 阅读2分钟

这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战 从浏览器地址栏输入url到页面展示的过程中,一共有两个进程,分别是网络进程和渲染进程。

网络进程

网络进程可以分成 解析URL、封装http报文、DNS寻址、传输层TCP传输报文、网络层IP协议查询Mac地址、数据达到数据链路层、服务器接受数据、服务器响应请求、服务器返回相应文件。

解析url

当url在浏览器的地址栏输入,并按下回车键后。浏览器会解析该url,获取url中的协议、域名、资源路径。

image.png

封装HTTP报文

用于 HTTP 协议交互的信息被称为 HTTP 报文,本身是由多行数据构成的字符串文本。报文又分为请求报文响应报文

22052766395d2ebba87604efix732.jpeg

请求报文

请求端(客户端)的 HTTP 报文叫做请求报文。HTTP 报文大致可分为请求行、请求头、(空行)、请求主体。

请求行:请求方法(Method) + 空格 + 统一资源标识符(URI) + 空格 + HTTP版本 + CR LF ;

请求头:字段名 + 冒号 + 值 + CR LF ;

空行: 回车符(CR)+ 换行符(LF) ;

请求体: 由用户自定义添加,如post的body等;

image.png

响应报文

响应端(服务器端)的叫做响应报文。响应报文结构与请求报文结构唯一的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。

状态行:HTTP版本 + 空格 + 状态码 + 空格 + 状态码描述 + CR LF ;

响应头:字段名 + 冒号 + 值 + CR LF ;

空行: 回车符(CR)+ 换行符(LF) ;

响应体: 由用户自定义添加,如post的body等;

响应状态码

状态代码由服务器发出,以响应客户端对服务器的请求。 1xx(信息):收到请求,继续处理 2xx(成功):请求已成功接收,理解和接受 3xx(重定向):需要采取进一步措施才能完成请求 4xx(客户端错误):请求包含错误的语法或无法满足 5xx(服务器错误):服务器无法满足明显有效的请求

DNS寻址

image.png

渲染进程