计算机网络(浅谈SMTP协议)

来源:互联网 发布:阅读软件哪个好 编辑:程序博客网 时间:2024/05/09 09:46
  本文主要目的:了解互联网电子邮件协议_STMP的工作原理。
  推荐书籍:《计算机网络_自顶向下方法》 

有关文献:RFC 5321


  当互联网还在襁褓中时,电子邮件已经成为最为流行的应用程序,速度快且成本低,现在国内比较多用的就是163邮箱、QQ邮箱,大部分的邮件都是基于SMTP协议上接收发送的。在80年代到90年代末的电子邮件程序功能非常少,现在还比较强大,能有附件、超链接、HTML格式文本和图片的报文。SMTP问世的时间要比HTTP长得多,初始的SMTP协议的RFC可追溯到1982年,但其实在此之前很长一段时间就已经出现了。

  因特网电子邮件系统由三个主要部分组成:用户代理、邮件服务器和邮件传输协议。


  假设发送方A发电子邮件给接收方B,用户代理允许用户阅读、回复、转发、保存和撰写报文(个人觉得可以理解为客户端),当A方完成邮件撰写,他的邮件代理向其邮件服务器发送邮件,此时邮件放在邮件服务器的外出报文队列。然后发送至B方的邮件服务器,再由其邮件服务器分发给B,B方可利用用户代理进行读取、管理报文。这中间利用了某种邮件协议以及传输方式(一般为TCP)。


  邮件服务器是电子邮件体系结构的核心,每个接收方在其中的某个邮件服务器上有一个邮箱。


  SMTP是因特网电子邮件中主要的应用层协议,与之前学习的HTTP和FTP一样,都是基于TCP可靠数据传输协议上。SMTP也有两个部分,运行在发送方邮件服务器的客户端,以及运行在接收方邮件服务器的服务器端。


  假设A向B发送一封简单的ASCII报文:
  ①A调用她的邮件代理程序并提供B的邮件地址,撰写报文,然后指示用户代理发送;
  ②A的用户代理把报文发送给她的邮件服务器,放在报文队列中;
  ③运行在A的邮件服务器上的SMTP客户端发现报文队列中的报文,就创建一个运行在B的邮件服务器上的SMTP服务器的TCP连接;
  ④经过某些握手后,SMTP客户通过该TCP连接发送TCP连接;
  ⑤在B的邮件服务器上,SMTP的服务器端接收该报文,B的邮件服务器将该报文放入B的邮件中;

  ⑥B放调用用户代理阅读该报文;


  让我们循环渐进了解其工作原理~


  首先客户SMTP在25端口建立一个到服务器SMTP的TCP连接,如果服务器没有开机,客户会在稍后继续尝试连接。一旦连接建立,服务器和客户执行一些列的握手。握手阶段,SMTP客户指示发送方的邮件地址和接收方的邮件地址,然后客户发送该报文。SMTP能依赖TCP提供的可靠数据传输无差错地将邮件投递到接收服务器。


  SMTP是持续连接,如果发送邮件服务器有几个报文发往同一个接收邮件服务器,它可以通过同一个TCP连接发送这些报文。

  与HTTP对比一下,这两个协议都是用于从一台主机向另一台主机传送文件;HTTP是拉协议,向web服务器拉取信息,而SMTP是推协议,向接收邮件服务器推信息。SMTP要求每个报文使用7比特ASCII码格式,如果某报文包含了非7比特ASCII字符或者二进制数据,则该报文必须按照7比特ASCII码进行编码,而HTTP不受这种限制。


  关于SMTP报文格式这里不多扯,简单了解一下SMTP报文的首部行报文包含着接收方发送方的一些重要信息,紧接着一个空白行后才加ASCII格式表示的报文体。
0 0
原创粉丝点击