输入URL到页面加载过程详解
地址栏输入URL
URL即统一资源定位符,它实际上就是网站网址,浏览器就是靠URL来查找资源位置,可以把URL分割成几个部分:协议、网络地址、资源路径
-
传输协议
- URL包含协议部分,是浏览器和www万维网之间的沟通方式,它会告知浏览器正确在网路上找到资源位置。最常见的网络传输协议的是HTTP协议;其他还有ftp、file、https、mailto、git等。还有自定义的协议,例如tencent,不同协议有不同的通讯内容格式
-
网络地址
- 指示该连接网络上哪一台计算机,可以是域名或者IP地址、可以包括端口号
-
资源路径
- 指示从服务器上获取哪一项资源
例如:http://www.zhihu.com/question/123666/
- 协议部分:http
- 网络地址:www.zhihu.com
- 资源路径:/question/123666/
- 子主题 4
DNS域名解析IP
基础概念
-
IP地址
- IP协议为互联网上的每一个网络和每一台主机分配的一个逻辑地址,IP地址如同门牌号码,通过IP的地址才能确定一台主机位置,服务器本质也是一台主机,想要访问某个服务器,必须先知道它的IP地址
-
域名DN(domian name)
- 域名是为了识别主机名称和组织机构名称的一种具有分层的名称,IP地址由四个数字组成,中间用点号连接,在使用过程难记忆且容易输错,所以用我们熟悉的字母和数字组合来代替纯数字的IP地址
-
计算机域名系统(DNS)
- 它是由域名解析器和域名服务器组成的,域名服务器是保存该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器,每个域名都对应一个或多个提供相同服务的服务器的IP地址,只有知道服务器IP地址才能建立连接,所有需要通过DNS把域名解析成一个IP地址
查找域名对应的IP地址
通过域名查询IP过程
-
浏览器缓存->系统缓存->本地DNS服务器缓存
- 浏览器搜索自己的DNS缓存(维护一张域名与IP地址对应表)
- 搜索操作系统中的DNS缓存(维护一张域名与IP地址对应表)
- 搜索操作系统的hosts文件(windows环境下,维护一张域名与IP地址对应表)
- 操作系统将域名发送到本地区域服务器(LDNS),进行查找,成功则返回结果,失败则发起一个迭代DNS请求
- 本地域名服务器LDNS将得到的IP地址返回给操作系统,同时也将IP地址缓存起来
- 操作系统将IP地址返回给浏览器,同时将IP地址缓存起来
DNS迭代查询和递归查询
-
递归查询
- 客户端与服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身帮你解析,会向另一个DNS服务器发出查询请求,最后将结果转交给客户端的过程。服务器必须回答目标IP地址与域名的映射关系
-
迭代查询
- DNS服务器之间属于迭代查询,服务器接收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其他DNS服务器的地址
请求和响应数据
TCP连接建立
- 通过DNS解析后找到IP地址后就可以建立TCP连接了,建立连接需要TCP三次握手
发送HTTP请求
- 与服务器建立了连接后,就可以向服务发起请求了
服务端处理请求
- 服务器端接收到请求后由web服务器处理请求,诸如apache、nginx、iis等。web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,最后将结果通过web服务器返回给浏览器客户端
返回HTTP结果
- 服务器端处理完请求后就会发送响应结果,响应报文分为报文首部、空行、报文主体三部分组成
TCP连接关闭
- 为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求,与创建TCP连接的三次握手相似,关闭TCP连接需要四次挥手