谁能帮我创建一个使用 UDP 的简单、基本的电子邮件客户端和电子邮件服务器,并熟悉 SMTP 的工作原理?
我刚刚开始计算机网络,我只需要知道所涉及的步骤。
谢谢你。
Internet RFC ( Request For Comments ) 是此类信息的最佳来源:RFC 821中概述了 SMTP 。好消息是 SMTP 是一个基于文本的协议,就像 HTTP 和朋友一样。
C
这是客户端和服务器之间的示例对话S
(取自维基百科):
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: "Alice Example" <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}
对电子邮件使用 UDP 并不是最好的主意,因为 UDP 数据包可能会被丢弃。TCP会更好用。但既然你提到这是一个任务,我想没关系。
因此,首先编写您的通用 UDP 客户端/服务器代码。然后修改它以支持 SMTP 命令。
我将首先实现简单的echo
协议。echo
或者只是在您最喜欢的协议语言中在线搜索一些源代码。例如,如果您想将 C++ 与boost.asio 一起用于网络,它具有UDP客户端和服务器的演示代码。对于 Perl,这里echo
有一些简单的 UDP 代码。
然后浏览您需要的 RFC 821 部分,然后从那里开始。我猜因为这是一项任务,您可能不需要协议中的所有内容。
由于协议只是简单的文本命令和响应,因此解析它应该不是问题。