亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

郵件服務器基礎:郵件服務相關協議一
2009-09-09   巧巧讀書

 

電子郵件是因特網上最為流行的應用之一。如同郵遞員分發投遞傳統郵件一樣,電子郵件也是異步的,也就是說人們是在方便的時候發送和閱讀郵件的,無須預先與別人協同。與傳統郵件不同的是,電子郵件既迅速,又易于分發,而且成本低廉。另外,現代的電子郵件消息可以包含超鏈接、HTML格式文本、圖像、聲音甚至視頻數據。我們將在本文中查看處于因特網電子郵件核心地位的應用層協議。但在深入討論這些協議之前,讓我們先概覽一下因特網郵件系統及其重要部件。

下圖展示了因特網郵件系統的高層概貌。我們看到,該系統由三類主要部件構成:用戶代理、郵件服務器利簡單郵件傳送協議(simple Mail Transfer Protocol,簡稱SMTP)。我們將在這樣的上下文中說明每類部件:發信人A1ice給收傳人Bob發送一個電于郵件消息。用戶代理允許用戶閱讀、回復、轉寄、保存和編寫郵件消息(電子郵件的用戶代理有時稱為郵件閱讀器,不過我們在本文中避免使用這個說法)。Alice寫完電子郵件消息后,她的用戶代理把這個消息發送給郵件服務器,再由該郵件服務器把這個消息排入外出消息隊列中。當Bob想閱讀電子郵件消息時,他的用戶代理將從他在其郵件服務器上的郵箱中取得郵件。20世紀90年代后期,圖形用戶界面(GUI)的電子郵件用戶代理變得流行起來,它們允許用戶閱讀和編寫多媒體消息。當前流行的用戶代理包括Ootlook,foxmail等。公共域中還有許多基于文本的電于郵件用戶代理,包括mail、pine和elm。

 

圖1 因特網電子郵件系統概貌

郵件服務器構成了電子郵件系統的核心。每個收信人都有一個位于某個郵件服務器上的郵箱(mailbox)。Bob的郵箱用于管理和維護已經發送給他的郵件消息。一個郵件消息的典型旅程是從發信人的用戶代理開始,游經發信人的郵件服務器,中轉到收信人的郵件服務器,然后投遞到收信人的郵箱中。當Bob想查看自己的郵箱中的郵件消息時,存放該郵箱的郵件服務器將以他提供的用戶名和口令認證他。Alice的郵件服務器還得處理Bob的郵件服務器出故障酌情況。如果Alice的郵件服務器無法把郵件消息立即遞送到Bob的郵件服務器,A1ice的服務器就把它們存放在消息隊列(message queue)中,以后再嘗試遞送。這種嘗試通常每30分鐘左右執行一次:要是過了若干天仍未嘗試成功,該服務器就把這個消息從消息隊列中去除掉,同時以另一個郵件消息通知發信人(即Alice)。

簡單郵件傳送協議(SMTP)是因特網電子郵件系統首要的應用層協議。它使用由TCP提供的可靠的數據傳輸服務把郵件消息從發信人的郵件服務器傳送到收信人的郵件服務器。跟大多數應用層協議一樣,SMTP也存在兩個端:在發信人的郵件服務器上執行的客戶端和在收信人的郵件服務器上執行的服務器端。SMlP的客戶端和服務器端同時運行在每個郵件服務器上。當一個郵件服務器在向其他郵件服務器發送郵件消息時,它是作為SMTP客戶在運行。當一個郵件服務器從其他郵件服務器接收郵件消息時,它是作為SMTP服務器在運行。

#P#

SMTP

SMTP在RFC 821中定義,它的作用是把郵件消息從發信人的郵件服務器傳送到收信人的郵件服務器。SMIP的歷史比HTTP早得多,其RFC是在1982年編寫的,而SMTP的現實使用又在此前多年就有了。盡管SMTP有許多奇妙的品質(它在因特網上的無所不在就是見證),但卻是一種擁有某些“古老”特征的傳統戰術。例如,它限制所有郵件消息的信體(而不僅僅是信頭)必須是簡單的7位ASCII字符格式。這個限制在20世紀80年代早期是有意義的,當時因特網傳輸能力不足,沒有人在電子郵件巾附帶大數據量酌圖像、音頻或視頻文件。然而到了多媒體時代的今天,這個限制就多少顯得局促了——它迫使二進制多媒體數據在文由SMTP傳送之前首先編碼成7位ASCII文本;SMTP傳送完畢之后,再把相應的7位ASCII文本郵件消息解碼成二進制數據。HTTP不需要對多媒體數據進行這樣的編碼解碼操作。

下面我們通過查看一個常見的情形來說明SMTP的基本操作。假設Alice給Bob發送一個簡單的ASCII文本郵件消息:

●Alice調用自己的電子郵件用戶代理,給出Bob的電子郵件地址(譬如說bob@someschool.edu),寫好郵件內容,然后讓用戶代理發送本郵件消息。

●Alice的用戶代理把該郵件消息發送到她的郵件服務器中,由郵件服務器把該消息排人某個消息隊列中。

●運行在A1ice的郵什服務器上的SMTP客戶端看到消息隊列中的這個郵件消息后,打開一個到運行在Bob的郵件服務器主機上的SMTP服務器端的TCP連接。

●經過最初的一些SMTP握手之后,SMTP客戶把A1ice的郵件消息發送到TCP連接上。

●在Bob的郵件服務器主機上,SMTP服務器收到這個郵件消息后,把這個消息投遞到Bob的郵箱中。

