当你输入网址时都发生了什么(1)——URL解析与DNS

最近做Java Web也有一段时间了,既然做网站,那么怎么能对访问网站的流程没有一个基本的呢,所以就整理了一下从输入网址并回车的到成功访问到网站的一个过程。

简单来说,访问网址的过程大致可以分为五步:

1.解析URL。

2.浏览器发起DNS查询请求。

3.浏览器与网站建立连接。

4.进行数据的请求和传输。

5.浏览器根据服务器发回的内容解析并渲染页面。


这篇文章中我先介绍第一步和第二步。


首先我们先来看一下URL的格式:

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

protocol表示的是所使用的协议,比如:https://www.baidu.com/中,用到的协议就是Http协议

hostname表示的是主机名,可以是域名,也可以是IP地址

port表示传输协议使用的接口号,可以省略不写,如果省略不写,那么使用的是默认端口。

这三个内容应该是一段URL中最重要的内容。


对URL的解析中非常重要的一步就是得到我们要访问的网站的IP地址或域名。

 

我们知道,IP地址是一个用点分十进制法表示的长32位的地址,所以当我们访问一个网址,例如说www.baidu.com的时候,实际上访问的是一个类似于202.108.22.5这样的地址。那么如何将域名解析为地址,就是DNS需要做的。


首先,客户机会检查浏览器中是否缓存了域名所对应的IP地址,如果没有找到,那么就检查系统缓存,系统缓存中方没有,就检查路由器缓存,如果路由器中缓存还没有,就要去向本地域名服务器发起请求。

如果本地域名服务器还没有,就要去向根域名服务器发起请求。

我们先来看一下域名服务器的结构:

最高层次的域名服务器是根域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址,

接下来是顶级域名服务器,然后是权限域名服务器。


当本地域名服务器向根域名服务器发起查询时,该查询是一个迭代查询,这就意味着,根域名服务器要告诉本地域名服务器的内容,要么是一个我们要访问的域名对应的IP地址,要么是本地域名服务器该向哪个顶级域名服务器发起查询请求。当根域名服务器中没有我们要查询的确切IP地址时,根域名服务器会告诉本地域名服务器去哪个顶级域名服务器中查询,对于顶级域名服务器,也做类似操作。至于为什么是这样的查询结构,这主要是为了减少服务器的负担,具体的内容本文就不再讨论了。


而对于本地域名服务器来说,它给客户机返回的也只有两种情况,要么找到IP地址,并且返回;要么没有找到,返回报错。


当客户机成功接收到IP地址时,DNS的使命也就告一段落,但是此时我们的客户机只是知道了服务器的地址,链接还没有建立,就好比我们要去拜访一位朋友,现在只是知道了朋友家的地址,但是还没有登门拜访。


那么下一篇文章就介绍“敲门”和“开门”的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值