国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 網絡通信 > 正文

POP3郵局協議-版本3

2019-11-04 11:45:45
字體:
來源:轉載
供稿:網友

1.簡介

對于在網絡上的比較小的結點,支持消息傳輸系統(MTS)是不實際的。例如,一臺工作站可能不具有充足的資源答應SMTP服務器和相當的本地郵件傳送系統保持序駐留,并持續運行。同樣的,將一臺個人計算機長時間連接在ip類型網絡上的費用也是可觀的(結點缺少的資源被稱為“聯絡性”)。

雖然如此,在這樣的小結點上答應治理郵件是十分有用的,并且這些結點經常支持一個用戶代理來治理郵件。為解決這一問題,能夠支持MTS的結點就為這些不能支持的結點提供了郵件存儲功能。郵局協議-版本3就是使這樣的工作站可以用一種比較實用的方法來訪問存儲于服務器上的儲存郵件。通常,這意味著工作站可以從服務器上取得郵件,而服務器為它暫時保存郵件。

在下文中,客戶主機指的是利用POP3服務的主機,而服務器主機指的是提供POP3服務的主機。

2.簡單說明

在此文檔中不指明客戶主機如何將郵件送入到傳送系統中去。但這里有一個說明:當用戶代理需要將信息送到傳送系統時,它在接力主機上建立SMTP連接(這些接力主機可以是POP3主機,也可以不是)。

 

3.基本操作

初始時,服務器通過偵聽TCP端口110開始POP3服務。當客戶主機需要使用服務時,它將與服務器主機建立TCP連接。當連接建立后,POP3發送確認消息。客戶和POP3服務器相互(分別)交換命令和響應,這一過程一直要持續到連接終止。

POP3命令由一個命令和一些參數組成。所有命令以一個CRLF對結束。命令和參數由可打印的ASCII字符組成,它們之間由空格間隔。命令一般是三到四個字母,每個參數卻可達40個字符長。

POP3響應由一個狀態碼和一個可能跟有附加信息的命令組成。所有響應也是由CRLF對結束。現在有兩種狀態碼,“確定”("+OK")和“失敗”("-ERR")。

對于特定命令的響應是由許多字符組成的。在這些情況中,下面一一表述:在發送第一行響應和一個CRLF之后,任何的附加信息行發送,他們也由CRLF對結束。當所有信息發送結束時,發送最后一行,包括一個結束字符(十進制碼46,也就是“.”)和一個CRLF對。假如信息中的任何一行以結束字符開始,此行就是通過在那一行預先裝入結束而進行字符填充的。因此,多行響應由五個CRLF.CRLF結束。當檢測多行響應時,客戶檢測以確認此行是否以結束字符開始。假如是的,而且其后的字符不是CRLF,此行的第一個字符(結束字符)將被拋棄;假如其后緊跟CRLF,從POP服務器來的響應終止,包括.CRLF的行也不被認為是多行響應的一部分了。

在生命周期中,POP3會話有幾個不同的狀態。一旦TCP連接被打開,而且POP3服務器發送了確認信息,此過程就進入了“確認”狀態。在此狀態中,客戶必須向POP3服務器確認自己是其的客戶。一旦確認成功,服務器就獲取與客戶郵件相關的資源,此時這一過程進入了“操作”狀態。在此狀態中,客戶提出服務,當客戶發出QUIT命令時,此過程進入了“更新”狀態。在此狀態中,POP3服務器釋放在“操作”狀態中取得的資源,并發送消息,終止連接。

POP3服務器可以擁有一個自動退出登錄的記時器。此記時器必須至少可以記錄10分鐘。這樣從客戶發送的消息才可能刷新此記時器。當記時器失效時,POP3會話并不進入“更新”狀態,而是關閉TCP連接,而且不刪除任何消息,不向客戶發送任何響應。

 

4.“確認”狀態

 

一時TCP連接由POP3客戶打開,POP3服務器發送一個單行的確認。這個消息可以是由CRLF結束的任何字符。例如,它可以是:

S:+OKPOP3serverready

 

注重:這個消息是一個POP3應答。POP3服務器應該給出一個“確定”響應作為確認。

此時POP3會話就進入了“確認”狀態。此時,客戶必須向服務器證實它的身份。在文檔中介紹兩種可能的處理機制,一種是USER和PASS命令,另一種是在后面要介紹的APOP命令。

