从URL到页面展示

从我们输入一行网址到浏览器加载出一个漂亮的界面这个过程中发生了什么呢?

1.一些名词解释

  • URL(Uniform Resourse Locator):通常翻译为“统一资源定位器”,也就是人们说的“网址”,它用于指定Internet上的资源位置。URL由4个部分组成,协议+主机名+文件夹名+文件名。
  • IP地址(Internet Protocol Address,又译为网际协议地址)是指互联网协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
  • 域名(Domain Name):是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具”

比如:百度网站的IP是220.181.6.18
那串数字就是IP,“百度”这个名称就是这串IP的域名了。

  • DNS(Domain Name System):网域名称系统,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。每个域名都对应一个或多个提供相同服务服务器的 IP 地址,只有知道服务器 IP 地址才能建立连接,所以需要通过 DNS 把域名解析成一个 IP 地址。

2.过程

1. 输入地址
2. 浏览器查找对应的IP:

输入地址,按了回车之后,浏览器来找IP了,一般来说:

  • 浏览器首先会在本机上查找hosts文件中有没有对应的域名,有的话就直接用hosts文件中对应的IP地址;
  • 没有的话,就找LDNS——“本地DNS服务器”(本地区域名服务器,如果你在学校接入互联网,则 LDNS 服务器就在学校,如果通过电信接入互联网,则 LDNS 服务器就在你当地的电信那里)问下有没有这个域名,本地DNS服务器接到浏览器的求助之后,本地DNS服务器就开始查询它的缓存记录。如果有URL对应的IP地址,就直接告诉它。
  • 查找成功则返回结果,失败就要发生迭代DNS解析请求:
      1.LDNS 向 Root Name Server (根域名服务器,其虽然没有每个域名的的具体信息,但存储了负责每个域,如 com、net、org等的解析的顶级域名服务器的地址)发起请求,此处,Root Name Server 返回 com 域的顶级域名服务器的地址:
      2. LDNS 向 com 域的顶级域名服务器发起请求,返回 baidu.com 域名服务器地址;
      3. LDNS 向 baidu.com 域名服务器发起请求,得到 www.baidu.com 的 IP 地址;
      (域服务器:[.com域服务器],[.net域服务器],[.org域服务器])
  • 至此,LDNS 将得到的 IP 地址返回给操作系统,同时自己也将 IP 地址缓存起来;操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来(这样可以直接返回结果,方便下次查询,加快网络访问.);浏览器已经得到了域名对应的 IP 地址。
3. 浏览器根据IP地址向 web 服务器发送一个 HTTP 请求,浏览器根据IP与服务器建立Socket连接
4. 服务器处理请求,处理完毕,返回请求
5. 浏览器响应,显示HTML

3.建立连接--三次握手

知道了服务器的 IP 地址,下面便开始与服务器建立连接了。
通俗地讲,通信连接的建立需要经历以下三个过程:

  1. 主机向服务器发送一个建立连接的请求(您好,我想认识您);
  2. 服务器接到请求后发送同意连接的信号(好的,很高兴认识您);
  3. 主机接到同意连接的信号后,再次向服务器发送了确认信号(我也很高兴认识您),自此,主机与服务器两者建立了连接。
补充说明:
  • TCP 协议:三次握手的过程采用 TCP 协议,其可以保证信息传输的可靠性,三次握手过程中,若一方收不到确认信号,协议会要求重新发送信号。
《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”

4.网页请求与显示

当服务器与主机建立了连接之后,下面主机便与服务器进行通信。网页请求是一个单向请求的过程,即是一个主机向服务器请求数据,服务器返回相应的数据的过程。

  1. 浏览器根据 URL 内容生成 HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等;
  2. 服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的 HTML 文件;
  3. 服务器将得到的 HTML 文件发送给浏览器;
  4. 在浏览器还没有完全接收 HTML 文件时便开始渲染、显示网页;
  5. 浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)。

5.断开连接--四次挥手

  1. 主机向服务器发送一个断开连接的请求(不早了,我该走了);
  2. 服务器接到请求后发送确认收到请求的信号(知道了);
  3. 服务器向主机发送断开通知(我也该走了);
  4. 主机接到断开通知后断开连接并反馈一个确认信号(嗯,好的),服务器收到确认信号后断开连接;
补充说明:
  • 为什么服务器在接到断开请求时不立即同意断开:当服务器收到断开连接的请求时,可能仍然有数据未发送完毕,所有服务器先发送确认信号,等所有数据发送完毕后再同意断开。
  • 第四次握手后,主机发送确认信号后并没有立即断开连接,而是等待了 2 个报文传送周期,原因是:如果第四次握手的确认信息丢失,服务器将会重新发送第三次握手的断开连接的信号,而服务器发觉丢包与重新发送的断开连接到达主机的时间正好为 2 个报文传输周期。

你可能感兴趣的:(从URL到页面展示)