- 标识主机
- 主机名 hostname
- 虽然简单易记忆,但是不能提供更详细的信息
- IP地址 IP address
- 由四个字节组成
- 主机名 hostname
- DNS 提供的服务
- 因为主机名和IP地址面向对象的不同,所以需要提供一个服务为其转换,在这个背景下,DNS (Domain Name System,域名系统)诞生了
- DNS:
- 是一个分层的DNS服务器提供的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
- DNS服务器是运行BIND(Berkeley Internet Name Domain)的UNIX机器
- 运行使用UDP,53端口
- DNS通常是被使用用来进行主机名和IP地址之间的转换
- 除了主要服务外,还有:
- 主机别名 host aliasing
- 一台主机可以有多个主机别名
- 规范主机名 canonical hostname
- 某种更标准化的别名
- 邮件服务器别名 mail server aliasing
- 和上面有很多相似性,并且可以一致,实际上大多数企业就是这么做的
- 负载分配 load distribution
- DNS同样用于冗余的服务器之间进行负载分配
- 对于繁忙的站点,冗余分配在多个不同的服务器上,对应不同的IP地址,将这些IP地址组成一个集合,当用户发送请求时就用集合进行响应。
- 主机别名 host aliasing
- DNS工作机理概述
- 用户主机上的某些应用程序调用DNS客户端,传入想要查询的域名,DNS会通过UDP通道,53端口,传入DNS服务器进行查找,然后返回回答报文。
- 实际上的DNS由分布式的大量服务器组成,相当复杂。
- 对于为什么不设计成单点服务器(集中式设计
- 单点故障 a single point of failure
- 通信容量 traffic volume
- 远距离的集中式数据库 distant centralized daiabase
- 维护 maintenance
- 分布式、层次数据库
- 如上图,DNS大致可以分为上述三个层级
- 根DNS服务器
- 顶级域DNS服务器
- com,org,edu等
- 权威DNS服务器
- 学校,公司等
- 当然除了上述三种之外有 本地DNS服务器(local DNS server) 是特殊的存在,每一个ISP都有个本地DNS服务器,起着代理的作用
- 上图是一个本地DNS服务器对另一个DNS服务器进行IP查询的过程,共发送了8份DNS报文,显然不好,可以使用DNS缓存改善查询流量
- DNS记录和报文
- 资源记录 Resource Record ,RR
- 提供主机名到IP地址映射
- Name 和 Value 的值取决于 Type
- TTL 是记录的生存时间,何时删除缓存
- DNS报文
- 向DNS服务器插入数据
- 注册登记机构 registrar 是个商业机构,用于验证域名的唯一性
- 当我创立公司,域名申请时我要向注册登记机构提供基本和辅助DNS服务器的名字和IP地址,注册登记机构将会确保把一个NS类型和A类型的记录放入服务器,我还需要确保用于WEB服务器的类型A RR 和 用于邮件的类型MX RR被输入权威服务器中,如此便可以让其他人访问我的web站点了。
- DNS缓存 DNS caching
- 改善时延性能并减少在互联网上到处传播的DNS报文数量
- 当DNS服务器接收到某DNS回答后,将该回答保存在本地DNS服务器
- 资源记录 Resource Record ,RR