现在我们都经常使用微信、QQ等IM工具,我们称之为实时通信软件,可能大家都还不知道,微信的前身还是QQ邮箱里面的一个小插件。今天我们来介绍下,邮件这种东西,在互联网中是如何传输的,是什么样的形式存在呢。
电子邮件诞生的时间比较早,早就在几十年前,虽然有了网络,但是不同人,交流起来仍然非常麻烦。计算机底层是二进制,怎么把想表达的东西变成二进制而对方又能顺利看到,一直是一个难题。于是,大家就发明一种叫做SMTP的协议,从计算机网络的角度来看,它的传输层使用的是TCP协议传输,两台机器建立TCP连接后,双方开始在这个连接上进行控制应答与数据传递。这种模式,就好比一个人直接拉了一条电话线到另外一个人家,可以随时进行通信了。
但是这种模式存在什么问题呢?那便是如果对方不在线,就无法建立连接。对方的电脑没开启,你就永远无法发邮件给对方,如果你想发邮件给对方,那就只好提前打个电话,跟他说哥们,我要给你发邮件了,赶紧上线吧。
设想,如果我们不在线,就不能收发消息,那得多麻烦,只要有麻烦的地方,就有商机。很快就有一些厂商,愿意用科技的力量,帮大家解决这个问题,像国外有谷歌,雅虎这样的邮件服务商,国内有搜狐、网易这些。他们是怎么解决的呢?就是提供一个服务器,把大家的东西存放起来。就好比双十一了,我们经常有快递,我们不可能每次快递员来的时候,都有空收快递,于是,我们就跟快递员说,先把这个东西放在物业那边,然后在有空的时候,再去物业那里询问有没有新的快递。
去物业看快递有没有新的快件,便是著名的POP3协议,谷歌雅虎会提供一些支持POP3协议的服务器,提供给大家去询问有没有新的邮件,在此之前,发送者使用SMTP协议将将发送的东西发给服务器,由服务器暂时保存,等着用户来收取。
我们举一个例子,用户A从华为邮箱发送一份邮件给网易邮箱的用户B。
以上就是一份邮件的神奇互联网之旅了,当然这其中还有各种各样的反垃圾校验呀,各种寻址呀,我们就不一一赘述了。我们学习了邮件中最为关键的两个协议SMTP与POP3协议,这都是程序员面试常问的内容。