TCP/IP协议学习记录之二十五:SMTP--简单邮件传送协议

    电子邮件(e - m a i l)无疑是最流行的应用程序。所有T C P连接中大约一半是用于简单邮件传送协议 SMTP。

     用T C P进行的邮件交换是由报文传送代理 M TA(Message Transfer Agent)完成的。用户通常不和 M TA打交道,由系统管理员负责设置本地的M TA。通常,用户可以选择它们自己的用户代理。

SMTP协议

       最小S M T P实现支持 8种命令。

        H E L O, M A I L, R C P T,D ATA和Q U I T命令用于发送邮件:

        我们键入m a i l启动用户代理,然后键入主题(s u b j e c t)的提示;键入后,再键入报文的正文。在一行上键入一个句点结束报文,用户代理把邮件传给 M TA,由M TA进行交付。客户主动打开 T C P端口2 5。返回时,客户等待从服务器来的问候报文(应答代码为 2 2 0)。该服务器的应答必须以服务器的完全合格的域名开始。下一步客户用 H E L O命令标识自己。参数必须是完全合格的的客户主机名。M A I L命令标识出报文的发起人。下一个命令, R C P T,标识接收方。如果有多个接收方,可以发多个R C P T命令。邮件报文的内容由客户通过 D ATA命令发送。报文的末尾由客户指定,是只有一个句点的一行。最后的命令Q U I T,结束邮件的交换。

      R S E T命令异常中止当前的邮件事务并使两端复位。丢掉所有有关发送方、接收方或邮件的存储信息。

      V R F Y命令使客户能够询问发送方以验证接收方地址,而无需向接收方发送邮件。
      N O O P命令除了强迫服务器响应一个 O K应答码(2 0 0)外,不做任何事情。
      T U R N命令使客户和服务器交换角色,无需拆除 T C P连接并建立新的连接就能以相反方向发送邮件。


信封,首部和正文


电子邮件由三部分组成:
1) 信封(e n v e l o p e)是M TA用来交付的。在我们的例子中信封由两个 S M T P命令指明:
MAIL From: <[email protected]>
RCPT To: <[email protected]>
2) 首部由用户代理使用。
3) 正文(b o d y)是发送用户发给接收用户报文的内容。当用 D ATA命令发送时,先发送首部,紧跟一个空行,然后是正文。用 D ATA命令发送的各行都必须小于 1 0 0 0字节。
   用户接收我们指定为正文的部分,加上一些首部字段,并把结果传到 M TA。 M TA加上一些首部字段,加上信封,并把结果发送到另一个 M TA。

中继代理


        在这种情况下,在发送方和接收方之间有 4个M TA。发送方主机上的本地 M TA只把邮件交给它自己的中继 M TA(该中继M TA可能在该机构的域中有一个 m a i l h o s t的主机名)。这个通信就在该机构的本地互联网上用 S M T P。然后,发送方机构的中继 M TA就在I n t e r n e t上把邮件发送到接收方机构的中继 M TA上,而这个中继 M TA就通过与接收方主机上的本地 M TA通信,把邮件交给接收方主机。

NVT ASCII:

        S M T P的一个特色是它用 NVT ASCII表示一切:信封、首部和正文。这是一个7 bit的字符码,以8 bit字节发送,高位比特被置为 0。

重试间隔:

       当用户把一个新的邮件报文传给它的 M TA时,通常立即试图交付。如果交付失败, M TA必须把该报文放入队列中以后再重试。


   


 

猜你喜欢

转载自blog.csdn.net/cxy19931018/article/details/81386930
今日推荐