第五章:应用层协议

正如我们在前几章中看到的那样,网络中的两台主机以流或离散数据包交换字节。 通常由更高级别的应用程序将这些字节处理为对应用程序有意义的事物。 这些应用程序在传输层上定义了一个新的协议层,通常称为应用层协议。 在本章中,我们将研究其中的一些协议。

设计应用层协议有许多重要的考虑因素。实现需要至少知道以下细节:

  • 通信广播还是点对点?在第一种情况下,底层传输协议必须是 UDP。在第二种情况下,它可以是 TCP 或 UDP 。
  • 协议是否需要可靠的传输?如果是,TCP 是唯一的选择。否则,UDP 也可能是合适的。
  • 应用程序是否需要字节流(TCP),还是可以逐个数据包(UDP)工作?
  • 是什么标志着各方之间的投入结束?
  • 使用的数据格式和编码是什么?

一些非常常用的应用层协议是 DNS(我们在前面的章节中研究过)和 HTTP(我们将在后续章节中研究)。除此之外,通常用于基于微服务架构的非常重要的应用层工具集是 gRPC。 每个人至少使用过几次的另一个应用层协议是 SMTP,电子邮件提供支持的协议。

在本章中,我们将研究以下主题:

  • RPC如何工作。具体来说,我们将查看gRPC并使用该工具包编写一个小型服务器和客户端。
  • 我们将看一下可以用来以编程方式发送电子邮件的crate caller lettre。
  • 最后一个主题是在Rust中编写一个简单的FTP客户端和TFTP服务器。