应用层
408计算机网络

应用层

域名系统 DNS域名系统 DNS (Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用域名系统 DNS。虽然计算机...

花野猫

花野猫

更新于 2023-11-10

5024

域名系统 DNS

域名系统 DNS (Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用域名系统 DNS。虽然计算机的用户只是间接而不是直接使用域名系统,但 DNS 却为互联网的各种网络应用提供了核心服务。

用户与互联网上某台主机通信时,必须要知道对方的 IP 地址。然而用户很难记住。在应用层为了便于用户记忆各种网络应用,互联网上的主机除了 IP 地址外,还可以使用便于用户记忆的主机名字。域名系统 DNS 能够把互联网上的主机名字转换为 IP 地址。

在互联网的命名系统中使用了许多的“域”(domain),因此就出现了“域名”这个名词。 “域名系统”很明确地指明这种系统是用在互联网中的。

早在 ARPANET 时代,整个网络上只有数百台计算机,那时使用一个叫做 hosts 的文件,列出所有主机名字和相应的 IP 地址。只要用户输入一台主机名字,计算机就可很快地把这台主机名字转换成机器能够识别的二进制 IP 地址。

为什么机器在处理 IP 数据报时要使用 IP 地址而不使用域名呢?变长的域名和使用有助记忆的字符串,是为了便于人使用。而 IP 地址是定长的 32 位二进制数(如果是 IPv6 地址,那就是 128 位,也是定长的)则非常便于机器进行处理。


理论上整个互联网可以只使用一个域名服务器,然而这种做法并不可取。因为互联网规模很大,这样的域名服务器肯定会因过负荷而无法正常工作,而且一旦域名服务器出现故障,整个互联网就会瘫痪。因此,早在 1983 年互联网就开始采用层次树状结构的命名方法,并使用分布式的域名系统 DNS。DNS 的互联网标准是 RFC 1034, 1035。

互联网的域名系统 DNS 被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此 DNS 系统的效率很高。由于 DNS 是分布式系统,即使单个计算机出了故障,也不会妨碍整个 DNS 系统的正常运行。


域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序(可简称为域名服务器)共同完成的,解析过程的要点如下:当某一个应用进程需要把主机名解析为 IP 地址时,该应用进程就调用解析程序(resolver),并成为 DNS 的一个客户,把待解析的域名放在DNS 请求报文中,以 UDP 用户数据报方式发给本地域名服务器(使用 UDP 是为了减少开销)。本地域名服务器在查找域名后,把对应的 IP 地址放在回答报文中返回。应用进程获得目的主机的 IP 地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

互联网的域名结构

早期的互联网使用了非等级的名字空间,其优点是名字简短。但当互联网上的用户数急剧增加时,用非等级的名字空间来管理一个很大的而且是经常变化的名字集合是非常困难的。因此,互联网后来就采用了层次树状结构的命名方法,就像全球邮政系统和电话系统那样。采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。从语法上讲,每一个域名都由标号(label)序列组成,而各标号之间用点隔开,例如中央电视台邮件服务器的域名 mail.cctv.com 顶级域名

DNS 规定,

  1. 域名中的标号都由英文字母和数字组成,每一个标号不超过 63 个字符(但为了记忆方便,最好不要超过 12 个字符),
  2. 也不区分大小写字母(例如,CCTV 或 cctv 在域名中是等效的)。标号中除连字符(-)外不能使用其他的标点符号。
  3. 级别最低的域名写在最 左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域名总共不超过 255 个字符。 4.DNS 既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由 ICANN 进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找 域名的机制

域名服务器

域名解析过程采用递归与迭代相结合的查询方式:

  1. 主机向本地域名服务器的查询采用递归查询:如果本地主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询)。
  2. 本地域名服务器向根域名服务器的查询采用迭代查询:根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器: “你下一步应当向哪个顶级域名服务器进行查询”。同样,顶级域名服务器收到XXX后,要么XXX,要么告诉XXX应向哪个权限域名服务器查询。本地域名服务器就这样迭代查询,最后,知道所要解析的域名的 IP 地址后,把这个结果返回给发起查询的主机。

示例过程(查询 y.abc.com):

  1. 主机向其本地域名服务器发出 DNS 解析请求报文。
  2. 本地域名服务器以 DNS 客户的身份向根域名服务器发出解析请求报文。
  3. 根域名服务器收将下一次应查询的的顶级域名服务器 dns.com 的 IP 地址返回给本地域名服务器。
  4. 本地域名服务器向顶级域名服务器 dns.com 发出解析请求报文。
  5. 顶级域名服务器将下一步应查询的权限域名服务器 dns.abc.com 的 IP 地址返回给本地域名服务器
  6. 本地域名服务器向权限域名服务器 dns.abc.com 发起解析请求报文。
  7. 授权域名服务器 dns.abc.com 将 y.abc.com 的查询结果返回给本地域名服务器。
  8. 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机

为了提高 DNS 查询效率,减轻根域名服务器的负荷和减少互联网上的 DNS 查询报文数量,域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名,以及从何处获得域名映射信息的记录。例如本地域名服务器。可以直接把高速缓存中上次查询某个域名的 IP 地址的结果告诉用户,或者假如本地域名服务器的缓存中,并没有目标域名的 IP 地址,而存放着顶级域名服务器的 IP 地址,那就不再需要向根域名服务器进行查询,而是直接向 .com 定级域名服务器发送查询请求报文。

同样,主机中也可以使用高速缓存,许多主机在启动时从本地域名服务器下载名字和地址的全部数据库,维护自己最近使用的域名的高速缓存。

电子邮件

电子邮件概述

-电话电子邮件
特点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 协议
  • 用于用户代理从邮件服务器读取邮件,如邮局协议 POP3

计算机之间发送和接收电子邮件的步骤

  1. 用户使用用户代理撰写和编辑邮件。
  2. 用户代理把邮件用 SMTP 协议发给发送方邮件服务器。
  3. SMTP 服务器把邮件临时存放在邮件缓存队列中, 等待发送到接收方的邮件服务器。
  4. 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,把邮件缓存队列中的邮件依次发送出去。
  5. 接收方邮件服务器中的 SMTP 服务器进程把邮件放入收件人的用户邮箱。
  6. 收件人就运行计算机中的用户代理,使用 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 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。

真题

【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协议等。