用USER和PASS命令進行確認過程,客戶必須首先發送USER命令,假如POP3服務器以“確認”狀態碼響應,客戶就可以發送PASS命令以完成確認,或者發送QUIT命令終止POP3會話。假如POP3服務器返回“失敗”狀態碼,客戶可以再發送確認命令,或者發送QUIT命令。

當客戶發送了PASS命令后,服務器根據USER和PASS命令的附加信息決定是否答應訪問相應的存儲郵件。

一旦服務器通過這些數據決定答應客戶訪問儲存郵件,服務器會在郵件上加上排它鎖,以防止在進入“更新”狀態前對郵件的改變。假如成功獲得了排它鎖,服務器返回一個“確認”狀態碼。會話進入“操作狀態”,同時沒有任何郵件被標記為刪除。假如郵件因為某種原因不能打開(例如,排它鎖不能獲得,客戶不能訪問相應的郵件或者郵件不能進行語法分析),服務器將返回“失敗”狀態碼。在返回“失敗”狀態碼后,服務器會關閉連接。假如服務器沒有關閉連接,客戶可以重新發送確認命令,重新開始,或者發送QUIT命令。

在服務器打開郵件后,它為每個消息指定一個消息號,并以八進制表示每個消息的長度。第一個消息被指定為1,第二個消息被指定為2,以此類推,第N個消息被指定為N。在POP3命令和響應中,所以的消息號和長度以十進制表示。

下面是對上述三條命令的總結:

 

命令格式參數限制響應例子
USERname指定郵箱的字符串,這對服務器至關重要僅在USER和PASS命令失敗后或在“確認”狀態中使用+OK:有效郵箱;
-ERR:無效郵箱
C:USERmrose
S:+OKmroseisarealhoopyfrood

...

C:USERfrated

S:-ERRsorry,nomailboxforfratedhere

PASSstring口令僅在“確認”狀態中USER命令成功后使用(因為此命令只有一個參數,因此空格不再作為分隔符,而作為口令的一部分)+OK:郵件鎖住并已經預備好;
-ERR無效口令或無法鎖住郵件
C:USERmrose
S:+OKmroseisarealhoopyfrood

C:PASSsecret

S:+OKmrose smaildrophas2messages(320octets)

...

C:USERmrose

S:+OKmroseisarealhoopyfrood

C:PASSsecret

S:-ERRmaildropalreadylocked

QUIT(無)(無)+OKC:QUIT
S:+OKdeweyPOP3serversigningoff


 

 

5.“操作”狀態

 

一旦客戶向服務器成功地確認了自己的身份,服務器將鎖住并打開相應的郵件,這時POP3會話進入“操作”狀態。現在客戶可以重復下面的POP3命令,對于每個命令服務器都會返回應答。最后,客戶發送QUIT命令,會話進入“更新”狀態。

下面是在“操作”狀態中可用的命令:

命令參數限制說明響應例子
STAT(無)僅在“操作”狀態下可用。服務器以包括郵件信息的響應做為“確認”。為簡化語法分析,所有的服務器要求使用郵件列表的特定格式。“確認”響應由一個空格,以八進制表示的郵件數目,一個空格和郵件大小。這是最小實現,高級的實現還需要別的信息。
注重:被標記為刪除的信件不在此列。
+OK:nnmmC:STAT
S:+OK2320

LIST[msg]信件數目(可選),假如出現,不包括標記為刪除的信件。僅在“操作”狀態下可用。假如給出了參數,且POP3服務器返回包括上述信息的“確認”,此行稱為信息的“掃描表”。
假如沒有參數,服務器返回“確認”響應,此響應便以多行給出。在初的+OK后,對于每個信件,服務器均給出相應的響應。

為簡化語法分析,所有服務器要求使用掃描表的特定格式。它包括空格,每個郵件的確切大小。這是最小實現,高級的實現還需要別的信息。

注重:被標記為刪除的信件不在此列。
+OK:其后跟掃描表;
-ERR:無掃描。
C:LIST
S:+OK2messages(320octets)

S:1120

S:2200

S:.

...

C:LIST2

S:+OK2200

...

C:LIST3

S:-ERRnosUChmessage,only2messagesinmaildrop

