SMTP是基于TCP还是UDP的?

40

SMTP基于TCP还是UDP?我真的无法确认。在我看来,SMTP应该基于UDP,但有人告诉我必须是TCP。


1
SMTP使用TCP 25端口。 - Kyslik
2个回答

54

理论上,SMTP 可以由 TCP、UDP 或某些第三方协议处理。

RFC 821RFC 2821RFC 5321 中所定义:

SMTP 独立于特定的传输子系统,只需要可靠有序的数据流通道。

此外,互联网编号分配机构为 SMTP 分配了 port 25 端口,供 TCP 和 UDP 使用。

然而,在实践中,大多数组织和应用程序只选择实现 TCP 协议。例如,在 Microsoft 的端口列表 中,仅将端口 25 列为 TCP 而非 UDP。


TCP和UDP之间的重大区别在于TCP会检查每个数据包是否被接收,并在未接收到时重新发送,而UDP则仅发送数据包而不检查接收情况。这使得UDP非常适合流媒体等场景,因为每个数据包的重要性不如保持服务器向客户端的连续数据流。
考虑到SMTP,使用TCP比UDP更合理。SMTP是一种邮件传输协议,在邮件中每个数据包都很重要。如果在消息中间丢失了几个数据包,收件人甚至可能无法收到该消息,即使他们收到了,也可能缺少关键信息。这使得TCP更加适合,因为它确保每个数据包都被传送。

UDP 不是 可靠的有序数据流通道。SMTP 运行的这种通道的示例是 TLS。也许有一天 SMTP 可以扩展到 SCTP 或 MBTCP,但这还没有出现在视野中。 - Ale

-2

看起来SMTP作为互联网标准仅使用可靠的传输协议。RFC821列举了TCP、NCP和NITS作为示例!


SNMP不是SMTP。 - Gambit Support
@GambitSupport 这是一个打字错误(我正在处理SNMP和SMTP,所以混淆它们有点正常)!RFC涉及的是SMTP,而不是SNMP,因此答案仍然有效。 - Ehsan Hemmati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接