正文
3、File and FTP
(1)通信过程
对于文件 (File) 传输,通常使用 FTP (File Transfer Protocol) 控制通信规则,其依赖于 TCP 提供的服务
FTP 协议在通信时会建立两个连接,分别为 控制连接 (Control Connection) 和 数据连接 (Data Connection)
- 控制连接:用于传输命令,进行授权认证
- 数据连接:用于传输文件
对于 CS 架构通信过程如下:
- 客户端与服务端建立控制连接
- 客户端通过控制连接进行授权,发送命令
- 服务端收到文件传输命令之后,建立数据连接
- 服务端通过数据连接传输文件,当一个文件传输完成后,服务端关闭数据连接
- 如果还有其它文件传输,需要重新建立数据连接
(2)消息格式
FTP 采用 命令/响应 格式,客户端发送的命令以及服务端返回的响应通过控制连接传输,它们都是 7 比特的 ASCII
客户端发送 命令 (Command) 进行授权和请求资源,常用的命令如下:
- USER username:向服务端发送账号
- PASS password:向服务端发送密码
- LIST:返回当前目录的文件列表
- RETR filename:从服务端下载文件
- STOR filename:将文件上传到服务端
服务端接收到命令后,发送 响应 (Response) 返回结果,一个响应包括状态代码和状态信息,常见的响应如下:
- 311:账号正确,要求输入密码
- 125:已经建立数据连接,开始传输文件
- 425:不能建立数据连接
4、Email and SMTP
(1)通信过程
对于邮件 (Mail) 传输,通常使用 SMTP (Simple Mail Transfer Protocol) 控制通信规则,其依赖于 TCP 提供的服务
邮件传输有两个重要的组件,分别是 用户代理 (User Agent) 和 邮件服务器 (Mail Server)
- 用户代理:用于编辑、阅读邮件
- 邮件服务器:用于发送、接收邮件
对于 CS 架构通信过程如下:
- 发送方通过自己的用户代理编辑邮件
- 发送方的用户代理发送邮件到自己的邮件服务器
- 发送方的邮件服务器接收邮件,将邮件放在消息队列 (Message Queue),等待发送
- 发送方的邮件服务器发送邮件到接收方的邮件服务器
- 接收方的邮件服务器接收邮件,将邮件放在邮件箱子 (Mail Box),等待阅读
- 接收方通过自己的用户代理阅读邮件
(2)消息格式
最开始的时候,邮件只能传输文本,因此只用简单的 ASCII 定义邮件格式
普通邮件格式 包括两个部分,分为头部 (Header) 和主体 (Body)
后来,邮件还能传输多媒体资源,又定义了新的格式 MIME (Multiperpose Internet Mail Extension)
只需要在头部添加新行,指定使用 MIME 邮件格式 即可
SMTP 同样采用 命令/响应格式,对于客户端发送的命令以及服务端返回的响应,它们都是 7 比特的 ASCII
客户端发送 命令 (Command) 进行授权和请求资源,常用的命令如下:
- HELO:建立连接
- AUTH LOGIN:身份认证
- MAIL FROM address:指定发送邮件的邮箱
- RCPT TO address:指定接收邮件的邮箱
- DATA:指定邮件正文
- QUIT:关闭连接
服务端接受到命令后,发送 响应 (Response) 返回结果,一个响应包括状态代码和状态信息,常见的响应如下:
- 220:服务就绪
- 250:要求的操作已完成
- 354:开始输入邮件正文,以 . 结束
- 221: 服务关闭
(3)其它邮件协议
上面介绍过的 SMTP 是 邮件发送协议,下面要介绍的 POP3 和 IMAP 是 邮件接收协议
- POP3 (Post Office Protocol 3):允许用户从邮件服务器下载邮件
- IMAP (Internet Mail Access Protocol):允许用户直接在邮件服务器上管理邮件,包括移动、分类等
5、DNS
DNS (Domain Name System) 的作用是 将域名解析为 IP 地址
DNS 是一个 分布式、层次化的数据库,里面储存着域名与 IP 地址的映射关系,称为 资源记录 (Resource Record)
资源记录的格式如下:(name, value, type, ttl),常见的资源记录如下:
- A 记录:type 为 A,此时 name 表示域名,value 表示 IP 地址
- NS 记录:type 为 NS,此时 name 表示域名,value 表示负责解析 name 的域名服务器的域名
- SOA 记录:type 为 SOA,此时 name 表示域名,value 表示负责解析 name 的主域名服务器的域名
- CNAME 记录:type 为 CNAME,此时 name 表示别名,value 表示标准名称
数据库按照层级的不同可分为四层:
- 根域名服务器 (Root DNS Server):目前全球一共有 13 台根域名服务器
- 顶级域名服务器 (Top-Level Domain DNS Server):提供 com、org、net、edu 等顶级域名的解析服务
- 权威域名服务器 (Authoritative DNS Server):为特定的组织提供解析服务
- 本地域名服务器 (Local DNS Server):严格来说不属于其中一层,每个 ISP 都有一个本地域名服务器
DNS 也是一种 应用层协议,当请求域名解析服务时,通常使用 DNS 控制通信规则,其依赖于 UDP 提供的服务
(1)通信过程
当客户端向域名服务器请求域名解析服务时,有两种查询方式,分别是迭代查询和递归查询
如果使用 迭代查询 (Iterated Query),那么通信过程如下:
如果使用 递归查询 (Recursive Query),那么通信过程如下:
(2)消息格式
DNS 使用 请求/回复格式,它们使用相同的报文
文章知识点与官方知识档案匹配,可进一步学习相关知识