本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
本系列为个人对计算机网络的学习笔记,本文重点总结DNS相关知识点。
DNS(domain name system)
简介
- 包括两部分,既指由分层的DNS服务器实现的分布式数据库本身,也指能够查询该数据库的应用层协议。
- 与HTTP,FTP,SMTP同属应用层协议,运行在UDP之上,默认端口号为53
- 用途:将主机名转换为其背后的ip地址,本质是map(映射)
作用:
- 基于用途,可提供主机别名和邮件服务器别名
- 可在冗余服务器间进行负载分配
DNS为什么是分布式的而不是集中式的?
因为集中式会带来以下问题:
- 单点故障导致整个世界的网络体系瘫痪。
- 单个服务器无法处理大规模通信容量,也必须面临大量的频繁更新问题(新增主机连接)
- 单个服务器无法“邻近”所有客户
个人认为还因为:这个集中的服务器会安置在哪里,由谁掌管的问题。谁都想管,谁都不想命运掌握在别人手上。
# DNS层次及交互流程
DNS缓存
类似于其他地方的缓存的概念,此处也是为了加快查询速度,在DNS服务器中暂存了主机名/ip
地址对,下次查询时(面向不同的主机)可以立即提供地址,而不需要再去访问其他服务器。
- 缓存机制使得多数查询可以绕开根服务器
- 一般两天左右会丢弃原有缓存信息。
如何从DNS中取数据
这就需要看懂它的RR(资源记录)和报文
资源记录
资源记录是一个包含了下列字段的四元组:
{Name,Value,Type,TTL(记录生存时间)}
报文
分为查询和回答报文两种,且格式一致。
这里就不死记硬背了,等有时间用一下nslookup命令试一试看一看。
目前先记住,前12个字节与标识、RR相关。
参考书籍
- 《计算机网络自顶向下方法 第七版》
- 《计算机网络 第五版》