RETRmsg不包括標記為刪除的信件數目。僅在“操作”狀態下可用。假如服務器返回“確認”,給出的響應是多行的。在初始的+OK后,服務器發送與給定信息號對應的信息,對于多行響應,注重字節填充終止符。+OK:消息在其后;
-ERR:其后無消息。
C:RETR1
S:+OK120octets

S:

S:.

DELEmsg不包括標記為刪除的信件數目。僅在“操作”狀態下可用。服務器將此信件標記為刪除,以后任何關于此信件的操作就會產生錯誤。服務器在會話進入“更新”狀態前不會真正刪除此信件。+OK:信件被刪除;
-ERR:無此信件。
C:DELE1
S:+OKmessage1deleted

...

C:DELE2

S:-ERRmessage2alreadydeleted

NOOP(無)僅在“操作”狀態下可用。服務器僅返回“確認”。+OKC:NOOP
S:+OK

RSET(無)僅在“操作”狀態下可用。所有被標記為刪除的信件復位,服務器返回“確認”。+OKC:RSET
S:+OKmaildrophas2messages(320個字符)


 

 

6.“更新”狀態

 

當客戶在“操作”狀態下發送QUIT命令后,會話進入“更新”狀態。(注重:假如客戶在“確認”狀態下發送QUIT后,會話并不進入“更新”狀態。)

假如會話因為QUIT命令以外的原因中斷,會話并不進入“更新”狀態,也不從服務器中刪除任何信件。

命令參數限制說明響應例子
QUIT(無)(無)服務器刪除所有標記為刪除的信件,然后釋放排它鎖,并返回這些操作的狀態碼。最后TCP連接被中斷。+OKC:QUIT
S:+OKdeweyPOP3serversigningoff(清空標記郵件)

...

C:QUIT

S:+OKdeweyPOP3serversigningoff


 

 

7.可選的POP3命令

 

以上討論的命令是對POP3服務的最小實現。以下說明的可選命令答應客戶更方便地處理信件,這是一個比較一般的POP3服務實現。

命令參數限制說明響應例子
TOPmsgn一個是未被標記為刪除的信件數,另一個是非負數(必須提供)僅在“操作”狀態下使用。假如服務器返回“確認”,響應是多行的。在初始的+OK后,服務器發送信件頭,一個空行將信件頭和信件體分開,對于多行響應要注重字節填充終止符。
注重:假如客戶要求的行數比信件體中的行數大,服務器會發送整個信件。
+OK:其后有信件頭;
-ERR:其后無類似消息。
C:TOP110
S:+OK

S:<服務器發送消息頭,一個空行和信件的頭10行>

S:.

...

C:TOP1003

S:-ERRnosuchmessage

UIDL[msg]信件數(可選)。假如給出信件數,不包括被標記為刪除的信件。僅在“操作”狀態下使用。假如給出了參數,且POP3服務器返回包括上述信息的“確認”,此行稱為信息的“獨立-ID表”。
假如沒有參數,服務器返回“確認”響應,此響應便以多行給出。在初的+OK后,對于每個信件,服務器均給出相應的響應。此行叫做信件的“獨立-ID表”。

為簡化語法分析,所有服務器要求使用獨立-ID表的特定格式。它包括空格和信件的獨立-ID。

信件的獨立-ID由0x21到0x7E字符組成,這個符號在給定的存儲郵件中不會重復。

注重:信件不包括被標記為刪除的信件。
+OK:其后是獨立-ID表;
-ERR:其后無類似信件。
C:UIDL
S:+OK

S:1whqtswO00WBw418f9t5JxYwZ

S:2QhdPYR:00WBw1Ph7x7

S:.

...

C:UIDL2

S:+OK2QhdPYR:00WBw1Ph7x7

...

C:UIDL3

S:-ERRnosuchmessage,only2messagesinmaildrop

APOPnamedigest指定郵箱的字串和md5摘要串。僅在POP3確認后的“確認”狀態中使用。通常,每個POP3會話均以USER/PASS互換開始。這導致了用戶名和口令在網絡上的顯式傳送,這不會造成什么危險。但是,許多客戶經常連接到服務檢查信件。通常間隔時間比較短,這就加大了泄密的可能性。
另一種提供“確認”過程的方法是使用APOP命令。

實現APOP命令的服務器包括一個標記確認的時間戳。例如:在UNIX上使用APOP命令的語法為:PRocess-ID.clock@hostname,其中進程-ID是進程的十進制的數,時鐘是系統時鐘的十進制表示,主機名與POP3服務器名一致。

