电子邮件的发明到现在已有很长一段时间历史了,每家电子邮件服务提供商都有自己不同的实现,但是不管他们细节上有多不同,他们也都还是依据一定的工业标准。了解这些机制和协议能够帮助我们更好的去做一些研究和开发(不能黑化😜)。
话不多说我们直接进入正题。
图中出现的名词解释:
- SMTP : 简易邮件传输协议,Simple mail transfer protocol,这四个单词的缩写
- POP3 :post Office protocol 的缩写 version 3
- IMAP : 互联网邮件访问协议 internet mail access protocol
- Http : 超文本文件传输协议
- MIME : 多媒体互联网邮件扩展协议(用来转码的)(由于电子邮件只支持7位的ASIIC编码的文本文件,所以传输视频,音频等其他文件时,要进行编码,就是根据这个协议来编码,比如,一般会将类似图片等使用base64编码)
当一个人要发送电子邮件了,首先登陆邮箱,依据IMAP协议进行用户名和密码验证,通过后,登进邮箱,然后进行查看,这时候客户端会发送list命令至邮箱服务器端,响应成功返回邮件列表,这时候可能是主题和其他一些概要信息,点击单一邮件,查看该邮件详情,这时候会使用pop3协议或者IMAP协议读取邮件信息。pop3不支持远程创建文件,就是邮箱邮件只支持本地,IMAP几户囊括pop3的所有功能,比pop3要复杂。比如我现在要在A电脑创建一个邮件,保存后,在B电脑打开做一些修改后再发给其他邮箱。试想一下我们现在用的几乎所有的邮箱客户端都支持这个功能,他们就是遵循的IMAP协议实现这一效果。
我们会登陆C1邮箱客户端,编辑好邮件先发送到自己对应的邮箱服务器s1,然后再由邮件服务器s1通过SMTP发送邮件至s2邮件服务器(这时候就已经到了要发送的邮箱了),s2返回接收成功后,s1收到ok返回+ok信息给客户端,我们看到这封邮件发送成功了。这时候,这种邮箱客户端发送邮件时,用的就是SMTP协议。
还有一种情况,我们通过浏览器登陆我们的邮箱,编辑邮件后点击发送,这时候流程不变,只不过在我们将邮件发送到自己的邮件服务器的时候使用的是http协议,包括从自己的邮件服务器拉取邮件等,或者所有的交互都使用的http协议,但是在邮件从自己的邮件服务器发送到目的邮件服务器时,依然使用的是SMTP协议。
上面所说的这些所有的协议都是应用层的协议,都是基于传输层协议TCP进行信息互通的,TCP是全双工的传输层协议。所有的进程间面向连接的可靠通信基本都是通过socket套接字实现调用传输层协议TCP进行数据传输。
怍一说明:
所谓协议就是,人们规定的一种互联网间通讯的规则和制度,计算机间信息互通遵循共同的协议,才能实现有效,稳定,可靠,可交互的通信。也是由一些机构或者组织制定出来的,这里面都是进行了一定的或者大量的学术研究和实验而制定的。协议的三要素,即是语法、语义,时序。即这个协议的报文的数据格式,多长,多少字节,头信息是哪些等。语义即是报文里面有一些控制信息是什么含义,接受到这种控制信息该怎么做,怎么去做差错校验等,时序就是接收顺序,响应时间的控制等。互联网是分层的,现在工业实现上基本是4层,网络接口层,网络互联层,传输层,应用层等。每一层都有各自对应的协议,这些协议就是用来解决每层实体之间的通讯问题,该怎么去通讯,所遵循的规则是什么。
🏆 掘金技术征文|双节特别篇