首先我们先通过下面这张图片来简单了解一下这个过程。
接下来我们来仔细理一理这个流程
1.输入URL并点击回车,这个时候,我们的浏览器,会现在浏览器缓存中,找是否有这个主机名对应的ip地址的缓存,如果有的话,直接访问ip地址对应的机器,没有的话,就去通过本地的hosts文件,这个文件在C:\Windows\System32\drivers\etc这个目录下,去查看是否有和该主机名对应的IP地址,有的话就访问。
2.在浏览器缓存和本机hosts文件均匹配不到的情况下,我们要通过DNS服务器去查询主机名对应的ip地址,如果查不到,就会报找不到ip地址的错误。
3.然后我们就会尝试连接服务器并想该服务器发送http请求,这个http请求包含三个部分,分别为请求行,请求头,以及请求体。注意请求头和请求体直接要通过一个空行来区分。请求行中主要包括了请求方式,web应用的资源地址,http协议版本。
4.服务器先对http请求的URL进行解析,这里为什么要对这个URL进行解析呢?一开始我也很奇怪,明明你拿到了ip地址,并且通过ip地址找到了这个主机,再对主机名进行解析不是多此一举?后来再琢磨的时候记起来,如Tomcat这样的服务器当中是有虚拟主机这个概念的,可以方便我们通过不同的主机名访问同一ip下的不同web应用。这样就解释的通了。
5.最后服务器解析出请求当中的资源路径(资源路径对的情况下,否则会报404),并通过浏览器对返回的资源进行渲染,这样,我们就能再浏览器当中看到,我们想要访问的资源啦。