【計算機網絡】2.4 因特網中的電子郵件

第二章第四節 因特網中的電子郵件

Outline

Notes

## 因特網的三大組件

下圖是因特網電子郵件系統的整體狀況,從該圖中咱們能夠看出它有3個重要組成部分:用戶代理(user agent)、郵件服務器(mail server)和簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)web

 

用戶代理容許用戶閱讀、回覆、轉發、保存和撰寫報文。瀏覽器

郵件服務器組成了電子郵件體系結構的核心。每一個接收方在其中的某個服務器上有一個郵箱。郵箱包含用戶的到達報文、離開(將發送)郵件報文的報文隊列;在發送電子郵件報文的郵件服務器之間採用SMTP協議。安全

SMTP是因特網電子郵件中主要的應用層協議。它使用TCP可靠數據傳輸服務,從發送方的郵件服務器向接收方的郵件服務器發送郵件。服務器

## SMTP

  • SMTP是電子郵件應用的核心,使用TCP從客戶機到服務器可靠地傳輸電子郵件報文,用端口25,屬於TCP/IP協議族。
  • SMTP通常不使用中間郵件服務器發送郵件,他採用直接傳輸的方式,從發送服務器到接受服務器
  • 傳輸共有三個階段:握手、報文傳輸、關閉
  • 在SMTP握手階段,客戶端向SMTP服務器分別指定發信人和收信人的電子郵件地址。握手階段完畢,SmTP服務器把客戶端發出的郵件消息添加到發信隊列中,經過TCP提供的可靠數據傳輸服務把該消息無錯的傳送到服務器。若是客戶還有其餘郵件消息須要發送到同一個服務器,就在同一個TCP鏈接重複上述過程;不然,指定TCP關閉該鏈接。
  • 鏈接和發送過程以下:
        1)創建TCP鏈接。
        2)客戶端發送HELO命令以標識發件人本身的身份,客戶端發送MAIL命令。服務器以ok做爲響應,代表準備接受。
        3)使用AUTH命令登陸SMTP服務器。輸入用戶名和密碼(注意用戶名和密碼都須要使用base64加密)。
        4)客戶端發送RCPT命令,標識該電子郵件的計劃接收人,能夠有多個RCPT行。服務器以OK做爲響應,表示願意爲收件人發送郵件。
        5)協商結束後,使用DATA命令發送。
        6)以「.」號表示結束,輸入內容一塊兒發送出去,結束這次發送,用QUIT命令退出。
  • 命令/響應交互模式:
    • 命令: 按照ASCII碼的表示方式,發送自解釋命令
    • 響應: 用狀態碼和短語對每條命令進行回答
  • 報文必須是7比特ASCII格式
  • SMTP協議經常使用的命令

 【SMTP與HTTP的對比】ui

  • 相同:HTTP和SMTP都用於從一臺主機向另外一臺主機傳輸文件
    • HTTP從Web服務器向Web客戶;
    • SMTP從一個郵件服務器向另外一個郵件服務器;
  • 進行文件傳輸時,兩者都使用持續鏈接
  • 差異:
    • HTTP主要是一個拉協議:即在方便的時候,某些人在Web服務器上裝載信息,用戶使用HTTP從該服務器拉取這些信息;SMTP主要是一個推協議:即發送郵件服務器把文件推向接收郵件服務器,這個鏈接是由要發送該文件的機器發起的。
    • SMTP要求每個報文(包括他們的體)使用7比特ASCII碼格式,若非如此,則強制轉化;HTTP沒有這樣的編碼限制
    • HTTP把每一個對象封裝到它本身的HTTP響應報文中;SMTP把全部報文對象放在一個報文之中。

## 郵件報文格式和MIME

  • RFC 5322規定文本消息格式標準:
    • 包括有頭部行、空白行、消息體,其中頭部行有To、From、Subject,消息體包括消息自己,消息體只能是 ASCII字符
  • 因爲 文本消息格式標準 ,只適合於發送普通ASCII文本,不能充分知足多媒體報文或非ASCII文本格式的報文的需求。爲發送非ASCII碼內容,發送方的用戶代理必須在報文中使用附加的首部行,MIME(多用途因特網郵件擴展)是對RFC 822的擴展
  • 支持多媒體的兩個關鍵MIME首部是Content-Type Content-Transfer-Encoding
    • Content-Type:首部行容許接收用戶代理對報文采起適當的動做
    • Content-Transfer-Encoding:首部行提示接收用戶代理該報文主體已經使用了ASCII編碼,並指出了所用的編碼類型。

  • 接收服務器一旦接收到具備RFC 822和MIME首部行的報文,就在該報文的頂部添加一個Received:首部行;該首部行定義了發送該報文的SMTP服務器的名稱(from),接收該報文的SMTP服務器的名稱(by),以及接收服務器接收到的時間。
  • 有時一個郵件有多個Receive行,這是由於有的郵件在發送方和接收方之間的路徑要通過不止一個SMTP服務器轉發。

 ## 郵件訪問協議

  在上述分析中,有一個疏漏的環節,那就是在Alice向Bob發送郵件的過程當中,Bob是如何經過運行在他本地PC上的用戶代理,得到位於某ISP的郵件服務器上的他的郵件呢?注意到Bob的用戶代理不能使用SMTP來取回郵件,由於取郵件時一個拉操做,而SMTP是一個推協議。所以咱們要引入郵件訪問協議,包括第三版的郵局協議(POP3)因特網郵件訪問協議(IMAP)以及HTTP編碼

  下圖總結了應用於因特網電子郵件的一些協議:SMTP用來將郵件從發送發的郵件服務器傳輸到接收方的郵件服務器。如POP3這樣的郵件訪問協議用來將郵件從接收方的郵件服務器傳送到接收方的用戶代理。加密

