在浏览器输入一个网址后,究竟发生了什么?

我们每天在浏览器上输入一个个网址后,随着网页的不断跳转和变化,我们浏览着我们所需要的页面和信息,那么在我们输入网址URL后,到底发生了什么呢?

地址栏输入URL发生了什么?

●首先,你需要在浏览器中的URL地址上,输入你想访问的地址,如下
在浏览器输入一个网址后,究竟发生了什么?_第1张图片
你应该访问不到的,嘻嘻~

●然后,浏览器会根据你输入的URL地址,去查找域名是否被本地DNS缓存,不同浏览器对DNS的设置不同,如果浏览器缓存了你想访问的URL地址,那就直接返回ip。
如果没有缓存你的URL地址,浏览器就会发起系统调用来查询本机hosts 文件是否有配置ip 地址,如果找到,直接返回。如果找不到,就向网络中发起一个DNS查询。

什么是DNS?

DNS的全称是域名系统(Domain Name System, 缩写: DNS), 它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

URI / URL

我们上面提到,你可以通过输入www. google. com地址来访问谷歌的官网,那么这个地址有什么规定吗?
我怎么输都可以?
AAA.BBB.CCC是不是也行?
当然不是的,你输入的地址格式必须要满足URI的规范。

URI的全称是 (Uniform Resource Identifier) ,中文名称是统一资源标识符,使用它就能够唯一地标记互联网.上资源。

URL的全称是 (Uniform Resource Locator) ,中文 名称是统一资源定位符,也就是我们俗称的网址,它实际上是URI的一个子集。
URI不仅包括URL,还包括URN (统一资源名称),它们之间的关系如下
在浏览器输入一个网址后,究竟发生了什么?_第2张图片
在浏览器输入一个网址后,究竟发生了什么?_第3张图片
DNS运行在UDP上,使用53端口。

DNS与IP地址的转化关系如图:
在浏览器输入一个网址后,究竟发生了什么?_第4张图片

DNS是一种分层数据库,它的主要层次结构如下

在浏览器输入一个网址后,究竟发生了什么?_第5张图片
**一般域名服务器的层次结构主要是以上三种,除此之外,还有另一类重要的DNS服务器,它是本地DNS服务器(local DNS server) 。严格来说,本地DNS服务器并不属于上述层次结构,但是本地DNS服务器又是至关重要的。每个ISP(Internet Service Provider) 比如居民区的ISP或者一个机构的ISP都有一台本地DNS服务器。当主机和ISP进行连接时,该ISP会提供一台主机的IP地址,该主机会具有一台或多台其本地DNS服务器的IP地址。

通过访问网络连接,用户能够容易的确定DNS服务器的IP地址。当主机发出DNS请求后,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次系统中。

首先,查询请求会先找到本地DNS服务器来查询是否包含IP地址,如果本地DNS无法查询到目标IP地址,就会向根域名服务器发起一个DNS查询。

注意: DNS涉及两种查询方式: -种是递归查询(Recursive query),-一种是 迭代查询(Iteration query) 。
在这里插入图片描述
在由根域名服务器->顶级域名服务器->权威DNS服务器后,由权威服务器告诉本地服务器目标IP地址,再有本地DNS服务器告诉用户需要访问的IP地址。

第三步,浏览器需要和目标服务器建立TCP连接,需要经过三次握手的过程。

在建立连接后,浏览器会向目标服务器发起HTTP-GET 请求,包括其中的URL, HTTP 1.1后默认使用长连接,只需要一次握手即可多次传输数据。
如果目标服务器只是一个简单的页面,就会直接返回。但是对于某些大型网站的站点,往往不会直接返回主机名所在的页面,而会直接重定向。
返回的状态码就不是200,而是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新第一步访问即可。
然后浏览器重新发送请求,携带新的URL,返回状态码200 OK,表示服务器可以响应请求,返回报文。

你可能感兴趣的:(笔记,网址)