TCP/IP读书笔记之DNS域名系统

DNS是一种用于TCP/IP应用程序的分布式数据库,提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。

DNS名字控件具有层次结构,如gr.xidian.edu.cn。cn是顶级域名在最后,在前面的为低一级的域名。每个层次之间用点“.”隔开,称为一个节点。每个节点所包含字符最多为63个。注意以点“.”结尾的域名才称为绝对域名FQDN(full qualified domain name)。如果一个域名不是以点结尾的,则认为该域名是不完全的,如果不完整的域名由两个或者两个以上的节点组成,则认为其是完整的。DNS的层次结果如图所示:


其中,顶级域名被分为三个部分:

1.      arpa是一个用作地址到名字转换的特殊域。

2.      7个3字符长的普通域、如图所示:


3.      所有2个字符长的域军事基于ISP3166定义的国家代码,成为国家域。如cn等。

一个名字服务器负责一个或多个区域。一个区域的管理者必须为该服务器提供一个主服务器和至少一个辅助名字服务器。防止主服务器发生故障,辅助服务器每隔一段时间与主服务器通信一次,进行信息同步,在这个时候使用的是TCP协议,但是一般的单机发送的请求和应答使用的是UDP协议。

 

DNS的报文格式:

DNS由于查询和相应的报文格式如图所示:

标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定相应于查询是否匹配。其他字段所代表意义详见书中。

DNS查询报文中查询问题的的格式如图所示:

下图是使用sniffer抓到的一个包,这是一个查询报文,查询名为www.sina.com


其二进制如下图灰色部分所示:


首部的格式不在赘述。主要看查询名的格式:03 77 77 77 04.。。。。。查询名每个首字节的计数值说明随后标识符的字节长度。如第一个的03,说明后边有三个字节,即www(w的ASC编码为77)。后边跟随下一个字段的长度,为4,即sina。每个名字最后是以0结尾的。

 

DNS报文中最后的三个字段,回答字段,授权字段和附加信息字段均采用下图格式,被成为资源记录


上述查询报文的应答报文如下图所示(由于篇幅有限,省去前12个字节和查询问题字段,而且显示的是后几个回答字段):


二进制的编码如下图所示:


对应前图的位置是从灰色字段开始的。

首先看Answer section 3.其域名字段其实只有两个字节,即图中灰色字段。上文也讲过,每个节点的字符数最多是63个,即每个字段前用于计数的那个字节表示范围为0-63.其高两位为0,但是如果其高两位为11则表示使用压缩编码。这是由于报文中已经出现过这个域名,就使用这个16位的指针来指向这个域名在报文中的位置,即偏移位置(其实位置由标识字段的第一个字节算起)。如第3个回答字段中已经出现了jupiter.sina.com.cn,到第4个回答字段的又出现了这个域名。所以就使用压缩的方式,来缩短报文的长度。

这个回答字段中类型是5,表示规范名称,即资源数据部分是一个规范名称。

这里可以看到,相应报文的回答字段有多个,但是查询报文中只查询www.sina.com。在网上查了下,感觉满意的回答是是用了DNS负载均衡技术。具体资料可以在网上搜到。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值