# DNS 协议
TCP/IP 协议族使用一种 ASCII 码形式的主机命名方式,称为域名。DNS 是一种分布式网络目录服务,主要用于域名和 IP 地址的相互转换。
DNS 的工作方式如下:
首先将域名作为参数传递给解析器,解析器将域名封装到 UDP 包,发给本地域名服务器,域名服务器将域名映射为 IP 地址,将 IP 地址封装到另一个 UDP 包,发回给解析器,解析器再将 IP 地址返回给调用者。
DNS 是基于 C/S 模型设计的。整个域名系统通过一个大的分布式数据库的方式工作。DNS 使用 UDP 的 53 号端口进行通信。
# 域名层次
DNS 采用的是一种层次型命名机制。采用 "." 来分隔各层节点,父节点在后,通常使用的域名省略了最后一个点,这个点表示根域,加上根域的的域名称为绝对域名,例如主机
www.baidu.com
的绝对域名是www.baidu.com.
# 域名服务器
域名系统是通过相互通信的域名服务器来实现的。域名服务器的实现结构和逻辑结构并不一致。在域名服务器中,可以将域名空间划分成许多不重叠的区。一个区包含树的一部分,每个区有一个主域名服务器,还可以配一个或多个备用域名服务器。主域名服务器从本地磁盘上的文件获取信息,而备用域名服务器从主域名服务器获取信息。当主域名服务器无法工作时,备用域名服务器将顶替其工作。
# 域名解析
解析服务有两种:
- 正向域名解析:域名 -> IP 地址
- 逆向域名解析:域名 <- IP 地址
域名解析的方式有两种:
- 递归解析:要求域名服务器一次性完成全部域名地址转换
- 迭代解析:客户端每次请求一个服务器,不成功再请求另外一个服务器
# 逆向域名解析
DNS 通过逆向询问报文来实现逆向解析。这种报文被称为指针询问。想要解析的 IP 地址被表达成为一种像域名一样的可显示串形式,后缀以逆向解析域域名
in-addr.arpa
# 利用 DNS 实现负载均衡
DNS 可以将一个 IP 地址对应多个域名,也可以将一个域名对应多个 IP 地址,实现的方式称为 DNS 轮询。
← 跨域 (待补充) XSS 和 csrf →