《現(xiàn)代網(wǎng)絡(luò)技術(shù)》課件第13章_第1頁
《現(xiàn)代網(wǎng)絡(luò)技術(shù)》課件第13章_第2頁
《現(xiàn)代網(wǎng)絡(luò)技術(shù)》課件第13章_第3頁
《現(xiàn)代網(wǎng)絡(luò)技術(shù)》課件第13章_第4頁
《現(xiàn)代網(wǎng)絡(luò)技術(shù)》課件第13章_第5頁
已閱讀5頁,還剩156頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第13章互聯(lián)網(wǎng)應(yīng)用技術(shù)13.1域名系統(tǒng)DNS13.2電子郵件系統(tǒng)E-mail13.3文件傳輸與文件訪問系統(tǒng)13.4遠(yuǎn)程登錄Telnet13.5代理服務(wù)器13.6網(wǎng)絡(luò)管理習(xí)題13.1.1IP域名結(jié)構(gòu)首先應(yīng)該明確,Internet上提供主機(jī)名字的目的在于方便用戶使用Internet。首先,主機(jī)名字要求是全局惟一的,即能在整個(gè)Internet通用。其次,要便于管理,Internet中主機(jī)名字管理工作包括名字分配、確認(rèn)和名字回收等。第三,要便于映射,即便于名字與IP地址之間的映射,因?yàn)橛脩艏壍拿植荒転槭褂肐P地址的協(xié)議軟件所接受,IP地址也不能為一般用戶所理解,二者之間存在映射需求。映射的效率是要解決的一個(gè)關(guān)鍵問題。13.1域名系統(tǒng)DNS早期的Internet使用了非等級的名字空間,但當(dāng)Internet上用戶數(shù)急劇增加時(shí),用非等級的名字空間來管理一個(gè)很大的而且經(jīng)常變化的名字集合是非常困難的,因此,Internet后來采用了層次樹狀結(jié)構(gòu)的命名方法,就像全球郵政系統(tǒng)和電話系統(tǒng)那樣。采用這種命名方法,任何一個(gè)連接在Internet上的主機(jī)或路由器都有惟一層次結(jié)構(gòu)名字,稱之為“域名”(DomainName),這里的“域”是名字空間中一個(gè)可被管理的劃分,域還可以繼續(xù)劃分為子域,如二級域、三級域等等。

Internet的域名系統(tǒng)DNS被設(shè)計(jì)成為一個(gè)聯(lián)機(jī)分布式數(shù)據(jù)庫系統(tǒng),并采用客戶/服務(wù)器模式。DNS使大多數(shù)名字都在本地映射,僅少量映射需要在Internet上通信,這使得系統(tǒng)是高效的。同時(shí)DNS也是可靠的,即使單個(gè)計(jì)算機(jī)出了故障,也不會影響整個(gè)系統(tǒng)的正常運(yùn)行。域名系統(tǒng)由若干個(gè)在專設(shè)結(jié)點(diǎn)上運(yùn)行的域名服務(wù)器組成。域名的轉(zhuǎn)換過程是:當(dāng)某個(gè)應(yīng)用進(jìn)程需要將主機(jī)域名映射為IP地址時(shí),該應(yīng)用進(jìn)程就成為域名系統(tǒng)DNS的一個(gè)客戶,并將待轉(zhuǎn)換的域名放在DNS請求報(bào)文中,以UDP數(shù)據(jù)報(bào)方式發(fā)給本地域名服務(wù)器。本地域名服務(wù)器在查找域名后,將對應(yīng)的IP地址放在回答報(bào)文中返回。應(yīng)用進(jìn)程獲得目的主機(jī)的IP地址后即可進(jìn)行通信。如果域名服務(wù)器不能回答該請求,則此域名服務(wù)器就暫時(shí)成為DNS中的另一個(gè)客戶,直到找到能夠回答該請求的域名服務(wù)器為止。

IP層次域名結(jié)構(gòu)由若干個(gè)分量組成,各分量之間用點(diǎn)分割,各分量分別代表不同級別的域名。每一級域名由字母和數(shù)字組成,級別最低的域名寫在最左邊,而級別最高的頂級域名寫在最右邊,各級域名由其上一級域名管理機(jī)構(gòu)注冊和管理,而最高的頂級域名則由Internet有關(guān)機(jī)構(gòu)負(fù)責(zé)管理。用這種方法可使每一個(gè)名字都是惟一的,并且很容易設(shè)計(jì)域名查找的機(jī)制。例如域名包含了3個(gè)標(biāo)識:computer、mit和edu。名字中每一個(gè)標(biāo)識稱為一個(gè)域,比如“”為最低域。第二級域?yàn)椤啊?,代表美國麻省理工學(xué)院。第一級為“edu”,代表教育機(jī)構(gòu)。需要注意的是:域名只是一個(gè)邏輯概念,它并不能反映出主機(jī)所在的物理位置。域名的命名機(jī)制有兩類:一類是根據(jù)管理上的組織機(jī)構(gòu)來劃分,跟地理位置和網(wǎng)絡(luò)互連情況無關(guān),稱為組織型域名。比如就是一個(gè)組織型域名。另一類是根據(jù)國家地理位置區(qū)域來劃分,稱為地理型域名。比如代表中國廣東深圳。為保證其域名系統(tǒng)的通用性,Internet規(guī)定了一組正式的通用標(biāo)準(zhǔn)標(biāo)識,作為其第一級域的域名,如表13-1所示。表中前7個(gè)域?qū)?yīng)于組織型域名,最后一個(gè)域?qū)?yīng)于地理型域名。按地理模式,美國的主機(jī)應(yīng)歸入第一級域us(一般省略不寫)中,而其他國家的主機(jī)要按地理模式登記進(jìn)入域名系統(tǒng),必須首先向Internet網(wǎng)絡(luò)信息中心(NIC)申請本國第一級域名(一般采用該國國際標(biāo)準(zhǔn)的二字符標(biāo)識符,如中國是cn)。目前,在組織模式中又新增加了幾個(gè)域名,如ltd、inc表示商業(yè)部門;npo表示非盈利性組織;isp代表Internet服務(wù)提供商。

NIC將第一級域的管理特權(quán)分派給指定管理機(jī)構(gòu),各管理機(jī)構(gòu)再對其管轄的域名空間繼續(xù)劃分,并將各子部分管理特權(quán)授予子管理機(jī)構(gòu)。如此下去,便形成層次型域名。由于管理機(jī)構(gòu)是逐級授權(quán)的,所以最終的域名都得到NIC承認(rèn),成為全球Internet的惟一名字。假如深圳大學(xué)一臺WWW服務(wù)器,其域名為。其中,主機(jī)名www是由深圳大學(xué)校園網(wǎng)網(wǎng)管中心分配并進(jìn)行管理的,深圳大學(xué)網(wǎng)管中心是經(jīng)中國教育科研網(wǎng)(CERNET)網(wǎng)管中心授權(quán)管理的子域;中國教育科研網(wǎng)(CERNET)網(wǎng)管中心是經(jīng)中國互聯(lián)網(wǎng)信息中心(CNNIC)授權(quán)管理的子域;中國互聯(lián)網(wǎng)信息中心(CNNIC)是經(jīng)Internet網(wǎng)絡(luò)信息中心(NIC)授權(quán)對cn域進(jìn)行管理。但I(xiàn)nternet信息中心(NIC)最終保留對cn域的控制。因此,整個(gè)Internet域名系統(tǒng)正如層次型名字管理系統(tǒng)一樣構(gòu)成一個(gè)樹形結(jié)構(gòu),其中樹根作為惟一的中央管理機(jī)構(gòu)NIC,不構(gòu)成域名的一部分。圖13-1說明了Internet的名字空間。圖13-1Internet的名字空間前面談到的域名主要針對主機(jī)而言,其實(shí)由于域名系統(tǒng)的廣泛通用性,域名既可以標(biāo)識主機(jī),也可以標(biāo)識信箱及用戶等。因此,為了區(qū)分不同類型的對象,域名系統(tǒng)中每一個(gè)條目都被賦予“類型”(Type)屬性。這樣,一個(gè)特定的名字就可能對應(yīng)于域名系統(tǒng)中的若干個(gè)條目。另外,域名系統(tǒng)還根據(jù)協(xié)議類型將整個(gè)名字集分為若干“類”(Class),因此域名系統(tǒng)中的命名條目又被賦予類的屬性。這樣,在同一個(gè)域名系統(tǒng)數(shù)據(jù)庫(這是一個(gè)名字-地址映射表)中,就存放了對應(yīng)多種對象類型和多種協(xié)議族的命名對象。13.1.2域名解析用戶使用基于TCP/IP的應(yīng)用程序時(shí),首先要給出欲通信的對方主機(jī)的域名,在真正開始通信之前,必須解析出對方的IP地址,這是一個(gè)域名解析過程。將域名交給本地解析器軟件,該軟件首先在本地緩沖區(qū)中查找相應(yīng)條目。如果找不到,本地解析器就會構(gòu)造一個(gè)詢問報(bào)文,發(fā)往初始服務(wù)器(本地服務(wù)器),該服務(wù)器根據(jù)解析情況回答一個(gè)響應(yīng)報(bào)文。一旦解析器從本地緩沖區(qū)或服務(wù)器響應(yīng)中獲得目標(biāo)機(jī)的IP地址,就會將這個(gè)IP地址交給應(yīng)用程序,應(yīng)用程序便可以開始正式的通信過程。域名解析與地址解析有很多相似的地方,也包括正向解析(從域名到地址)以及逆向解析(從地址到域名)。正如IP地址的引入增加了程序員的方便性而引起地址解析額外開銷一樣,域名的引入一方面增加了用戶的方便性,另一方面卻引入了域名解析的額外開銷。這是性能與代價(jià)的折衷。在TCP/IP域名系統(tǒng)中,包括一個(gè)有效的、可靠的、通用的、分布式的名字-地址映射系統(tǒng)。所謂有效是指多數(shù)名字可以進(jìn)行本地解析,只有少數(shù)名字解析需經(jīng)過Internet傳輸;可靠是指單臺機(jī)器的故障不會妨礙整個(gè)系統(tǒng)的正常工作;通用是指該系統(tǒng)不僅限于解析機(jī)器名字,還可以解析電子郵件郵箱名、網(wǎng)絡(luò)服務(wù)器名等;分布式是指由分布在不同地點(diǎn)的一組服務(wù)器合作完成名字解析工作。

1.域名服務(wù)器

