每天學會一個計算機網絡協議之-SMTP/POP3/IMAP,理論加實戰

開始行文之前提出幾個問題,相信大家在看完本文後一定可以回答以下的問題。

郵件是怎麼精確的從發件人傳輸到收件人的?

為什麼在不同的電腦登錄郵箱已經閱讀過的郵件還是會顯示為未讀?

為什麼早期郵箱只能發送文字,而現在可以發送各種各樣的流媒體?

每天學會一個計算機網絡協議之-SMTP/POP3/IMAP,理論加實戰

SMTP/POP3/IMAP協議

郵件傳輸流程

有一天ztz(趙鐵柱)準備給ten(甜二妞)發郵件,趙鐵柱使用的是163郵箱,甜二妞使用的也是163郵箱(如果發送和接收雙方不是同一類郵箱,那麼需要使用到DNS協議)趙鐵柱通過outlook先把郵件發送到發送方郵件服務器,發送方郵件服務器會固定時間間隔檢測是否有待發的郵件,如果有則使用SMTP協議將郵件轉發至相應接收方郵件服務器,發送方郵件服務器和接收方郵件服務器中間沒有其他服務器,它們之間是直接連接的,甜二妞使用outlook打開收件箱,此時接收方郵件服務器通過POP3/IMAP協議將郵件推送給甜二妞,至此整個郵件發送接收流程結束。


SMTP/POP3/IMAP協議理論詳述

SMTP(Simple Mail Transfer Protocol )使用TCP/IP協議棧,為用戶提供可靠傳輸服務。SMTP協議可以理解為“推”的協議,將需要傳輸的郵件從發送方“推”到接收方郵件服務器,POP3/IMAP協議可以理解為“拉”的協議,將郵件從接收方郵件服務器中“拉”至接收方收件箱中。


SMTP協議實戰

趙鐵柱和甜二妞要發送郵件

1.建立TCP連接

2.趙鐵柱發送發件人郵箱地址

3.趙鐵柱發送接收人郵件地址

4.趙鐵柱發送郵件正文

5.斷開TCP連接

1.建立TCP連接
連接建立完畢後
ten:220 163.com simple mail transfer service ready 接收方服務器ready
ztz:HELO 163.com 發送方發送主機名 HELO是固定格式不用管
ten:250 163.com 250 代表服務器準備好接收郵件
ztz: MAIL FROM: MAIL 郵件的傳輸從MAIL命令開始
ten:250 mail accepted
ztz: RICPT TO: 收件人是甜二妞
ten: 250 recipient accepted 250代表有這個收件人,550代表沒有這個收件人
ztz:DATA hello world........ 使用. 表示正文結束
ten: 250 ok 甜二妞說收到了
ztz: QUIT 趙鐵柱說拜拜不聊了 斷開TCP連接
ten: 221 163.com service closing transmission channel 甜二妞說好的

MIME協議

MIME(Multipurpose Internet Mail Extension )它的出現是為了解決早期郵件只可以發送文字,不能發送圖片、聲音、視頻的問題。使用SMTP協議只支持傳輸7比特的ASCII碼,顯然聲音文件、視頻文件不是ASCII碼,所以MIME協議規定了傳輸非ASCII碼的規則,使我們可以傳輸聲音和視頻。

每天學會一個計算機網絡協議之-SMTP/POP3/IMAP,理論加實戰

MIME


POP3/IMAP

POP3/IMAP協議都可以理解為“拉”的協議,將郵件從接收方郵件服務器中“拉”至接收方收件箱中。

每天學會一個計算機網絡協議之-SMTP/POP3/IMAP,理論加實戰

POP3/IMAP對比

以上只是簡單列舉了POP3和IMAP的區別,IMAP相對POP3而言還有其他的優勢,具體細節可以參考RFC 4315。


總結

到此總結一下SMTP/POP3/IMAP/MIME的關係

SMTP協議可以理解為“推”的協議,將需要傳輸的郵件從發送方“推”到接收方郵件服務器,POP3/IMAP協議可以理解為“拉”的協議,將郵件從接收方郵件服務器中“拉”至接收方收件箱中。MIME是為了拓展郵件傳輸內容形式而建立的協議。在本文中涉及很多其他的知識沒有展開,比如郵件傳輸過程中的加密,SSL證書,在後續的文章中會陸續講解到。


分享到:


相關文章: