域名系统 DNS
域名系统 DNS (Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用域名系统 DNS。计算机的用户只是间接使用域名系统,但 DNS 却为互联网的各种网络应用提供了核心服务。
用户与互联网上某台主机通信时,必须要知道对方的 IP 地址。然而用户很难记住。在应用层,为了便于用户记忆各种网络应用,互联网上的主机除了 IP 地址外,还可以使用便于用户记忆的主机名字。域名系统 DNS 能够把互联网上的主机名字转换为 IP 地址。
- 在互联网的命名系统中使用了许多的“域”(domain),因此就出现了“域名”这个名词。 “域名系统”很明确地指明这种系统是用在互联网中的。
- 机器在处理 IP 数据报时不能用域名的原因:域名是变长的,IP 地址是定长的 32 位二进制数(或 128 位的 IPv6 ),便于机器进行处理。
理论上整个互联网可以只使用一个域名服务器,但此做法不可取。互联网规模很大,这样的域名服务器肯定会过负荷,而且一旦域名服务器出现故障,整个互联网就会瘫痪。因此,早在 1983 年互联网就开始采用层次树状结构的命名方法,并使用分布式的域名系统 DNS。DNS 的互联网标准是 RFC 1034, 1035。
早在 ARPANET 时代,整个网络上只有数百台计算机,那时使用一个叫做 hosts 的文件,列出所有主机名字和相应的 IP 地址。只要用户输入一台主机名字,计算机就可很快地把这台主机名字转换成机器能够识别的二进制 IP 地址。
互联网的域名系统 DNS 被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此效率很高。由于 DNS 是分布式系统,即使单个计算机出了故障,也不会妨碍整个 DNS 系统的正常运行。
域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序(可简称为域名服务器)共同完成的,解析过程的要点如下:当某一个应用进程需要把主机名解析为 IP 地址时,该应用进程就调用解析程序(resolver),并成为 DNS 的一个客户,把待解析的域名放在DNS 请求报文中,以 UDP 用户数据报方式发给本地域名服务器(使用 UDP 是为了减少开销)。本地域名服务器在查找域名后,把对应的 IP 地址放在回答报文中返回。应用进程获得目的主机的 IP 地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。
互联网的域名结构
早期的互联网使用了非等级的名字空间,其优点是名字简短。但当互联网上的用户数急剧增加时,用非等级的名字空间来管理一个很大的而且是经常变化的名字集合是非常困难的。因此,互联网后来就采用了层次树状结构的命名方法,就像全球邮政系统和电话系统那样。采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。从语法上讲,每一个域名都由标号(label)序列组成,而各标号之间用点隔开,例如中央电视台邮件服务器的域名 mail.cctv.com→ 顶级域名
DNS 规定,
- 域名中的标号都由英文字母和数字组成,每一个标号不超过 63 个字符(但为了记忆方便,最好不要超过 12 个字符),
- 也不区分大小写字母(例如,CCTV 或 cctv 在域名中是等效的)。标号中除连字符(-)外不能使用其他的标点符号。
- 级别最低的域名写在最 左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域名总共不超过 255 个字符。 4.DNS 既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由 ICANN 进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找 域名的机制
域名服务器
不能将所有名字空间相关信息息都存储在一台计算机中。 DNS的方法是将域名信息分布到叫作域名服务器的许多计算机上。 将整个名字空间划分为许多不相交的区( Zone),每个区的域名信息由一个权威域名服务器(Authoritative Name Server)负责管理。原则上名字空间中的每一个域都可以对应一个区。但完全按照域来划分区,会导致太多很小的区。因此若一个域比较小,则域与区的范围是相同的,若大,可划分出来并委托给其他域名服务器管理。区是域名服务器直接管辖范围的单位,每个区有一个权威域名服务器。权威域名服务器负责本管辖区的域名转换。
域名服务器可划分为四种不同类型:
- 根域名服务器:并不直接管辖某个区的域名信息,但知道所有的顶级域名服务器的域名及其地址。互联网上共有13个不同地址的根域名服务器→ 实际上是群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。以加快了查询过程,也更合理地利用互联网资源。IP根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的地址。
- 顶级域名服务器(即TLD服务器):负责管理在该顶级域名服务器注册的所有二级域名。顶级域名服务器就给出的回答可能是最后的结果,也可能是下一级权威域名服务器的地址。
- 权威域名服务器:负责管理某个区的域名服务器。每一个主机的域名都必须在某个权威域名服务器注册。另外,权威域名服务器还知道其下级域名服务器的地址。
- 本地域名服务器:主机发出的DNS查询报文时,首先被送往该主机的本地域名服务器(也称为默认域名服务器)。本地域名服务器起着DNS代理的作用,会将该查询报文转发到域名服务器的等级结构中。 ISP、大学,或大学里的每一个系,都可以拥有一个本地域名服务器,本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的地址应直接配置在需要域名解析的主机中。在IP连接属性中设置的 DNS 地址就是该主机本地域名服务器的 IP 地址。
域名解析的过程
注意:
- DNS 实际上也可以将地址反向解析为域名
- 理论上任何查询既可以采用递归查询也可以采用迭代查询。但递归查询中被查询的域名服务器负担太大,通常采取的模式是,从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。
域名解析过程采用递归与迭代相结合的查询方式:
- 主机向本地域名服务器的查询采用递归查询:如果本地主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询)。
- 本地域名服务器向根域名服务器的查询采用迭代查询:根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器: “你下一步应当向哪个顶级域名服务器进行查询”。同样,顶级域名服务器收到XXX后,要么XXX,要么告诉XXX应向哪个权限域名服务器查询。本地域名服务器就这样迭代查询,最后,知道所要解析的域名的 IP 地址后,把这个结果返回给发起查询的主机。
示例过程(查询 y.abc.com):
- 主机向其本地域名服务器发出 DNS 解析请求报文。
- 本地域名服务器以 DNS 客户的身份向根域名服务器发出解析请求报文。
- 根域名服务器收将下一次应查询的的顶级域名服务器 dns.com 的 IP 地址返回给本地域名服务器。
- 本地域名服务器向顶级域名服务器 dns.com 发出解析请求报文。
- 顶级域名服务器将下一步应查询的权限域名服务器 dns.abc.com 的 IP 地址返回给本地域名服务器
- 本地域名服务器向权限域名服务器 dns.abc.com 发起解析请求报文。
- 授权域名服务器 dns.abc.com 将 y.abc.com 的查询结果返回给本地域名服务器。
- 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机
为了提高 DNS 查询效率,减轻根域名服务器的负荷和减少互联网上的 DNS 查询报文数量,域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名,以及从何处获得域名映射信息的记录。例如本地域名服务器。可以直接把高速缓存中上次查询某个域名的 IP 地址的结果告诉用户,或者假如其存放着顶级域名服务器的 IP 地址,那就不再需要向根域名服务器进行查询,而是直接向顶级域名服务器发送查询请求报文。
同样,主机中也可以使用高速缓存,许多主机在启动时从本地域名服务器下载名字和地址的全部数据库,维护自己最近使用的域名的高速缓存。
DNS资源记录
DNS服务器以资源记录(Resource Record,RR)的形式存储主机名到IP地址的映射,每个DNS回答报文可能包含一条或多条资源记录。资源记录在逻辑上就是一个四元组(Name、Value、Type、TTL)。
- TTL是该记录的生存时间,它决定了资源记录应当从高速缓存中删除的时间
- 其他字段的内容与资源记录的类型有关。 类型有:
类型 | Type | Name | Value | 描述 |
---|---|---|---|---|
主机记录 | A | 主机名 | 该主机名的地址 | 提供标准的主机名到 IP 地址的映射 |
域名服务器记录 | NS | 某个域的名称 | 该域的权威域名服务器的主机名 | 提供自顶而下的查询链。某个域的权威域名服务器需要在其上级域 DNS 名服务器注册一条域名服务器记录以及对应的主机记录 |
主机别名记录 | CNAME | 主机别名 | 该别名的规范主机名 | - |
邮件交换记录 | MX | 邮件服务器别名 | 该邮件服务器的规范主机名 | 通过使用邮件交换记录,一个单位的邮件服务器和其他服务器(如web服务器)可以使用相同的别名 |
电子邮件
电子邮件概述
- | 电话 | 电子邮件 |
---|---|---|
特点1 | 通信的主叫和被叫双方必须同时在场 | 可以随时发送和接收,不受时间和地点限制 |
特点2 | 电话常常不必要地打断被叫者的工作或休息 | 电子邮件可以在方便的时间进行阅读和回复 |
特点3 | - |
|
现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。电子邮件和手机的广泛使用, 现已迫使传统的电报业务退出市场,因为这种传统电报既贵又慢,且很不方便。 1982 年 ARPANET 的电子邮件问世后,很快就成为最受广大网民欢迎的互联网应用。
关于电子邮件的重要标准
- 简单邮件传送协议 SMTP (Simple Mail Transfer Protocol) [RFC 5321]
- 互联网文本报文格式[RFC 5322]。
由于互联网的 SMTP 只能传送可打印的 7 位 ASCII 码邮件,在 1993 年又提出了通用互联网邮件扩充 MIME (Multipurpose Internet Mail Extensions)。MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等)。在 MIME 邮件中可同时传送多种类型的数据。这在多媒体通信的环境下是非常有用的。
电子邮件系统的组成构件
一个电子邮件系统应具三个主要组成构件,这就是用户代理、邮件服 务器,以及邮件发送协议(如 SMTP)和邮件读取协议(如 POP3)。POP3 是邮局协议(Post Office Protocol)的版本 3。在互联网中,邮件服务器的数量是很大的,这些邮件服务器构成了电子邮件基础结构的核心。
用户代理 | 邮件服务器 | |
---|---|---|
角色 | 又称为电子邮件客户端软件,是用户与电子邮件系统的接口 | 用于发送和接收邮件,同时还要向发件人报告邮件传送的结果(已交付、被拒绝、丢失等)。 |
描述 | 用户代理至少应当具有、撰写、显示、处理、通信四个功能 | 邮件服务器需要使用两种不同的协议:
|
计算机之间发送和接收电子邮件的步骤
- 用户使用用户代理撰写和编辑邮件。
- 用户代理把邮件用 SMTP 协议发给发送方邮件服务器。
- SMTP 服务器把邮件临时存放在邮件缓存队列中, 等待发送到接收方的邮件服务器。
- 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,把邮件缓存队列中的邮件依次发送出去。
- 接收方邮件服务器中的 SMTP 服务器进程把邮件放入收件人的用户邮箱。
- 收件人就运行计算机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件。POP3 服务器和客户之间的通信是由 POP3 客户发起的。
- 等待发送到接收方的邮件服务器的时间的长短取决于邮件服务器的处理能力和队列中待发送的信件的数量。一般远远大于分组在路由器中等待转发的排队时间)
- 邮件不会在互联网中的某个中间邮件服务器落地。如果还有一些邮件要发送到同一个邮件服务器,那么可以在原来已建立的 TCP 连接上重复发送。如果无法建立 TCP 连接 ,邮件就会继续保存在发送方的邮件服务器中,并在稍后一段时间再尝试。如果 SMTP 客户超过了规定的时间还不能发送,那么发送邮件服务器就会通知用户代理。
通信方式 | 描述 |
---|---|
推 (Push) | SMTP 客户将邮件推送给 SMTP 服务器 |
拉 (Pull) | POP3 客户从 POP3 服务器拉取邮件 |
在 Foxmail 中使用一种“特快专递”服务。这种服务就是从发件人的用户代理直接利用 SMTP 把邮件发送到接收方邮件服务器。快了邮件的交付(省去在发送方邮件服务器中的排队等待时间)。但有些邮件服务器为了防止垃圾邮件和计算机病毒,拒绝接收从一般用户直接发来的邮件。
信封和内容
电子邮件由信封(envelope)和内容(content)两部分组成。电子邮件的传输程序根据邮件信封上的信息来传送邮件。TCP/IP 体系的电子邮件系统规定电子邮件地址(e-mail address)的格式为:
用户名 @ 邮件服务器的域名
,用户名在邮件服务器中必须是唯一的(当用户定义自己的用户名时,邮件服务器要负责检查该用户名在本服务器中的唯一性)。
简单邮件传送协议 SMTP
SMTP 的一些主要特点
- SMTP 规定了在两个相互通信的 SMTP 进程之间应如何交换信息。
- SMTP 并未对邮件内部的格式,邮件如何存储,以及邮件系统应以多快的速度来发送邮件做出规定。
SMTP 规定了 14 条命令和 21 种应答信息。每条命令用几个字母组成,而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。
文件传送协议
网络环境中的一项基本应用就是将远程文件传输。文件传送协议(File Transfer Protocol FTP FTP,)(RFC 959)是互联网上使用得最广泛的文件传输协议。FTP 提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(例如,访问文件的用户必须经过授权,并输入有效的口令)。屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
FTP基本工作原理
在互联网发展的早期阶段,用传送文件约占整个互联网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。到了1995 年,WWW才首次超过了FTP 的通信量。
众多的计算机厂商研制出的文件系统多达数百种,且差别很大。经常遇到的问题如下。
- 计算机存储数据的格式不同。
- 文件的目录结构和文件命名的规定不同。
- 对于相同的文件存取功能,操作系统使用的命令不同。
- 访问控制方法不同。
FTP 只提供文件传送的一些基本的服务,它使用可靠的TCP 运输服务。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。FTP基于客户/服务器体系结构。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤如下:
- 打开熟知端口(端口号为21),使客户进程能够连接上服务器进程。
- 等待客户进程发出连接请求。
- 启动从属进程来处理客户进程发来的请求。从属进程将客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
- 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理并发进行
FTP 的工作情况:
- 服务器端有两个从属进程:控制进程和数据传送进程。
- 客户端除控制进程和数据传送进程外,还有一个用户接口进程用来和用户连接。FTP的客户和服务器之间要建立两个连接:“控制连接”和“数据连接”。
- 控制连接在整个会话期间一直保持打开,传送客户端发出的各种命令,如用户标识、口令、改变远程目录、下载文件、上传文件等命令,以及服务器端的状态响应。
- “数据连接”用于实际传输文件
真题
2009年 题40
【2009年 题40】如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为()。
A.一条、一条 B.一条、多条 C.多条、一条 D.多条、多条
答案:A
2013年 题40
【2013年 题40】下列关于SMTP 协议的叙述中,正确的是( )。
I.只支持传输 7 比特 ASC II 码内容
II.支持在邮件服务器之间发送邮件
III.支持从用户代理向邮件服务器发送邮件
IV.支持从邮件服务器向用户代理发送邮件
A. 仅 I、 II 和 III
B. 仅 I、 II 和 IV
C. 仅 I、 III 和 IV
D. 仅 II、 III
SMTP协议不能用于用户代理从邮件服务器获取邮件,获取邮件的协议有POP3,IMAP协议等。