TCP/IP名字-地址映射由一組既獨(dú)立又協(xié)作的域名服務(wù)器完成,這組域名服務(wù)器是解析系統(tǒng)的核心。它實(shí)際上是一個(gè)服務(wù)器軟件,運(yùn)行在指定的機(jī)器上,完成域名-IP地址映射。通常把運(yùn)行域名服務(wù)軟件的機(jī)器叫做域名服務(wù)器,相應(yīng)地,請求域名解析服務(wù)的軟件叫做名字解析器。在TCP/IP域名系統(tǒng)中,一個(gè)名字解析器可以利用一個(gè)或多個(gè)域名服務(wù)器進(jìn)行名字映射。對應(yīng)于域名結(jié)構(gòu),Internet域名服務(wù)器也構(gòu)成一定的層次結(jié)構(gòu),如圖13-2所示。圖中根服務(wù)器為中央服務(wù)器,第一級域?yàn)镮nternet標(biāo)準(zhǔn)域,“”為IBM公司子域,“”為中國教育網(wǎng)子域,“”為中國廣東省子域。域名服務(wù)器結(jié)構(gòu)在概念上具有兩個(gè)特點(diǎn):第一,各父結(jié)點(diǎn)能識別子結(jié)點(diǎn),也就是給定一域名,父結(jié)點(diǎn)可以從子結(jié)點(diǎn)中找出適當(dāng)?shù)慕Y(jié)點(diǎn)來解析該域名;第二,域名的解析從根結(jié)點(diǎn)開始,自上向下。需要強(qiáng)調(diào)的是,圖13-2所示的邏輯結(jié)構(gòu)僅是域名服務(wù)器間的邏輯聯(lián)系,并不表示真正的物理連接。事實(shí)上,域名服務(wù)器可以位于Internet中的任意位置。圖中所示的域名服務(wù)器樹與Internet的域名層次結(jié)構(gòu)是完全一致的。這種對應(yīng)關(guān)系簡潔明了,一旦獲取一個(gè)子域的管理權(quán),需建立一個(gè)相應(yīng)的域名服務(wù)器,并將它連入域名服務(wù)器樹中。然而事實(shí)上,并不存在上述一致性,真正的服務(wù)器樹物理結(jié)構(gòu)如圖13-3所示。其中根服務(wù)器包含根和第一級域的信息,而每個(gè)葉結(jié)點(diǎn)對應(yīng)于一個(gè)子域(相當(dāng)于一個(gè)組織)。形成圖13-3所示物理結(jié)構(gòu)的原因有兩點(diǎn):首先,單臺物理服務(wù)器可以容納一個(gè)名字空間中很大一部分對象的信息;第二,尤其重要的是,各組織往往將子域的信息搜集起來,存入一個(gè)服務(wù)器中。與邏輯結(jié)構(gòu)相比,物理結(jié)構(gòu)在進(jìn)行名字解析時(shí)最多訪問兩個(gè)服務(wù)器,所經(jīng)路徑也要短些。圖13-2域名服務(wù)器的邏輯結(jié)構(gòu)圖13-3域名服務(wù)器的物理結(jié)構(gòu)上述實(shí)現(xiàn)結(jié)構(gòu)的缺點(diǎn)在于:一旦增減一個(gè)子域,根服務(wù)器數(shù)據(jù)庫就要做相應(yīng)修改。而在概念結(jié)構(gòu)中,根服務(wù)器基本上是不變的。不難發(fā)現(xiàn),真實(shí)的服務(wù)器結(jié)構(gòu)其實(shí)對應(yīng)于真實(shí)的域名管理。在具體實(shí)現(xiàn)的域名管理系統(tǒng)中,域與子域同歸于中央管理機(jī)構(gòu)(NIC)所管轄,因此應(yīng)該說服務(wù)器樹結(jié)構(gòu)與域名管理結(jié)構(gòu)是一致的。

2.域名服務(wù)器層次域名服務(wù)器按照域名層次安排它的層次,每個(gè)服務(wù)器授權(quán)管轄域名體系中的一部分。根服務(wù)器處于層次體系的頂部,它是頂層域(如.com)的管轄者。雖然根服務(wù)器并不包含所有可能的域,但它包含如何到達(dá)其他服務(wù)器的信息。

DNS服務(wù)器層次與域名層次兩者并不是對等的。一個(gè)公司可以選擇將它所有的域名都放在一個(gè)服務(wù)器上,也可以選擇運(yùn)行幾個(gè)服務(wù)器。例如圖13-4說明了foobar公司有兩種方法選擇將它的域名層次安排在兩個(gè)服務(wù)器上。在圖(a)中,的服務(wù)器包含了soap部門,而在(b)中,的服務(wù)器包含除walnut以外的所有子部門。從中可以看出,一個(gè)服務(wù)器既不限于單個(gè)域名層次,也可能包含多個(gè)域名層次。例如圖13-4(b)中,服務(wù)器包含了3個(gè)不同層次服務(wù)器域名,但walnut服務(wù)器只包含1個(gè)層次的域名。此外,同一層次可以分給多個(gè)服務(wù)器,在圖13-4(a)中,不同服務(wù)器分別管轄soap和candy,兩者處于同一層次。而在圖13-4(b)中,walnut的管轄者與almond和peanut的管轄者是不同的,盡管這3個(gè)域處于candy層次之下的同一層次。圖13-4DNS的服務(wù)器層次

3.域名解析過程

DNS是一種層次化的命名體系結(jié)構(gòu),實(shí)現(xiàn)這一體系結(jié)構(gòu)依靠的是分布式數(shù)據(jù)庫系統(tǒng)。DNS的根本目的在于:將目的主機(jī)名映射到IP地址。為了將一個(gè)名字映像成一個(gè)IP地址,客戶應(yīng)用程序調(diào)用一個(gè)稱為解析器程序過程,將名字作為參數(shù)傳遞給它,形成DNS客戶,然后,DNS客戶形成一個(gè)名字查詢UDP報(bào)文給本地名字服務(wù)器,服務(wù)器首先在其管轄的區(qū)域內(nèi)查找名字,名字找到后,把對應(yīng)的IP地址返回給DNS客戶。名字解析過程如圖13-5所示。圖13-5名字解析過程當(dāng)本地名字服務(wù)器中找不到名字時(shí),則轉(zhuǎn)到下一個(gè)合適的名字服務(wù)器去求解。典型的求解方式主要有兩種:遞歸方式和迭代方式。遞歸方式要求名字服務(wù)器系統(tǒng)自行完成名字和IP地址的轉(zhuǎn)換,即利用服務(wù)器上的軟件來請求下一個(gè)服務(wù)器。迭代方式要求DNS客戶參與找到求解的名字服務(wù)器,即利用客戶端上的軟件實(shí)現(xiàn)下一個(gè)服務(wù)器的查找。遞歸方式適用于名字請求不多的情況。而迭代方式正好相反,它適用于名字請求較多的環(huán)境。舉例來說,假如用戶AAA的電子郵箱名為aaa@,它發(fā)送電子郵件給BBB,BBB的電子郵箱名為bbb@public.

。發(fā)送者AAA為CERNET的成員,而接收者BBB處在CHINANET上。當(dāng)AAA發(fā)送電子郵件后,為了獲得BBB電子郵箱的IP地址,就開始其域名解析過程?;诶硐脒f歸查詢解析步驟如圖13-6(a)所示。由于接收者的電子郵箱的域名為,因此,一開始在發(fā)送者本地名字服務(wù)器中是無法查詢到接收者域名的(步驟1)。接著,發(fā)送一個(gè)詢問包至高一層的名字服務(wù)器,仍舊無法查到接收者的域名(步驟2)。一直要通過頂級域名字服務(wù)器cn(步驟3)才能把查詢傳遞給其另一個(gè)子域名字服務(wù)器(步驟4)。隨后,引導(dǎo)到名字服務(wù)器就能查詢到接收者域名的IP地址及其他相應(yīng)的反饋信息(步驟5)。IP地址與其他相應(yīng)的反饋信息由步驟6、7、8、9、10回送給發(fā)送者。圖13-6(b)是一種效率較高的解析方案。當(dāng)步驟1查詢本地服務(wù)器不能返回正確的信息后,則由本地名字服務(wù)器導(dǎo)向頂級域名服務(wù)器cn。再由cn直接指向分支就可獲得接收者域名的查詢。圖13-6域名解析過程(a)遞歸域名解析;(b)高效域名解析當(dāng)然,在某些情況下,也可以把兩個(gè)或更多個(gè)名字服務(wù)器合成一個(gè),從而可減少查詢步驟,提高查詢效率。合并名字服務(wù)器的原則取決于所代表區(qū)域的查詢信息量的大小,以及在其管轄的若干域中查詢的效率。除了上述遞歸查詢方式以外,也可采用迭代查詢方式。當(dāng)本地名字服務(wù)器不能獲得查詢答案時(shí),就可能返回下一個(gè)名字服務(wù)器的名字給客戶,依此類推,直至找到具有接收者名字的服務(wù)器,迭代查詢方式給于客戶更多的參與對搜索過程的控制。13.2電子郵件系統(tǒng)E-mail13.2.1電子郵件的有關(guān)協(xié)議與Internet電子郵件系統(tǒng)有關(guān)的典型協(xié)議主要有:

1.傳輸方式的協(xié)議

(1)簡單郵件傳輸協(xié)議SMTP(SimpleMailTransferProtocol)。

(2)通用Internet郵件擴(kuò)展協(xié)議MIME(MultipurposeInternetMailExtensions)。

2.郵件存儲訪問協(xié)議

(1)郵政協(xié)議第3版POP-3。

(2)?Internet郵件訪問協(xié)議第4版IMAP-4。

3.目錄訪問方法的協(xié)議主要是輕型目錄訪問協(xié)議LDAP。目前,電子郵件系統(tǒng)越來越完善,功能也越來越強(qiáng),并已提供了多種復(fù)雜通信和交互式的服務(wù),其主要功能包括:

(1)郵件發(fā)送者可以把一條信息發(fā)送給一個(gè)或多個(gè)接收者。

(2)發(fā)送的信息包括數(shù)據(jù)、文件、文字、聲音、圖像或圖形。

(3)發(fā)送者或接收者可以是Internet以外的用戶。

(4)電子郵件的發(fā)送和接收軟件可以與用戶的其他軟件溝通。

(5)電子郵件系統(tǒng)具有較強(qiáng)的管理和監(jiān)控功能,以利于系統(tǒng)的維護(hù)和改善系統(tǒng)的運(yùn)行性能。

(6)其他一些方便用戶的功能,如支持多種語言文本、郵件優(yōu)先權(quán)等。13.2.2電子郵件系統(tǒng)的結(jié)構(gòu)一個(gè)電子郵件系統(tǒng)有兩個(gè)主要組成部分:用戶接口和郵件傳輸程序。整個(gè)電子郵件系統(tǒng)與Internet相連,如圖13-7所示。圖13-7電子郵件系統(tǒng)的組成部件用戶接口是一個(gè)在本地運(yùn)行的程序,又稱為用戶代理UA(UserAgent),它使用戶能夠通過一個(gè)很友好的接口(目前主要是用窗口界面)來發(fā)送和接收郵件。用戶接口部分至少應(yīng)當(dāng)具有以下三個(gè)功能:

(1)撰寫:給用戶提供很方便的編輯信件的環(huán)境。

(2)顯示:能方便地在計(jì)算機(jī)屏幕上顯示出來信,包括來信附上的聲音和圖像。

(3)處理:收信人根據(jù)情況按不同方式對來信進(jìn)行處理,如打印、轉(zhuǎn)發(fā)、分類保存等。郵件傳輸程序,又稱為報(bào)文傳送代理(MTA,MessageTransferAgent),在后臺運(yùn)行,它將郵件通過網(wǎng)絡(luò)發(fā)送給對方主機(jī),并從網(wǎng)絡(luò)接收郵件。它有兩個(gè)功能:

