计算机网络第二章 -DNS -应用层
一、什么是DNS?
1.1 为啥有DNS?为啥还要在通信过程中加一个服务器?
DNS是一种在请求客户方和服务器之间的域名转换器。由于我们平时都是使用网页的网址对网站进行访问,而不会记住网站的IP地址。而且由于网站的IP地址可能会随时更换,用户请求网站服务的时候会很不方便。
但是在因特网上的机器都只认IP地址,网址他们不认识那可咋办呀。这个时候DNS就应运而生了。
1.2 DNS特点?
- DNS是运行在不可靠传输的UDP之上。
- DNS是有分层的DNS服务器实现的分布式数据库。在第二大点中会说明。
- DNS使用53号端口。
- 我的理解是DNS是协议上的协议,它是由其他协议使用的。也就是说HTTP等协议都得使用它才可以得到主机地址。
- DNS可以提供主机别名(就是它有其他的名字也会找到同一个IP地址)、邮件服务器别名、负载分配(简单来说就是一个名字允许拥有多个IP),有种数据库多对多的感觉。
二、DNS的工作原理
DNS在书中是有三个等级的分布式服务器,包括:根DNS服务器、顶级域(DNS)服务器(英文缩写:TLD)、权威DNS服务器这三个,但是一般在我们本地也有一个DNS服务器(一般每一个ISP都会有)。而我们通过网址找IP的旅程就从这4个主角开始。
首先我们提交一个HTTP请求,由前面的文章可知,HTTP中有一个Host的首部行,这个时候这些应用程序需要将网址转换为IP地址。他们将会调用DNS客户端。然后DNS客户端会向网络发送DNS查询报文。
这时候报文首先会传送到本地DNS服务器,本地DNS服务器会在自己的缓存中查找是否有对应的TLD服务器或者权威DNS服务器,有就转而向对应服务器发送查询报文,然后将最后的结果返回给DNS客户端。如果在本地DNS服务器缓存中找不到对应的服务器,则会向三个等级的服务器依次请求。每一次请求一个等级的服务器都会将下一级的服务器地址返回到本地DNS服务器中,然后再由本地DNS服务器发送查询报文到下一级服务器上。这种模式被称为迭代查询。当然也有递归查询,在主机到本地DNS服务器上的模式就是递归查询。
2.2 DNS缓存
DNS缓存的作用和之前的Web缓存的作用类似。在一段时间之后会丢弃缓存信息。具体的使用方法在上一段中已进行说明。
三、DNS记录和报文
3.1 DNS的记录
- 格式为:(Name,Value,Type,TTL)
其中TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。 - 记录的Type分为4个,A(Name是DNS服务器主机名,而Value是IP地址)、NS(Name是域名,Value是DNS服务器主机名)、CNAME(Name是别名,Value是DNS服务器主机名)、MX(Name是邮件服务器的别名,Value是DNS邮件服务器的主机名)
- 由第二点可以看出,除了Type A外所有的Value都是DNS服务器的主机名。而Type A则包含了主机名和IP地址。所以拥有一条Type A在每一个特定主机名的权威DNS服务器中是必不可少的。而如果这条记录记录的不是该服务器的本命DNS服务器,则会产生1条NS域记录和一条A记录。通过这两条记录找到对应的服务器IP地址(目前我还不了解为什么…难道是一个确定域,一个确定IP吗?)
3.2 DNS报文
推荐阅读DNS报文详解
3.3 在DNS数据库中插入记录
向某些注册登记机构注册域名,然后将你自己的基和辅助DNS服务器的IP地址提供给他们,然后该机构会将你的信息存储在一条NS记录和A记录并添加到DNS数据库中。如果有必要还需要再录入一条MX记录用于邮件服务器。