DNS详解

5 DNS

1) 概念

域名系统(Domain Name System,DNS))是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址

.因为IP地址是固定长度的,IPv4是32位,IPv6是128位,而域名是变长的,不便于计算机处理,IP地址对于用户来说不方便记忆,但域名便于用户使用,例如www.baidu.com这是百度的域名。**总结一点就是IP地址是面向主机的,而域名则是面向用户的。**域名可将一个IP地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的IP地址,也可以输入其域名,对访问而言,两者是等价的。

2) DNS系统

  1. 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系

  2. 如果新计算机接入网络,将这个信息注册到数据库中

  3. 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址

    4.在域名解析的过程中仍然会优先查找hosts文件的内容。

3) 域名的层次结构

这里写图片描述

eg :我们熟悉的,www.baidu.com
\1. com: 一级域名. 表示这是一个企业域名。同级的还有 “net”(网络提供商), “org”(⾮非盈利组织) 等。
\2. baidu: 二级域名,指公司名。
\3. www: 只是一种习惯用法。

域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等

这里写图片描述

其中顶级域名分为:国家顶级域名、通用顶级域名、反向域名。

国家顶级域名中国:cn, 美国:us,英国uk…
通用顶级域名com公司企业,edu教育机构,gov政府部门,int国际组织,mil军事部门 ,net网络,org非盈利组织…
反向域名arpa,用于PTR查询(IP地址转换为域名)

4) 域名服务器

域名是分层结构,域名服务器也是对应的层级结构。
有了域名结构,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。由高向低进行层次划分,可分为以下几大类:

分类作用
根域名服务器最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助
顶级域名服务器负责管理在该顶级域名服务器下注册的二级域名
权限域名服务器负责一个区的域名解析工作
本地域名服务器当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器

注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为区
我们需要注意的是:
\1. 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
\2. 每一级域名服务器都知道下级域名服务器的IP地址
\3. 为了容灾, 每一级至少设置两个或以上的域名服务器

5) 域名解析过程

①输入域名后,首先查询自己主机对应的根域名服务器,域名服务器先查找自己的数据库

②如果没有,就依次向上级数据库进行查找,依次类推

③最多回溯到根服务器就肯定能找到这个域名对应的ip地址

④ 域名服务器本身具有一定缓存的功能,可以将之前查找过的ip地址和域名对应起来

注意:本地域名服务器可以看成离当前用户最近的服务,本地即指浏览器,本机,路由器,ISP…,其中hosts文件在本机系统层面

具体可描述如下:
\1. 主机先向本地域名服务器进行递归查询
\2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
\3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
\4. 本地域名服务器向顶级域名服务器进行查询
\5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
\6. 本地域名服务器向权限服务器进行查询
\7. 权限服务器告诉本地域名服务器所查询的主机的IP地址
\8. 本地域名服务器最后把查询结果告诉主机
如图所示:
这里写图片描述

上文我们提出了两个概念:递归查询和迭代查询
(1)递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
(2)迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

通俗地说,递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完。
迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来办。

6) hosts文件

hosts文件是一个没有扩展名的系统文件,可以用记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。好处如下

加快域名解析,对于要经常访问的网站,可以通过在Hosts中配置域名和IP的映射关系,这样当输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问

hosts位置:C:\windows\system32\drivers\etc

添加hosts:按照 ip地址 域名 的格式添加单独的一行记录 182.61.171.72 www.axure.com , ip地址和域名之间,要有至少1个空格

案例:提高外网github.com的访问速度

一个域名对应多个P地址的时候,智能DNS服务器会根据请求的线路、地理位置等信息综合考虑,返回对于该请求最快的IP,让后将其配置到hosts文件中如

image-20210107083502063

7) Http请求的步骤

① 从浏览器地址栏输入域名

② 由DNS服务器解析为ip地址,详情为在5.5

③ 客户机与服务器建立TCP/IP服务(tcp的三次握手)

④ 浏览器向WEB服务器发送request(Http)请求

  • 一个Http请求报文包括请求行,请求头,请求体,空行四部分组成

  • 请求行中有三部分,请求方式(GET,POST…),请求地址URL,HTTP协议版本,技巧是将其理解为里面的内容

  • 请求头是由冒号分隔的键值对类型, 请求头部的最后会有一个空行,表示请求头部结束,请求头的信息是用来告诉服务器浏览器有哪些要求,例如哪个浏览器连接的哪个服务器,保持何种形式的连接,服务器应该发送何种字符,何种编码,何种语言…

    POST  /index.php HTTP/1.1    请求行
    
    Host: localhost
    
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头
    
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
    
    Accept-Language: zh-cn,zh;q=0.5
    
    Accept-Encoding: gzip, deflate
    
    Connection: keep-alive
    
    Referer: http://localhost/
    
    Content-Length:25
    
    Content-Type:application/x-www-form-urlencoded
    
      空行
    
    username=aa&password=1234  请求数据
    
  • 请求数据不在GET方法中使用,而在POST方法中使用。POST方法适用于需要客户填写表单的场合,格式通常为username=aa&password=1234,在GET请求中就是url地址栏?后面的部分

⑤ 服务器处理浏览器的request请求,并将响应信息response发送给客户机浏览器

  • 一个Http响应报文由响应行,响应头,响应主体,空行组成

  • 状态行中有响应状态码如下图,协议版本(与请求报文版本一致)

    img
  • 响应头部,如果将请求头立理解为浏览器向服务器要求的响应格式的话,那么响应头就可以看做服务器告诉浏览器具体是如何响应的

    img
    HTTP/1.1 200 OK  状态行
    
    Date: Sun, 17 Mar 2013 08:12:54 GMT  响应头部
    
    Server: Apache/2.2.8 (Win32) PHP/5.2.5
    
    X-Powered-By: PHP/5.2.5
    
    Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
    
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    
    Pragma: no-cache
    
    Content-Length: 4393
    
    Keep-Alive: timeout=5, max=100
    
    Connection: Keep-Alive
    
    Content-Type: text/html; charset=utf-8
    
      空行
    
     
    
    <html>  响应数据
    
    <head>
    
    <title>HTTP响应示例<title>
    
    </head>
    
    <body>
    
    Hello HTTP!
    
    </body>
    
    </html>
    

⑥ 浏览器收到response后开始解析HTML代码并请求HTML代码中的静态资源(css,js,jquery,img,video),每个静态资源都意味着浏览器要发送一条请求去获取,如baidu.com

image-20210107094820477

⑦ 断开TCP/IP连接,浏览器利用自己内部的工作机制,把请求到的静态资源和HTML代码进行渲染,呈现给用户。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值