LD is tigger forever,CG are not brothers forever, throw the pot and shine.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code,Keep progress,make a better result.
目录
概述
大学里面我们知道计算机网络,但是我们会分析到应用分析,HTTP分析也是
基于三次握手的。很多深入到细节都是太不需要的,因为状态码就帮我指明了原因,也很难用到HTTPwatcher 和wireshakr专业工具等。
需求:
设计思路
URL 解析
DNS 查询
TCP 连接
处理请求
接受响应
渲染页面
实现思路分析
1.URL 解析
一、
地址解析:
首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。
HSTS
由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面
其他操作
浏览器还会进行一些额外的操作,比如安全检查、访问限制(之前国产浏览器限制 996.icu)。
- 浏览器缓存
浏览器会先检查是否在缓存中,没有则调用系统库函数进行查询。
- 操作系统缓存
操作系统也有自己的 DNS缓存,但在这之前,会向检查域名是否存在本地的 Hosts 文件里,没有则向 DNS 服务器发送查询请求。
- 路由器缓存
路由器也有自己的缓存。
- ISP DNS 缓存
ISP DNS 就是在客户端电脑上设置的首选 DNS 服务器,它们在大多数情况下都会有缓存。
根域名服务器查询
在前面所有步骤没有缓存的情况下,本地 DNS 服务器会将请求转发到互联网上的根域.
TCP/IP 分为四层,在发送数据时,每层都要对数据进行封装:
在前面的步骤我们已经得到服务器的 IP 地址,浏览器会开始构造一个 HTTP 报文,其中包括:
请求报头(Request Header):请求方法、目标地址、遵循的协议等等
请求主体(其他参数)
其中需要注意的点:
浏览器只能发送 GET、POST 方法,而打开网页使用的是 GET 方法
五、浏览器接受响应
浏览器接收到来自服务器的响应资源后,会对资源进行分析。
首先查看 Response header,根据不同状态码做不同的事(比如上面提到的重定向)。
如果响应资源进行了压缩(比如 gzip),还需要进行解压。
然后,对响应资源做缓存。
接下来,根据响应资源里的 MIME[3] 类型去解析响应内容(比如 HTML、Image各有不同的解析方式)。
拓展实现
无,
相关工具如下:
无
实验效果:(解决思路)
无
分析:
无
小结:
主要讲述了关于HTTP自己的一些体会,里面有许多不足,请大家指正~
参考资料和推荐阅读
1.深入理解HTTP协议、HTTP协议原理分析.
2.HTTP协议详解(真的很经典).
3.面试官问:浏览器输入 URL 回车之后发生了什么?.
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~