HTTP 代表超文本传输协议,FTP 代表文件传输协议,而 SMTP 代表简单邮件传输协议。这三者都用于通过计算机网络传输信息,并且是当今互联网不可或缺的一部分。

为什么需要三个协议来传输文件?
需要这三种协议,因为它们都有不同的用途。它们是 HTTPFTPSMTP

  • HTTP 是万维网 (WWW) 的支柱。它定义了 Web 浏览器(如 Firefox、Chrome)和 Web 服务器通信的消息格式,同时还定义了 Web 浏览器应如何响应特定的 Web 浏览器请求。
  • 顾名思义,FTP 是用于通过通信网络传输文件的底层协议。 它建立两个 TCP 连接:控制连接以验证用户身份,以及数据连接以传输文件。
  • SMTP 是全球电子邮件服务器用来相互通信的工具,以便在晚上 11:59 提交的作业在截止日期前到达教授的收件箱。

它们的实现有何不同?
这三个都是应用层协议,使用 TCP 作为底层传输层协议。 但是它们使用它的方式和一般的实现方式是截然不同的。 下表简要区分了它们。

对比项 HTTP FTP SMTP
端口号 80 20 和 21 25
带传输类型 带内 带外 带内
状态 无状态 保持状态
TCP连接数 1 2(数据连接和控制连接) 1
TCP 连接的类型 可以同时使用持久性和非持久性 控制连接的持久性(数据连接的非持久性) 数据连接持久
协议类型 协议(主要) - 推送协议(主要)
传输类型 在 Web 服务器和 Web 客户端之间传输文件 在计算机之间直接传输 通过邮件服务器传输邮件
  • HTTP 是无状态的。 无状态协议意味着 HTTP Web 服务器不维护哪个请求源自哪个用户。 因此,为了向用户提供定制服务,HTTP 使用 Cookie。
  • FTP 是 Out-of-band,因为它使用单独的通道来发送数据(Data connection),就像发送控制信息(Control connection)一样。
  • 由于 SMTP 比 HTTP 早得多,因此它将所有消息都限制为 7 位 ASCII 格式。 而 HTTP 没有这样的限制。
  • HTTP 将每个文件封装在不同的 HTTP 消息中。 而 SMTP 将邮件的所有内容放在一条消息中。