Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

动态域名解析 #29

Open
lxy666 opened this issue Mar 21, 2018 · 2 comments
Open

动态域名解析 #29

lxy666 opened this issue Mar 21, 2018 · 2 comments

Comments

@lxy666
Copy link

lxy666 commented Mar 21, 2018

我们在用的河狸家前端开发插件,可以知道你电脑的 IP ,然后绑定到一个*dev.helijia.com 的域名上。很方便哦,但是怎么做到的呢?

你只知道插件的源码是在 git.hlj.team 的这个仓库内:
web/hlj-chrome-extension

你能顺藤摸瓜找到背后的原理吗?试试能回答多少个为什么?

任务:

  • 调查动态域名解析的原理,画出网络拓扑图

技能:
开发工具

问题

  1. 域名
  2. 域名的组成
  • 常见的顶级域名
  • 中国的二级域名系统
  • 根域、顶级域、二级域
  • 根域名服务器
  1. 域名解析
  2. 域名解析的作用
  3. 域名解析的过程
  4. . 以访问www.taobao.com为例,一次完整的域名解析流程
  5. 动态域名解析
  6. 网络映射
  7. 动态域名解析的过程
  8. 动态域名解析的作用

域名

要了解域名解析,就要先了解IP地址,因为域名其实是为了解决IP地址的问题而产生的概念。

1.什么是ip地址?

IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。

IP地址是IP协议提供的一种统一的地址格式,就像我们现实中的门牌号一样,每一个建筑物都会有独特唯一的地址,而IP地址则是为每个链接到网络的计算机设备提供了一个IP地址。

现在的IP地址由于数量限制,会存在很多电脑设备共用一个IP地址的情况,甚至有可能是整个小区或者是大厦会共用一个IP地址。

现在有两种IP地址格式,一种是IPv4和IPv6.

IPv4是一个32位的二进制数,通常用“点分十进制”表示成(a.b.c.d)的形式,例如:101.45.15.6。

IPv6是为了解决IPv4地址不够用的问题,其地址长度为128b,是IPv4地址长度的4倍,这样就可以容纳更多的IP地址。

查询IP地址的工具
IP/服务器地址查询 - 站长工具

域名

