电子邮件的收发及传输过程解析
在了解电子邮件之前,我们先看看传统邮件是如何运作的。假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢?
首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去。
信件会从就近的小邮局转运到大邮局,再从大邮局往别的城市发,比如先发到天津,再走海运到达香港,也可能走京九线到香港,但是你不用关心具体路线,你只需要知道一件事,就是信件走得很慢,至少要几天时间。
信件到达香港的某个邮局,也不会直接送到朋友的家里,因为邮局的叔叔是很聪明的,他怕你的朋友不在家,一趟一趟地白跑,所以,信件会投递到你的朋友的邮箱里,邮箱可能在公寓的一层,或者家门口,直到你的朋友回家的时候检查邮箱,发现信件后,就可以取到邮件了。
电子邮件的流程基本上也是按上面的方式运作的,只不过速度不是按天算,而是按秒算。
现在我们回到电子邮件,假设我们自己的电子邮件地址是me@163.com
,对方的电子邮件地址是friend@sina.com
(注意地址都是虚构的哈),现在我们用Outlook
或者Foxmail
之类的软件写好邮件,填上对方的Email地址,点“发送”,电子邮件就发出去了。这些电子邮件软件被称为MUA:Mail User Agent——邮件用户代理。
Email从MUA发出去,不是直接到达对方电脑,而是发到MTA:Mail Transfer Agent——邮件传输代理,就是那些Email服务提供商,比如网易、新浪等等。由于我们自己的电子邮件是163.com
,所以,Email首先被投递到网易提供的MTA,再由网易的MTA发到对方服务商,也就是新浪的MTA。这个过程中间可能还会经过别的MTA,但是我们不关心具体路线,我们只关心速度。
Email到达新浪的MTA后,由于对方使用的是@sina.com
的邮箱,因此,新浪的MTA会把Email投递到邮件的最终目的地MDA:Mail Delivery Agent——邮件投递代理。Email到达MDA后,就静静地躺在新浪的某个服务器上,存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为电子邮箱。
同普通邮件类似,Email不会直接到达对方的电脑,因为对方电脑不一定开机,开机也不一定联网。对方要取到邮件,必须通过MUA从MDA上把邮件取到自己的电脑上。
所以,一封电子邮件的旅程就是:
发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人
有了上述基本概念,要编写程序来发送和接收邮件,本质上就是:
编写MUA把邮件发到MTA;
编写MUA从MDA上收邮件。
发邮件时,MUA和MTA使用的协议就是SMTP:Simple Mail Transfer Protocol,后面的MTA到另一个MTA也是用SMTP协议。
收邮件时,MUA和MDA使用的协议有两种:POP:Post Office Protocol,目前版本是3,俗称POP3;IMAP:Internet Message Access Protocol,目前版本是4,优点是不但能取邮件,还可以直接操作MDA上存储的邮件,比如从收件箱移到垃圾箱,等等。
邮件客户端软件在发邮件时,会让你先配置SMTP服务器,也就是你要发到哪个MTA上。假设你正在使用163的邮箱,你就不能直接发到新浪的MTA上,因为它只服务新浪的用户,所以,你得填163提供的SMTP服务器地址:smtp.163.com
,为了证明你是163的用户,SMTP服务器还要求你填写邮箱地址和邮箱口令,这样,MUA才能正常地把Email通过SMTP协议发送到MTA。
类似的,从MDA收邮件时,MDA服务器也要求验证你的邮箱口令,确保不会有人冒充你收取你的邮件,所以,Outlook之类的邮件客户端会要求你填写POP3或IMAP服务器地址、邮箱地址和口令,这样,MUA才能顺利地通过POP或IMAP协议从MDA取到邮件。
以上有部分内容来自廖雪峰老师的文章
电子邮件的收发及传输过程解析相关推荐
- android voip通话音频数据流传输过程解析
我在前面几篇博客中已经描述了sip通话的建立过程,以及基本代码实现流程,但是我们真正的目的是基于sip协议进行语音通话,本文分析这些音频流是如何建立和传输的. 与音频流传输相关的两个java类为Aud ...
- OSI参考模型下电子邮件传输过程
在OSI参考模型下的电子邮件传输过程 电子邮件的工作过程遵循客户---服务器模式.每份电子邮件的发送都要涉及到发送方和接收方,发送发构成客户端,而接收方构成服务器.其主要用到的协议由SMTP和POP3 ...
- 邮件传输过程,MUA,MTA,MDA的概念
邮件传输过程.MUA.MTA.MDA MUA outlook.thunderbird.Mac Mail.mutt MTA sendmail.postfix MDA procmail.dropmail ...
- 【SRIO】3、RapidIO串行物理层的包传输过程
目录 一.引言 二.串行物理层的PCS层与PMA层 2.1 PCS层的功能 2.2 PMA层的功能 2.3 术语定义 2.3 8B/10B传输码 2.4 字符和码组记号 2.5 运行不一致(Runni ...
- 【计算机网络】HTTP 与 HTTPS ( HTTP 在网络各个层级的传输过程 | HTTPS 工作流程 | HTTPS 弊端 )
文章目录 一.HTTP 在网络各个层级的传输过程 二.HTTPS 工作流程 1.中间人篡改服务器下发的数字证书 2.中间人冒充服务器端 三.HTTPS 弊端 一.HTTP 在网络各个层级的传输过程 应 ...
- ip、子网掩码、默认网关以及传输过程
IP: IP地址:由网络部分 和 本机部分 组成 比如IP地址为 192.168.3.12 对应的二进制为 11000000 10101000 00000011 00001100 子网掩码: 子网掩码 ...
- 后端传输流跨域_Java开发中解决Js的跨域问题过程解析
这篇文章主要介绍了Java开发中解决Js的跨域问题过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主流方法有JSONP和CORS两种,这里记 ...
- 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...
老李推荐:第8章2节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-解析处理命令行参数 MonkeyRunnerStarter是MonkeyRunner启动时的入 ...
- 图解数据在网络中的传输过程
数据在网络中的传输过程 在计算机网络当中,数据是怎么样保证准确的从客户端发送到服务器端的,这是本文探究的重点. 下图是本文中使用的网络拓扑图,数据从客户端发送给服务器端. 客户端各层对数据的封装 ja ...
- PPPoE拨号过程解析
原文地址:PPPoE拨号过程解析 作者:nike PPPoE(PPP overEthernet)是在以太网上建立PPP连接,由于以太网技术十分成熟且使用广泛,而PPP协议在传统的拨号上网应用中显示出良 ...
最新文章
- AS-External-LSA
- 白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格
- HTTP 错误 403.9 - 禁止访问:连接的用户过多 XP IIS服务器连接数的修改
- 1.16 static关键字(静态变量和静态方法)
- mysql使用CONCAT()函数拼接字符串
- CPU的内部架构和工作原理
- [Linux]-Shell编程与规范
- spring注解 annotation
- python常用字符串_Python中最常用的字符串方法!
- 花了一天的时间给粉丝做了一个小米官网(高仿)
- OFFICE没有仿宋GB2312的字体
- 获取谷歌浏览器Chrome缓存目录
- Iterator方法详解
- 分享一套PHP的cms系统,免授权可商用,零元CMS企业官网系统,采用laravel+admin架构的企业建站系统
- 基于VOIP的SIP协议分析
- 3D轮廓检测技术讲解
- Python案例之QQ空间自动登录程序实现
- Typora+阿里云OSS(将图片上传到阿里云服务器上)
- HashMap的四种遍历方法,及效率比较(简单明了)
- 在 SAP 故乡,感受「边缘智能」之变