POP3】3d

  • POP3是Post Office Protocol 3的簡稱,即郵局協議的第3個版本,是TCP/IP協議族中的一員(默認端口是110)。
  • 它被用戶代理用來郵件服務器取得郵件。POP3採用的也是C/S通訊模型,對應的RFC文檔爲RFC1939。
  • POP3支持電子郵件客戶端下載服務器上的郵件,可是在客戶端的操做(如移動郵件、標記已讀等),不會反饋到服務器上,好比經過客戶端收取了郵箱中的3封郵件並移動到其餘文件夾,郵箱服務器上的這些郵件是沒有同時被移動的 。
  • POP3按照三個階段工做:  
    • 特許:用戶代理髮送(以明文形式)用戶名和口令以鑑別用戶。
    • 事務處理:用戶代理取回報文,同時對報文作刪除標記、取消報文刪除標記、以及獲取郵件的統計信息
    • 更新:他出如今客戶發出Quit命令以後,目的是結束POP3會話,這時會刪除標記爲刪除的報文

【IMAP】代理

  • IMAP 全稱是 Internet Mail Access Protocol,即互聯網郵件訪問協議,是一個應用層協議(端口是143)。用來從本地郵件客戶端(Outlook Express、Foxmail、Mozilla Thunderbird等)訪問遠程服務器上的郵件。
    • 開啓了IMAP後,您在電子郵件客戶端收取的郵件仍然保留在服務器上,同時在客戶端上的操做都會反饋到服務器上,如:刪除郵件,標記已讀等,服務器上的郵件也會作相應的動做。因此不管從瀏覽器登陸郵箱或者客戶端軟件登陸郵箱,看到的郵件以及狀態都是一致的。
    • IMAP容許用戶代理獲取報文組件的命令,例:用戶代理能夠只讀一個保溫的報文收不,或只是一個多部分MIME報文的一部分。

【IMAP和POP3的區別】server

  IMAP像POP3那樣提供了方便的郵件下載服務,讓用戶能進行離線閱讀。IMAP和POP3是郵件訪問最爲廣泛的Internet標準協議。不一樣的是:
(1)IMAP提供Webmail與電子郵件客戶端之間的雙向通訊,客戶端收取的郵件仍然保留在服務器上,同時在客戶端上的操做都會反饋到服務器上(如:刪除郵件,標記已讀等,服務器上的郵件也會作相應的動做。因此不管從瀏覽器登陸郵箱或者客戶端軟件登陸郵箱,看到的郵件以及狀態都是一致的)。而POP3在客戶端的操做不會反饋到服務器上。
(2)IMAP更好地支持了從多個不一樣設備中隨時訪問新郵件。
(3)IMAP提供的摘要瀏覽功能可讓你在閱讀完全部的郵件到達時間、主題、發件人、大小等信息後才做出是否下載的決定。
(4)POP3須要下載未閱讀的郵件,IMAP能夠不用把全部的郵件所有下載,而是經過客戶端直接對服務器上的郵件進行操做。全部經過IMAP傳輸的數據都會被加密,從而保證通訊的安全性。
(5)IMAP 總體上爲用戶帶來更爲便捷和可靠的體驗。POP3 更易丟失郵件或屢次下載相同的郵件。

總之,IMAP 總體上爲用戶帶來更爲便捷和可靠的體驗。POP3 更易丟失郵件或屢次下載相同的郵件,但 IMAP 經過郵件客戶端與webmail 之間的雙向同步功能很好地避免了這些問題。

【HTTP】

  當用戶用Web瀏覽器手法電子郵件時,用戶和他遠程郵箱之間的通訊則經過HTTP;然而,Alice的郵件服務器在與其餘的郵件服務器之間發送和接收郵件時,仍然使用的是SMTP。

相關文章
相關標籤/搜索