1、netBIOS
非可路由協(xié)議
LAN適配器(LAN? adapter)編號很重要.
每個LANA編號對應于網(wǎng)卡和傳輸協(xié)議的唯一組合。
netBIOS名字
在Wi n 3 2環(huán)境中,針對每個可用的L A N A編號,每
個進程都會為其維持一張N e t B I O S名字表。若為LANA 0增添一個名字,意味著你的應用程序
只能在LANA 0上同客戶機建立連接。對每個L A N A來說,能夠添加的名字的最大數(shù)量是2 5 4,
編號從1到2 5 4(0和2 5 5由系統(tǒng)保留)
,N e t B I O S名字共有兩個性質(zhì):唯一名字和組名
微軟網(wǎng)絡中的機器命名就是NetBIOS命名。
“組名”的作用是將數(shù)據(jù)同時發(fā)給多個接收者;或者相反,接收發(fā)給多個
接收者的數(shù)據(jù)。組名并非一定要“獨一無二”,它主要用于多播(多點發(fā)送)數(shù)據(jù)通信
若有“windows互聯(lián)網(wǎng)命名服務器”即wins,則有它管理,若無則發(fā)廣播探測是否重名。
1.1.3 NetBIOS特性
N e t B I O S同時提供了“面向連接”服務以及“無連接”服務。
1.2 NetBIOS編程基礎
NetBIOS API的設置,只有一個函數(shù):
UCHAR Netbios(PNCB pNCB);
用于N e t B I O S的所有函數(shù)聲明、常數(shù)等等均是在頭文件N b 3 0 . h內(nèi)定義的。若想連接
N e t B I O S應用,唯一需要的庫是N e t a p i 3 2 . l i b。
調(diào)用N e t b i o s函數(shù)時,可選擇進行同步調(diào)用,還是進行異步調(diào)用。所有N e t B I O S命令本身均是同步的。要想異步調(diào)用一個命令,需要讓N e t B I O S命令同A S Y N C H標志進行一次邏輯O R(或)運算。如指定了A S Y N C H標志,那么必須在n c b _ p o s t字段中指定一個后例程(Post Routine),或必須在n c b _e v e n t字段中指定一個事件句柄。執(zhí)行一個異步命令時,從N e t b i o s返回的值是N R C _ G O O D R E T( 0 x 0 0 ),但n c b _ c m d _ c p l t字段會設為N R C _ P E N D I N G ( 0 x F F )。除此以外, N e t b i o s函數(shù)還會將N C B結(jié)構的n c b _ c m d _ c p l t字段設為N R C _ P E N D I N G(待決),直到命令完成為止。命令完成后,n c b _ c m d _ c p l t字段會設為該命令的返回值。N e t b i o s也會在完成后將n c b _ r e t c o d e字段設為命令的返回值。
1.4 數(shù)據(jù)報的工作原理
“數(shù)據(jù)報”(D a t a g r a m)屬于一種“無連接”的通信方法。作為發(fā)送方,只需用目標
N e t B I O S名字為發(fā)出的每個包定址,然后簡單地送出了事。此時,不會執(zhí)行任何檢查,以確
保數(shù)據(jù)的完整性、抵達順序或者傳輸?shù)目煽啃缘鹊取?/p>
發(fā)出一個數(shù)據(jù)報共有三種方式。
第一種是指揮數(shù)據(jù)報抵達一個特定的(或唯一的)組名。這意味著只能有一個進程負責數(shù)據(jù)報的接收—亦即注冊了目標名字的那個進程。
第二種是將數(shù)據(jù)報發(fā)給一個組名。只有注冊了指定組名的那些進程才有權接收消息。
最后,第三種方式是將數(shù)據(jù)報廣播到整個網(wǎng)絡。