客戶記錄下此時間戳,然后以送APOP命令。name語法和USER命令一致。Digest是采用MD5算法產生的包括時間戳和共享密鑰的字串。此密鑰是客戶和服務器共知的,應該注重保護此密鑰,假如泄密,任何人都能夠以用戶身份進入服務器。

假如服務器接到APOP命令,它驗證digest,假如正確,服務器返回“確認”,進入“操作”狀態;否則,給出“失敗”并停留在“確認”狀態。

注重:共享密鑰的長度增加,解讀它的難度也相應增加,這個密鑰應該是長字符串。
+OK:郵件鎖住并預備好;
-ERR:拒絕請求。
S:+OKPOP3serverready<1896.697170952@dbc.mtview.ca.us>
C:APOPmrosec4c9334bac560ecc979e58001b3e22fb

S:+OKmaildrophas1message(369octets)

在此例子中,共享密鑰<1896.697170952@dbc.mtview.ca.us>tanstaaf由MD5算法生成,它產生了digest值,c4c9334bac560ecc979e58001b3e22fb


 

 

8.POP3命令總結

 

基礎的POP3命令:

 

USERname在“確認”狀態有效

PASSstring

QUIT

 

STAT在“操作”狀態有效

LIST[msg]

RETRmsg

DELEmsg

NOOP

RSET

 

QUIT在“更新”狀態有效

 

可選的POP3命令:

 

APOPnamedigest在“確認”狀態有效

 

TOPmsgn在“操作”狀態有效

UIDL[msg]

 

POP3響應:

 

+OK

-ERR

 

注重:除了STAT,LIST和UIDL的響應外,其它命令的響應均為"+OK"和"-ERR"。響應后的所有文本將被客戶略去。

 

9.POP3會話實例

S:<等待連接到TCP端口110>

C:<打開連接>

S:+OKPOP3serverready<1896.697170952@dbc.mtview.ca.us>

C:APOPmrosec4c9334bac560ecc979e58001b3e22fb

S:+OKmrose smaildrophas2messages(320octets)

C:STAT

S:+OK2320

C:LIST

S:+OK2messages(320octets)

S:1120

S:2200

S:.

C:RETR1

S:+OK120octets

S:<服務器發送信件1>

S:.

C:DELE1

S:+OKmessage1deleted

C:RETR2

S:+OK200octets

S:<服務器發送信件2>

S:.

C:DELE2

S:+OKmessage2deleted

C:QUIT

S:+OKdeweyPOP3serversigningoff(maildropempty)

C:<關閉連接>

S:<等待下一次連接>

 

10.消息格式

 

在會話過程中的消息格式都假定與Internet文本消息格式標準一致。應該注重的是,由于各個服務器對于換行符的處理不同,因此計數不一定相同。通常,在“確認”狀態中,服務器能夠以八進制計算信件的大小。例如,假如在打開儲存郵件時服務器內部認定換行符代表一個字符,一般服務器在計算它時作為兩個字符計。注重,以終止符開始的消息行不被計數兩次,因為客戶將在接收到多行響應后刪除所有字節填充。

 

11.安全性考慮

可以推測,使用APOP命令可以提供會話期間的保護。相應的,同時實現PASS和APOP命令的服務器只答應用戶以一種方式訪問;也就是說要么使用USER/PASS組合,要么使用APOP命令,不能同時使用兩個。

而且,注重隨著共享密鑰長度的增加,解讀的難度也就上升了。服務器要提供用戶名時不給出任何響應,不給出任何暗示此用戶名是否正確。而口令卻在網絡上顯式傳送;使用RETR和TOP命令在網絡上顯式傳送信件。




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰安市| 香格里拉县| 枞阳县| 聊城市| 顺义区| 秦安县| 屯留县| 丁青县| 徐州市| 金塔县| 修水县| 杭锦旗| 民乐县| 高清| 襄汾县| 新巴尔虎右旗| 陕西省| 肃宁县| 肥乡县| 静海县| 东山县| 固阳县| 桃源县| 沙田区| 苗栗市| 嘉兴市| 揭西县| 乳山市| 武宁县| 哈尔滨市| 卢氏县| 庆安县| 吉安县| 普宁市| 冕宁县| 布拖县| 城口县| 社旗县| 徐水县| 建宁县| 岚皋县|