(1)傳送和接收:電子郵件按照客戶/服務(wù)器方式工作。當(dāng)用戶編輯好要發(fā)送的郵件后,就通過用戶接口交給郵件傳輸程序。發(fā)送信件時(shí),郵件傳輸程序作為遠(yuǎn)程目的計(jì)算機(jī)郵件服務(wù)器的客戶,與目的主機(jī)建立TCP連接,并將郵件傳送到目的主機(jī)。接收方計(jì)算機(jī)的郵件傳輸程序在收到郵件后,將郵件存放在接收方的郵箱中,等待著用戶來讀取。由于用戶接口的屏蔽作用,用戶在發(fā)送和接收郵件時(shí)看不見郵件傳輸程序的工作情況。

(2)報(bào)告:將郵件傳送的情況(已交付、被拒絕、丟失等)向發(fā)信人報(bào)告。電子郵件在傳輸過程中,往往需要經(jīng)過多個(gè)結(jié)點(diǎn)。因此每一個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)都要安裝郵件傳輸程序,即報(bào)文傳送代理MTA,以便對郵件進(jìn)行存儲轉(zhuǎn)發(fā)。Internet中的MTA的集合構(gòu)成了報(bào)文傳送系統(tǒng)(MTS,MessageTransferSystem)。因此,整個(gè)郵件系統(tǒng)結(jié)構(gòu)歸結(jié)為如圖13-8所示。圖13-8電子郵件系統(tǒng)的結(jié)構(gòu)總之,用戶代理UA的任務(wù)是創(chuàng)建和顯示報(bào)文,并在UA和本地MTA之間傳送報(bào)文。而報(bào)文傳送系統(tǒng)MTS則是一個(gè)由許多報(bào)文傳送代理MTA構(gòu)成的應(yīng)用層網(wǎng)絡(luò),其任務(wù)就是在兩個(gè)MTA之間起著報(bào)文傳送的作用。電子郵件由兩部分組成,即信封和內(nèi)容。電子郵件的傳輸程序根據(jù)郵件信封上的信息來傳送郵件。用戶在從自己的郵箱中讀取郵件時(shí)才能見到郵件的內(nèi)容。在郵件的信封上,最重要的就是收信人的地址。TCP/IP體系的電子郵件系統(tǒng)規(guī)定電子郵件地址的格式如下: 收信人郵箱名@郵箱所在主機(jī)域名這里,符號“@”讀作“at”(表示“在”的意思)。收信人郵箱名(又簡稱為用戶名)是收信人自己定義的字符串標(biāo)識符。定義的收信人郵箱名在郵箱所在的計(jì)算機(jī)中必須是惟一的。由于一個(gè)主機(jī)的域名在Internet上是惟一的,而每一個(gè)郵箱名在該主機(jī)中也是惟一的,因此在Internet上的每一個(gè)人的電子郵件地址都是惟一的。這一點(diǎn)對保證電子郵件能夠在整個(gè)Internet范圍內(nèi)的準(zhǔn)確交付是十分重要的。還應(yīng)注意到,在發(fā)送電子郵件時(shí),郵件傳輸程序只使用電子郵件地址中的后一部分,即目的主機(jī)的域名。只有在郵件到達(dá)目的主機(jī)后,接收方計(jì)算機(jī)服務(wù)器才根據(jù)電子郵件地址中的前一部分(即收信人郵箱名),將郵件送往收件人的郵箱。13.2.3電子郵件的發(fā)送下面是一個(gè)電子郵件的實(shí)例(見圖13-9),它給出了發(fā)送者John發(fā)給Lchae的整個(gè)郵件的內(nèi)容格式。在這個(gè)郵件例子中,可以看到報(bào)頭信息就占據(jù)了前4行,報(bào)頭信息可以分成幾個(gè)獨(dú)立的域信息行,如“To”為域,而Lchae@為它的域值。報(bào)頭中包括誰發(fā)送郵件和誰接收郵件等詳細(xì)信息。用空行把報(bào)頭與報(bào)文內(nèi)容隔開,報(bào)文中包含了發(fā)送者的實(shí)際文本。圖13-9電子郵件實(shí)例電子郵件在Internet上傳送依賴于簡單郵件傳輸協(xié)議SMTP,SMTP決定了UA與MTA建立連接以及UA發(fā)送電子郵件的方法。MTS也使用SMTP在MTA之間進(jìn)行電子郵件的轉(zhuǎn)發(fā),直到電子郵件到達(dá)合適的MTA并傳遞給接收方UA。不論從UA到MTA,還是MTA之間,兩臺計(jì)算機(jī)之間有著類似的交互處理,它們都遵循基本的呼叫響應(yīng)過程。但它們之間的處理最主要的差別在于后者要求MTA必須去查找一個(gè)接收MTA。發(fā)送MTA與域名服務(wù)DNS聯(lián)系,通過查找在電子郵件接收者地址中所指明的域名,DNS可能會返回該域名的IP地址,接著發(fā)送MTA就試圖與IP地址所對應(yīng)的主機(jī)建立一個(gè)郵件連接。DNS也可能返回一系列郵件轉(zhuǎn)發(fā)記錄,該記錄中包含了轉(zhuǎn)發(fā)到接收者的中介MTA的各個(gè)IP地址,這樣,發(fā)送MTA就試圖與郵件轉(zhuǎn)發(fā)記錄中列出的第一個(gè)IP地址所對應(yīng)的主機(jī)建立一個(gè)郵件連接。下面將具體描述一個(gè)發(fā)送MTA與一個(gè)接收MTA建立連接的處理過程。發(fā)送MTA選擇一個(gè)接收MTA,該接收MTA可以是最終的郵件目的地,也可以是將郵件轉(zhuǎn)發(fā)給目的MTA的中介MTA。接著,發(fā)送MTA對接收MTA請求一個(gè)TCP連接,接收MTA回應(yīng)一個(gè)服務(wù)器標(biāo)識符以及是否可以進(jìn)行郵件處理的狀態(tài)報(bào)告。如果不能進(jìn)行,則停止。發(fā)送MTA可以稍后再作嘗試或?qū)ふ移渌穆窂健H绻邮誐TA可以處理郵件,它將接受此TCP連接。建立連接后,發(fā)送MTA發(fā)送一條Hello命令和域名信息給接收MTA,得到接收MTA同意后,再發(fā)送一條指示電子郵件源地址的MailForm命令,命令中還包括了郵件已經(jīng)通過的MTA列表,這就確定了返回路徑。如果接收MTA允許接收來自該地址的郵件,它將響應(yīng)一個(gè)OK應(yīng)答。隨后,發(fā)送MTA再發(fā)送一條標(biāo)識電子郵件接收者地址的RcptTo命令。如果接收MTA允許接收發(fā)往它的郵件(通常執(zhí)行DNS查找即可驗(yàn)證),接收MTA則回送OK應(yīng)答,否則它將拒絕。一封電子郵件可能發(fā)往多個(gè)接收者,對于每個(gè)接收者地址均會重復(fù)以上過程。一旦接收MTA明確了接收者的地址后,發(fā)送MTA將發(fā)送Data命令,而接收MTA則響應(yīng)OK。其中,接收MTA認(rèn)為隨后的所有數(shù)據(jù)行均為郵件文本,所以一旦發(fā)送MTA收到OK應(yīng)答后,就開始發(fā)送郵件。發(fā)送MTA通過僅含一個(gè)句號的一行來標(biāo)記郵件結(jié)束。當(dāng)接收MTA收到郵件結(jié)束信號時(shí),即回答OK,表示郵件已經(jīng)接收。如果由于某種原因,接收MTA未能處理郵件,它將發(fā)給發(fā)送MTA一個(gè)表示“失敗”的代碼信號。當(dāng)郵件成功地發(fā)往接收MTA,并且發(fā)送MTA已收到OK應(yīng)答后,發(fā)送MTA即可以開始其他郵件的發(fā)送或者使用Quit命令中止連接。當(dāng)接收MTA收到郵件后,將成為一個(gè)發(fā)送MTA,并與下一個(gè)MTA進(jìn)行聯(lián)系以轉(zhuǎn)發(fā)收到的郵件。當(dāng)郵件抵達(dá)RcptTo的電子郵件地址所指示的接收者的郵件服務(wù)器時(shí),即可停止轉(zhuǎn)發(fā)過程。如果郵件轉(zhuǎn)發(fā)途中的任何一個(gè)MTA不能傳遞郵件,無論什么原因都將產(chǎn)生一個(gè)錯(cuò)誤報(bào)告,也就是無法傳遞郵件的一種聲明。MTA沿返回路徑將錯(cuò)誤報(bào)告回傳給初始發(fā)送者。

SMTP只能處理純ASCII文本的郵件,不適于其他類型的數(shù)據(jù),如8位二進(jìn)制數(shù)據(jù)和一些多媒體格式。為了解決這類問題。現(xiàn)在可以使用MIME協(xié)議,它可將多媒體格式轉(zhuǎn)變成SMTP能處理的格式。13.2.4電子郵件的接收當(dāng)電子郵件已經(jīng)轉(zhuǎn)發(fā)到接收者的MTA或郵件服務(wù)器上時(shí),接收UA即可通過多種訪問MTA的方法來接收電子郵件:

(1)通過在本地網(wǎng)絡(luò)上使用CC.mail專用電子郵件包來處理電子郵件的訪問操作。

(2)使用如CompuServe、AmericaOnline等在線服務(wù)的電子郵件應(yīng)用程序來訪問MTA。

(3)通過郵政協(xié)議(POP-3)或郵件訪問協(xié)議(IMAP-4)來訪問MTA。

