【计算机网络-应用层】域名系统 DNS、文件传输协议 FTP、电子邮件
1 域名系统 DNS
IP 地址很难记忆,引入域名是为了方便人们记忆与识别。
域名系统(Domain Name System,DNS):用来把域名(主机名)转换为 IP 地址的系统,采用客户/服务器(C/S)模型,运行在 UDP 协议上,端口号为 53。
客户/服务器(C/S)模型:有一个总是打开的主机称为服务器,它服务于许多来自其他被称为客户机的主机请求。
1.1 域名结构
域名结构:四级域名.三级域名.二级域名.顶级域名
(级别最低的域名写在最左边,而级别最高的顶级域名写在最右边)
域名空间的树状结构如下图:
- 顶级域名(Top Level Domain,TLD)分为以下三类:
- 国家顶级域名 nTLD:cn,us,uk 等
- 通用顶级域名 gTLD:com,net,org,int,edu,gov,mil
- 反向域 arpa:用于反向域名解析,即IP地址反向解析为域名
- 二级域名:在国家顶级域名下注册的二级域名均由该国家自行确定。
1.2 域名服务器
域名系统的层次结构如下图:
1.2.1 根域名服务器
- 根域名服务器是最高层次的域名服务器。
- 每个根域名服务器都知道所有的顶级域名服务器的域名及其 IP 地址。
- 根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
- 当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离该 DNS 客户最近的一个根域名服务器。
1.2.2 顶级域名服务器
- 顶级域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
- 当收到 DNS 查询请求时就给出相应的回答,可能是最后的结果,也可能是下一级权限域名服务器的 IP 地址。
1.2.3 权限域名服务器
- 权限域名服务器负责管理某个区的域名。
- 每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与 IP 地址的映射关系。
- 另外,权限域名服务器还知道其下级域名服务器的地址。
1.2.4 本地域名服务器
- 本地域名服务器不属于上述的域名服务器的等级结构。
- 当一个主机发出 DNS 请求报文时,这个报文就首先被送往该主机的本地域名服务器。
- 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。
- 本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的 IP 地址需要直接配置在需要域名解析的主机中。
1.3 域名解析过程
1.3.1 递归查询
主机(m.xyz.com)需要查找 www.abc.uvw.com 的 IP 地址:
第几个 RTT | 发起 | 接收 | 发出内容 | 查询类型 |
---|---|---|---|---|
1 | 主机(m.xyz.com) | 本地域名服务器(xyz.com) | DNS 请求报文 | 递归查询 |
2 | 本地域名服务器(xyz.com) | 根域名服务器 | DNS 请求报文 | 递归查询 |
3 | 根域名服务器 | 顶级域名服务器(com) | DNS 请求报文 | 递归查询 |
4 | 顶级域名服务器(com) | 权限域名服务器(uvw.com) | DNS 请求报文 | 递归查询 |
5 | 权限域名服务器(uvw.com) | 权限域名服务器(abc.uvw.com) | DNS 请求报文 | 递归查询 |
6 | 权限域名服务器(abc.uvw.com) | 权限域名服务器(uvw.com) | www.abc.uvw.com 的 IP 地址 | 递归查询 |
7 | 权限域名服务器(uvw.com) | 顶级域名服务器(com) | www.abc.uvw.com 的 IP 地址 | 递归查询 |
8 | 顶级域名服务器(com) | 根域名服务器 | www.abc.uvw.com 的 IP 地址 | 递归查询 |
9 | 根域名服务器 | 本地域名服务器(xyz.com) | www.abc.uvw.com 的 IP 地址 | 递归查询 |
10 | 本地域名服务器(xyz.com) | 主机(m.xyz.com) | www.abc.uvw.com 的 IP 地址 | 递归查询 |
1.3.2 递归与迭代相结合查询
主机(m.xyz.com)需要查找 www.abc.uvw.com 的 IP 地址:
第几个 RTT | 发起 | 接收 | 发出内容 | 查询类型 |
---|---|---|---|---|
1 | 主机(m.xyz.com) | 本地域名服务器(xyz.com) | DNS 请求报文 | 递归查询 |
2 | 本地域名服务器(xyz.com) | 根域名服务器 | DNS 解析请求报文 | 迭代查询 |
3 | 根域名服务器 | 本地域名服务器(xyz.com) | 顶级域名服务器 com 的 IP 地址 | 迭代查询 |
4 | 本地域名服务器(xyz.com) | 顶级域名服务器(com) | DNS 解析请求报文 | 迭代查询 |
5 | 顶级域名服务器(com) | 本地域名服务器(xyz.com) | 权限域名服务器 uvw.com 的 IP 地址 | 迭代查询 |
6 | 本地域名服务器(xyz.com) | 权限域名服务器(uvw.com) | DNS 解析请求报文 | 迭代查询 |
7 | 权限域名服务器(uvw.com) | 本地域名服务器(xyz.com) | 权限域名服务器 abc.uvw.com 的 IP 地址 | 迭代查询 |
8 | 本地域名服务器(xyz.com) | 权限域名服务器(abc.uvw.com) | DNS 解析请求报文 | 迭代查询 |
9 | 权限域名服务器(abc.uvw.com) | 本地域名服务器(xyz.com) | www.abc.uvw.com 的 IP 地址 | 迭代查询 |
10 | 本地域名服务器(xyz.com)) | 主机(m.xyz.com) | www.abc.uvw.com 的 IP 地址 | 递归查询 |
1.3.3 本地域名服务器的高速缓存
为了提高 DNS 的查询效率,并减轻根域名服务器的负荷和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
主机(m.xyz.com)需要查找 www.abc.uvw.com 的 IP 地址,而本地域名服务器的高速缓存中已存放 www.abc.uvw.com 的 IP 地址:
第几个 RTT | 发起 | 接收 | 发出内容 | 查询类型 |
---|---|---|---|---|
1 | 主机(m.xyz.com) | 本地域名服务器(xyz.com) | TCP 连接建立 | 递归查询 |
2 | 本地域名服务器(xyz.com) | 主机(m.xyz.com) | www.abc.uvw.com 的 IP 地址 | 递归查询 |
2 文件传输协议 FTP
文件传送协议(File Transfer Protocol,FTP):因特网上使用得最广泛的文件传送协议。采用客户/服务器(C/S)模型,运行在 TCP 协议上,端口号为 20 和 21。
2.1 主动模式(建立数据通道时,FTP 服务器主动连接 FTP 客户)
操作 | FTP 客户端口号 | FTP 服务器端口号 | 类型 |
---|---|---|---|
FTP 客户发起 TCP 连接 | 临时端口号 | 21 | 控制连接(用于传送控制命令的 TCP 连接) |
FTP 服务器发起 TCP 连接 | 另一个临时端口号 | 20 | 数据连接(用于传送数据的 TCP 连接) |
有数据传送时,FTP 客户通过命令通道告知 FTP 服务器自己的另一个临时端口号,FTP 服务器负责建立 TCP 连接以建立数据通道。
注意:
- 控制连接在整个会话期间一直保持打开,用于传送 FTP 相关控制命令。
- 数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。
2.2 被动模式(建立数据通道时,FTP 服务器被动等待 FTP 客户的连接)
操作 | FTP 客户端口号 | FTP 服务器端口号 | 类型 |
---|---|---|---|
FTP 客户发起 TCP 连接 | 临时端口号 | 21 | 控制连接(用于传送控制命令的 TCP 连接) |
FTP 客户发起 TCP 连接 | 另一个临时端口号 | 客户告知的临时端口号 | 数据连接(用于传送数据的 TCP 连接) |
有数据传送时,FTP 客户通过命令通道告知 FTP 服务器开启某个临时端口,FTP 客户负责建立 TCP 连接以建立数据通道。
注意:
- 控制连接在整个会话期间一直保持打开,用于传送 FTP 相关控制命令。
- 数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。
3 电子邮件
3.1 电子邮件系统
电子邮件系统采用客户/服务器(C/S)模型,有三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。
- 用户代理:用户与电子邮件系统的接口,又称为电子邮件客户端软件。
- 邮件服务器:电子邮件系统的基础设施。因特网上所有的因特网服务提供者 ISP 都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
- 协议:包括邮件发送协议(例如 SMTP)和邮件读取协议(例如 POP3,IMAP)。
3.2 电子邮件格式
- 信封:
To
(接收方,重要)、Subject
(邮件主题,重要) - 内容:包括首部和主体
- 首部:
From
(发送方)、To
(接收方,重要)、Subject
(邮件主题,重要) - 主体:邮件内容
- 首部:
3.3 电子邮件协议
3.3.1 简单邮件传送协议 SMTP
简单邮件传送协议(Simple Mail Transfer Protocol,SMTP):使用 TCP 连接,端口号为 25。SMTP 客户机可通过 14 条 SMTP 命令通知 SMTP 服务器;相应地,SMTP 服务器可通过 21 条 SMTP 应答响应 SMTP 客户机。
SMTP 服务器和客户机建立 TCP 连接后,SMTP 的工作过程如下:
过程 | 发送方 | 内容 | 接收方 | 备注 |
---|---|---|---|---|
连接建立 | SMTP 服务器 | 220 Service ready | SMTP 客户机 | 主动推送“服务就绪”应答 |
连接建立 | SMTP 客户机 | HELLO: 163.com | SMTP 服务器 | 向服务器说明身份,告知自己的域名 |
邮件发送 | SMTP 服务器 | 250 OK | SMTP 客户机 | 若身份有效,发回应答代码 250 |
邮件发送 | SMTP 客户机 | MAIL FROM: xxx@163.com | SMTP 服务器 | 告知服务器邮件来自何方 |
邮件发送 | SMTP 服务器 | 250 OK | SMTP 客户机 | 若合理,发回应答代码 250 |
邮件发送 | SMTP 客户机 | RCPT To: yyy@163.com | SMTP 服务器 | 告知服务器邮件去往何地 |
邮件发送 | SMTP 服务器 | 250 OK | SMTP 客户机 | 若该邮箱存在,发回应答代码 250 |
邮件发送 | SMTP 客户机 | DATA | SMTP 服务器 | 告知服务器自己准备发送邮件内容 |
邮件发送 | SMTP 服务器 | 354 Start mail input; end with <CRLF>.<CRLF> | SMTP 客户机 | 若准备好接收,发回应答代码 354 |
邮件发送 | SMTP 客户机 | <邮件内容> | SMTP 服务器 | 向服务器发送邮件内容 |
邮件发送 | SMTP 客户机 | . | SMTP 服务器 | 发送完邮件内容,还要发送结束符 |
邮件发送 | SMTP 服务器 | 250 OK | SMTP 客户机 | 若收件成功,发回应答代码 250 |
连接释放 | SMTP 客户机 | QUIT | SMTP 服务器 | 向服务器请求断开 TCP 连接 |
连接释放 | SMTP 服务器 | 221 | SMTP 客户机 | 发回应答代码 221 并主动断开连接 |
【注】<CRLF>表示回车换行。
SMTP 协议只能传送 7 位 ASCII 码文本数据,不能传送可执行文件或其他的二进制对象。
3.3.2 多用途因特网邮件扩展 MINE
由于 SMTP 不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且许多其他非英语国家的文字也无法用 SMTP 传送。除此之外,SMTP 服务器会拒绝超过一定长度的邮件。
为解决 SMTP 传送非 ASCII 码文本的问题,提出了多用途因特网邮件扩展(Multipurpose Internet Mail Extensions,MIME):
- 增加了 5 个新的邮件首部字段,这些字段提供了有关邮件主体的信息。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
3.3.3 邮局协议 POP
- 基于 TCP 连接的客户/服务器方式,端口号为 110。
- POP3 是其第三个版本,是因特网正式标准,是非常简单、功能有限的邮件读取协议。
- 用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户计算机。
- 不允许用户在邮件服务器上管理自己的邮件(例如创建文件夹,对邮件进行分类管理等)。
3.3.4 因特网邮件访问协议 IMAP
- IMAP4 是其第四个版本,是因特网建议标准,是功能比 POP3 强大的邮件读取协议。
- 用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此 IMAP 是一个联机协议。