- 文件传送协议FTP
★6.5 文件传送协议FTP
文件传送协议 FTP(File Transfer Protocol):因特网上使用的最广泛的文件传送协议。

FTP应用举例
FTP 采用客户 / 服务器方式,因特网上的 FTP 客户计算机可将各种类型的文件上传到 FTP 服务器计算机;FTP 客户计算机也可以从 FTP 服务器计算机下载文件。

根据应用需求的不同,FTP 服务器可能需要一台高性能和高可靠性的服务器计算机,也可能只需要一台普通的个人计算机即可。为了简单起见,假设 FTP 服务器计算机和 FTP 客户计算机处于同一个局域网中。
首先在 FTP 服务器计算机中创建 FTP 服务器,然后就可以在 FTP 客户计算机中通过命令行的方式来访问 FTP 服务器,如下图所示:

也可以在 FTP 客户计算机中使用 FTP 软件来访问 FTP 服务器,如下图所示:


★★★FTP的基本工作原理
如下图所示,FTP 服务器监听熟知端口号 21,FTP 客户会随机选择一个临时端口号主动与其建立 TCP 连接,这条 TCP 连接用于 FTP 客户和服务器之间传送 FTP 的相关控制命令,即这条 TCP 连接是 FTP 客户和 FTP 服务器之间的命令通道。

主动模式
当有数据要传输时,FTP 客户通过命令通道告知 FTP 服务器来与自己的另一个临时端口号建立 TCP 连接,于是 FTP 服务器会主动发起 TCP 连接来建立数据通道(FTP 服务器会使用自己的 TCP 熟知端口号 20 来与 FTP 客户的另一个临时端口号建立 TCP 连接)。
这条 TCP 连接用于 FTP 客户和 FTP 服务器之间传送文件,即这条 TCP 连接是 FTP 客户和 FTP 服务器之间的数据通道。
由于在建立数据通道时,是 FTP 服务器主动连接 FTP 客户,因此称为主动模式。

注意:FTP 服务器的 TCP 熟知端口号 21 是用于建立命令通道的 TCP 连接的(控制连接);
FTP 服务器的 TCP 熟知端口号 20 是用于建立数据通道的 TCP 连接的(数据连接)。
注意:控制连接在整个会话期间一直保持打开,用于传送 FTP 相关控制命令;
数据连接用于文件传输,只有在每次文件传输时才建立,传输结束就关闭。
被动模式
当有数据要传输时,FTP 客户通过命令通道告知 FTP 服务器开启某个临时端口被动等待TCP连接,建立数据通道。
FTP 服务器会使用一个与 FTP 客户协商好的临时端口号(而不是熟知端口号 20),然后 FTP 客户会通过这个端口号来与 FTP 服务器建立 TCP 连接以建立数据通道。
由于在建立数据通道时,是 FTP 服务器被动等待 FTP 客户的连接,因此称为被动模式。


6.6 电子邮件
电子邮件
电子邮件(E-mail)是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一。
电子邮件和邮政系统的寄信类似:
- 发件人将邮件发送到自己使用的邮件服务器;
- 发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱;
- 收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。

★电子邮件发送过程
电子邮件采用客户 / 服务器方式。
电子邮件系统主要由三个构件组成:用户代理、邮件服务器以及电子邮件所需的协议。
- 用户代理:用户与电子邮件系统的接口,又称为电子邮件客户端软件。
- 邮件服务器:电子邮件系统的基础设施,因特网上所有的 ISP 都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
- 电子邮件所需的协议:邮件发送协议(例如 SMTP,Simple Mail Transfer Protocol,简单邮件传输协议)和邮件读取协议(例如 POP3、IMAP)。

如下图所示:
发送方的用户代理作为 SMTP 客户,与发送方邮件服务器中的 SMTP 服务器进行 TCP 连接,然后基于这条连接使用 SMTP 协议来发送邮件给发送方邮件服务器;
发送方邮件服务器中的 SMTP 客户与接收方邮件服务器中的 SMTP 服务器进行 TCP 连接,然后基于这条连接使用 SMTP 协议来发送已收到的待转发邮件给接收方邮件服务器;
接收方的用户代理作为 POP3 客户与接收方邮件服务器中的 POP3 服务器进行 TCP 连接,然后基于这条连接使用 POP3 协议 从接收方邮件服务器中读取邮件。

★简单邮件传输协议SMTP
简单邮件传输协议 SMTP(Simple Mail Transfer Protocol)的基本工作原理:
- 如下图所示,发送方邮件服务器周期性地扫描邮件缓存,如果发现有待转发的邮件,则发送方邮件服务器中的 SMTP 客户会与接收方邮件服务器中的 SMTP 服务器进行 TCP 连接,端口号为熟知端口号 25;
- 然后 SMTP 客户就可以基于这条 TCP 连接,给 SMTP 服务器发送 SMTP 命令(共 14 条);SMTP 服务器也会给 SMTP 客户发送相应的应答(共 21 种);
- SMTP 客户与 SMTP 服务器之间通过命令与应答的交互方式,最终实现 SMTP 客户发送邮件给 SMTP 服务器。

- 注意:SMTP 协议只能传送 ASCII 码文本数据,不能传送可执行文件或其他的二进制对象。
电子邮件的信息格式

★多用途因特网邮件扩展MIME
多用途因特网邮件扩展MIME(Multipurpose Internet Mail Extensions),是为了解决 SMTP 协议不能传送非 ASCII 码文本的问题而提出的。


邮局协议POP
邮局协议 POP(Post Office Protocol):用于邮件读取,POP3 是其第三个版本,是因特网正式标准。

POP3 协议采用基于 TCP 连接的客户 / 服务器方式,使用熟知端口号 110。
因特网邮件访问协议IMAP
因特网邮件访问协议 IMAP(Internet Message Access Protocol):用于邮件读取,IMAP4 是其第四个版本,目前还只是因特网建议标准。

IMAP4 协议采用基于 TCP 连接的客户 / 服务器方式,使用熟知端口号 143。