POP-3是UA訪問電子郵件的一種較老的標(biāo)準(zhǔn)。IMAP-4則是一種較新的標(biāo)準(zhǔn),它能提供更豐富的電子郵件訪問程序,還可提供可選項(xiàng)來處理和存儲電子郵件。兩者都允許UA直接訪問MTA來獲得其郵件。在上述訪問方法的前兩種方法中,當(dāng)UA去訪問MTA時(shí),必須經(jīng)過專用系統(tǒng)的轉(zhuǎn)換,實(shí)現(xiàn)轉(zhuǎn)換的專用系統(tǒng)通常被稱為郵件網(wǎng)關(guān)。目前,越來越多的用戶轉(zhuǎn)向使用基于Internet標(biāo)準(zhǔn)的郵件訪問協(xié)議,這樣可克服由于郵件網(wǎng)關(guān)的介入而造成的郵件損壞和效率降低等缺點(diǎn)。IMAP-4新標(biāo)準(zhǔn)所提供的擴(kuò)展功能已經(jīng)可以與專用協(xié)議軟件包所擁有的優(yōu)勢相競爭。如前所述,SMTP通過一系列MTA或郵件服務(wù)器轉(zhuǎn)發(fā)電子郵件直到郵件到達(dá)所設(shè)定的接收者郵件服務(wù)器。在該過程中,SMTP使用了DNS和MX記錄(郵件交換記錄)來定位服務(wù)器,當(dāng)SMTP將電子郵件傳到最終的郵件服務(wù)器時(shí),郵件將被存放在存儲部件(也稱為“郵局”)中。如果使用像CC:mail這樣的專用電子郵件系統(tǒng),則必須通過Internet或SMTP網(wǎng)關(guān)將電子郵件轉(zhuǎn)換成CC:mail專用協(xié)議的格式后,才能存儲在郵局中,以便接收者閱讀郵件。服務(wù)器郵件存儲部件(郵局)以文件形式保存郵件,它們可被想象成是一個(gè)大目錄,大目錄又可分成許多子目錄,這些子目錄可稱為“郵箱”,它們對應(yīng)不同的用戶。改進(jìn)的郵件存儲形式允許用戶創(chuàng)建個(gè)人文件夾存放已讀和未讀的郵件,以及建立郵件分組檔案,還可具有實(shí)現(xiàn)關(guān)鍵搜索能力以及創(chuàng)建層次化的文件夾等特點(diǎn)。一般而言,一個(gè)本地的電子郵件系統(tǒng),其上的郵件存儲部件和郵件傳輸部件分別配置在不同的機(jī)器上,構(gòu)成郵件存儲服務(wù)器和郵件傳輸服務(wù)器,如圖13-10表示了一個(gè)本地郵件系統(tǒng)的基本結(jié)構(gòu)。其中郵件傳輸服務(wù)器主要用來處理郵件輸入/輸出傳輸?shù)却罅坎僮?。因此,如果將兩個(gè)部件都配置在同一臺機(jī)器上時(shí),當(dāng)用戶要獲取郵箱中的郵件時(shí),則會影響郵件輸入/輸出的傳輸性能。圖13-10本地電子郵件系統(tǒng)基本結(jié)構(gòu)電子郵件一旦被傳送到郵件存儲服務(wù)器后,接收者就可獲得它,接收者對郵件服務(wù)器的訪問有離線(Offline)、在線(Online)和斷線(Disconnected)3種基本模式,如圖13-11所示。圖中①表示客戶取得郵件后在本地處理和存儲;②表示在服務(wù)器上處理和存儲郵件;③表示客戶取得郵件后在本地處理;④表示郵件變更后上載服務(wù)器存儲拷貝。圖13-11郵件訪問模式離線模式是三者中最基本的模式,該模式中客戶與郵件存儲服務(wù)器相連后,下載所有指定的接收者郵件,郵件被下載后將從服務(wù)器中自動(dòng)刪除,然后用戶在客戶機(jī)上進(jìn)行本地處理、操作并存儲郵件。離線模式的優(yōu)點(diǎn)是簡單,這是由于客戶只要間歇訪問服務(wù)器進(jìn)行郵件下載,因此僅需要最小量的服務(wù)器連接的時(shí)間。同時(shí),因?yàn)猷]件處理在客戶端執(zhí)行,因此無需占用太多的服務(wù)器資源。此外,郵件一旦被客戶下載后,就從服務(wù)器上刪除,因此服務(wù)器的存儲空間無需很大。顯然離線模式也有缺點(diǎn),例如因?yàn)猷]件被下載到一臺特定的客戶機(jī)上,用戶必須使用該臺機(jī)器訪問已處理的郵件。因此,如果已經(jīng)把郵件下載到一臺個(gè)人的桌面計(jì)算機(jī)上時(shí),那么帶著便攜機(jī)上路就無法閱讀已經(jīng)被下載的郵件。再者,由于所有的郵件處理和存儲均在客戶機(jī)上執(zhí)行,因此必須賦予客戶機(jī)足夠的資源來完成這些任務(wù)。在線模式中所有的郵件處理和操作均在服務(wù)器上執(zhí)行。實(shí)際上,盡管在某些情況下用戶可以把郵件保存在本地客戶機(jī)上,但所有的郵件(甚至用戶已經(jīng)閱讀后)仍然可保存在服務(wù)器上。在線模式中,當(dāng)用戶需要訪問并處理他們的電子郵件時(shí),客戶機(jī)必須與服務(wù)器保持持續(xù)連接。由于服務(wù)器承擔(dān)了所有的郵件存儲和處理任務(wù),這就要求有一個(gè)功能更強(qiáng)、配置更大的服務(wù)器來處理在線電子郵件系統(tǒng)。在線模式中,對于客戶機(jī)來說,由于用戶利用客戶機(jī)在線訪問服務(wù)器,因此用戶必須存在于可以訪問郵件服務(wù)器的客戶機(jī)上。然而,因?yàn)樗械碾娮余]件均在服務(wù)器上處理和存儲,用戶可以從任一臺能與服務(wù)器連接的客戶機(jī)上訪問他們的電子郵件??蛻魴C(jī)上的資源可以配置的很小。在線模式的系統(tǒng),通??商峁U(kuò)充的訪問性能,如創(chuàng)建大量個(gè)人文件夾來組織郵件和創(chuàng)建存儲郵件檔案等能力。斷線模式綜合了離線與在線兩種模式的特點(diǎn)。在這種模式中,用戶先通過客戶機(jī)與郵件服務(wù)器相連接,以獲取及下載電子郵件,然后用戶可以在本地客戶機(jī)上處理郵件。郵件處理完后可再次與郵件服務(wù)器相連接并上載所有的變更,郵件斷線模式的特點(diǎn)在于用戶可以從多個(gè)能訪問郵件服務(wù)器的客戶機(jī)上訪問電子郵件。用戶還能離線處理郵件,導(dǎo)致了更短的客戶機(jī)與服務(wù)器的連接時(shí)間。然而,本模式不論在服務(wù)器上還是客戶機(jī)上均需要有充足的資源。目前使用的專用電子郵件軟件包,如Lotus、CC:mail等系統(tǒng),其郵件訪問模式大多數(shù)采用在線模式,這些軟件包使用該公司專門的協(xié)議,從Internet郵件服務(wù)器中獲取郵件,并存儲在本地服務(wù)器上,然后用戶可以使用軟件包中的客戶程序在相應(yīng)的電子郵件存儲服務(wù)器上訪問和處理郵件。專用軟件包的最大問題是要依賴于專用的環(huán)境。而基于Internet標(biāo)準(zhǔn)的電子郵件客戶機(jī),只要它們處在Internet環(huán)境中,并且知道可用來發(fā)送郵件的SMTP郵件服務(wù)器,就可以發(fā)送電子郵件了。此外,只要客戶機(jī)連接了Internet,它就能從相關(guān)的Internet郵件服務(wù)器上獲取和處理郵件,而不管客戶機(jī)位于何處或是什么機(jī)器。開放的、面向Internet的郵件訪問協(xié)議,不需要附加其他步驟配置就能使電子郵件系統(tǒng)在Internet上工作。只要運(yùn)行TCP/IP協(xié)議,用戶就可以訪問Internet。用戶可以從各種客戶平臺以及不同地點(diǎn)來訪問郵件系統(tǒng)。13.2.5簡單郵件傳輸協(xié)議(SMTP)

SMTP是一個(gè)簡單的ASCII協(xié)議。SMTP客戶機(jī)發(fā)送進(jìn)程在與SMTP服務(wù)器通過25號端口建立TCP連接后,等待服務(wù)器發(fā)出一個(gè)“220SimpleMailTransferServiceReady”報(bào)文。收到220報(bào)文后,客戶進(jìn)程發(fā)出一個(gè)HELO報(bào)文,服務(wù)器對此作出響應(yīng),SMTP會話建立。SMTP客戶進(jìn)程可以發(fā)送一個(gè)或多個(gè)郵件、中斷會話或請求服務(wù)器交換發(fā)送方向以便服務(wù)器能夠向客戶機(jī)發(fā)送郵件。而收信方必須對收到的郵件進(jìn)行確認(rèn),當(dāng)然它也可以中止會話或當(dāng)前的郵件傳輸。盡管SMTP對郵件傳輸?shù)奶幚硪?guī)定得比較詳細(xì),但仍然會出現(xiàn)一些問題。一個(gè)問題是關(guān)于郵件的長度,早期的SMTP軟件無法處理長度超過64?KB的郵件。另一個(gè)問題是超時(shí)定時(shí)器的定時(shí)寬度設(shè)置。如果客戶機(jī)和服務(wù)器的定時(shí)寬度不同,則有可能出現(xiàn)當(dāng)其中一個(gè)還忙著,而另一個(gè)已經(jīng)超時(shí),從而不得不中止會話的情況。為了解決上述問題,定義了擴(kuò)展的SMTP(ESMTP,ExtensionSMTP),使用ESMTP的客戶進(jìn)程在與服務(wù)器建立會話連接時(shí),先發(fā)送一條EHLO消息(而不是HELO消息)。如果EHLO消息被拒收,證明服務(wù)器是一個(gè)標(biāo)準(zhǔn)的SMTP服務(wù)器,客戶機(jī)應(yīng)該以通常方式進(jìn)行郵件傳輸處理。如果EHLO被接收,則客戶機(jī)與服務(wù)器按ESMTP進(jìn)行通信,以完成郵件的傳輸。

SMTP的最大特點(diǎn)就是簡單。SMTP只定義了郵件如何在郵件傳輸系統(tǒng)中通過發(fā)信方和收信方之間的TCP連接進(jìn)行傳輸,但它沒有規(guī)定郵件服務(wù)器與用戶之間的接口以及郵件的存儲、郵件系統(tǒng)多長時(shí)間發(fā)送一次郵件等操作。13.2.6郵箱訪問協(xié)議郵箱一般是放在功能強(qiáng)大的郵件服務(wù)器上的,而郵件服務(wù)器必須不間斷地運(yùn)行,并時(shí)刻保持與Internet的直接連接,以便能隨時(shí)接收郵件。用戶一般在桌面PC機(jī)上工作,并沒有直接連入Internet,它不能直接向外面發(fā)送郵件或從外面接收郵件,而是需要通過內(nèi)聯(lián)網(wǎng)(如校園網(wǎng)、園區(qū)網(wǎng))或撥號網(wǎng)絡(luò)與服務(wù)器相連。為了讓用戶在自己的PC機(jī)上也能發(fā)送或接收郵件,必須解決用戶PC機(jī)與郵件服務(wù)器的郵件交換問題,這就是用戶接口。也就是說,用戶如何向本地郵件服務(wù)器發(fā)送郵件(用戶的郵箱在此服務(wù)器上),又如何從服務(wù)器上讀取郵件。用戶發(fā)送郵件到本地郵件服務(wù)器的過程比較簡單,它仍然采用SMTP,至于服務(wù)器收到用戶發(fā)來的郵件后,則按正常的程序處理。用戶通過郵箱訪問協(xié)議POP-3從本地服務(wù)器上取郵件,POP-3稱為郵局協(xié)議(PostOfficeProtocol-3)。它具有用戶登錄、退出、讀取郵件以及刪除郵件的功能。POP-3的特點(diǎn)是允許用戶將郵件從遠(yuǎn)程郵箱中下載到自己的機(jī)器上以便于以后閱讀。POP-3本身包括ASCII文本和一些類似的SMTP文件。另一種郵箱訪問協(xié)議是交互式郵件訪問協(xié)議IMAP(InteractiveMailAccessProtocol),該協(xié)議適合使用多臺計(jì)算機(jī)的用戶。例如,用戶可能在辦公室用工作站,在家用PC機(jī),出差時(shí)用便攜機(jī)。IMAP的基本思想是讓郵件服務(wù)器維護(hù)一個(gè)中心數(shù)據(jù)庫,使其能夠被多臺機(jī)器訪問。與POP-3不同的是,IMAP不允許用戶將郵件下載到自己的計(jì)算機(jī)上,只能在線訪問郵箱。第三種郵箱訪問協(xié)議是分布式郵件系統(tǒng)協(xié)議DMSP(DistributedMailSystemProtocol),該協(xié)議并不認(rèn)為用戶只有一個(gè)電子信箱。它允許用戶從不同的郵件服務(wù)器上下載郵件到自己的計(jì)算機(jī)上,然后斷開連接。而且用戶在與服務(wù)器斷開連接時(shí)也能讀取和回復(fù)郵件。當(dāng)用戶以后再與服務(wù)器連接時(shí),用戶將與服務(wù)器系統(tǒng)重新同步并傳遞郵件。13.2.7MIME協(xié)議

SMTP存在一些不足之處:

(1)?SMTP不能傳送可執(zhí)行文件或其他的二進(jìn)制對象。人們曾試圖將二進(jìn)制文件轉(zhuǎn)換為SMTP使用的ASCII文本,例如,流行的UNIXUuencede/UUdecode方案,但這些均未形成正式標(biāo)準(zhǔn)或事實(shí)上的標(biāo)準(zhǔn)。

(2)SMTP限于傳送7位的ASCII碼。許多非英語國家的文字(如中文、俄文,甚至帶重音符號的法文或德文)就無法傳送。即使在SMTP網(wǎng)關(guān)將EBCDIC碼轉(zhuǎn)換為ASCII碼時(shí),也會遇到一些麻煩。

(3)?SMTP服務(wù)器會拒絕超過一定長度的郵件。通用因特網(wǎng)郵件擴(kuò)展協(xié)議MIME繼續(xù)保持目前的SMTP格式,但增加了郵件主體的結(jié)構(gòu),并定義了傳送非ASCII碼的編碼規(guī)則。也就是說,MIME郵件可在現(xiàn)有的電子郵件程序和協(xié)議下傳送。MIME主要包括3個(gè)方面的內(nèi)容:

(1)?5個(gè)新的郵件首部字段,這些字段提供了有關(guān)郵件主體的信息。

(2)定義了許多郵件內(nèi)容的格式,對多媒體電子郵件的表示方法進(jìn)行了標(biāo)準(zhǔn)化。

(3)定義了傳送編碼,可對任何內(nèi)容格式進(jìn)行轉(zhuǎn)換,而不會被郵件系統(tǒng)改變。為適應(yīng)任意數(shù)據(jù)類型及其表示方法的需要,每個(gè)MIME報(bào)文包含告知收信人數(shù)據(jù)類型和使用編碼的信息。MIME將增加的信息加入郵件首部中。下面是MIME增加的5個(gè)新的郵件首部的名稱及其意義。

(1)?MIME-Version:標(biāo)識MIME的版本?,F(xiàn)在的版本號是1.0。若無此行,則為英文文本。

(2)?Content-Description:這是可讀字符串,說明此郵件的主題。

(3)?Content-Id:郵件的惟一標(biāo)識符。

(4)?Content-Transfer-Encoding:在傳送時(shí)郵件的主體的編碼方式。

(5)?Content-Type:說明郵件的類型。13.3文件傳輸與文件訪問系統(tǒng)文件是計(jì)算機(jī)系統(tǒng)中信息存儲、傳輸和處理的主要單位,大多數(shù)計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)都支持網(wǎng)絡(luò)文件訪問功能,可以說,網(wǎng)絡(luò)文件訪問是網(wǎng)絡(luò)系統(tǒng)必備的基本功能,也是一般用戶對網(wǎng)絡(luò)系統(tǒng)的基本要求。網(wǎng)絡(luò)文件訪問包括兩種形式:聯(lián)機(jī)存取(on-lineaccess)和全文拷貝(whole-filecopy)。前者一般稱為文件訪問,后者稱為文件傳輸。文件訪問允許多個(gè)程序同時(shí)訪問單個(gè)文件。任何一個(gè)程序都不需要被訪問文件的拷貝,而是直接在原文件上進(jìn)行操作,某程序?qū)υ募娜魏涡薷亩剂⒓丛谠募媳憩F(xiàn)出來,并為其他程序所感知。文件傳輸提供的服務(wù)相對簡單一些。文件傳輸是指用戶直接將遠(yuǎn)地文件拷入本地系統(tǒng),或者將本地系統(tǒng)文件拷入遠(yuǎn)程系統(tǒng)。遠(yuǎn)程文件一旦拷入本地系統(tǒng),便屬于本地文件,與遠(yuǎn)地系統(tǒng)無關(guān),用戶可以對它進(jìn)行任何權(quán)限內(nèi)的操作。文件傳輸通常只用于只讀數(shù)據(jù),當(dāng)然用戶也可以把從遠(yuǎn)地拷貝過來的文件進(jìn)行修改后,再通過文件傳輸協(xié)議將它拷貝回遠(yuǎn)程系統(tǒng)。文件傳輸與文件訪問的最直接的區(qū)別是:前者在實(shí)際讀寫文件之前,需要將遠(yuǎn)地文件(原文件)拷貝到本地系統(tǒng),然后對本地拷貝進(jìn)行操作,應(yīng)用程序與文件(本地拷貝)是一對一的關(guān)系;而文件訪問不需要拷貝過程,若干程序可同時(shí)在原文件上直接進(jìn)行操作(原文件被若干個(gè)程序同時(shí)打開并進(jìn)行讀寫操作),應(yīng)用程序與文件之間是多對一的關(guān)系。

