日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

SMTP 針對命令流水線的服務擴展( 二 )


(5).沒有為擴展服務定義額外的SMTP動詞(命令).
(6).在下一章講解為了支持擴展服務,服務器和客戶端會受到怎樣的影響.
3流水線服務擴展
當一個SMTP客戶希望使用命令流水線時,它首先要向服務器發(fā)送EHLO 命令.如
果服務器返回代碼250,而且返回信息中包含要害字EHLO本身和它的值PIPELINING,
那么這說明該SMTP服務器支持命令流水線的特性.
3.1客戶端使用流水線
一旦SMTP客戶端確信服務器支持流水線的特性,那么它就可以不必等待每條命令
的回應而選擇使用一組SMTP命令發(fā)送到服務器.非凡是,命令RSET,MAILFROM,
SENDFROM,SOMLFROM,SAMLFROM,和RCPTTO可以在命令組中任何地方
出現(xiàn).而對EHLO,DATA,VERY,EXPN,TURN,QUIT,和NOOP,由于他們的返回結果很關
鍵,可能影響到整個連接的狀態(tài),所以只能出現(xiàn)在命令組的末尾處.(NOOP也屬于此類
命令,所以它可以作為連接的同步點).
假如沒有非凡說明,由其他SMTP擴展協(xié)議定義的額外命令也只能放在命令組的結尾.
實際傳遞消息內容明確的規(guī)定可以作為一個命令組里的第一條命令.也就是說,一個
RDET/MAILFROM用來初始一個新消息的命令序列可以跟上一條消息的傳遞消息頭
部和消息體的命令放在同一個組里.
一個客戶端要想實現(xiàn)流水線,必須(MUST)檢查在同一個命令組里所有的命令的相關狀
態(tài).例如,假如沒有一個RCPTTO目的地址被接受,那么客戶端必須檢查DATA命令
的返回狀態(tài).此時,客戶端不能想當然的認為DATA一定會失敗.假如DATA命令失敗了,
這是客戶要發(fā)送RCPT命令,假如DATA成功的被接受了,那么客戶需要發(fā)送一個點(.)
來結束DATA命令.
命令狀態(tài)必須(MUST)能夠分清返饋信息和發(fā)送的命令之間一一對應的關系,還要清楚
發(fā)送的命令數(shù)目.多行的反饋信息必須(MUST)得到支持.簡單的匹配返回的錯誤代碼
和錯誤信息是被禁止的.
客戶端實現(xiàn)可以(MAY)采用非阻塞模式.即使仍然有上一條TCP發(fā)送操作的數(shù)據(jù)在傳輸
中,進行處理的服務器對剛剛收到的命令立即進行處理,假如非阻塞操作不被支持,那
么客戶端實現(xiàn)必須(MUST)也要檢查TCP窗體的大小,以確保每組命令完全跟窗體大小
匹配.一般,窗體大小是4K字節(jié),但也有例外.假如不能確保這種檢查正確進行,往往
會導致死鎖.
客戶端必須不能(MUSTNOT)混淆多條命令和多條反饋.每一條命令需要一條或多條
的信息反饋,在最后一行的反饋代碼和信息中不能包含破折號.
3.2服務器支持流水線
一個支持流水線的SMTP服務器必須具備以下條件:
(1).必須(MUST)按照順序對從客戶端提交的命令進行反饋.
(2).應該(SHOULD)對成組的命令RSET,MAILFROM,SENDFROM,SOML
FROM,SAMLFROM,和RCPTTO利用內部緩沖區(qū)進行選擇性的存儲,以便他們能夠
當作一個單元進行發(fā)送.
(3).當且僅當有一個或多個RCPTTO地址有效時,應該(SHOULD)給與客戶端正
確的反饋.
(4).在對沒有有效接受方地址的情況下,給了DATA命令以正確的反饋,接著必然
收到一個空的消息正文,此時一定不能(MUSTNOT)給任何接受方發(fā)送任何消息.
(5).對命令EHLO,DATA,VEFY,EXPN,TURN,QUIT,和NOOP的反饋不能(MUST
NOT)緩存.
(6).對不能識別的命令一定不能(MUSTNOT)緩存.
(7).當本地的TCP輸入緩沖區(qū)為空時,一定要(MUST)立即發(fā)送所有待發(fā)的命令反
饋.
(8).一定不能(MUSTNOT)對尚未收到的命令做任何假設.
(9). 在任何境況下.一定不能(MUSTNOT)刷新TCP輸入緩沖區(qū)的內容
(10).應該(SHOULD)提供模糊的或是明確的反饋文本來標志與反饋信息相匹配的
命令.

推薦閱讀