加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

Java构建TCP/IP协议:DNS,域名解析协议系统的运行流程

发布时间:2019-06-13 17:57:55 所属栏目:教程 来源:陈屹
导读:副标题#e# DNS协议的运转需要客户端和服务器进行交互。由于服务器端需要存储大量的域名信息,同时每天需要应答海量的解析请求,因此它的设计必须遵循分布式系统。客户端向一台服务器请求解析服务时,对方可能没有相应的域名信息,于是它会向上一层查询,获

首先是问题名字,这个字段长度可变,存储的是要查询的域名,以0作为结尾。第二个是问题类型,它是2字节,用于表明查询的类型,取值1表示查询域名对应IP,取值2查询服务器名称,具体类型在后面我们用到时再详细讨论。最后是问题类别,一般而言写死为1。

这里我们讲解一下Question Name对应的字符串结构,例如对于字符串:www.baidu.com,它的对应格式为[3]www[5]baidu[3]com,其中[]内表示接下来字符个数,例如[3]表示后面跟着3个字符www,[5]表示接下来跟着5个字符,注意到这些数字所在位置正好对应字符串中符号点所在位置。

接下来我们看Answer Resource Records 的结构,服务器收到客户端请求,完成解析工作后,把解析信息存储在该结构里发回给客户端。它的结构如下,第一个是名字字符串,可变长,它对应要解析的域名或服务器名称。接着是资源类型,2字节,表明资源的类型,如果取值是5,那么接下来对应着域名服务器对应的字符串名称,接着是资源类别,2字节,一般设置成1;接着是TTL(Time To Live),4字节,表明这些信息能在缓存中存储多久;接着是RDLength,2字节,用于表明接下来内容的长度;最后是相应内容,如果资源类型是5,那么内容就是字符串,如果是1,那么内容就是4字节的IP地址,该数据类型对应的格式轮廓如下:

Java构建TCP/IP协议:DNS,域名解析协议系统的运行流程

这里值得提到的是,如果资源类型5,那么对应的字符串才是“真正”域名,例如下面显示内容:

Java构建TCP/IP协议:DNS,域名解析协议系统的运行流程

它显示的是,一开始我们使用域名“pan.baidu.com”去进行域名解析,此时解析服务器没有直接返回该域名对应的IP,而是返回另一个域名yiyun.n.shifen.com,前面”pan.baidu.com”其实是一个别名,打个比方,一个人可以使用假名和真名,假名可以随时变,真名则要跟身份证绑定。同样的道理,pan.baidu.com这个域名可以根据需要随时变化,例如以后它可以变成pen.baidu.com,但是第二个域名就唯一绑定一台服务器,我们只有拿这个域名去查询才能找到对应的IP。

为了简单起见,其他两种资源的数据格式我们暂时放一放,以后需要的时候才研究,在下一节我们将使用代码实现本节描述的DNS域名解析流程。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读