域名(英语:Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

网域名称系统(DNS,Domain Name System,有时也简称为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

例如,www.wikipedia.org是一个域名,和IP地址208.80.152.2相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打wikipedia的名字来代替电话号码(IP地址)。我们直接调用网站的名字以后,DNS就会将便于人类使用的名字(如www.wikipedia.org)转化成便于机器识别的IP地址(如208.80.152.2)。

域名可以分为两部分:主体和后缀

百度网站的域名是http://baidu.com
主体是baidu
后缀是.com
www是域名 http://baidu.com 的二级域名我们在注册域名的时候,只能注册“主体.后缀”的形式的域名,前面的www或其他内容在我们注册成功后可以自行在域名解析后台进行设置。

域名的组成

一个完整的域名由多级域名组成,每级域名之间用“.”分割,基本格式:

主机名.机构名.网络名.地区名或行业名
n级域名...三级域名.二级域名.顶级域名

常见的顶级域名

中国的二级域名系统

我国的二级域名又分为类别域名和行政区域名两类。类别域名共7个,包括用于科研机构的ac;国际通用域名com、top;用于教育机构的edu;用于政府部门的gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。

根域、顶级域、二级域

几种DNS

权威DNS

权威DNS即最终决定域名解析结果的服务器,开发者可以在权威DNS上配置、变更、删除具体域名的对应解析结果信息。

递归DNS

递归DNS又称为Local DNS,它没有域名解析结果的决定权,但代理了用户向权威DNS获取域名解析结果的过程。递归DNS上有缓存模块,当目标域名存在缓存解析结果并且TTL未过期时(每个域名都有TTL时间,即有效生存时间,若域名解析结果缓存的时间超过TTL,需要重新向权威DNS获取解析结果),递归DNS会返回缓存结果,否则,递归DNS会一级一级地查询各个层级域名的权威DNS直至获取最终完整域名的解析结果。

转发DNS

转发DNS是一种特殊的递归。如果本地的缓存记录中没有相应域名结果时,其将查询请求转发给另外一台DNS服务器,由另外一台DNS服务器来完成查询请求。

公共DNS

公共DNS是递归DNS的一种特例,它是一种全网开放的递归DNS服务,而传统的递归DNS信息一般由运营商分发给用户。一个比较典型的公共DNS即Google的8.8.8.8,我们可以通过在操作系统配置文件中配置公共DNS来代替Local DNS完成域名解析流程。

根域名服务器

全球共有13台根域名服务器。这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。

根服务器主要用来管理互联网的主目录,全世界只有13台。

1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。

域名解析(DNS)

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

域名解析发挥两个基本的作用:

  • 转换作用,即通过解析实现了从域名到IP地址的转换。通过该转换,访问者无需记忆繁杂的东西就可直接看到影射出来的网页内容。

  • 捆绑作用,当一个域名成功地解析到一个IP地址后,将会完成该IP地址的主机上的一个子目录与域名的绑定。

域名解析过程

DNS服务器在域名解析过程中的查询顺序为:本地缓存记录、区域记录、转发域名服务器、根域名服务器。

  1. 浏览器缓存  
    当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);  

  2. 系统缓存 
     当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;
       

  3. 路由器缓存
    当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;  

  4. ISP(互联网服务提供商)DNS缓存  
    当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;  

  5. 根域名服务器  
    当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器;  

  6. 顶级域名服务器  
    顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;  

  7. 主域名服务器  
    主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;  

  8. 保存结果至缓存  
    本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。

以访问www.taobao.com为例,一次完整的域名解析流程包括:

Local DNS服务器包含缓存模块,在实际域名解析过程中Local DNS服务器会首先查询缓存,缓存命中且解析结果TTL未过期的情况下直接返回,否则才启动递归查询的流程。

动态域名解析 (DDNS: Dynamic Domain Name Server)

动态域名解析服务,是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候,客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务程序负责提供DNS服务并实现动态域名解析。

就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样域名就可以始终解析到非固定IP的服务器上,互联网用户通过本地的域名服务器获得网站域名的IP地址,从而可以访问网站的服务。

网络映射

DDNS

动态域名解析的过程

1.将你的域名映射到动态域名服务商提供的 DNS 服务器;比如 DNSPod 提供的 DNS 。

2.在你的 Web 服务器的主机上安装 DNSPod 提供的软件,主要是上报IP地址。

3.IP地址上报成功后,DNSPod 的 DNS 中的数据被更新。

4.再次访问域名时,DNSPod 的 DNS 将反馈新的IP到客户端。

动态域名解析的作用

  1. 目前ISP大多提供动态IP(如拨号上网),我们若想在网际网络上以自己的网域公布,DDNS提供了解决方案,它可以自动更新用户每次变化的浮动IP,然后将其与网域相对应,这样其他上网用户就可以透过网域来交流了。
  2. DDNS可以让我们在自己的或家里架设WEB\MAIL\FTP等服务器,而不用花钱去付虚拟主机租金。
  3. 主机是自己的,空间可根据自己的需求来扩充,维护也比较方便。有了网域与空间架设网站,FTP 服务器、EMAIL服务器都不成问题。
  4. 如果您有对VPN的需求,有了DDNS就可以用普通上网方式方便地建立Tunnel。透过网域的方式连结,实现远端管理、远端存取、远端打印等功能。
@ditong001
Copy link

是不是修改了hosts文件达到的效果,比如想本机绑定域名www.dtidc.com 的情况,修改hosts 127.0.0.1 www.dtidc.com 这样的?

@qhwa
Copy link
Contributor

qhwa commented Mar 23, 2018

@ditong001 并不是。

这个插件是这样的:

1. 默认情况下显示自己的 IP 地址

2. 可以选择一个花名

3. 然后绑定花名对应的域名到对应的 IP

不需要手工去绑定 hosts 的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants