引言
TCP到此就告一段落,这也意味着传输层结束了,紧随其后的就是TCP/IP五层架构的应用层。操作系统、编程语言、用户的可视化界面等等都要通过应用层来体现。应用层和我们息息相关,我们使用电子设备娱乐或办公时,接触到的就是应用层。
域名系统概述
域名系统(DomainNameSystem)简称DNS。在1983年因特网正式开始采用层次式的名字空间组织方案——域名系统(DNS)并开始使用分布式数据库管理整个名字空间。
众所周知,IP很长,不方便直接交流,因此应用层采用域名作为我们访问各个站点的手段,域名可以被记住,当我们再次访问某些网站采用域名就可以了。
但因为网络渐渐庞大了,难免会有重名的用户,因此如何在应用层表示因特网中唯一一个用户成为了难题之一。况且,我们在网络层中以一个IP地址作为网络中独一无二的个体,那么如何将应用层的域名和网络层相应的IP联系起来并且再由公网IP转化为成私有IP是域名系统首当其冲的问题。所有的应用和服务都离不开域名!
DNS以客户/服务器(C/S)的方式工作,其主要包含三部分内容:
1.层次树型结构的域名空间(Domain Name Space)
2.存储有关域名及其二进制IP地址信息的名字服务器(NameServer)
3.实现域名与二进制IP地址的转换工作的解析器(Resolver)
域名空间
域名也要有存储的地方,我们管其叫做域名空间。域名空间中含有域名的具体结构或命名规则。为了方便管理和查询,设计者采用层次化的树形结构组织域名分布。树形结构自然就有树枝和子叶。在这个域名空间中含有:
域名:网络中一个用户(计算机)的名字;
域:域名空间中的一树枝,表示因特网某个可被管理的资源集合;域还可以根据需要被进一步地划分为子域。
子叶就是代表因特网中提供特定服务的服务器主机的名称,像我们熟知的“WWW”等。子叶也代表它的下面也不能再划分子域了。这样的设计保证了域名在全网的唯一性。
其中顶级域名为通用域名;顶级域名最开始有7个“元老”
com:经济实体
edu:教育机构
org:不适宜在其它域下注册的组织机构和非政府组织
net:网络服务机构
gov:政府机构(美国专用)
mit:军事机构(美国专用)
int:国际相关组织机构
当然,除了那两个老美专用的东西,其它顶级域名是有相应的标准的,整个国际都要遵守的。当然,我们也要有自己的域名以示区别,这就是二级域名。
二级域名就是国家定制的域名了。我国将域名分为类别域名和行政域名两类。
ac:科研机构
com:工商金融和企业
edu:教育机构
gov:中国政府机构
net:中国的网络服务机构组织
mil:中国国防
org:非盈利机构
其中还有行政区域域名,覆盖了各省、自治区、直辖市等。比如:BJ(北京)、SH(上海)等等。
我们的域名均采用中文域名,国内域名注册统一通过中国互联网信息中心——CNNIC及其代理商进行管理。而国际的域名注册由ICANN统一管理。
上图就是域名空间域名层次分布
我们在表达一个域名时,要从左往右,从低到高以“.”作为区分来描述域名。以上图为例就是:www.b.360.cn,再比如:www.cctv.com
域名服务器
在DNS中,存储有关的域名和域名相应的二进制IP地址信息的程序运行在专门的网络结点上,这些结点称为名字服务器。各服务器只负责解析其主管范围的解析工作。并且还设置了若干互不交叉的区域以防止数据源带来的不稳定因素。
域名服务器分为四个大类:
1.根域名服务器(rootNS):最高层次的域名服务器,共13个,管辖所有顶级域名和IP映射。
2.顶级域名服务器(TLDNS):管辖旗下所有的二级域名和IP映射。
3.授权服务器:管辖区域内所有域名和IP映射
4.本地域名服务器:管辖每个主机所在区域的授权查询服务器。
书中对各服务器负责区域的描述
拥有一个区内所有的主机信息的名字的服务器就是该区授权的名字服务器(Authoritative Name Server)
不仅如此,还需要若干的辅助名字服务器,辅助名字服务器会获取名字服务器的域名信息副本预防名字服务器出现故障时,DNS系统还可以正常运作。
域名解析
如何将DNS和IP地址互相解析?我们可以通过配置设备的本地DNS来完成,我们在使用网络时候总能看见这个DNS。通过传输层UDP报文的支持,从端口53完成DNS和IP关系的建立。如下图则书中DNS与IP地址互相解析过程。
当应用进程需要将一个域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。同时域名服务器还必须具有连向其他服务器的信息以支持不能解析时的转发。若域名服务器不能回答该请求,则此域名服务器就暂成为DNS中的另一个客户,向根域名服务器发出请求解析,根域名服务器一定能找到下面的所有二级域名的域名服务器,这样以此类推,一直向下解析,直到查询到所请求的域名。
当我们向外进行DNS解析请求时,通过递归或者迭代的方式实现,这也是域名的解析过程。
后续
递归或迭代,我打算放在以后单独写文档,这里就提一下。域名很好理解,毕竟我们每天都在用。但是应用层的东西很混杂,下一篇就要讲文件传输了。