?第2章重定向器
?首先,我們打算解釋如
何通過網(wǎng)絡(luò),使用“多U N C提供者”( Multiple UNC Provider, MUP)資源定位符,通過“通用命名規(guī)范”(Universal Naming Convention, UNC)來引用遠(yuǎn)程文件。
隨后,我們講解了M U P如何調(diào)用一個(gè)網(wǎng)絡(luò)提供者,從而揭示出怎樣通過一個(gè)重定向器,在“服務(wù)器消息塊”(Server Message Block, SMB)協(xié)議的幫助下,在不同的計(jì)算機(jī)之間建立數(shù)據(jù)通信。
最后,我們探討了網(wǎng)絡(luò)安全方面的一些問題。使用基本的文件I / O操作,通過網(wǎng)絡(luò)來訪問文件時(shí),這些安全問題是必須考慮到的。
2.1 通用命名規(guī)范
“U N C路徑” 為網(wǎng)絡(luò)文件及設(shè)備的訪問建立了一套統(tǒng)一的規(guī)范。它最大的特點(diǎn)便是不必指定或引用一個(gè)已映射到遠(yuǎn)程文件系統(tǒng)的本地驅(qū)動(dòng)器字母。
U N C名字完全解決了這些問題,它的格式如下:
\ \ [服務(wù)器] \ [共享名] \ [路徑]
第一部分是\ \ [服務(wù)器],必須以兩個(gè)反斜杠開頭,緊跟著一個(gè)服務(wù)器名字。
第二部分是\ [共享名],它對(duì)應(yīng)著遠(yuǎn)程服務(wù)器上的一個(gè)“共享入口”或者“共享位置”。
。而第三部分\ [路徑] 對(duì)應(yīng)的是共享位置下的某個(gè)具體目錄(或子目錄)
第3章郵槽
一種簡(jiǎn)單的單向“進(jìn)程間通信”(interprocess communication,I P C)機(jī)制。這個(gè)機(jī)制的名字非常古怪,叫作“郵槽”(M a i l s l o t)。用最簡(jiǎn)單的話來說,通過
郵槽,客戶機(jī)進(jìn)程可將消息傳送或廣播給一個(gè)或多個(gè)服務(wù)器進(jìn)程。在同一臺(tái)計(jì)算機(jī)的不同進(jìn)程之間,或在跨越整個(gè)網(wǎng)絡(luò)的不同計(jì)算機(jī)的進(jìn)程之間,協(xié)助進(jìn)行消息的傳輸。用郵槽來開發(fā)應(yīng)用程序是一件非常簡(jiǎn)單的事情,不要求對(duì)T C P / I P或I P X這樣的基層網(wǎng)絡(luò)傳送協(xié)議有著非常深入的了解。由于郵槽是圍繞一個(gè)廣播通信體系設(shè)計(jì)出來的,所以當(dāng)然不能指望能通過它實(shí)現(xiàn)數(shù)據(jù)的“可靠”傳輸。
郵槽最大的一個(gè)缺點(diǎn)便是只允許從客戶機(jī)到服務(wù)器,建立一種不可靠的單向數(shù)據(jù)通信。
而另一方面,郵槽最大的一個(gè)優(yōu)點(diǎn)在于,它們使客戶機(jī)應(yīng)用能夠非常容易地將廣播消息發(fā)送給一個(gè)或多個(gè)服務(wù)器應(yīng)用。
3.1 郵槽實(shí)施細(xì)節(jié)
郵槽是圍繞Wi n d o w s文件系統(tǒng)接口設(shè)計(jì)出來的。客戶機(jī)和服務(wù)器應(yīng)用需要使用標(biāo)準(zhǔn)的Wi n 3 2文件系統(tǒng)I / O(輸入/輸出)函數(shù),比如R e a d F i l e和Wr i t e F i l e等等,以便在郵槽上收發(fā)數(shù)據(jù),同時(shí)利用Wi n 3 2文件系統(tǒng)的命名規(guī)則。郵槽必須依賴Wi n d o w s重定向器,通過一個(gè)“郵槽文件系統(tǒng)”(Mailslot File System, MSFS),來創(chuàng)建及標(biāo)識(shí)郵槽。
3.1.1 郵槽的名字
對(duì)郵槽進(jìn)行標(biāo)識(shí)時(shí),需遵守下述命名規(guī)則:
\ \ s e r v e r \ M a i l s l o t \ [ p a t h ] n a m e
請(qǐng)將上述字串分為三段來看: \ \ s e r v e r、\ M a i l s l o t和\ [ p a t h ] n a m e。第一部分\ \ s e r v e r對(duì)應(yīng)于服務(wù)器的名字,我們要在上面創(chuàng)建郵槽,并在在上面運(yùn)行服務(wù)器程序。第二部分\ M a i l s l o t是一個(gè)“硬編碼”的固定字串,用于告訴系統(tǒng)這個(gè)文件名從屬于M S F S。而第三部分\ [ p a t h ] n a m e則
允許應(yīng)用程序獨(dú)一無二地定義及標(biāo)識(shí)一個(gè)郵槽名。其中,“p a t h”代表路徑,可指定多級(jí)目錄。
舉個(gè)例子來說,對(duì)一個(gè)郵槽進(jìn)行標(biāo)識(shí)時(shí),下面這些形式的名字都是合法的(注意M a i l s l o t不得變化,必須原文照輸,亦即所謂的“硬編碼”):
由于郵槽要依賴Wi n d o w s文件系統(tǒng)服務(wù)在網(wǎng)上來創(chuàng)建和傳輸數(shù)據(jù),所以接口是“與協(xié)議無關(guān)”的。
要想保證各種Wi n d o w s平臺(tái)之間能夠完全正常地通信,強(qiáng)烈建議將消息長(zhǎng)度限制在4 2 4字節(jié),或者更短。如果進(jìn)行面向連接的傳輸,可考慮使用命名管道,而不是簡(jiǎn)單的郵槽。
3.5 小結(jié)
本章講解了郵槽( M a i l s l o t)網(wǎng)絡(luò)編程技術(shù)。利用這一技術(shù),應(yīng)用程序可以在Wi n d o w s重定向器的幫助下,實(shí)現(xiàn)簡(jiǎn)單的單向進(jìn)程間數(shù)據(jù)通信。對(duì)郵槽來說,它最有價(jià)值的一項(xiàng)功能便是通過網(wǎng)絡(luò),將一條消息廣播給一臺(tái)或多臺(tái)計(jì)算機(jī)。然而,郵槽并未提供對(duì)數(shù)據(jù)可靠傳輸?shù)谋U稀<偃缦M肳i n d o w s重定向器實(shí)現(xiàn)“可靠”的數(shù)據(jù)通信,請(qǐng)考慮使用命名管道,這是下一章的主題!