FTP(FileTransferProtocol)是Internet上使用最廣泛的文件傳輸協(xié)議。它提供交互式的訪問,允許用戶指明文件類型和格式,并允許對文件具有存取權(quán)限。FTP屏蔽了各計(jì)算機(jī)系統(tǒng)的細(xì)節(jié),因而適合于在異構(gòu)網(wǎng)絡(luò)中任意計(jì)算機(jī)之間傳送文件。13.3.1FTP的特點(diǎn)文件傳輸是TCP/IP中使用最廣泛的應(yīng)用之一,早在TCP/IP出現(xiàn)之前,ARPANET中就有了文件傳輸?shù)臉?biāo)準(zhǔn)文本,該文本后來發(fā)展成為目前眾所周知的文件傳輸協(xié)議FTP。在UNIX系統(tǒng)中,客戶端FTP有一組shell命令,其中最重要的命令就是ftp??蛻舳擞脩粽{(diào)用ftp命令后,便與服務(wù)器建立連接,這個(gè)連接叫做控制連接,用于雙方傳輸控制信息,而非傳輸數(shù)據(jù)。一旦建立起控制連接,雙方便進(jìn)入交互式會話狀態(tài)。然后,客戶端用戶每調(diào)用一個(gè)FTP命令(如文件拷貝),客戶進(jìn)程便與服務(wù)器之間再建立一個(gè)數(shù)據(jù)連接并進(jìn)行文件傳輸。等到該FTP命令執(zhí)行完后,再回到交互會話狀態(tài),可繼續(xù)執(zhí)行其他FTP命令。最后用戶鍵入close和quite令,退出FTP會話。

FTP的命令多達(dá)60多個(gè),總的來說,它們的命名很接近DOS命令的命名風(fēng)格。除了基本的文件傳輸外,這些命令還提供許多附加的功能。

FTP有以下特點(diǎn):

(1)交互式用戶界面??蛻舳擞脩粽{(diào)用FTP后,便進(jìn)入交互狀態(tài),可以利用FTP命令方便地與服務(wù)器對話。例如,客戶端用戶可以列出遠(yuǎn)地系統(tǒng)某個(gè)目錄下的文件,也可以進(jìn)入遠(yuǎn)地系統(tǒng)的某個(gè)工作目錄,同時(shí)還可以在FTP客戶進(jìn)程中執(zhí)行本地shell命令。

(2)對文件格式說明。FTP允許客戶指定存儲數(shù)據(jù)的數(shù)據(jù)類型和格式。例如,客戶端用戶可以指定某文件是按文本方式還是二進(jìn)制方式存儲,也可以指定文本文件是使用ASCII字符集還是使用EBCDIC字符集。

(3)權(quán)限控制。在請求文件傳輸之前,F(xiàn)TP要求客戶必須首先向服務(wù)器提供登錄的用戶名和口令,F(xiàn)TP服務(wù)器將拒絕非法客戶的訪問。13.3.2FTP工作原理

FTP是基于客戶/服務(wù)器模型而設(shè)計(jì)的,客戶與服務(wù)器之間利用TCP建立連接。與一般客戶/服務(wù)器模型不同的是,F(xiàn)TP客戶端與服務(wù)器之間要建立雙重連接,一個(gè)是控制連接,另一個(gè)是數(shù)據(jù)連接。建立雙重連接的原因在于:FTP是一個(gè)交互式會話系統(tǒng),F(xiàn)TP客戶進(jìn)程每次調(diào)用FTP便與服務(wù)器建立一個(gè)會話,會話以控制連接來維持,直至退出FTP??刂七B接負(fù)責(zé)傳輸控制信息,尤其是客戶命令(如文件傳輸命令)。利用控制命令,F(xiàn)TP客戶進(jìn)程可以向服務(wù)器提出多次請求(一個(gè)請求就是一個(gè)FTP命令)。而FTP客戶進(jìn)程每提出一個(gè)請求,服務(wù)器便再與FTP客戶進(jìn)程建立一個(gè)數(shù)據(jù)連接,進(jìn)行實(shí)際的數(shù)據(jù)傳輸。一旦數(shù)據(jù)傳輸結(jié)束,數(shù)據(jù)連接就被撤消。但控制連接依然存在,客戶可以繼續(xù)發(fā)出FTP命令,直到客戶鍵入close命令撤消控制連接,再鍵入quit命令退出FTP會話,此時(shí)雙方的控制進(jìn)程才宣告結(jié)束。為了滿足多FTP客戶進(jìn)程請求的需要,F(xiàn)TP服務(wù)器采用并發(fā)服務(wù)器方式。一個(gè)FTP服務(wù)器進(jìn)程可同時(shí)為多個(gè)客戶進(jìn)程提供服務(wù)。FTP的服務(wù)器進(jìn)程由兩大部分組成:一個(gè)主進(jìn)程,負(fù)責(zé)接受新的請求;另外有若干個(gè)從屬進(jìn)程,負(fù)責(zé)處理單個(gè)請求。主進(jìn)程的工作步驟如下:

(1)打開熟知端口(端口號為21),使客戶進(jìn)程能夠連接上。

(2)等待客戶進(jìn)程發(fā)出連接請求。

(3)啟動(dòng)從屬進(jìn)程來處理客戶進(jìn)程發(fā)來的請求。從屬進(jìn)程對客戶進(jìn)程的請求處理完畢后即終止,但從屬進(jìn)程在運(yùn)行期間根據(jù)需要還可以創(chuàng)建其他一些子進(jìn)程。

(4)回到等待狀態(tài),繼續(xù)接受其他客戶進(jìn)程發(fā)來的請求。主進(jìn)程與從屬進(jìn)程的處理是并發(fā)地進(jìn)行的。

FTP的工作原理如圖13-12所示。為簡單起見,服務(wù)器中的主進(jìn)程沒有畫上。圖13-12FTP工作原理13.3.3FTP連接建立在進(jìn)行文件傳輸時(shí),F(xiàn)TP的客戶和服務(wù)器之間要建立兩個(gè)連接:“控制連接”和“數(shù)據(jù)連接”。圖中的控制進(jìn)程就是上述的“從屬進(jìn)程”。在創(chuàng)建該進(jìn)程時(shí),控制連接隨之創(chuàng)建并連接到控制進(jìn)程上??刂七B接在整個(gè)會話期間一直保持打開狀態(tài),F(xiàn)TP客戶所發(fā)出的傳送請求通過控制連接發(fā)送給控制進(jìn)程,但控制連接并不用來傳送文件,實(shí)際用于傳輸文件的是“數(shù)據(jù)連接”??刂七M(jìn)程在接收到FTP客戶發(fā)送來的文件傳輸請求后就創(chuàng)建一個(gè)“數(shù)據(jù)傳送進(jìn)程”和一個(gè)“數(shù)據(jù)連接”,并將數(shù)據(jù)連接到“數(shù)據(jù)傳送進(jìn)程”,數(shù)據(jù)傳送進(jìn)程實(shí)際完成文件的傳送,在傳送完畢后關(guān)閉“數(shù)據(jù)傳送連接”,并結(jié)束運(yùn)行。在圖13-12中,控制連接的箭頭是從客戶指向服務(wù)器,表示客戶發(fā)起控制連接。但數(shù)據(jù)連接則按相反的方向形成,即服務(wù)器發(fā)起數(shù)據(jù)連接。這時(shí)FTP服務(wù)器作為客戶,而FTP客戶則作為服務(wù)器。當(dāng)客戶進(jìn)程向服務(wù)器進(jìn)程發(fā)出建立連接請求時(shí),要尋找連接服務(wù)器進(jìn)程的熟知端口(端口號為21),同時(shí)還要告訴服務(wù)器進(jìn)程自己的另一個(gè)端口號碼,用于建立數(shù)據(jù)傳送連接。接著,服務(wù)器進(jìn)程用自己傳送數(shù)據(jù)的熟知端口(端口號為20)與客戶進(jìn)程所提供的端口號碼建立數(shù)據(jù)傳送連接。由于FTP使用了兩個(gè)不同的端口號,所以數(shù)據(jù)連接與控制連接不會發(fā)生混亂。使用兩個(gè)獨(dú)立連接的主要好處是使協(xié)議更加簡單和更容易實(shí)現(xiàn),同時(shí)在傳輸文件時(shí)還可以利用控制連接實(shí)現(xiàn)操作(例如,客戶發(fā)送請求終止傳輸)。事實(shí)上,由于客戶端的控制進(jìn)程已經(jīng)申請了新端口號,因此客戶端的數(shù)據(jù)傳輸進(jìn)程就不必再申請新端口號,而是使用與控制進(jìn)程相同的端口號即可。這樣,兩個(gè)不同的服務(wù)器端口與一個(gè)客戶端口可以構(gòu)成兩個(gè)完全不同的相關(guān),分別用于控制連接和數(shù)據(jù)連接,如圖13-13所示。圖13-13FTP的控制連接和數(shù)據(jù)連接13.3.4FTP訪問控制

FTP一般都是交互式工作。下面的例子給出了用戶與FTP的交互信息,最左邊的行號[01]~[15]不是屏幕信息,黑體字是用戶鍵入的字符,用戶鍵入完畢后還要鍵入回車鍵。[01]ftp 用FTP與遠(yuǎn)程主機(jī)建立連接[02]connectedto 本地FTP發(fā)出的連接成功信息[03]220nicFTPserver(Sunos4.l)ready.

服務(wù)器返回信息“服務(wù)就緒”[04]Name:anonymous 用匿名FTP名字登錄[05]331Guestloginok,sendidentaspassword. 331表示用戶名正確,需要口令[06]Password:guest 用guest作口令[07]230Guestloginok,accessrestrictionapply. 230表示用戶已經(jīng)注冊完畢[08]ftp>cdrfc

“ftp>”是FTP的提示符,改變當(dāng)前目錄為“rfc”[09]250CWDcommandsuccessful. CWD命令執(zhí)行成功[10]ftp>getrfc1261.txtnicinfo

將rfcl261.txt復(fù)制到本地機(jī)上,并改名為nicinfo[11]200PORTcommandsuccessful. PORT表示要建立數(shù)據(jù)連接,200表示命令正確[12]150ASCIIdataconnectionforrfcl261.txt 150表示文件狀態(tài)正確,即將建立

(7,1401)(4318bytes). 數(shù)據(jù)連接[13]226ASCIITransfercomplete. 226表示釋放數(shù)據(jù)連接,新的本地local:nicinforemote:rfc1261.txt 文件已經(jīng)產(chǎn)生

4488bytesreceivedin15seconds(0.3kbytes/s).[14]ftp>quit

退出命令[15]221Goodbye. 表明FTP工作結(jié)束嚴(yán)格的FTP訪問控制要求用戶在遠(yuǎn)程登錄時(shí)必須提供一個(gè)合法的賬號(包括用戶名和口令),然后它才能訪問文件。這樣就給FTP用戶帶來了很大的麻煩。于是FTP提供一種對公共文件的非嚴(yán)格訪問控制,即所謂匿名FTP(anonymousFTP)。用戶在支持匿名FTP的服務(wù)器上訪問公共文件時(shí),只需鍵入FTP服務(wù)器名字,然后根據(jù)提示再鍵入:

Username: anonymous

Password: guest這樣就與服務(wù)器建立了會話。匿名FTP服務(wù)器的實(shí)現(xiàn)也非常簡單,只需在服務(wù)器主機(jī)的賬號數(shù)據(jù)庫中加入一個(gè)用戶名為anonymous,口令為guest的公用賬號即可。需要補(bǔ)充的是,設(shè)計(jì)一個(gè)通用的異種機(jī)之間的文件傳輸協(xié)議并非易事。當(dāng)需要在異種機(jī)之間進(jìn)行文件傳輸時(shí),雙方必須就用戶特權(quán)、文件所有者屬性、文件訪問控制以及數(shù)據(jù)格式等達(dá)成一致。有時(shí)這些問題是很難解決的,尤其是數(shù)據(jù)格式表示。一般而言,解決數(shù)據(jù)格式表示的簡單方法是:發(fā)送方將其數(shù)據(jù)表示轉(zhuǎn)換成標(biāo)準(zhǔn)格式,通過網(wǎng)絡(luò)傳送到接收方,接收方再將其轉(zhuǎn)換成本地格式。但是,這種轉(zhuǎn)換不可能是完全精確的,可能要丟掉某些信息,但這是不得已的。嚴(yán)格準(zhǔn)確地解決異種機(jī)之間數(shù)據(jù)表示的一致性問題的方法是比較復(fù)雜的,F(xiàn)TP也不追求這個(gè)目標(biāo)。為簡化協(xié)議,F(xiàn)TP借用Telnet的NVT的定義進(jìn)行數(shù)據(jù)表示。但需要注意的是,F(xiàn)TP僅僅是借用NVT而已,它并不支持Telnet的選項(xiàng)協(xié)商機(jī)制,這也是FTP的簡潔之處。13.3.5簡單文件傳輸協(xié)議(TFTP)簡單文件傳輸協(xié)議(TFTP,TrivialFileTransferProtocol)是一種簡化的TCP/IP文件傳輸協(xié)議。TFTP只限于簡單文件傳輸操作,它不提供權(quán)限控制,也不支持客戶與服務(wù)器之間復(fù)雜的交互過程,因此TFTP軟件比FTP軟件小得多。

TFTP具有短小實(shí)用的特點(diǎn),它的這一特點(diǎn)對于有些應(yīng)用來說非常重要。例如,無盤工作站生產(chǎn)廠商可以將TFTP存放在只讀存儲器ROM中,供無盤工作站的BOOTP獲取啟動(dòng)信息之用。由于ROM的容量限制,除TFTP之外的協(xié)議都不能滿足BOOTP的需求。

TFTP之所以簡潔,一個(gè)重要原因是它不需要提供可靠流傳輸服務(wù),而是建立在UDP數(shù)據(jù)報(bào)基礎(chǔ)上,利用確認(rèn)與超時(shí)重傳機(jī)制保證數(shù)據(jù)傳輸?shù)恼_性。

TFTP的另一個(gè)特點(diǎn)是提供對稱性重傳,客戶機(jī)和服務(wù)器都提供超時(shí)重傳機(jī)制。服務(wù)器超時(shí)后重傳數(shù)據(jù)報(bào)文,客戶機(jī)超時(shí)后重傳確認(rèn)報(bào)文。對稱性重傳可以提高TFTP的健壯性,進(jìn)一步確保當(dāng)報(bào)文丟失時(shí),不致于引起數(shù)據(jù)傳輸?shù)氖 ?3.3.6網(wǎng)絡(luò)文件系統(tǒng)(NFS)網(wǎng)絡(luò)文件系統(tǒng)(NFS,NetworkFileSystem)最初是由Sun微系統(tǒng)公司開發(fā)的。NFS的目標(biāo)是提供在網(wǎng)絡(luò)環(huán)境下遠(yuǎn)程文件的透明訪問。在NFS支持下,用戶以完全相同的方式訪問本地文件和遠(yuǎn)程文件,而不必指明文件是本地的還是遠(yuǎn)程的。為此,NFS設(shè)計(jì)者在操作系統(tǒng)內(nèi)核增加一個(gè)界面,屏蔽用戶對文件系統(tǒng)操作的細(xì)節(jié),向用戶或應(yīng)用程序提供一個(gè)統(tǒng)一的文件訪問界面,其結(jié)構(gòu)如圖13-14所示。圖13-14NFS界面

NFS在訪問遠(yuǎn)程文件系統(tǒng)之前,首先要調(diào)用mount命令將遠(yuǎn)程文件系統(tǒng)安裝到本地文件系統(tǒng)的某個(gè)目錄下。mount命令的主要作用是獲取遠(yuǎn)程文件系統(tǒng)一個(gè)子目錄(欲安裝目錄)的文件描述符,然后使用mount系統(tǒng)調(diào)用在本地主機(jī)上創(chuàng)建一個(gè)NFS文件系統(tǒng)。

NFS也是基于客戶/服務(wù)器模型實(shí)現(xiàn),在進(jìn)行遠(yuǎn)程文件訪問的過程中,NFS將用到外部數(shù)據(jù)表示(XDR,eXternalDataRepresentation)和遠(yuǎn)程過程調(diào)用(RPC,RemoteProcedureCall)協(xié)議,下面將簡單討論這兩個(gè)協(xié)議。文件訪問與文件傳輸?shù)牟煌幵谟冢何募L問過程中,客戶要不斷地與服務(wù)器打交道,要求服務(wù)器響應(yīng)各種訪問請求,如遠(yuǎn)程文件的創(chuàng)建、讀寫、關(guān)閉和刪除等。雖然文件訪問協(xié)議可以解決上述問題,即向遠(yuǎn)程主機(jī)發(fā)送一些讀寫請求,并使遠(yuǎn)程主機(jī)響應(yīng)這些請求,但NFS不這樣做,NFS專門設(shè)計(jì)了一個(gè)遠(yuǎn)程過程調(diào)用的RPC協(xié)議,從而將NFS與發(fā)送和處理遠(yuǎn)程請求的RPC協(xié)議分開。將RPC與NFS分開的目的在于提供一種通用的遠(yuǎn)程過程調(diào)用協(xié)議,而且RPC不僅僅用在遠(yuǎn)地文件訪問中,它還可以用在任何分布式應(yīng)用程序中。RPC可以調(diào)用遠(yuǎn)程系統(tǒng)上的許多功能(包括系統(tǒng)調(diào)用),并將調(diào)用結(jié)果返回本地應(yīng)用程序。RPC協(xié)議也是基于客戶/服務(wù)器模型的。RPC客戶負(fù)責(zé)收集遠(yuǎn)程過程調(diào)用的調(diào)用參數(shù),連同遠(yuǎn)程過程調(diào)用本身一起傳給服務(wù)器,然后等待響應(yīng)結(jié)果。服務(wù)器接收到RPC調(diào)用后,首先派生出一個(gè)服務(wù)器子進(jìn)程用于處理RPC請求,然后由服務(wù)器子進(jìn)程再調(diào)用具體的本地操作完成RPC所請求的事情,最后服務(wù)器向客戶發(fā)回執(zhí)行結(jié)果。

