饥人谷技术博客

从URL输入到页面展现时发生了什么

2017-04-08  本文已影响20人  Aleph_Zheng

从我们输入一个网址(比如:www.baidu.com)时,到底发生了什么?为什么从这个网址我们就能打开相应的网页?
以下是我从网上找到的一些资料,结合自己的理解(对后端暂时不了解,有些细节无法详细解释),简单的流程概括。

1.输入网址(比如:www.baidu.com

▲首先:我们输入的网址成为URL(统一资源定位符),顾名思义,它是用来定位资源的,什么资源?直到是我们要获取的资源。

2.根据URL寻找IP地址。

▲什么是IP地址?
IP地址就像我们每间房子的地址一样,标志着我们每台联网的计算机的位置。

▲为什么要寻找IP地址?
我们需要找到的资源都存储在相应的服务器里(比如百度的所有资源都存储在百度的服务器里),我们要通过IP来找到这些资源,就像我们根据地址找到相应的目的地是一个道理的。

▲而为什么要通过IP来找?不能直接通过URL定位呢?
因为这些IP地址都是一堆数字,URL地址更有利于我们记忆(相信你记住www.taobao.com比记住192.157.2.5更方便)。

▲依据什么来找这个相应的IP地址呢?
这就涉及到URL到IP地址的转换流程,它不是单一的,根据便利性及速度,会有一个优先级别,就像我们买东西,都是找附近的超市看看有没有,再去远点的地方查找,最后实在没有了,甚至可以找到厂家。
▲查找流程有:
1、浏览器缓存 – 浏览器会缓存DNS记录一段时间
2、系统缓存 - 从 Hosts 文件查找是否有该域名和对应 IP。
3、路由器缓存 – 一般路由器也会缓存域名信息。
4、ISP DNS 缓存 – 比如到电信的 DNS 上查找缓存。
5、如果都没有找到,则向根域名服务器查找域名对应 IP,根域名服务器把请求转发到下一级,知道找到 IP

3.浏览器发送tcp连接请求向 ip地址对应的服务器(带SYN标志数据包)。

4.服务器收到tcp连接请求后,回复可以链接请求(有SYN/ACK标志的数据包)。

5.浏览器收到回传的数据,确认ok后,还会向服务端发送数据(带ACK标志的数据包)包表示三次握手结束。

6.三次握手成功后,浏览器和服务端开始tcp连接形式传输数据包。

7.服务器传给浏览所需要的资源数据。

8.浏览器获得数据,渲染网页然后呈现给用户。

上一篇下一篇

猜你喜欢

热点阅读