HTTP/Web协议中的域名,需要首先经过Domain Naming System (DNS),将域名(主机名hostname)转换成请求网站的IP地址。DNS是,1) 一个由分层的DNS服务器实现的分布式数据库;2) 一个使得主机能够查询分布式数据库的应用层协议(application layer protocol)。
(2020.07.24)
-
DNS和HTTP/Web/SMTP/etc所使用的是一个平行的网络
-
对应的运输层协议
UDP (User Datagram Protocol),端口53 -
DNS的用户
应用层的其他协议, e.g., HTTP/SMTP/FTP
- 由DNS服务器获得IP地址的流程
以发送HTTP请求为例,提出请求的主机上运行着DNS应用的客户端。- 浏览器从URL中抽取出主机名www.xxxx.com,并将主机名传给DNS应用的客户端。
- DNS客户端向DNS服务器端发出一个含有主机名的请求。
- DNS服务器端处理主机名并与其他DNS服务器通信,返回给客户端一个响应报文,其中含有请求报文中主机名对应的IP。
- DNS客户端所在的浏览器收到IP报文,能够向位于该IP的80端口发起一个TCP连接。
- DNS提供的服务
- 主机名到IP地址的转换。
- 主机别名host alias,一台主机可有多个名字,其中包括规范主机名Canonical hostname。
- 邮件服务器别名。类似于主机别名。
- 负载分配(load distribution)。繁忙的站点(google.com)被分布在多台服务器上(多个端系统中),每个服务器有一个unique的IP地址。一个IP地址集合与同一个Canonical hostname相联系。DNS数据库保存这个集合。当客户对映射到某地址集合的名字发出一个DNS请求,服务器用IP地址的整个集合进行响应,但在每个回答中循环这些IP地址次序。客户总是向IP地址排在最前面的服务器发送HTTP请求报文,所以DNS在这些冗余服务器之间实现了负载分配。简单说,一个主机名对应多台服务器和多个IP,访问时集体响应,客户访问其中一个IP。
- DNS是在网络上实现分布式数据库的典范。DNS使用了大量的DNS服务器,以层次方式组织。
- DNS服务器的类型
根DNS服务器顶级域(Top-Level Domain, TLD) DNS服务器权威DNS服务器 - DNS服务器之间的交互方式
一个DNS客户端要申请www.xxx.com的IP地址。- 客户先与根服务器之一联系,返回顶级域名.com的TLD服务器的IP地址。
- 客户与TLD服务器之一联系,将为xxx.com返回权威服务器的IP地址。
- 客户与权威服务器之一联系,为www.xxx.com返回其IP地址。
-
本地服务器 Local DNS server
每个ISP(Internet Service Provider),都有一台本地DNS服务器。当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台其本地DNS服务器的IP地址。用户使用HTTP等协议时,请求首先发送到本地DNS服务器,本地DNS服务器与根服务器/TLD服务器/权威服务器等实现互动。发送一个HTTP请求,共执行8次信息互动。 -
递归Recursive query和迭代查询Iterative query
-
DNS缓存cache
当某DNS服务器接收一个DNS回答时,它能将映射缓存在本地存储器中。当local DNS server接收到一个回答,它能够缓存包含在该回答中的任何信息。如果在DNS服务器中缓存了一台主机名/IP pair,另一个对相同主机名的查询到达该DNS服务器时,该DNS服务器能够提供所要求的IP机制,即使它不是该主机名的权威服务器。同时,由于主机和主机名与IP地址间的映射不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。
- DNS报文和记录
skip
- Reference
- 计算机网络(自顶向下方法),James F. Kurose and etc., 陈鸣译,机械工业出版社,2019年
网友评论