RPC協(xié)議采用無連接方式,因?yàn)橐淮蜶PC調(diào)用就是一個(gè)交易過程,只包含一個(gè)請求和一個(gè)應(yīng)答,不必專門為此建立連接。另外,為實(shí)現(xiàn)NFS能在異種機(jī)之間傳輸信息(包括訪問請求、控制信息、參數(shù)和數(shù)據(jù))的需要,必須解決異種機(jī)之間的數(shù)據(jù)表示問題,為此開發(fā)人員設(shè)計(jì)了XDR協(xié)議。同RPC一樣,XDR也是一個(gè)通用協(xié)議,不僅僅用在NFS中。XDR與網(wǎng)絡(luò)虛終端(NVT)協(xié)議的原理相似,但細(xì)節(jié)不同。RPC客戶程序在發(fā)送RPC請求之前,首先要對RPC請求參數(shù)進(jìn)行XDR編碼,將本地?cái)?shù)據(jù)轉(zhuǎn)化為標(biāo)準(zhǔn)的XDR格式,而RPC服務(wù)器在開始執(zhí)行RPC過程之前,首先要對XDR進(jìn)行解碼,將標(biāo)準(zhǔn)的XDR格式數(shù)據(jù)轉(zhuǎn)換成本地?cái)?shù)據(jù)格式,這個(gè)過程叫做XDR變換。與文件傳輸不同的是,文件訪問并不依賴于專門的客戶程序,應(yīng)用程序本身可以像訪問本地文件一樣訪問遠(yuǎn)地文件,通過遠(yuǎn)程過程調(diào)用,遠(yuǎn)程文件系統(tǒng)與本地文件系統(tǒng)融為一體。有趣的是,文件訪問與文件傳輸?shù)膬?yōu)缺點(diǎn)正好互補(bǔ)。文件訪問的優(yōu)點(diǎn)是隱藏了遠(yuǎn)程文件與本地文件的區(qū)別,而文件傳輸卻恰恰做不到這一點(diǎn)。而文件傳輸?shù)膬?yōu)點(diǎn)是用戶能夠把握對遠(yuǎn)程文件的操作,而文件訪問卻做不到。在文件訪問中,當(dāng)應(yīng)用程序發(fā)出一個(gè)對遠(yuǎn)程文件的訪問請求后,它并不知道能否收到響應(yīng)以及何時(shí)收到響應(yīng)。假如遠(yuǎn)程系統(tǒng)不可訪問,應(yīng)用程序?qū)o法運(yùn)行下去。而且,依賴于遠(yuǎn)程文件訪問的分布式應(yīng)用程序還可能因?yàn)榫W(wǎng)絡(luò)擁塞而運(yùn)行緩慢,原因是文件訪問的網(wǎng)絡(luò)開銷比文件傳輸?shù)木W(wǎng)絡(luò)開銷要大很多。文件傳輸與文件訪問面臨的共同難題是在異構(gòu)環(huán)境下的訪問權(quán)限、文件屬性、訪問保護(hù)數(shù)據(jù)表示等問題。13.4.1Telnet協(xié)議

Telnet是一個(gè)簡單的遠(yuǎn)程終端協(xié)議。用戶用Telnet就可在其本地通過TCP連接登錄到遠(yuǎn)程的另一個(gè)主機(jī)上(使用主機(jī)名或IP地址)。Telnet能把用戶的擊鍵傳到遠(yuǎn)程主機(jī),同時(shí)也能把遠(yuǎn)程主機(jī)的輸出通過TCP連接返回到用戶屏幕。這種服務(wù)是透明的,因?yàn)橛脩舾杏X到好像鍵盤和顯示器是直接連在遠(yuǎn)程主機(jī)上。

Telnet也使用客戶/服務(wù)器模式。在本地系統(tǒng)運(yùn)行Telnet客戶進(jìn)程,而在遠(yuǎn)程主機(jī)則運(yùn)行Telnet服務(wù)器進(jìn)程。與FTP的情況相似,服務(wù)器中的主進(jìn)程等待新的請求,并產(chǎn)生從屬進(jìn)程來處理每一個(gè)連接。13.4遠(yuǎn)程登錄Telnet

Telnet遠(yuǎn)程登錄過程分為3個(gè)步驟:第1步:本地用戶在本地終端上對遠(yuǎn)程系統(tǒng)進(jìn)行遠(yuǎn)程登錄,該遠(yuǎn)程登錄的內(nèi)部操作實(shí)際上是一個(gè)TCP連接。第2步:將本地終端上的鍵盤輸入傳送到遠(yuǎn)程系統(tǒng)。第3步:遠(yuǎn)程系統(tǒng)將結(jié)果送回本地終端。在以上過程中,輸入/輸出均對遠(yuǎn)程系統(tǒng)內(nèi)核透明,遠(yuǎn)程登錄服務(wù)本身對用戶也是透明的,用戶好像直接連入遠(yuǎn)程系統(tǒng)。這種透明性是Telnet的重要特點(diǎn),也是Telnet內(nèi)部機(jī)制的重要部分。13.4.2Telnet工作原理

Telnet允許某臺機(jī)器上的用戶與遠(yuǎn)程計(jì)算機(jī)上的登錄服務(wù)器建立TCP連接,然后通過該連接將用戶鍵入的命令直接傳遞到遠(yuǎn)程計(jì)算機(jī)上,遠(yuǎn)程計(jì)算機(jī)執(zhí)行命令,并將結(jié)果送回到用戶機(jī)器的屏幕上。

Telnet協(xié)議實(shí)現(xiàn)了三大功能。第一,它定義了一個(gè)網(wǎng)絡(luò)虛擬終端協(xié)議,為遠(yuǎn)程系統(tǒng)提供一個(gè)標(biāo)準(zhǔn)終端接口;第二,Telnet允許客戶進(jìn)程與登錄服務(wù)器進(jìn)行選項(xiàng)協(xié)商,并且Telnet協(xié)議還提供一組標(biāo)準(zhǔn)選項(xiàng);第三,Telnet對稱處理連接的兩端。像應(yīng)用層上的許多其他服務(wù)一樣,遠(yuǎn)程登錄也采用客戶/服務(wù)器方式。遠(yuǎn)程登錄的工作過程如圖13-15所示。首先,本地機(jī)器上的Telnet客戶程序與遠(yuǎn)程登錄服務(wù)器建立TCP連接;然后,客戶程序?qū)挠脩艚K端接收鍵盤輸入命令并將其通過TCP傳送給Telnet服務(wù)器,同時(shí)它會接收從服務(wù)器返回的字符數(shù)據(jù),并通過本地操作系統(tǒng)將它顯示在用戶終端上。圖13-15Telnet工作原理實(shí)際上,Telnet服務(wù)器比圖13-14所示的更為復(fù)雜,因?yàn)樗幚聿l(fā)送連接請求。通常一個(gè)主服務(wù)器進(jìn)程等待新連接的到來,并為處理每一個(gè)連接創(chuàng)建一個(gè)新的從進(jìn)程。圖13-15中的“Telnet服務(wù)器”只代表處理某個(gè)連接的從進(jìn)程。

Telnet服務(wù)器在整個(gè)過程作為TCP連接的一端,它是必不可少的,它的作用是在TCP連接和遠(yuǎn)程操作系統(tǒng)之間進(jìn)行數(shù)據(jù)傳輸,起一個(gè)中介作用。我們知道,Telnet服務(wù)器實(shí)際上并不能直接處理本地用戶鍵入的字符,它只是把收到的字符交給遠(yuǎn)程操作系統(tǒng)處理。而Telnet客戶程序收到的返回?cái)?shù)據(jù)也是來自于遠(yuǎn)程操作系統(tǒng)的,而非Telnet服務(wù)器本身。正如圖13-15所描述的,Telnet服務(wù)器相當(dāng)于遠(yuǎn)程系統(tǒng)中的一個(gè)終端,它與遠(yuǎn)程操作系統(tǒng)發(fā)生的操作是通過一個(gè)操作系統(tǒng)入口進(jìn)行的,這個(gè)操作系統(tǒng)入口叫做偽終端(PseudoTerminal)。任何遠(yuǎn)程登錄服務(wù)器應(yīng)用程序都必須建立在偽終端入口上,否則無法實(shí)現(xiàn)。從這個(gè)角度來看,Telnet服務(wù)器的作用是將遠(yuǎn)程登錄的TCP數(shù)據(jù)流連接到一個(gè)特定的偽終端上。將Telnet服務(wù)器用應(yīng)用程序來實(shí)現(xiàn)的優(yōu)點(diǎn)是:它要比將代碼嵌入操作系統(tǒng)更易修改,也更易控制服務(wù)器,而最顯著的缺點(diǎn)是效率不高。原因是用戶每次鍵入的字符數(shù)據(jù),必須先從鍵盤通過操作系統(tǒng)傳到Telnet客戶程序,再從客戶程序返回操作系統(tǒng),再通過Internet傳到遠(yuǎn)程計(jì)算機(jī)。到達(dá)遠(yuǎn)程計(jì)算機(jī)后,字符數(shù)據(jù)必須先通過操作系統(tǒng)向上傳給Telnet服務(wù)器應(yīng)用程序,并且再從服務(wù)器應(yīng)用程序返回到操作系統(tǒng)上的偽終端入口點(diǎn)。最后,遠(yuǎn)程操作系統(tǒng)將字符數(shù)據(jù)傳送給用戶正在運(yùn)行的應(yīng)用程序。同時(shí),用戶的結(jié)果輸出將按照反向通路從服務(wù)器回送到客戶機(jī)。13.4.3網(wǎng)絡(luò)虛終端

