Http请求过程?输入URL地址发生了什么?
- 首先通过 DNS 域名解析获取到具体的 IP 地址。
- 浏览器获得对应的IP地址后,向服务器三次握手建立连接。
- 连接建立后,浏览器向服务器发送HTTP请求。
- 服务器处理请求并返回HTTP报文给浏览器。
- 没有数据要发送后,就四次挥手断开连接。
- 客户端拿到服务器端传输来的文件后,解析HTML文件的html源码,解析CSS代码,然后构建渲染树,渲染树中的节点存放的是对应的CSS的属性,最后浏览器根据渲染树把页面绘制到屏幕上展示给了用户。
DNS解析过程(8个步骤)
-
如果主机a想给主机b发送数据,那么它必须知道主机b的ip地址。而dns域名解析就是帮助获取到具体的ip地址。解析过程是首先主机a会在缓存中查找主机b的ip地址,如果没命中,就查它的本地域名服务器,如果本地域名服务器没查到,就查根域名服务器,如果根域名服务器没命中,它就会告诉本地域名服务器去查询顶级域名服务器。如果顶级域名服务器没命中,它就会告诉本地域名服务器去查询权限域名服务器,权限域名服务器就会告诉本地域名服务器所查询主机的ip地址。然后本地域名服务器将查到的结果告诉主机,解析完成。这些域名服务器都设置了高速缓存来提高 DNS 的查询效率,比如前面已经查询过某个域名的 IP 地址了,再次查询时,本地域名服务器就不必向根域名服务器重新查询了,而是直接把高速缓存中存放的查询结果告诉用户。或者本地域名服务器的缓存中存放着顶级域名服务器的 IP 地址,那么本地域名服务器就可以不向根域名服务器进行查询,而是直接查询顶级域名服务器。
-
详细版:
(如果主机 m.xyz.com 打算发送数据给主机 y.abc.com,就必须知道主机 y.abc.com 的 IP 地址)
- 如果主机a想给主机b发送数据,那么它必须知道主机b的ip地址。于是主机a会先在缓存中查找主机b的ip地址,如果没命中,就对它的本地域名服务器(y.abc.com)进行递归查询。
- 本地域名服务器对根域名服务器进行迭代查询。
- 根域名服务器告诉本地域名服务器,下一次应该查询顶级域名服务器(dns.com)。
- 本地域名服务器查询顶级域名服务器。
- 顶级域名服务器告诉本地域名服务器,下一次应该查询权限域名服务器(dns.abc.com)。
- 本地域名服务器查询权限域名服务器。
- 权限域名服务器告诉本地域名服务器,所查询主机的 IP 地址。
- 本地域名服务器把查询结果告诉主机。
这 8 个步骤里,本地域名服务器经过了三次迭代查询,总共使用了 8 个 UDP 报文。还有就是这些域名服务器都设置了高速缓存来提高 DNS 的查询效率,比如前不久已经查询过某个域名的 IP 地址了,再次查询时,本地域名服务器就不必向根域名服务器重新查询了,而是直接把高速缓存中存放的查询结果告诉用户。或者本地域名服务器的缓存中存放着顶级域名服务器 dns.com 的 IP 地址,那么本地域名服务器就可以不向根域名服务器进行查询,而是直接查询顶级域名服务器。
- 根域名服务器:保存所有顶级域名服务器的域名和 IP 地址。
- 顶级域名服务器:管理在该顶级域名服务器下注册的二级域名。
- 权限域名服务器:保存所有主机的域名到 IP 地址的映射。(abc.com 和 y.abc.com)