●Bob在方便的時候調用自己的電子郵件用戶代理閱讀該郵件消息。

圖2展示了上述情形。

  

圖2 alice的郵件服務器把郵件消息傳送到Bob的郵件服務器

需注意的是,SMTP通常不使用中間的郵件服務器主機中轉郵件,即便源端和目的端郵件服務器主機位于地球上相反的位置也一樣。假設Aiice的郵件服務器主機在香港,Bob的郵件服務器主機在阿拉巴馬州,那么所建立的TCP連接將是這兩臺服務器主機之間的連接。具體地說,如果Bob的郵件服務器不工作了,那么A1ice發給Bob的郵件消息將存留在Alice的郵件服務器中等待新的嘗試,而不會存放到某個中間的郵件服務器中。

下面查看SWPT把郵件消息從發送端郵件服務器傳送到接收端郵件服務器的具體過程。我們將看到,SMTP協議與人們用于面對面交互的禮儀之間有許多相似之處。首先,運行在發送端郵件服務器主機上的SMTP客戶,發起建立一個到運行在接收端郵件服務器主機上的SMTP服務器端口號25之間的TCP連接。如果接收郵件服務器當前不在工作,SMTP客戶就等待一段時間后再嘗試建立該連接。這個連接建立之后,SMTP客戶和服務器先執行一些應用層握手操作。就像人們在轉手東西之前往往先自我介紹那樣,SMTP客戶和服務器也在傳送信息之前先自我介紹一下。在這個SMTP握手階段,SMTP客戶向服務器分別指出發信人和收信人的電子郵件地址。彼此自我介紹完畢之后,客戶發出郵件消息。SMTP可以指望由TCP提供的可靠數據傳輸服務把該消息無錯地傳送到服務器。如果客戶還有其他郵件消息需發送到同一個服務器,它就在同一個TCP連接上重復上述過程;否則,它就指示TCP關閉該連接。

讓我們看一個客戶(C)和服務器(S)交互的例子。客戶所在主機名為crepes.fr,服務器所在主機名為hamburger.edu。前面標以“C:”的ASCII文本行是客戶發送到它的TCP套接字中的完整文本行,前面標以“S:”的ASCII文本行是服務器發送到它的TCP套接字中的完整文本行。以下傳輸腳本在TCP連接建立之后馬上發生:

S:220 hamburger.edu

C:HELO crepes.fr

S:250 Hello crepes.fr,pleased to meet you

C:MAIL FROM:

S:250 alice@crepes.fr ... Serder OK

C:RCPT TO:

S:250 bob@hamburger.edu...Recipient OK

C:DATA

S:354 Enter mail,end with "." on a line by its self

C:Do you like ketchup?

C:How about pickles?

C:.

S;250 Message accepted for delivery

C:QUIT

S:221 hamburger.edu cloing connection

在這個例子中,客戶發送了一個從郵件服務器主機crepes.fr到hamburger.edu的郵件消息,信體內容為:“Do you like ketchup?How about pickles?”。客戶總共發出了5個命令,分別為:HELO,MAIL FROM,RCPT TO,DATA和QUIT。這些命令的含義是不言自明的。服務器給每個命令發回應答,其中每個應答都由應答碼和一些英語解釋(可選)構成。這里需指出的是,SMTP使用持久連接,也就是說,如果發送郵件服務器有多個郵件消息需發送到同一個接收郵件服務器,那么所有這些消息可以在同一個TCP連接中發送。對于其中的每一個消息,客戶以一個新的“HELO crepes.fr”命令開始整個消息發送過程,但是QUIT命令要等到所有消息都發送完之后才發出。

我們可以嘗試使用nc工具直接與SMTP服務器進行對話。首先指定使用SMTP端口號25連接到某臺郵件服務器主機,這樣就在本地主機和該郵件服務器主機之間建立了一個SMTP使用的TCP連接。登錄完畢之后,應該立即收到來服務器的應答,接著就可以在合適的時刻依次發出現SMTP命令了。如果你連接到你朋友的5MTP服務器,就可以用這種方式向你的朋友發送郵件了(也就是說,不必使用郵件用戶代理)。當然你也可以使用更常見的telnet工具,不過我發現用telnet建立起連接后常會遇到一些輸入方面的問題。

與HTTP的比較

我們簡單地比較一下SMTP和HTTP。這兩個協議都是用于從一臺主機向另一臺主機傳送文件;HTTP用于從web服務器向Web用戶代理(即瀏覽器)傳送文件(或對象),SMTP用于從一個郵件服務器向另一個郵件服務器傳送文件(也就是電子郵件消息)。在傳送文件時,SMTP和持久HTTP都使用持久連接。可見,這兩個協議具有一些共同的特征,不過它們之間的差別也是顯著的。首先,HTTP基本上是一個內拉式協議(pull protocol)——有人把信息上傳到web服務器中,用戶則在方便的時候使用HTTP把這些信息從服務器上拉過來。更確切地說,TCP連接是由想要接收文件的主機發起的。SMIP則基本上是一個外推式協議(pushProtoco1)——發送端郵件服務器把文件推送給接收端郵件服務器。更確切地說,TCP連接是由想要發送文件的主機發起的。

SMTP和HTTP的第二個重要差別是,SMTP要求包括信體部分在內的每個郵件消息都是7位ASCII文本格式。
 

熱詞搜索:

上一篇:IBM Tivoli Netcool助力2G/3G無線業務服務管理
下一篇:郵件服務器基礎:郵件服務相關協議二

分享到: 收藏