HTTP细节
题目分析:“当我们在浏览器地址栏中输入一个URL
地址,到最后看到页面,中间都经历了哪些事情?”
1、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有数据,就会直接在页面中显示。
2、在发送Http
请求前,进行域名解析(DNS解析:DNS-域名系统,将域名和IP地址相互映射的一个分布式数据库,类似别名),获取相应的IP地址。
3、浏览器向服务器发起TCP连接,与浏览器建立TCP三次握手。
4、握手成功后,浏览器向服务器发送Http请求,请求数据包。
5、服务器处理收到的请求,将数据返回到浏览器。
6、浏览器收到Http响应,读取页面内容,浏览器渲染,解析html
源码,生成DOM
树、解析CSS
样式、JS
交互。
7、客户端和服务器交互,Ajax
查询:
- 浏览器缓存:浏览器会记录
DNS
一段时间,先在这里解析DNS
请求。 - 操作系统缓存:如果在浏览器缓存中不包含这个记录,就会调用操作系统,获取系统的缓存记录(保存最近的
DNS
查询缓存)。 - 路由器缓存:如果上面两个步骤不能成功获取
DNS
记录,继续搜索路由器缓存。 - ISP缓存:如果上面都失败,继续向
ISP
搜索。
内网IP
内网(局域网:具备相同的DNS
和默认网关,并且由相同的路由器下发的IP
),限定在一定区域内访问的。
- 自测(开发自己测试)
- 内侧(上传到公司内网测试服务器上,由公司测试进行
BUG
追踪) - 公测(产品正式部署到外网服务器上)
Hash值
- #xxx
URL
末尾传递的#
作用
1、页面中锚点定位
前端路由(SPA单页面开发)