每个应用层协议 (application layer protocol) 都是为了解决某一类应用问题,而问题的解决必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间的这种通信必须遵循严格的规则。应用层的具体内容是精确定义这些通信规则。应用层协议应当定义:
应用层的许多协议都是基于客户服务器方式。即使是 P2P 对等通信方式,实质上也是一种特殊的客户服务器方式。客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程。最主要的特征是:客户是服务请求方,服务器是服务提供方。
本章重要内容:
域名系统 DNS (Domain Name System) 是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址。
许多应用层软件经常直接使用 DNS。虽然计算机的用户只是间接而不是直接使用域名系统,但 DNS 却为互联网的各种网络应用提供了核心服务。
DNS 能够把互联网上的主机名字转换为 IP 地址。
为什么机器在处理 IP 数据报时要使用 IP 地址而不使用域名呢?因为 IP 地址的长度是固定的 32 位 (IPv6 定长 128 位),而域名的长度并不是固定的,机器处理起来比较困难。
1983 年互联网开始采用层次树状结构的命名方法,并使用分布式的域名系统 DNS [RFC 1034, 1035]。
互联网的域名系统 DNS 被设计成为一个联机分布式数据块系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析 (resolve),仅少量解析需要在互联网上通信,因此 DNS 的效率很高。
由于 DNS 是分布式系统,即使单个计算机出了故障,也不会妨碍整个 DNS 系统的正常运行。
域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序 (可简称为域名服务器) 共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。
域名到 IP 地址的解析过程的要点:
互联网采用层次树状结构的命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名 (domain name)。域是名字空间中一个可被管理的划分。域还可以划分为子域,子域还可继续划分,这样就形成了顶级域、二级域、三级域,等。
从语法上讲,每一个域名都由标号 (label) 序列组成,而各标号之间用点隔开。
DNS 规定,域名中的标号都由英文字母和数字组成,每一个标号不超过 63 各字符,也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。由多个标号组成的完整域名总共不超过 255 各字符。
级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
DNS 既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
各级域名由其上一级的域名管理机构管理,而最高级的顶级域名由 ICANN 进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。
域名只是个逻辑概念,并不代表计算机所在的物理地点。
原先的顶级域名 TLD (Top Level Domain) 共分为三大类:
ICANN 于 2011 年正式批准新顶级域名 (New gTLD),因此任何公司、机构都有权向 ICANN 申请新的顶级域。新顶级域名的后缀特点,使企业域名有了显著的、强烈的标志特征。因此,新顶级域名被认为是真正的企业网络商标。
在国家顶级域名下注册的二级域名均由国家自行确定。
我国把二级域名划分为类别域名和行政区域名两大类。
关于我国的互联网络发展现状以及各种规定,均可在中国互联网络信息中心 CNNIC 的网址上找到 [W-CNNIC]。
用域名树来表示互联网的域名系统是最清楚的。
一旦某个单位有了一个域名,它就可以自己决定是否要进一步划分其下属的子域,并且不必由其上级机构批准。
域名树的树叶就是单台计算机的名字,它不能再继续往下划分子域了。
互联网的名字空间是按照机构的组织来划分的,与物理的网络无关,与 IP 地址中的“子网”也没有关系。
具体实现域名系统是使用分布在各地的域名服务器。从理论上讲,可以让每一级的域名都有一个相对应的域名服务器,但这样做会使域名服务器的数量太多,DNS 运行效率降低。因此 DNS 采用划分区的办法来解决这个问题。
一个服务器所负责管辖的 (或有权限的) 范围叫做区 (zone)。各单位根据具体情况来划分自己管辖的区。但在一个区中的所有节点必须是能够连通的。
每一个区设置相应的权限域名服务器 (authoritative name server),用来保存该区中所有主机的域名到 IP 地址的映射。
区是 DNS 服务器实际管辖的范围。区可能等于或小于域,但一定不能大于域。
以图 6-2(b) 中公司 abc 划分的两个区为例,给出 DNS 域名服务器树状结构图。
互联网上的 DNS 域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为四种不同的类型:
ipconfig /all
,可以查看 DNS 服务器的 IP 地址。这里的 DNS 服务器指的就是本地域名服务器。为了提高域名服务器的可靠性,DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器 (master name server),其他的是辅助域名服务器 (secondary name server)。当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。
主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样保证了数据的一致性。
域名的解析过程:
迭代查询和递归查询在整个的查询都是使用 8 个 UDP 报文。
为了提高 DNS 查询效率,并减轻根域名服务器的负荷和减少互联网上的 DNS 查询报文数量,在域名服务器中广泛地使用了高速缓存 (有时也称为高速缓存域名服务器)。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
由于名字到地址的绑定并不经常改变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并处理超过合理时间的项。
当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,减少此时间值可提高域名转换的准确性。
不但在本地域名服务器中需要高速缓存,在主机中也很需要。许多主机在启动时从本地域名服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到名字时才使用域名服务器。维护本地域名服务器数据库的主机应该定期地检查域名服务器以获取新的映射信息。
6-01 互联网的域名结构是怎么样的?它与目前的电话网的号码结构有何异同之处?
从语法上讲,每一个域名都由标号序列组成,而各标号之间用点隔开。
中国使用的手机号码为11位,其中各段有不同的编码方向,其构成如下:
前 3 位:网络识别号;
第 4-7 位:地区编码;
第 8-11 位:顺序排列,随机发放用户挑选。
座机号码首先是国家的区号 (中国为86),然后是地区号 (如北京010),然后是区县号 (一般是前 2 位至前 3 位),最后是乡镇级的号位 (一般是第 3 位或第 4 位),最后是随机的编码了。
相同之处:都是采用层次树状结构的命名方法。
不同之处:域名不代表计算机所在的物理地点;电话号码与电话所在的地理位置有关。
6-02 域名系统的主要功能是什么?域名系统中的本地域名服务器、根域名服务器、顶级域名服务器以及权限域名服务器有何区别?
域名系统的主要功能:将域名解析为IP地址。
这四种域名服务器所起的作用不同,具体作用见上述章节“域名服务器”。
6-03 举例说明域名转换的过程。域名服务器中的高速缓存的作用是什么?
域名转换过程,即域名解析过程:主机向本地域名服务器的查询一般都是采用递归查询,本地域名服务器向根域名服务器的查询通常是采用迭代查询。
域名服务器中的高速缓存的作用:存放最近查询过的域名以及从何处获得域名映射信息的记录。
6-04 设想有一天整个互联网的 DNS 系统都瘫痪了 (这种情况不大会出现),试问还有可能给朋友发送电子邮件吗?
解:有可能。如果你能够直接使用对方的邮件服务器的 IP 地址。
【计算机网络 (谢希仁) 习题题解】目录