每天学会一个计算机网络协议之-SMTP/POP3/IMAP,理论加实战

开始行文之前提出几个问题,相信大家在看完本文后一定可以回答以下的问题。

邮件是怎么精确的从发件人传输到收件人的?

为什么在不同的电脑登录邮箱已经阅读过的邮件还是会显示为未读?

为什么早期邮箱只能发送文字,而现在可以发送各种各样的流媒体?

每天学会一个计算机网络协议之-SMTP/POP3/IMAP,理论加实战

SMTP/POP3/IMAP协议

邮件传输流程

有一天ztz(赵铁柱)准备给ten(甜二妞)发邮件,赵铁柱使用的是163邮箱,甜二妞使用的也是163邮箱(如果发送和接收双方不是同一类邮箱,那么需要使用到DNS协议)赵铁柱通过outlook先把邮件发送到发送方邮件服务器,发送方邮件服务器会固定时间间隔检测是否有待发的邮件,如果有则使用SMTP协议将邮件转发至相应接收方邮件服务器,发送方邮件服务器和接收方邮件服务器中间没有其他服务器,它们之间是直接连接的,甜二妞使用outlook打开收件箱,此时接收方邮件服务器通过POP3/IMAP协议将邮件推送给甜二妞,至此整个邮件发送接收流程结束。


SMTP/POP3/IMAP协议理论详述

SMTP(Simple Mail Transfer Protocol )使用TCP/IP协议栈,为用户提供可靠传输服务。SMTP协议可以理解为“推”的协议,将需要传输的邮件从发送方“推”到接收方邮件服务器,POP3/IMAP协议可以理解为“拉”的协议,将邮件从接收方邮件服务器中“拉”至接收方收件箱中。


SMTP协议实战

赵铁柱和甜二妞要发送邮件

1.建立TCP连接

2.赵铁柱发送发件人邮箱地址

3.赵铁柱发送接收人邮件地址

4.赵铁柱发送邮件正文

5.断开TCP连接

1.建立TCP连接
连接建立完毕后
ten:220 163.com simple mail transfer service ready 接收方服务器ready
ztz:HELO 163.com 发送方发送主机名 HELO是固定格式不用管
ten:250 163.com 250 代表服务器准备好接收邮件
ztz: MAIL FROM: MAIL 邮件的传输从MAIL命令开始
ten:250 mail accepted
ztz: RICPT TO: 收件人是甜二妞
ten: 250 recipient accepted 250代表有这个收件人,550代表没有这个收件人
ztz:DATA hello world........ 使用. 表示正文结束
ten: 250 ok 甜二妞说收到了
ztz: QUIT 赵铁柱说拜拜不聊了 断开TCP连接
ten: 221 163.com service closing transmission channel 甜二妞说好的

MIME协议

MIME(Multipurpose Internet Mail Extension )它的出现是为了解决早期邮件只可以发送文字,不能发送图片、声音、视频的问题。使用SMTP协议只支持传输7比特的ASCII码,显然声音文件、视频文件不是ASCII码,所以MIME协议规定了传输非ASCII码的规则,使我们可以传输声音和视频。

每天学会一个计算机网络协议之-SMTP/POP3/IMAP,理论加实战

MIME


POP3/IMAP

POP3/IMAP协议都可以理解为“拉”的协议,将邮件从接收方邮件服务器中“拉”至接收方收件箱中。

每天学会一个计算机网络协议之-SMTP/POP3/IMAP,理论加实战

POP3/IMAP对比

以上只是简单列举了POP3和IMAP的区别,IMAP相对POP3而言还有其他的优势,具体细节可以参考RFC 4315。


总结

到此总结一下SMTP/POP3/IMAP/MIME的关系

SMTP协议可以理解为“推”的协议,将需要传输的邮件从发送方“推”到接收方邮件服务器,POP3/IMAP协议可以理解为“拉”的协议,将邮件从接收方邮件服务器中“拉”至接收方收件箱中。MIME是为了拓展邮件传输内容形式而建立的协议。在本文中涉及很多其他的知识没有展开,比如邮件传输过程中的加密,SSL证书,在后续的文章中会陆续讲解到。


分享到:


相關文章: