應(yīng)用層服務(wù)及協(xié)議
點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)及應(yīng)用程序網(wǎng)絡(luò)模型中除了客戶(hù)端/服務(wù)器模型外,還有點(diǎn)對(duì)點(diǎn)(P2P )模型。點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)模型有兩種不同形式:點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)設(shè)計(jì)和點(diǎn)對(duì)點(diǎn)應(yīng)用程序。這兩種形式具有相似的特征,但實(shí)際工作過(guò)程卻大不相同。一

點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)及應(yīng)用程序
網(wǎng)絡(luò)模型中除了客戶(hù)端/服務(wù)器模型外,還有點(diǎn)對(duì)點(diǎn)(P2P )模型。點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)模型有兩種不同形式:點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)設(shè)計(jì)和點(diǎn)對(duì)點(diǎn)應(yīng)用程序。這兩種形式具有相似的特征,但實(shí)際工作過(guò)程卻大不相同。
一、點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)
在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中,兩臺(tái)或兩臺(tái)以上的計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)互聯(lián),它們共享資源(如打印機(jī)和文件)時(shí)可以不借助專(zhuān)用服務(wù)器。每臺(tái)接入的終端設(shè)備(稱(chēng)為" 點(diǎn)" )既可以作為服務(wù)器,也可以作為客戶(hù)機(jī)。在某項(xiàng)事務(wù)中,作為服務(wù)器的計(jì)算機(jī)也可以同時(shí)成為其他服務(wù)器的客戶(hù)端。如圖3-9所示,計(jì)算機(jī)的角色根據(jù)請(qǐng)求的不同在客戶(hù)端和服務(wù)器之間切換。本圖顯示了一個(gè)對(duì)等節(jié)點(diǎn)向另一個(gè)請(qǐng)求打印服務(wù),同時(shí)作為一個(gè)文件服務(wù)器共享它的文件。
,

