SMTP協(xié)議的命令和應(yīng)答
從前面的通訊模型可以看出SMTP協(xié)議在發(fā)送SMTP和接收SMTP之間的會話是靠發(fā)送SMTP的SMTP命令和接收SMTP反饋的應(yīng)答來完成的。在通訊鏈路建立后,發(fā)送SMTP發(fā)送MAIL命令指令郵件發(fā)送者,若接收SMTP此時可以接收郵件則作出OK的應(yīng)答,然后發(fā)送SMTP繼續(xù)發(fā)出RCPT命令以確認郵件是否收到,如果接收到就作出OK的應(yīng)答,否則就發(fā)出拒絕接收應(yīng)答,但這并不會對整個郵件操作造成影響。雙方如此反復(fù)多次,直至郵件處理完畢。SMTP協(xié)議共包含10個SMTP命令,列表如下:
SMTP命令命令說明
HELLO<domain><CRLF>識別發(fā)送方到接收SMTP的一個HELLO命令
MAILFROM:<reverse-path><CRLF><reverse-path>為發(fā)送者地址。此命令告訴接收方一個新郵件發(fā)送的開始,并對所有的狀態(tài)和緩沖區(qū)進行初始化。此命令開始一個郵件傳輸處理,最終完成將郵件數(shù)據(jù)傳送到一個或多個郵箱中。
RCPTTO:<forward-path><CRLF><forward-path>標(biāo)識各個郵件接收者的地址
DATA<CRLF>
接收SMTP將把其后的行為看作郵件數(shù)據(jù)去處理,以<CRLF>.<CRLF>標(biāo)識數(shù)據(jù)的結(jié)尾。
REST<CRLF>退出/復(fù)位當(dāng)前的郵件傳輸
NOOP<CRLF>要求接收SMTP僅做OK應(yīng)答。(用于測試)
QUIT<CRLF>要求接收SMTP返回一個OK應(yīng)答并關(guān)閉傳輸。
VRFY<string><CRLF>驗證指定的郵箱是否存在,由于安全因素,服務(wù)器多禁止此命令。
EXPN<string><CRLF>驗證給定的郵箱列表是否存在,擴充郵箱列表,也常禁止使用。
HELP<CRLF>查詢服務(wù)器支持什么命令
注:<CRLF>為回車、換行,ASCII碼分別為13、10(十進制)。
SMTP協(xié)議的每一個命令都會返回一個應(yīng)答碼,應(yīng)答碼的每一個數(shù)字都是有特定含義的,如第一位數(shù)字為2時表示命令成功;為5表失?。?表沒有完成。一些較復(fù)雜的郵件程序利用該特點,首先檢查應(yīng)答碼的首數(shù)字,并根據(jù)其值來決定下一步的動作。下面將SMTP的應(yīng)答碼列表如下:
應(yīng)答碼說明
501參數(shù)格式錯誤
502命令不可實現(xiàn)
503錯誤的命令序列
504命令參數(shù)不可實現(xiàn)
211系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)
214幫助信息
220<domain>服務(wù)就緒
221<domain>服務(wù)關(guān)閉
421<domain>服務(wù)未就緒,關(guān)閉傳輸信道
250要求的郵件操作完成
251用戶非本地,將轉(zhuǎn)發(fā)向<forward-path>
450要求的郵件操作未完成,郵箱不可用
550要求的郵件操作未完成,郵箱不可用
451放棄要求的操作;處理過程中出錯
551用戶非本地,請嘗試<forward-path>
452系統(tǒng)存儲不足,要求的操作未執(zhí)行
552過量的存儲分配,要求的操作未執(zhí)行
553郵箱名不可用,要求的操作未執(zhí)行
354開始郵件輸入,以"."結(jié)束
554操作失敗
UDP協(xié)議的幾個基礎(chǔ)特性
(1) UDP是一個無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時就簡單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應(yīng)用程序每次從隊列中讀一個消息段。
(2) 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺服務(wù)機可同時向多個客戶機傳輸相同的消息。
(3) UDP信息包的標(biāo)題很短,只有8個字節(jié),相對于TCP的20個字節(jié)信息包的額外開銷很小。
(4) 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機性能的限制。
從前面的通訊模型可以看出SMTP協(xié)議在發(fā)送SMTP和接收SMTP之間的會話是靠發(fā)送SMTP的SMTP命令和接收SMTP反饋的應(yīng)答來完成的。在通訊鏈路建立后,發(fā)送SMTP發(fā)送MAIL命令指令郵件發(fā)送者,若接收SMTP此時可以接收郵件則作出OK的應(yīng)答,然后發(fā)送SMTP繼續(xù)發(fā)出RCPT命令以確認郵件是否收到,如果接收到就作出OK的應(yīng)答,否則就發(fā)出拒絕接收應(yīng)答,但這并不會對整個郵件操作造成影響。雙方如此反復(fù)多次,直至郵件處理完畢。SMTP協(xié)議共包含10個SMTP命令,列表如下:
SMTP命令命令說明
HELLO<domain><CRLF>識別發(fā)送方到接收SMTP的一個HELLO命令
MAILFROM:<reverse-path><CRLF><reverse-path>為發(fā)送者地址。此命令告訴接收方一個新郵件發(fā)送的開始,并對所有的狀態(tài)和緩沖區(qū)進行初始化。此命令開始一個郵件傳輸處理,最終完成將郵件數(shù)據(jù)傳送到一個或多個郵箱中。
RCPTTO:<forward-path><CRLF><forward-path>標(biāo)識各個郵件接收者的地址
DATA<CRLF>
接收SMTP將把其后的行為看作郵件數(shù)據(jù)去處理,以<CRLF>.<CRLF>標(biāo)識數(shù)據(jù)的結(jié)尾。
REST<CRLF>退出/復(fù)位當(dāng)前的郵件傳輸
NOOP<CRLF>要求接收SMTP僅做OK應(yīng)答。(用于測試)
QUIT<CRLF>要求接收SMTP返回一個OK應(yīng)答并關(guān)閉傳輸。
VRFY<string><CRLF>驗證指定的郵箱是否存在,由于安全因素,服務(wù)器多禁止此命令。
EXPN<string><CRLF>驗證給定的郵箱列表是否存在,擴充郵箱列表,也常禁止使用。
HELP<CRLF>查詢服務(wù)器支持什么命令
注:<CRLF>為回車、換行,ASCII碼分別為13、10(十進制)。
SMTP協(xié)議的每一個命令都會返回一個應(yīng)答碼,應(yīng)答碼的每一個數(shù)字都是有特定含義的,如第一位數(shù)字為2時表示命令成功;為5表失?。?表沒有完成。一些較復(fù)雜的郵件程序利用該特點,首先檢查應(yīng)答碼的首數(shù)字,并根據(jù)其值來決定下一步的動作。下面將SMTP的應(yīng)答碼列表如下:
應(yīng)答碼說明
501參數(shù)格式錯誤
502命令不可實現(xiàn)
503錯誤的命令序列
504命令參數(shù)不可實現(xiàn)
211系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)
214幫助信息
220<domain>服務(wù)就緒
221<domain>服務(wù)關(guān)閉
421<domain>服務(wù)未就緒,關(guān)閉傳輸信道
250要求的郵件操作完成
251用戶非本地,將轉(zhuǎn)發(fā)向<forward-path>
450要求的郵件操作未完成,郵箱不可用
550要求的郵件操作未完成,郵箱不可用
451放棄要求的操作;處理過程中出錯
551用戶非本地,請嘗試<forward-path>
452系統(tǒng)存儲不足,要求的操作未執(zhí)行
552過量的存儲分配,要求的操作未執(zhí)行
553郵箱名不可用,要求的操作未執(zhí)行
354開始郵件輸入,以"."結(jié)束
554操作失敗
UDP協(xié)議的幾個基礎(chǔ)特性
(1) UDP是一個無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時就簡單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應(yīng)用程序每次從隊列中讀一個消息段。
(2) 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺服務(wù)機可同時向多個客戶機傳輸相同的消息。
(3) UDP信息包的標(biāo)題很短,只有8個字節(jié),相對于TCP的20個字節(jié)信息包的額外開銷很小。
(4) 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機性能的限制。