Telnet的另一個(gè)優(yōu)點(diǎn)是能夠提供各種異構(gòu)環(huán)境(異種計(jì)算機(jī)和異種操作系統(tǒng))的互操作能力。也就是說,Telnet并不要求客戶和服務(wù)器必須在同種計(jì)算機(jī)或同種操作系統(tǒng)上運(yùn)行。例如,通過Telnet用戶可以從一個(gè)VMS終端登錄到Unix系統(tǒng)中,也可以從Windows?98/NT計(jì)算機(jī)登錄到VMS系統(tǒng)。對于Telnet遠(yuǎn)程登錄來說,系統(tǒng)間的異構(gòu)性主要表現(xiàn)在不同系統(tǒng)對鍵盤輸入的解釋各不相同。例如對于行結(jié)束標(biāo)志,當(dāng)鍵入回車鍵時(shí),所有的系統(tǒng)都會換行,這是相同的。不同的是,有些系統(tǒng)以ASCII字符CR作為行結(jié)束標(biāo)志,有些系統(tǒng)則以LF作為行結(jié)束標(biāo)志,而有些系統(tǒng)則以CR-LF兩個(gè)字符作為行結(jié)束標(biāo)志。以不同字符作為行結(jié)束標(biāo)志的系統(tǒng)顯然不能直接進(jìn)行遠(yuǎn)程登錄。再如,用于中斷進(jìn)程運(yùn)行的鍵碼也可能隨系統(tǒng)不同而不同。有的系統(tǒng)以Ctrl-C鍵作為中止符,而有的系統(tǒng)則以Del鍵作為中止符。為了統(tǒng)一異構(gòu)系統(tǒng)對鍵盤輸入的解釋,Telnet專門提供一種標(biāo)準(zhǔn)的鍵盤定義格式,叫做網(wǎng)絡(luò)虛終端NVT(NetworkVirtualTerminal)。在客戶和服務(wù)器系統(tǒng)兩端,輸入/輸出都采用各自的本地格式。在遠(yuǎn)程登錄連接上,Telnet客戶軟件將用戶終端的輸入信息轉(zhuǎn)換成標(biāo)準(zhǔn)的NVT數(shù)據(jù)和命令序列,經(jīng)TCP連接傳到遠(yuǎn)程的服務(wù)器,服務(wù)器再將NVT序列轉(zhuǎn)化為遠(yuǎn)程系統(tǒng)的內(nèi)部格式。由于客戶和服務(wù)器既了解各自系統(tǒng)的內(nèi)部格式,又了解NVT定義,所以上述轉(zhuǎn)換很容易實(shí)現(xiàn)。這樣,關(guān)于終端鍵盤輸入的異構(gòu)性就被NVT所屏蔽,從而為實(shí)現(xiàn)異種系統(tǒng)的互操作打下了基礎(chǔ)。NVT的工作原理如圖13-16所示。圖13-16NVT的工作原理如同IP對不同物理網(wǎng)絡(luò)的處理一樣,NVT對不同鍵盤解釋的處理也是采用屏蔽的方式。通過NVT的屏蔽作用,任何本地終端對遠(yuǎn)程服務(wù)器的鍵盤輸入以及任何遠(yuǎn)程服務(wù)器對本地客戶的終端輸出都是一致的,這是層次結(jié)構(gòu)思想的又一次體現(xiàn)。

NVT將信息分為兩種類型:一種是數(shù)據(jù),另一種是命令。其中數(shù)據(jù)用7?bit的標(biāo)準(zhǔn)ASCII碼表示(各字節(jié)的最高位為0),命令用8?bit的擴(kuò)展ASCII碼表示(各字節(jié)最高位為1)。在標(biāo)準(zhǔn)ASCII字符集中有128個(gè)字符。其中95個(gè)為可見字符(包括字母、數(shù)字、標(biāo)點(diǎn)符號和一些特殊圖形字符),NVT保持這些字符原來的意義。另外有33個(gè)控制字符,NVT對其中的8個(gè)控制字符重新定義,如表13-1所示。此外,NVT定義行結(jié)束符為CR-LF兩個(gè)字符。大多數(shù)系統(tǒng)給用戶終端提供一個(gè)允許終止正在運(yùn)行程序的機(jī)制。比如BSDUNIX保留Control-C作為控制操作系統(tǒng)中斷程序運(yùn)行的控制命令。由于控制命令不是應(yīng)用程序的正常輸入數(shù)據(jù),因此它不被應(yīng)用程序所接受,而是由操作系統(tǒng)所解釋。那么NVT如何來表示各種控制命令并將控制命令從客戶機(jī)傳送到服務(wù)器?

NVT設(shè)想在用戶終端的鍵盤上有一組虛擬鍵可以產(chǎn)生各種控制命令。實(shí)際上,大多數(shù)鍵盤并不能提供額外的命令鍵,但操作系統(tǒng)或命令解釋器可用各種方法產(chǎn)生它們。一種最常用的方法是可以利用現(xiàn)有標(biāo)準(zhǔn)ASCII碼中不常用的控制符來定義成各種需要的控制功能。這樣用戶按下此鍵時(shí),操作系統(tǒng)將采取相應(yīng)的動(dòng)作而不是將字符作為正常的數(shù)據(jù)輸入。

NVT的做法則不一樣,它使用一個(gè)轉(zhuǎn)義序列對控制命令進(jìn)行編碼。每個(gè)轉(zhuǎn)義序列由兩個(gè)字節(jié)構(gòu)成,前一個(gè)為保留字節(jié),指出控制命令的開始,后一個(gè)字節(jié)才是真正的控制命令碼。所有轉(zhuǎn)義序列字節(jié)的最高位均置1,這樣就將控制命令與數(shù)據(jù)(標(biāo)準(zhǔn)ASCII碼)區(qū)別開來。表13-2給出了NVT的所有控制命令。

Telnet傳輸?shù)男畔⒖煞譃閿?shù)據(jù)和命令兩類,與NVT相同。可以將二者在形式上分開是不夠的,必須在傳輸過程中也將二者分開,否則將可能發(fā)生故障。以中斷當(dāng)前進(jìn)程IP命令為例。IP命令一般用在遠(yuǎn)程主機(jī)進(jìn)程出現(xiàn)差錯(cuò)而本地用戶想終止該進(jìn)程的時(shí)候。如果遠(yuǎn)程進(jìn)程進(jìn)入死循環(huán)而又不能讀寫任何數(shù)據(jù)時(shí),則該進(jìn)程的接收緩沖區(qū)滿后,客戶再也寫不進(jìn)任何信息(包括IP命令)到虛終端。一旦服務(wù)器無法接收IP命令,則遠(yuǎn)程進(jìn)程將無休止地運(yùn)行下去,直到遠(yuǎn)程系統(tǒng)關(guān)機(jī)。為了避免這種情況的發(fā)生,Telnet采用帶外信號(outofbandsignal)技術(shù)。當(dāng)Telnet將控制命令放入數(shù)據(jù)流時(shí),它首先發(fā)送一個(gè)SYNCH命令,然后再發(fā)送控制命令,最后還要加一個(gè)DMARK命令。這樣就將控制命令與一般數(shù)據(jù)分開。另外,要將帶外信號傳送給服務(wù)器還要借助于TCP的緊急數(shù)據(jù)URGENT機(jī)制,因?yàn)榧偃鏣CP連接已不接收數(shù)據(jù)(因?yàn)檫h(yuǎn)程系統(tǒng)緩沖區(qū)滿),則控制命令還是傳不到服務(wù)器??蛻舳说腡CP軟件將傳輸帶外信號的TCP報(bào)文的URG標(biāo)志位置1,則該TCP報(bào)文便會不受流量控制的限制被立即傳送到服務(wù)器。服務(wù)器收到緊急數(shù)據(jù)后,讀入并拋棄所有數(shù)據(jù),直到發(fā)現(xiàn)DMARK標(biāo)志,然后服務(wù)器再轉(zhuǎn)入正常工作,將控制命令交給操作系統(tǒng)執(zhí)行。13.5代?理?服?務(wù)?器代理服務(wù)器(Proxy)是Internet/Intranet上常用的一種服務(wù)器,它通常配置在Intranet連接Internet的出口處,如圖13-17所示。由于它的位置處在內(nèi)部與外部網(wǎng)絡(luò)之間,因此其作用有其一定的特殊性,也會影響內(nèi)部網(wǎng)絡(luò)訪問Internet的性能和效果。圖13-17代理服務(wù)器的作用代理服務(wù)器的主要作用是實(shí)現(xiàn)代理傳輸服務(wù)??梢哉J(rèn)為,對于內(nèi)部網(wǎng)上的客戶來說,代理服務(wù)器看做是一個(gè)外部網(wǎng)的代理。而對于外部網(wǎng)來說,代理服務(wù)器可以看做是一個(gè)要訪問外部網(wǎng)的客戶。使用代理服務(wù)器后能夠獲得提高客戶訪問外部網(wǎng)的效率,節(jié)省網(wǎng)絡(luò)帶寬,增強(qiáng)網(wǎng)絡(luò)安全性以及減少網(wǎng)絡(luò)投資等優(yōu)點(diǎn)。13.5.1代理服務(wù)器的硬軟件結(jié)構(gòu)

1.硬件結(jié)構(gòu)代理服務(wù)器的硬件要求并無特殊,只是一般的服務(wù)器配置,并配置連接網(wǎng)絡(luò)的接口,在內(nèi)部網(wǎng)一側(cè)往往是局域網(wǎng)接口,而在外部網(wǎng)一側(cè)可能是廣域網(wǎng)接口。若要求代理服務(wù)器高效地執(zhí)行代理工作,則在硬件結(jié)構(gòu)上,其中包括CPU性能、RAM、硬盤容量及其訪問速度以及內(nèi)部總線等方面均要有相應(yīng)的配置。一般來說,如果內(nèi)部網(wǎng)是Intranet,外部網(wǎng)是Internet,則代理服務(wù)器在Intranet上的連接往往配置高速局域網(wǎng)(快速以太網(wǎng)、千兆位以太網(wǎng)或ATM網(wǎng))接口,而在連接Internet一側(cè)配置廣域網(wǎng)接口,如圖13-18所示。至于代理服務(wù)器本身則選擇中、低檔PC服務(wù)器或低檔RISC服務(wù)器為多。圖13-18代理服務(wù)器的網(wǎng)絡(luò)接口

2.軟件結(jié)構(gòu)代理服務(wù)器的軟件結(jié)構(gòu)主要由四部分組成(如圖13-19所示):

(1)支持TCP/IP協(xié)議集的網(wǎng)絡(luò)操作系統(tǒng)。

(2)應(yīng)用代理程序,又稱代理服務(wù)程序,它是代理服務(wù)器的核心。它依靠操作系統(tǒng)的支持,通過對某一個(gè)或幾個(gè)TCP/IP端口的監(jiān)聽來實(shí)現(xiàn)對相應(yīng)應(yīng)用的代理。根據(jù)應(yīng)用代理程序所支持的應(yīng)用層協(xié)議的不同,代理服務(wù)器可以分為HTTP代理服務(wù)器、FTP代理服務(wù)器、Telnet代理服務(wù)器等等。由于目前Internet網(wǎng)上HTTP傳輸占了很大的比例,所以通常所稱的代理服務(wù)器(或Proxy)指的多為HTTP代理服務(wù)器。應(yīng)用代理程序是整個(gè)代理服務(wù)器軟件的核心。圖13-19代理服務(wù)器的軟件結(jié)構(gòu)除了上面所述的針對于某一應(yīng)用層協(xié)議的應(yīng)用代理程序之外,還有一類應(yīng)用代理程序同時(shí)代理多個(gè)應(yīng)用層應(yīng)用,這類應(yīng)用代理程序可以被稱為通用應(yīng)用代理程序。這類應(yīng)用代理程序主要代理基于TCP協(xié)議的應(yīng)用層應(yīng)用,如FTP、Telnet、WWW等。

(3)與應(yīng)用代理程序相配套的客戶端軟件。由于某些應(yīng)用代理程序與客戶端軟件之間需要進(jìn)行一些特殊的數(shù)據(jù)交

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論