一類(lèi)P2P 應(yīng)用程序中采用混合系統(tǒng),即共享的資源是分散的,但指向資源位置的索引存儲(chǔ)在集中目錄中。在混合系統(tǒng)中,每臺(tái)對(duì)等設(shè)備通過(guò)訪(fǎng)問(wèn)索引服務(wù)器獲取存儲(chǔ)在另一臺(tái)對(duì)等設(shè)備中的資源位置。索引服務(wù)器也可以幫助連接兩臺(tái)對(duì)等設(shè)備。但連接完成后,通信將只在兩臺(tái)對(duì)等設(shè)備之間完成,而不需要與索引服務(wù)器進(jìn)行額外通信。
點(diǎn)對(duì)點(diǎn)應(yīng)用程序可以用于點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)、客戶(hù)端/服務(wù)器網(wǎng)絡(luò)以及Internet 。
DNS 服務(wù)及協(xié)議
我們已經(jīng)理解了應(yīng)用程序如何為用戶(hù)提供接口,以及如何訪(fǎng)問(wèn)網(wǎng)絡(luò)?,F(xiàn)在,我們將討論一些常用的協(xié)議。
我們將在下文中看到,傳輸層使用某種編址方案,稱(chēng)為端口號(hào)。端口號(hào)識(shí)別應(yīng)用程序及應(yīng)用層服務(wù)(即源數(shù)據(jù)和目的數(shù)據(jù))。服務(wù)器程序通常使用客戶(hù)機(jī)已知的預(yù)定義端口號(hào)。當(dāng)我們研究不同的TCP/IP應(yīng)用層協(xié)議和服務(wù)時(shí),我們將參考與這些服務(wù)相關(guān)聯(lián)的TCP 和UDP 端口號(hào)。這些服務(wù)包括:
域名系統(tǒng)(DNS )-TCP/UDP端口53;
超文本傳輸協(xié)議(HTTP )-TCP 端口80;
簡(jiǎn)單郵件傳輸協(xié)議(SMTP )-TCP 端口25;
郵局協(xié)議(POP )-UDP 端口110;
Telnet-TCP 端口23;
動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP )-UDP 端口67;
文件傳輸協(xié)議(FTP )-TCP 端口20和端口21;
DNS 服務(wù)及協(xié)議
在數(shù)據(jù)網(wǎng)絡(luò)中,設(shè)備以數(shù)字IP 地址 標(biāo)記,從而可以參與收發(fā)消息。但是人們很難記住這些數(shù)字地址。于是,人們創(chuàng)建了可以將數(shù)字地址轉(zhuǎn)換為簡(jiǎn)單易記名稱(chēng)的域名系統(tǒng)。
在Internet 上,更便于人們記憶的是www.cisco.com 這樣的域名,而不是該服務(wù)器的實(shí)際數(shù)字地址198.133.219.25。而且,即使Cisco 決定更換數(shù)字地址,也不會(huì)給用戶(hù)造成影響,因?yàn)槠溆蛎?仍然是www.cisco.com 。如圖3-11所示,公司只需要將新地址與現(xiàn)有域名鏈接起來(lái)即可保證連通性。在小型網(wǎng)絡(luò)中,維持域名和真實(shí)地址之間的映射很簡(jiǎn)單。然而,當(dāng)網(wǎng)絡(luò)擴(kuò)大且設(shè)備數(shù)量增加時(shí),這種人工控制系統(tǒng)就顯得捉襟見(jiàn)肘。
,
于是域名系統(tǒng)(DNS )應(yīng)運(yùn)而生,專(zhuān)門(mén)為大型網(wǎng)絡(luò)提供域名的地址解析。DNS 使用分布式服務(wù)器來(lái)解析與這些數(shù)字地址相關(guān)聯(lián)的名稱(chēng)。
一、DNS 如何工作
DNS 協(xié)議定義了一套自動(dòng)化服務(wù),該服務(wù)將資源名稱(chēng)與所需的數(shù)字網(wǎng)絡(luò)地址 匹配。協(xié)議涵蓋了查詢(xún)格式、響應(yīng)格式及數(shù)據(jù)格式。DNS 協(xié)議通信采用單一格式,即消息格式。該格式用于所有類(lèi)型的客戶(hù)端查詢(xún)和服務(wù)器響應(yīng)、報(bào)錯(cuò)消息以及服務(wù)器間的資源記錄 信息的傳輸。
DNS 是一種客戶(hù)端/服務(wù)器服務(wù)。然而,它與我們討論的其他客戶(hù)端/服務(wù)器服務(wù)不同。其他服務(wù)使用的客戶(hù)端是應(yīng)用程序(如Web 瀏覽器、電子郵件客戶(hù)端程序),而DNS 客戶(hù)端本身就是一種服務(wù)。DNS 客戶(hù)端有時(shí)被稱(chēng)為DNS 解析器,它支持其他網(wǎng)絡(luò)應(yīng)用程序和服務(wù)的名稱(chēng)解析。
我們通常在配置網(wǎng)絡(luò)設(shè)備時(shí)提供一個(gè)或者多個(gè)DNS 服務(wù)器地址,DNS 客戶(hù)端可以使用該地址進(jìn)行域名解析。Internet 服務(wù)供應(yīng)商(ISP )往往會(huì)為DNS 服務(wù)器提供地址。當(dāng)用戶(hù)的應(yīng)用程序請(qǐng)求通過(guò)域名連入遠(yuǎn)程設(shè)備時(shí),DNS 客戶(hù)端將向某一域名服務(wù)器請(qǐng)求查詢(xún),獲得域名解析后的數(shù)字地址。
用戶(hù)還可以使用操作系統(tǒng)中名為nslookup 的實(shí)用程序手動(dòng)查詢(xún) 域名服務(wù)器,來(lái)解析給定的主機(jī)名。該實(shí)用程序也可以用于檢修域名解析的故障,以及驗(yàn)證域名服務(wù)器的當(dāng)前狀態(tài)。
在例3-1中,輸入nslookup 后,即顯示為主機(jī)配置的默認(rèn)DNS 服務(wù)器。本例中,DNS 服務(wù)器是dns-sjk.cisco.com ,其地址是171.68.226.120。
例3-1 nslookup 命令
,隨后,你可以鍵入要獲取地址的主機(jī)名或者域名。在例3-1中的第一個(gè)查詢(xún)框,輸入進(jìn)行查詢(xún)。相應(yīng)的域名服務(wù)器顯示地址:198.133.219.25。
雖然例3-1中所示的查詢(xún)只是簡(jiǎn)單測(cè)試,nslookup 實(shí)用程序還有很多選項(xiàng),可以用于大量測(cè)試以及DNS 進(jìn)程驗(yàn)證。
二、域名解析與緩存
DNS 服務(wù)器使用域名守護(hù)程序(通常簡(jiǎn)稱(chēng)為named 守護(hù)程序)提供域名解析。DNS 擔(dān)當(dāng)Internet 的電話(huà)簿職能:它將人可讀的計(jì)算機(jī)主機(jī)名,如http://www.cisco.com翻譯成網(wǎng)絡(luò)設(shè)備需要用來(lái)分發(fā)信息的IP 地址。
DNS 服務(wù)器中存儲(chǔ)不同類(lèi)型的資源記錄,用來(lái)解析域名。這些記錄中包含域名、地址以及記錄的類(lèi)型。
這些記錄有以下類(lèi)型:
A 記錄-終端設(shè)備地址;
NS 記錄-權(quán)威域名服務(wù)器;
CNAME 記錄-名的規(guī)范域名(或稱(chēng)為完全合格域名[FQDN]);適用環(huán)境是單一網(wǎng)絡(luò)地址對(duì)應(yīng)多個(gè)服務(wù),但每個(gè)服務(wù)在DNS 服務(wù)器上都有各自條目;
MX 記錄-郵件交換記錄;它將域名映射到用于該域的一系列郵件交換服務(wù)器上。 當(dāng)客戶(hù)端提出查詢(xún)請(qǐng)求時(shí),服務(wù)器的named 守護(hù)進(jìn)程將首先檢索自己的記錄,以查看是否能夠自行解析域名。如果服務(wù)器不能通過(guò)自身存儲(chǔ)的記錄解析域名,它將連接其他服務(wù)器對(duì)該域名進(jìn)行解析。
該解析請(qǐng)求將會(huì)發(fā)送到很多服務(wù)器,因此需要耗費(fèi)額外的時(shí)間,而且耗費(fèi)帶寬。當(dāng)檢索到匹配信息時(shí),當(dāng)前服務(wù)器將該信息返回至源請(qǐng)求服務(wù)器,并將匹配域名的數(shù)字地址臨時(shí)保存在緩存 中。
因此,當(dāng)再次請(qǐng)求解析相同的域名時(shí),第一臺(tái)服務(wù)器就可以直接調(diào)用域名緩存中的地址。通過(guò)緩存機(jī)制,不但降低了DNS 查詢(xún)數(shù)據(jù)網(wǎng)絡(luò)的流量,也減少了上層服務(wù)器工作的負(fù)載。在安裝了Windows 系統(tǒng)的個(gè)人計(jì)算機(jī)中,DNS 客戶(hù)端服務(wù)可以預(yù)先在內(nèi)存中存儲(chǔ)已解析的域名,從而優(yōu)化DNS 域名解析性能。在Windows XP或者Windows 2000操作系統(tǒng)中,輸入ipconfig/displaydns命令可以顯示所有DNS 緩存條目。
三、DNS 層次
域名系統(tǒng)采用分級(jí)系統(tǒng)創(chuàng)建域名數(shù)據(jù)庫(kù),從而提供域名解析服務(wù)。該層級(jí)模型的外觀類(lèi)似一棵倒置的樹(shù),枝葉在下,而樹(shù)根在上。
,
域名系統(tǒng)正是依靠這些分散的、分層級(jí)的服務(wù)器來(lái)保存并維護(hù)資源記錄的。服務(wù)器根據(jù)資源記錄中的域名列表解析域名,而備用服務(wù)器也可以處理域名解析請(qǐng)求。如果指定服務(wù)器中有與其域級(jí)別相對(duì)應(yīng)的資源記錄,則該服務(wù)器可以稱(chēng)為這些記錄的主域名 服務(wù)器。
例如,對(duì)于mail.cisco.com 記錄而言,它位于比cisco.netacad.net 更高層級(jí)的服務(wù)器上(尤其是cisco.com 域中的服務(wù)器上)。因此,cisco.netacad.net 域中的某個(gè)域名服務(wù)器就不是mail.cisco.com 記錄的主域名服務(wù)器。
WWW 服務(wù)及HTTP
,當(dāng)在Web 瀏覽器中輸入一個(gè)Web 地址(或者URL 地址)時(shí),Web 瀏覽器將通過(guò)HTTP 協(xié)議建立與服務(wù)器上的Web 服務(wù)之間的連接。一提到Web 地址,大多數(shù)人往往想到統(tǒng)一資源定位器(URL )以及統(tǒng)一資源標(biāo)識(shí)符(URI )。
網(wǎng)址http://www.cisco.com/index.html就是一種URL 地址,它表示某個(gè)特定資源位于cisco.com 服務(wù)器上的名為index.html 的網(wǎng)頁(yè)中。
Web 瀏覽器是一種客戶(hù)端應(yīng)用程序,我們的計(jì)算機(jī)使用該程序連接萬(wàn)維網(wǎng),并訪(fǎng)問(wèn)存儲(chǔ)在Web 服務(wù)器上的資源。與多數(shù)服務(wù)器進(jìn)程一樣,Web 服務(wù)器以后臺(tái)服務(wù)的方式運(yùn)行,并支持不同類(lèi)型的文件。
Web 客戶(hù)端首先連接服務(wù)器,然后發(fā)送資源請(qǐng)求,從而訪(fǎng)問(wèn)需要的資源內(nèi)容。服務(wù)器響應(yīng)資源請(qǐng)求。瀏覽器對(duì)收到的資源進(jìn)行解釋?zhuān)⒔忉尯蟮臄?shù)據(jù)呈現(xiàn)給用戶(hù)。
瀏覽器可以解釋并顯示很多種數(shù)據(jù)類(lèi)型,如純文本或構(gòu)建網(wǎng)頁(yè)的超文本標(biāo)記語(yǔ)言
(HTML )。但是,除此之外的其他數(shù)據(jù)類(lèi)型需要其他服務(wù)或程序的支持,即我們常說(shuō)的插件。為便于瀏覽器識(shí)別所接受文件的類(lèi)型,服務(wù)器應(yīng)指定文件中包含的數(shù)據(jù)類(lèi)型。
為了更好地理解Web 瀏覽器和Web 客戶(hù)端的交互原理,我們可以研究一下瀏覽器是如何打開(kāi)網(wǎng)頁(yè)的。在本例中,我們采用如下URL 地址:http://www.cisco.com/web-server.htm。
首先,瀏覽器對(duì)URL 地址的三個(gè)組成部分進(jìn)行分析:
(服務(wù)器名稱(chēng));
web-server.htm (所要請(qǐng)求的文件名稱(chēng))。
然后,瀏覽器將通過(guò)域名服務(wù)器將www.cisco.com 轉(zhuǎn)換成到數(shù)字地址,用它連接到該服務(wù)器。根據(jù)HTTP 協(xié)議的要求,瀏覽器向該服務(wù)器發(fā)送GET 請(qǐng)求,并要求訪(fǎng)問(wèn)web-server.htm 文件。被請(qǐng)求服務(wù)器隨即將被請(qǐng)求網(wǎng)頁(yè)的HTML 代碼發(fā)送給瀏覽器。最后,瀏覽器解讀HTML 代碼并將網(wǎng)頁(yè)內(nèi)容顯示到瀏覽器窗口中。
超文本傳輸協(xié)議(HTTP )是TCP/IP協(xié)議族中的一種協(xié)議。該協(xié)議是為了發(fā)布和檢索HTML 頁(yè)面而開(kāi)發(fā)出來(lái)的,現(xiàn)在用于分布式協(xié)同 信息系統(tǒng)。在萬(wàn)維網(wǎng)中,HTTP 是一種數(shù)據(jù)傳輸協(xié)議。同時(shí),它還是最常用的應(yīng)用程序協(xié)議。
HTTP 中規(guī)定了請(qǐng)求/響應(yīng)的協(xié)議。當(dāng)客戶(hù)端(尤其是Web 瀏覽器)向服務(wù)器發(fā)送請(qǐng)求消息時(shí),HTTP 協(xié)議將規(guī)定客戶(hù)端請(qǐng)求網(wǎng)頁(yè)消息的類(lèi)型,以及服務(wù)器響應(yīng)信息的類(lèi)型。常用的三種消息類(lèi)型包括:
,GET
POST
PUT

