文章目录
一、数据传输过程
1. URL 解析
首先浏览器做的第一步操作就是对URL进行解析。
以 https://blog.csdn.net/weixin_48922154 为例:
- 先通过该URL检查是否是合法的URL。通过URL检测使用的协议,请求的服务器以及请求的文件。
- 再检查缓存,如果有该内容的浏览器缓存,那么就不需要请求服务器而直接显示页面。
- 否则,就通过解析这些信息之后,使用这些信息生成HTTP请求消息,包括:
- 请求行:请求的方法,请求URL和HTTP版本号。
- 首部:
- 请求首部:例如 ① Accept:用户代理可处理的媒体类型;② User-Agent:客户端程序信息等。
- 通用首部:例如 ① Cache-Control:控制缓存的行为;Date:创建报文的日期时间等。
- 实体首部:例如 ① Content-Encoding:实体主体适用的编码方式;② Content-Length:实体主体的大小((单位:字节)。
- 之后是一个空行,再之后就是请求的具体请求体数据。
2. DNS 解析
通过浏览器解析URL并生成HTTP报文之后,需要通过委托操作系统将消息发送给相应Web服务器。
在这之前可能会对浏览器的缓存做一次查询,如果命中缓存可能会直接返回,当然要区分缓存的类型,强缓存协商缓存等。
DNS解析就是将服务器的域名转化为IP地址的过程,因为所有节点都通过IP进行唯一标识,而IP记忆困难所以使用域名进行转化。
DNS在应用层中已经详细阐述了,具体内容在:
之前没有说清楚的一点内容是在进行 DNS 解析之前会先查询浏览器的 DNS 缓存以及 hosts 的配置文件。
为什么DNS使用UDP?&#