計算機網絡--淺談電子郵件的工作原理

序言

對於大多數人來說,我想,接觸的第一個電子郵箱應該都是QQ郵箱。我也不例外,從第一次接觸QQ郵箱開始,就對這種有別於傳統郵箱的軟件產生了一些興趣,卻由於種種原因一直都沒有去探究它。前段時間剛好在找實習,期間凸顯了電子郵箱的重要性,剛好最近也有了一些空閒的時間,遂在瞭解了電子郵件的基本工作原理之後,將其整理爲這篇博客。


使用電子郵件的好處

很多人還不清楚使用電子郵件的好處,我貼一下。內容節選自:爲什麼要使用Email及如何用好Email

  1. 寫Email跟用筆寫信是一樣的,你可以經過深思熟慮,將語言精心組織之後再寫下來,也就是說,在工作中使用它更加正式,而且可以留下記錄作爲證據。長期使用Email會鍛鍊你的寫作能力和語言組織能力;
  2. 如果我們都習慣使用“回覆”或“全部回覆”,通過一個郵件就可以看到關於一個項目全部的溝通信息;
  3. 上級經常不知道我們打電話或者發IM消息給客戶到底在談些什麼,而發Email時“抄送”給他,通常情況下他都會很樂意接收,當然你也可以“抄送”或者“密送”給其他你希望看到這個郵件的人;
  4. 很多時候我們都習慣用IM工具傳遞文件,經常會出現的問題是找不到存在哪裏了,或者換了電腦就沒有了。用Email來發文件,永遠不會發生這樣的事,只要你不點擊“徹底刪除”。如果在大學我已經學會熟練使用Email了,我在大學的一些論文便可以保留下來;
  5. 當你想打電話給對方時,常常要考慮對方是否方便接電話,而使用Email則完全不用考慮,如果實在內容很重要,需要及時處理,則可以發個短信通知對方就行了;
  6. 在電話或者IM中收到一個需要後續答覆的事項,往往會被忽略或者被後面的信息淹沒,而Email可以做出標記,不會被遺漏。

有人會說,Email不如IM快捷,如果你翻開你發出的IM信息記錄看一下,有多少是真正需要那麼“快捷”呢?或者有人會說,Email需要長篇大論,太浪費時間,然而如果你再仔細統計一下發IM消息和打電話來溝通一件事所花費的時間的話,你會發現他們纔是浪費時間的真正“罪魁禍首”。或者有人會說,Email不如電話中溝通那麼直接而親切,如果你仔細回憶一下你打過的電話,有多少是真正需要那麼“直接而親切”呢?


RFC 5322–Internet郵件格式

在瞭解電子郵件的基本工作原理之前,我們先來看看在網絡中能被傳輸與處理的電子郵件的標準格式。

我們對RFC 5322所定義的標準郵件格式進行考察:

郵件由一個基本的信封,數個頭字段,一個空行和郵件體組成。頭的每個字段由一行ASCII文本組成。字段是一個基本的鍵值對,鍵被稱爲域名。

在一般用法中,用戶代理創建一個郵件,並將其傳遞給郵件服務器,然後郵件服務器利用某些頭字段來構造出實際的信封。

RFC 5322中與郵件傳輸相關的頭字段:

郵件頭 含義
To 主要收件人的電子郵件地址
Cc 次要收件人的電子郵件地址
Bcc 密件抄送的電子郵件地址
From 標識了郵件撰寫者
Sender 可選字段,當發送人與撰寫人不一致時
Received 傳輸路徑上每個傳輸代理節點將自己填入其中
Return-Path 由最後一個傳輸代理添加指示如何返回發件人,一般留空

RFC 5322中郵件頭使用的某些字段:

郵件頭 含義
Date 郵件發出的日期與時間
Reply-To 回覆時發送給誰,可以和 From 不同
Message-Id 郵件列表中不同郵件的一個ID
In-Reply-To 當前郵件回覆對象的 ID
References 其他相關郵件的ID
Keyords 用戶選擇的關鍵字
Subject 一行顯示的郵件概要

在最初,電子郵件只能由文本消息組成,這些消息用英文書寫並用ASCII碼標識。如今電子郵件所能發送的內容越來越多樣,除了語言的多樣性外,音頻,圖像,二進制文本或程序也可以由電子郵件進行發送,MIME(多用途Internet郵件擴展)使這些都得以實現。

關於MIME的詳細內容不再這裏進行闡述,有興趣的同學可以自行了解。


電子郵件的傳送

有關電子郵件的基本工作原理,推薦大家閱讀這一篇博文:淺探電子郵件原理

但在閱讀這篇博文之前,博主先在這裏講述幾個重要的概念:

  • 用戶代理:提供電子郵件服務的客戶端,如微軟的outlook、騰訊的QQ郵箱。當然,我這裏指的都是客戶端,而不是Web網頁。
  • 郵件傳輸代理(郵件服務器):負責將用戶郵件從源端移動到目的地,運行在郵件服務器機器上。
  • 郵箱:將用戶代理與郵件服務器銜接起來,存儲用戶收到的電子郵件,郵箱由郵件服務器負責維護

然後,請閱讀鏈接中的文章~

關於SMTP的握手過程,我在這裏也進行一點補充:

  1. 發送電子郵件的計算機與目標計算機的25端口建立TCP鏈接;
  2. TCP鏈接建立成功,作爲客戶端的發送機器(以下簡稱客戶端)等待服務端的接收機器(以下簡稱服務器)進行回覆,告訴客戶端是否已經準備好接收郵件;
  3. 如果服務器沒有進行回覆,則客戶端釋放鏈接,稍後嘗試與服務器進行重連;
  4. 如果服務器接收郵件,則客戶端聲明這封電子郵件來自於誰,將要交給誰;
  5. 服務器確認是否有這樣的收件人,如果有則指示客戶端發送郵件;
  6. 兩個方向上的所有郵件都交換完畢,鏈接被釋放。

還有一點:最初,用戶代理與郵件服務器是運行在同一臺電腦上的。現在用戶代理通常運行在個人計算機上,而郵件服務器則運行在ISP和公司服務器上。


總結

  1. 熟悉電子郵件系統的體系結構–用戶代理以及郵件服務器模型;
  2. 熟悉用戶代理與郵件服務器的作用;
  3. 掌握電子郵件的標準格式;
  4. 掌握SMTP的握手過程;
  5. 瞭解MIME、IMAP與POP3。

參考閱讀

計算機網絡—Andrew S. Tanenbaum/David J. Wetherall

淺探電子郵件原理—Author

爲什麼要使用Email及如何用好Email—賈王東的博客

電子郵件—喵醬的書架

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章