POST 和PUT 消息用于向Web 服務(wù)器發(fā)送上傳數(shù)據(jù)的請(qǐng)求。例如,當(dāng)用戶(hù)在Web 頁(yè)面的表單中輸入數(shù)據(jù)時(shí),一條包含數(shù)據(jù)的POST 消息將被發(fā)送到服務(wù)器上。PUT 用于向Web 服務(wù)器上傳資源或內(nèi)容。
雖然HTTP 是一種很靈活的協(xié)議,但它并不安全。POST 消息以純文本格式向服務(wù)器上傳信息,該信息可能被其他程序中途截取、閱讀。與之相同的是,服務(wù)器的響應(yīng)(尤其是HTML 頁(yè)面)也不加密。
為了在Internet 中進(jìn)行安全通信,人們使用安全超文本傳輸(HTTPS )協(xié)議來(lái)訪(fǎng)問(wèn)或發(fā)布Web 服務(wù)器信息。HTTPS 可以采用身份驗(yàn)證和加密(encryption )兩種方式保障客戶(hù)端和服務(wù)器間的數(shù)據(jù)傳輸安全。HTTPS 中還指定了應(yīng)用層和傳輸層之間數(shù)據(jù)通信的附加規(guī)則。
電子郵件服務(wù)及SMTP/POP協(xié)議
電子郵件是一種最常見(jiàn)的網(wǎng)絡(luò)服務(wù)。由于它的簡(jiǎn)單快捷,人們的溝通方式發(fā)生了巨大變革。但是,如果要在一臺(tái)計(jì)算機(jī)或其他終端設(shè)備上運(yùn)行電子郵件,仍需要一些應(yīng)用程序和服
,
電子郵件客戶(hù)端可以使用POP 協(xié)議從電子郵件服務(wù)器接收電子郵件消息。從客戶(hù)端或者從服務(wù)器中發(fā)送的電子郵件消息格式以及命令字符串必須符合SMTP 協(xié)議的要求。通常,電子郵件客戶(hù)端程序可同時(shí)支持上述兩種協(xié)議。
電子郵件服務(wù)器進(jìn)程-MTA 及MDA
電子郵件服務(wù)器運(yùn)行兩個(gè)獨(dú)立的進(jìn)程:
郵件傳送代理(MTA );
郵件分發(fā)代理(MDA )。
郵件傳送代理(MTA )進(jìn)程用于發(fā)送電子郵件。如圖3-15所示,MTA 從MUA 處或者另一臺(tái)電子郵件服務(wù)器上的MTA 處接收信息。根據(jù)消息標(biāo)題的內(nèi)容,MTA 決定如何將該消息發(fā)送到目的地。如果郵件的目的地址位于本地服務(wù)器上,則該郵件將轉(zhuǎn)給MDA 。如果郵件的目的地址不在本地服務(wù)器上,則MTA 將電子郵件發(fā)送到相應(yīng)服務(wù)器上的MTA 上。
,
在圖3-16中,你可以看到郵件分發(fā)代理(MDA )從郵件傳送代理(MTA )中接收了一封郵件,并執(zhí)行了分發(fā)操作。MDA 從MTA 處接收所有的郵件,并放到相應(yīng)的用戶(hù)郵箱中。MDA 還可以解決最終發(fā)送問(wèn)題,如病毒掃描、垃圾郵件過(guò)濾以及送達(dá)回執(zhí)處理。
大多數(shù)的電子郵件通信都采用MUA 、MTA 以及MDA 應(yīng)用程序。但其他一些備選程序也可以用于電子郵件發(fā)送。可以將客戶(hù)端連接到公司郵件系統(tǒng)(IBM Lotus Notes、Novell Groupwise 或者M(jìn)icrosoft Exchange)。這些系統(tǒng)通常有其內(nèi)部的電子郵件格式,因此它們的客戶(hù)端可以通過(guò)私有協(xié)議與電子郵件服務(wù)器通信。
上述郵件系統(tǒng)的服務(wù)器通過(guò)其Internet 郵件網(wǎng)關(guān) 對(duì)郵件格式進(jìn)行重組,使服務(wù)器可以通過(guò)Internet 收發(fā)電子郵件。
還有一種情況是,未使用MUA 的計(jì)算機(jī)仍可以通過(guò)Web 瀏覽器連接郵件服務(wù),從而可以收發(fā)郵件。還有些計(jì)算機(jī)則運(yùn)行自己的MTA 并自行管理多個(gè)域之間的電子郵件服務(wù)。例如,在同一家公司工作的兩個(gè)職員使用私有協(xié)議相互發(fā)送電子郵件時(shí),他們的郵件可能完全停留在公司的電子郵件系統(tǒng)內(nèi)。
SMTP 協(xié)議的消息格式包括一套嚴(yán)格的命令集和回復(fù)集。這些命令支持SMTP 協(xié)議下的操作,如會(huì)話(huà)初始化、郵件交換、郵件轉(zhuǎn)發(fā)、驗(yàn)證郵箱名、擴(kuò)展郵件列表以及郵件交換的開(kāi)啟和關(guān)閉。
SMTP 協(xié)議下常用的命令包括:
HELO-將SMTP 客戶(hù)端進(jìn)程對(duì)應(yīng)到SMTP 服務(wù)器進(jìn)程;
EHLO-HELO 的新形式,包括服務(wù)擴(kuò)展;
MAIL FROM-標(biāo)志發(fā)件人;
RCPT TO-標(biāo)志收件人;
DATA-標(biāo)志消息內(nèi)容。
FTP