DNS及其基本工作原理


什么是DNS?

计算机在网络通讯时只能识别“192.168.1.1”之类的IP地址,而不能识别域名。记忆一串数字显然比有意义的英文字母简单,域名其实就是“www.zhihu.com”之类的。我们在平常访问网站时输入网站域名就能看见所需的页面是因为有一个叫做“**DNS服务器**”的在替我们解析成了相应的IP地址,然后对应的服务器返回所需的信息。

浏览时输入的是域名,域名和IP是绑定的,DNS服务器把英文的域名翻译成IP地址的过程被称为DNS域名解析

顶级域名:test.com

二级域名:test.cn.com

三级域名:test.mail.cn.com

.com是一个域,表示一个区域或者说一个范围

公网IP和私网IP

  • 全球需要上网的设备数量远远大于IP地址数量,因此IP地址不够用(指IPv4地址,IPv6地址够用)
  • 所以在一个单位内部,需要使用私有IP地址组建网络,私有IP不能直接访问互联网,需要使用NAT地址转换网络技术才能访问互联网
  • 简单说:要想让全世界的人都能访问你的服务器,你需要为服务器配置一个公网IP,如果没有,就需要使用NAT等网络技术
ipconfig -all//查看本机IP、子网掩码、等信息

子网掩码和网关

用来判断两台电脑之间是否能够直接通信

  • IP地址以“网络号”来判定两个主机是否处于同一个网络
  • 我们把网络号相同的主机称之为本地网络主机,网络号不相同的主机称之为远程网络主机
  • 本地网络中的主机可以直接相互通信,远程网络中的主机要相互通信必须通过网关(Gateway)来传递转发数据

端口

  • 一台拥有IP地址的主机可以提供许多服务,比如Web服务,FTP服务、SMTP服务等(每一个服务都对应一个应用程序)
  • 那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过”IP地址+端口号”来区分不同的服务的
  • 端口实行先占先得的规则,某个端口被占用了,其他应用程序就不能再重复占用,只能换端口

端口的分类和范围

  • 常见端口分为TCP端口和UDP端口(TCP和UPD是不同的协议,详情请自行百度),每个都有65535个端口可供使用
  • TCP端口常见的包括FTP服务的21端口,Telent服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等
  • UDP端口常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等

常见端口

  • 20 ftp文件传输协议(默认数据口) 
  • 21 ftp文件传输协议(控制)
  • 22 Linux的SSH远程登录协议
  • 80 http全球信息网超文本传输协议

查看端口命令

可以使用Netstat命令:开始->运行,键入”cmd”并回车,打开命令提示符窗口。在命令提示符状态下键入

netstat -a -n

按下回车键后就可以看到以数字形式显示的 TCP和UDP连接的端口号及状态。

DNS的解析过程(重点)

DNS解析,又叫域名解析就是将域名解析为IP地址的过程。

IP地址标志着网络中一个节点的位置,域名则是为了IP地址更容易被记住而设置的一个代称,域名解析由**域名系统(Domain Name System,简称DNS)来完成,可以把它看作是一个保存了域名和IP地址对应关系的数据库**。

  1. DNS解析是一个递归查找的过程,在用户访问“xxx.com”时,先向TCP/IP中设置的首选DNS服务器查询域名对应的IP地址(根据本地网络设置的不同而不同,这个DNS服务器又叫本地服务器),如果本地DNS服务器中恰好负责管理该记录或者缓存有该记录,则将结果IP地址返回给用户,域名解析结束。
  2. 如果本地DNS服务器中没有记录,则本地DNS服务器把请求转发给根DNS服务器,根DNS服务器会判断该地址的顶级域名(即“.com”)由哪台顶级域名DNS服务器负责,并将请求转发给对应的顶级域名DNS服务器。顶级域名DNS服务器如果存有记录,则将其解析,如果不存有对应记录则继续转发给下一级的DNS服务器。最后找到对应IP地址返回给用户,域名解析结束。

个人理解:

用户通过计算机发起访问某域名时,

首先对DNS服务器发起请求:通过计算机所设置的DNS服务器通过私网IP被路由器NAT协议转换成的公网IP发起请求(可能还会有下一级的转换根据局域网的不同而不同,为了简单描述忽略部分过程。如果设置的是自动的话,就默认是路由器的DNS服务器)

DNS服务器根据域名先通过cache缓存在本地的记录查看是否存在对应IP,如果存在即返回IP地址,如果不存在就会向根服务器发送请求(根服务器储存着所有的顶级域名的IP地址,为了分担服务器压力一共有13台,后来随着任播等技术的出现,一切迎刃而解)根服务器返回给DNS服务器对应的顶级域名的IP地址,DNS服务器对顶级域名的服务器发起请求,顶级域名的服务器接受到请求后返回对应请求的域名的IP地址。到此域名解析结束!

CDN加速

内容分发网络(Content Delivery Network,简称CDN)就使用DNS解析将用户的请求分配到了离用户最近的边缘节点上,进而提升了用户访问静态资源的速度。

在使用内容分发网络时,需要使用CNAME将源站域名指向CDN服务商指定的域名,而后者的解析由CDN服务商的DNS服务器负责。于是源站域名的最终解析权就交到了CDN服务商提供的DNS服务器手中。

CDN服务商的DNS服务器并不会简单地给出一个固定的IP地址,而是会根据用户请求的源IP等信息,寻找出一个距离当前用户最近的CDN节点的IP后返回给用户。这样,用户解析源站的域名,拿到的却是CDN节点的地址。

之后,用户请求便前往该CDN节点获取内容。接下来CDN节点则会分析用户请求,如果是静态资源请求则由CDN节点直接返回,如果是动态资源请求则由CDN节点转发给源站处理。

经过CDN服务商的处理,网络上众多的指向源站的请求实际已经被分散到了不同的CDN节点上。而对于用户而言,这一切是无法感知的,他们总感觉自己在访问同一个域名。


文章作者: 冰冰的小屋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 冰冰的小屋 !
  目录