CIFS協(xié)議文檔.doc_第1頁
CIFS協(xié)議文檔.doc_第2頁
CIFS協(xié)議文檔.doc_第3頁
CIFS協(xié)議文檔.doc_第4頁
CIFS協(xié)議文檔.doc_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

;.目錄1CIFS協(xié)議 31.1CIFS協(xié)議概述 31.2CIFS協(xié)議頭格式 31.2.1頭域 31.2.2命令域 31.2.3錯誤類域 51.2.4錯誤代碼域 51.2.5flags域 51.2.6flags2域 61.2.7填充或安全簽名域 81.2.8TID域 81.2.9PID域 81.2.10UID域 81.2.11MID域 81.2.12 Wordcount和Parameterwords(參數(shù)域) 81.2.13Bytecount和buffer域(緩沖) 91.3CIFS協(xié)議的安全機制 91.3.1用戶級安全 91.3.2共享級安全 91.3.3加密 91.4CIFS協(xié)議的完整性 101.4.1機會鎖 101.5CIFS協(xié)議包交換流程 101.5.1包交換的第一部分協(xié)商和參數(shù)傳遞 建立NetBIOS會話 CIFS協(xié)議版本協(xié)商 用戶登錄 連接特定資源 121.5.2包交換的第二部分數(shù)據(jù)交換 屬性、操作等參數(shù)傳遞 數(shù)據(jù)交換 142NetBIOS協(xié)議 152.1NetBIOS概述 152.2NetBIOS名稱服務(wù) 152.2.1NetBIOS名稱 152.2.2NetBIOS名稱屬性和格式 152.2.3NetBIOS名稱解析方式 152.2.4NetBIOS名稱識別策略 162.2.5NetBIOS名稱管理 162.3NetBIOS會話服務(wù) 162.3.1概述 162.3.2NetBIOS會話原語 172.4NetBIOS數(shù)據(jù)報服務(wù) 171、CIFS協(xié)議1.1 CIFS協(xié)議概述通用網(wǎng)際文件系統(tǒng)(CIFS)是微軟服務(wù)器消息塊協(xié)議(SMB)的增強版本,是計算機用戶在企業(yè)內(nèi)部網(wǎng)和因特網(wǎng)上共享文件的標準方法。CIFS 通過定義一種與應(yīng)用程序在本地磁盤和網(wǎng)絡(luò)文件服務(wù)器上共享數(shù)據(jù)的方式相兼容的遠程文件訪問協(xié)議使之能夠在因特網(wǎng)上進行協(xié)作。定義了客戶端向服務(wù)器端的請求和服務(wù)器端得應(yīng)答報文。CIFS數(shù)據(jù)包格式為標準頭部+2個可變長區(qū)域。CIFS協(xié)議有很多版本,每個協(xié)議的版本稱為一種方言,并分配一個唯一的字符串來識別。當客戶端希望訪問遠程服務(wù)器上的文件時,第一次發(fā)送的CIFS數(shù)據(jù)包是一個協(xié)商版本的數(shù)據(jù)包。在這個數(shù)據(jù)包中,客戶端列出了自己可以提供的版本字符串。服務(wù)器在響應(yīng)數(shù)據(jù)包中選擇其中一種版本字符串發(fā)送給客戶端。這樣兩者就協(xié)商出一個CIFS協(xié)議的版本。1.2CIFS協(xié)議頭格式012345670123456701234567012345670xFFSMBCommandError classMust be zeroError codeError code(continued)FlagsFlags2填充或者安全簽名,通常標準的填充是0樹ID(TID)進程ID(PID)用戶ID(UID)多重識別碼(MID)wordcountParameterwordswordcountBytecountBufferbytecount1.2.1頭域每個CIFS數(shù)據(jù)包的開始包含4個字節(jié)的頭。第一個字節(jié)是0xFF,第二個字節(jié)是字母S的ASCII表示,第三個字節(jié)和第四個字節(jié)分別為M和B。1.2.2命令域命令域為1個字節(jié),用來表示CIFS數(shù)據(jù)包的類型。其各種命令對應(yīng)的數(shù)值見下:SMB_COM_CREATE_DIRECTORY 0x00SMB_COM_DELETE_DIRECTORY 0x01SMB_COM_OPEN 0x02SMB_COM_CREATE 0x03SMB_COM_CLOSE 0x04SMB_COM_FLUSH 0x05SMB_COM_DELETE 0x06SMB_COM_RENAME 0x07SMB_COM_QUERY_INFORMATION 0x08SMB_COM_SET_INFORMATION 0x09SMB_COM_READ 0x0ASMB_COM_WRITE 0x0BSMB_COM_LOCK_BYTE_RANGE 0x0CSMB_COM_UNLOCK_BYTE_RANGE 0x0DSMB_COM_CREATE_TEMPORARY 0x0ESMB_COM_CREATE_NEW 0x0FSMB_COM_CHECK_DIRECTORY 0x10SMB_COM_PROCESS_EXIT 0x11SMB_COM_SEEK 0x12SMB_COM_LOCK_AND_READ 0x13SMB_COM_WRITE_AND_UNLOCK 0x14SMB_COM_READ_RAW 0x1ASMB_COM_READ_MPX 0x1BSMB_COM_READ_MPX_SECONDARY 0x1CSMB_COM_WRITE_RAW 0x1DSMB_COM_WRITE_MPX 0x1ESMB_COM_WRITE_COMPLETE 0x20SMB_COM_SET_INFORMATION2 0x22SMB_COM_QUERY_INFORMATION2 0x23SMB_COM_LOCKING_ANDX 0x24SMB_COM_TRANSACTION 0x25SMB_COM_TRANSACTION_SECONDARY 0x26SMB_COM_IOCTL 0x27SMB_COM_IOCTL_SECONDARY 0x28SMB_COM_COPY 0x29SMB_COM_MOVE 0x2ASMB_COM_ECHO 0x2BSMB_COM_WRITE_AND_CLOSE 0x2CSMB_COM_OPEN_ANDX 0x2DSMB_COM_READ_ANDX 0x2ESMB_COM_WRITE_ANDX 0x2FSMB_COM_CLOSE_AND_TREE_DISC 0x31SMB_COM_TRANSACTION2 0x32SMB_COM_TRANSACTION2_SECONDARY 0x33SMB_COM_FIND_CLOSE2 0x34SMB_COM_FIND_NOTIFY_CLOSE 0x35SMB_COM_TREE_CONNECT 0x70SMB_COM_TREE_DISCONNECT 0x71SMB_COM_NEGOTIATE 0x72SMB_COM_SESSION_SETUP_ANDX 0x73SMB_COM_LOGOFF_ANDX 0x74SMB_COM_TREE_CONNECT_ANDX 0x75SMB_COM_QUERY_INFORMATION_DISK 0x80SMB_COM_SEARCH 0x81SMB_COM_FIND 0x82SMB_COM_FIND_UNIQUE 0x83SMB_COM_NT_TRANSACT 0xA0SMB_COM_NT_TRANSACT_SECONDARY 0xA1SMB_COM_NT_CREATE_ANDX 0xA2SMB_COM_NT_CANCEL 0xA4SMB_COM_OPEN_PRINT_FILE 0xC0SMB_COM_WRITE_PRINT_FILE 0xC1SMB_COM_CLOSE_PRINT_FILE 0xC2SMB_COM_GET_PRINT_QUEUE 0xC3SMB_COM_READ_BULK 0xD8SMB_COM_WRITE_BULK 0xD9SMB_COM_WRITE_BULK_DATA 0xDA1.2.3錯誤類域服務(wù)器用來指明請求是否成功。通常情況下為0表示成功,如果不為零,這個域表示該錯誤代碼是什么類。錯誤類為以下值之一:ERRDOS (0X01) - 錯誤是從核心DOS操作系統(tǒng)設(shè)置ERRSRV (0x02) - 錯誤是由服務(wù)器的網(wǎng)絡(luò)文件管理器 ERRHRD (0x03) - 硬件錯誤 ERRCMD (0xFF) - 命令沒有在“SMB”格式 1.2.4錯誤代碼域該域為2字節(jié)長度,表示已發(fā)生的錯誤的類型。通常為0表示沒有錯誤。各種錯誤對應(yīng)的數(shù)值見下:1.2.5flags域長度為1字節(jié),此域包含了8個獨立的標志。沒有設(shè)置的標志客戶端必須設(shè)定為0,服務(wù)器需要忽略該標志。編號從最低位到最高位其定義如下:0:為過時的請求保留位(LOCK_AND_READ,LOCK_AND_CLOSE);1:保留位。(必須為0);2:保留位。(必須為0);3:設(shè)置為1時,路徑名無視大小寫,設(shè)置為0時,路徑名是區(qū)分大小寫的。4:保留位。(客戶端必須設(shè)置為0,服務(wù)器端忽略該位);5:為過時的請求保留位(SMB_COM_OPEN,SMB_COM_CREATE,SMB_COM_CREATE_NEW);6:為過時的請求保留位(SMB_COM_OPEN,SMB_COM_CREATE,SMB_COM_CREATE_NEW);7:設(shè)置為1時,表示是服務(wù)器對客戶端請求的應(yīng)答,其命令域常與客戶端請求的命令域相同。該域可以通過設(shè)置為0和1明確區(qū)分是請求還是應(yīng)答。1.2.6flags2域2字節(jié),定義了更多的標志位。0:設(shè)置為1,表示服務(wù)器可能在響應(yīng)中返回長文件名。(KNOWS_LONG_NAMES)1:設(shè)置為1,表示客戶端知道擴展屬性。(KNOWS_EAS)2:設(shè)置為1,表示SMB需要驗證。(誠信檢查?)(SECURITY_SIGNATURE)3:保留位。6:設(shè)置為1,任何請求的路徑名為長路徑名。(IS_LONG_NAME)11:設(shè)置為1,客戶端知道擴展安全協(xié)商。(EXT_SEC)12:設(shè)置為1,SMB中的任何請求的路徑名需在分布式文件系統(tǒng)中解決。(DFS)13:設(shè)置為1,表明如果客戶端沒有讀權(quán)限但有執(zhí)行權(quán)限,讀命令被允許。這個標志只對讀請求有效。14:設(shè)置為1,返回的錯誤代碼為32位。否則錯誤類和錯誤域包含DOS-style錯誤信息。當傳輸協(xié)商的NT狀態(tài)代碼時,該域在每個SMB中都必須為1。16:設(shè)置為1,表示數(shù)據(jù)包中的字符編碼為UNICODE,設(shè)置為0,表示數(shù)據(jù)包中的字符編碼為ASCII。1.2.7填充或安全簽名域通常標準的填充是0,此欄通常設(shè)置為0。1.2.8TID域TID是一個16位的數(shù)字,用來標識這個CIFS數(shù)據(jù)包指的是什么資源(通常為磁盤共享或者打印機)。當數(shù)據(jù)包交換沒有牽涉到某個資源時,這個域是無意義的,可以忽略的。如果某客戶端希望對某資源進行訪問,則該客戶端發(fā)送的CIFS數(shù)據(jù)包中的命令域設(shè)置為SMB_COM_TREE_CONNECT_ANDX。在這個包中就指定共享或者打印機的名稱。然后服務(wù)器將對該資源和客戶端進行驗證,然后發(fā)送應(yīng)答表示成功。在這個應(yīng)答數(shù)據(jù)包中,服務(wù)器可以將TID域設(shè)置為任何數(shù)字。而從那時起,如果客戶端希望對該資源提出請求,TID就會被設(shè)置為上次客戶端給定的TID數(shù)字。1.2.9PID域PID是一個16位的數(shù)字,用來標識客戶端上的哪個進程發(fā)出的CIFS請求。服務(wù)器使用這個數(shù)字來檢查并發(fā)問題(通常是為了保證文件不會被競爭中的客戶端進程所損壞)。1.2.10UID域UID是一個16位的數(shù)字,迎來標識在客戶端發(fā)出CIFS請求的用戶??蛻舳吮仨毎l(fā)送一個包含用戶名和密碼的CIFS數(shù)據(jù)包請求來獲得服務(wù)器給定的UID。服務(wù)器在驗證了用戶名和密碼之后會應(yīng)答該請求,該應(yīng)答中包含一個服務(wù)器生成的UID。之后該客戶端在未來的CIFS請求中均使用該UID。如果客戶端的請求需要檢查權(quán)限,服務(wù)器將驗證請求的UID有沒有必須的權(quán)限。一個UID只為已形成的NetBIOS會話有效。服務(wù)器和不同的用戶的其他會話可能使用相同的UID。注意:如果服務(wù)器是在共享級的安全模式下,UID是無意義的,可以忽略。1.2.11MID域MID是一個16位數(shù)字,用來標識多個客戶端的要求。每當客戶端發(fā)送一個CIFS數(shù)據(jù)包,服務(wù)器就檢查MID來看它是否還有沒有應(yīng)答的請求。如果有,它保證了新要求會被被賦予一個新的MID以區(qū)別以前的請求。每當服務(wù)器應(yīng)答一個CIFS請求時,發(fā)送的應(yīng)答包中確保和相應(yīng)地請求中的MID相同。這樣,用戶就知道哪些未完成的請求與收到的應(yīng)答是對應(yīng)的。1.2.12 Wordcount和Parameterwords(參數(shù)域)CIFS數(shù)據(jù)包使用這兩個域來表示命令的具體參數(shù)數(shù)據(jù)。Parameterwords域是一個可變長(需是16位的整數(shù)倍)。Wordcount域?qū)嶋H表明parameterwords域的長度(以2字節(jié)為單位)。每種數(shù)據(jù)包類型的wordcount域在CIFS1.0草案中有定義。每個單獨的命令都有2個wordcount定義,一個是給客戶端定義的,一個是給服務(wù)器端定義的。這是必要的,因為請求和應(yīng)答不一定需要相同的wordcount。1.2.13 Bytecount和buffer(緩沖區(qū))和wordcount、parameterwords的定義非常相似。Buffer域的長度是可變的。Bytecount表示buffer域有多少字節(jié)。參數(shù)域和緩沖區(qū)的主要區(qū)別是存儲什么類型的數(shù)據(jù)。參數(shù)域通常包含少量的數(shù)據(jù)包命令參數(shù)選項,而緩沖區(qū)包含大量的原始數(shù)據(jù)(如共享文件中的數(shù)據(jù))。1.3CIFS協(xié)議的安全機制CIFS提供認證和授權(quán)這2種安全機制,其中認證又包括共享級認證和用戶級認證。A是一個對CIFS客戶端標記為網(wǎng)絡(luò)共享可用的共享服務(wù)器(通常是一個文件夾或者打印機)。限制訪問共享文件有兩種辦法:1.3.1用戶級安全希望訪問該共享的客戶端必須提供用戶名和密碼。(windows NT 和windows 2000)用戶級認證方式為不同用戶提供不同的用戶名,因此能提供高于共享級認證的安全性,但用戶名和口令是以明文方式傳送或者雖然加密也容易受到字典攻擊,因此也存在被監(jiān)聽和破解的威脅。進一步的改進方法可以加密用戶名和口令,還可以利用服務(wù)器消息塊SMB(Server Message Block)的簽名機制實現(xiàn)客戶機和服務(wù)器之間的雙向認證。1.3.2共享級安全被共享的文件本身需要一個密碼來訪問,客戶端訪問不需要用戶名,用戶的身份不需要確認。(windows 95和windows98)在共享級認證方式下,整個共享點只有一個單一的口令用于共享訪問,提供的安全保障有限,只能用于對安全性要求不高的公共資源共享或臨時資源共享等場合。1.3.3加密用戶和共享級安全性中,實際的密碼是以加密格式發(fā)送到服務(wù)器的。常用兩種加密方法較新的NT style和老的LAN manage style,但兩種加密方法均采用挑戰(zhàn)-應(yīng)答認證,服務(wù)器向客戶端發(fā)送一個隨機字符串并期望得到響應(yīng),客戶端將用戶名和隨機數(shù)合并后用HASH函數(shù)生成一個字節(jié)串發(fā)送給服務(wù)器(其在HASH函數(shù)中使用的密鑰就是由口令生成的?)就是這個地方不是很明白,在HASH中,這個隨機串扮演什么角色。我理解的是:當時用戶注冊時就將用戶名明文存儲在服務(wù)器中,而密碼是經(jīng)過HASH(或者其他處理)得到的長度確定的字符串存放于服務(wù)器中,這樣突破服務(wù)器只知道用戶名,不知道密碼。但是這個密碼形成的字符串(設(shè)為m)卻可以用來驗證??蛻舳藢⒆约旱挠脩裘碗S機串合并成一個長串,密碼再次經(jīng)過相同的步驟形成定長字符串作為HASH的密碼使用。即如下式:username(用戶名)key(密碼)string(隨機字符串)m是處理過的key,由key可以很容易得到m,由m得到key很難客戶端發(fā)送=HASHm(username|string)服務(wù)器將該字節(jié)串和自己的計算結(jié)果比較,若二者相同則通過認證,否則認證失敗。1.4CIFS協(xié)議的完整性1.4.1機會鎖機會鎖(數(shù)據(jù)完整性,感覺和數(shù)據(jù)庫中的鎖異曲同工),當CIFS數(shù)據(jù)包指定打開一個文件,就需要對該文件加一個機會鎖,如果服務(wù)器將這個文件加鎖后,其他客戶端實體就不能再訪問這個文件。這允許客戶端對這個文件進行任何它想要的修改二不需要將其立即寫入服務(wù)器。1. level II oplock 2. Exclusive oplock3. Batch oplock1.5CIFS協(xié)議包交換流程CIFS數(shù)據(jù)包交換流程一共分為兩個部分:1. 第一部分(當客戶端啟動與服務(wù)器建立連接時):一個NetBIOS會話建立、CIFS版本協(xié)商、發(fā)送用戶名和密碼,這樣,服務(wù)器端的一個資源被連接。2. 第二部分:訪問一個共享文件從中讀取需要的數(shù)據(jù)。注意:客戶端總是發(fā)送到服務(wù)器的TCP的139端口,而服務(wù)器應(yīng)答給客戶端自己選擇的臨時端口。此外,以下CIFS域可設(shè)為下面的默認值,當然也可以根據(jù)自己的具體情況進行設(shè)定:1. error class/error codes :客戶端發(fā)送時總為0,服務(wù)器端應(yīng)答時也為0。2. Flags:所有數(shù)據(jù)包均設(shè)置成0x00。(區(qū)分大小寫路徑)3. Flags2:所有數(shù)據(jù)包均設(shè)置成0x0001。(支持長文件名)4. 填充和安全簽名:所有數(shù)據(jù)包均設(shè)為包交換的第一部分協(xié)商和參數(shù)傳遞當CIFS客戶端確定希望訪問CIFS服務(wù)器上的資源,交換下面的數(shù)據(jù)包。首先,NetBIOS會話建立,提供可靠的傳輸服務(wù)。然后,客戶端和服務(wù)器端協(xié)商CIFS版本。然后客戶端登錄到服務(wù)器,發(fā)送用戶名和密碼,服務(wù)器驗證成功后客戶端連接到所需的資源。建立NetBIOS會話包1C-S請求:目的:建立NetBIOS會話(listen 和 call)首先客戶端在139端口建立一個與服務(wù)器之間的全雙工TCP連接。完成之后,客戶端通過建立TCP連接和發(fā)送NetBIOS會話請求數(shù)據(jù)包。會話的請求報文中包含客戶端的NetBIOS名稱,服務(wù)器的NetBIOS名稱和一個整數(shù)常量表示數(shù)據(jù)包的目的是建立一個NetBIOS會話。包2S-C應(yīng)答:目的:NetBIOS會話確認如果上述會話請求數(shù)據(jù)包中包含服務(wù)器的NetBIOS名稱,而且數(shù)據(jù)包是正確的格式,服務(wù)器會發(fā)送一個簡單的會話確認數(shù)據(jù)包(4字節(jié))來表明會話建立成功或者失敗。CIFS協(xié)議版本協(xié)商包3C-S請求:目的:CIFS協(xié)議版本協(xié)商客戶端發(fā)送一個CIFS請求數(shù)據(jù)包包含SMB_COM_NEGOTIATE命令,緩沖區(qū)中包含客戶端可以解析的CIFS協(xié)議版本。具體各個域的值為:Command:SMB_COM_NEGOTIATE(0x72)TID:在這個包中被忽略PID:設(shè)置為客戶端處理進程的IDUID:在這個包中被忽略MID:任何唯一的編號Wordcount:0Parameterwords:無Butecount:設(shè)置為119(可根據(jù)客戶端可以解析的版本數(shù)變化)Buffer:包含119字節(jié)的版本描述包4S-C應(yīng)答:目的:CIFS協(xié)議版本協(xié)商服務(wù)器響應(yīng)客戶端的協(xié)商請求,從客戶端給定的版本中選擇一個。應(yīng)答數(shù)據(jù)包中各個域的值為:Command:SMB_COM_NEGOTIATE(0x72)TID:在這個包中被忽略PID:因為是從服務(wù)器發(fā)送,被忽略UID:在這個包中被忽略MID:匹配客戶端發(fā)送的唯一的編號Wordcount:取決于選擇的版本。Parameterwords:包含選定的版本和許多服務(wù)器屬性。比較重要的是MAXMPXCOUNT(客戶端可以發(fā)起的請求最大數(shù))和32位能力標志。Bytecount:可變,通常大于8Buffer:通常包含一個8字節(jié)的隨機字符串,在以后的數(shù)據(jù)包中,客戶端用來加密。用戶登錄包5C-S請求:目的:用戶登錄客戶端發(fā)送CIFS數(shù)據(jù)包,包含用戶名和密碼,以獲得一個UID。這個數(shù)據(jù)包也要轉(zhuǎn)發(fā)客戶端功能給服務(wù)器,所以即使使用共享級安全也必須發(fā)送這個數(shù)據(jù)包。數(shù)據(jù)包各個域的值如下:Command:SMB_SESSION_SETUP_ANDX(0x73)TID:在這個包中北忽略PID:設(shè)置為客戶端處理進程的IDUID:在這個包中被忽略MID:任何唯一的編號Wordcount:12Parameterwords:列出了客戶端的功能。也包含了要在下面緩沖區(qū)中提供的密碼的大小。Bytecount:可變值,下面的緩沖區(qū)包含加密的用戶名、密碼、操作系統(tǒng)的名稱和LAN Manager。Bytecount的值取決于這些尸體的字符串的大小Buffer:包含用戶名、密碼、操作系統(tǒng)的名稱等。包6S-C應(yīng)答:目的:返回給客戶端UID或者返回錯誤,如果驗證不成功的話。一旦服務(wù)器受到加密的用戶名和密碼,檢查后如果是正確的,發(fā)送應(yīng)答數(shù)據(jù)包,包中包含UID。如果結(jié)果是錯誤的,這個響應(yīng)將返回錯誤類,并設(shè)置響應(yīng)的錯誤代碼。數(shù)據(jù)包的各個域的值如下:Command:SMB_COM_SESSION_SETUP_ANDX(0x73)TID:在這個包中被忽略PID:因為是從服務(wù)器發(fā)送,被忽略UID:16位數(shù)字,是該服務(wù)器分配給客戶端的用戶身份IDMID:匹配客戶端發(fā)送的唯一的編號Wordcount:3Parameterwords:沒有和正常操作有關(guān)的內(nèi)容Bytecount:可變值,下面的緩沖區(qū)包含說明服務(wù)器操作系統(tǒng)和LAN Manager類型的字符串Buffer:包含表示服務(wù)器操作系統(tǒng)和LAN Manager類型連接特定資源包7C-S請求:目的:連接到特定資源客戶端已被認證,可以連接到世界的共享文件。在這個數(shù)據(jù)包中,客戶端指定它希望訪問的共享文件。共享名為UNC格式。數(shù)據(jù)包中各個域的值如下:Command:SMB_COM_TREE_CONNECT_ANDX(0x75)TID:在這個包中被忽略PID:設(shè)置為客戶端處理進程的IDUID:為包6中服務(wù)器發(fā)送的UIDMID:任何唯一的編號Wordcount:4Parameterwords:沒有與正常操作有關(guān)的內(nèi)容Bytecount:可變值,取決于一下要求的UNC字符串的大小Buffer:包含客戶端希望訪問的共享的名稱包8S-C應(yīng)答:目的:返回TID或者錯誤,如果共享名稱不存在如果共享名稱存在,也擁有訪問權(quán)限,則服務(wù)器返回一個成功的響應(yīng)和TID。如果共享不存在或者用戶不具有訪問權(quán)限,服務(wù)器返回相應(yīng)地錯誤類和錯誤代碼。如果這個數(shù)據(jù)包是一個表示成功的響應(yīng),則客戶端可以訪問既定的共享文件了。這是客戶端和服務(wù)器交換的最后的數(shù)據(jù)包。數(shù)據(jù)包中各個域的值如下:Command:SMB_COM_SESSION_SETUP_ANDX(0x73)TID:16位數(shù)字代表服務(wù)器分配給指定共享資源的TIDPID:因為是從服務(wù)器發(fā)送,被忽略UID:16位數(shù)字,是該服務(wù)器分配給客戶端的用戶身份IDMID:匹配客戶端發(fā)送的唯一的編號Wordcount:3Parameterwords:沒有與正常操作有關(guān)的內(nèi)容Bytecount:可變值,取決于下面的緩沖區(qū)Buffer:包含本地文件系統(tǒng)和設(shè)備類型的字符串1.5.2包交換的第二部分數(shù)據(jù)交換以打開和讀取文件數(shù)據(jù)為例。屬性、操作等參數(shù)傳遞包1C-S請求:目的:打開一個文件數(shù)據(jù)包中各個域的值如下:Command:SMB_COM_OPEN_ANDX(0x2D)TID:上面服務(wù)器應(yīng)答給定的TIDPID:設(shè)置為處理客戶端處理進程的IDUID:設(shè)置為服務(wù)器返回的表示客戶端的UIDMID:任何唯一的編號Wordcount:15Parameterwords:指定模式(讀、寫或者讀寫)和共享模式(無、讀、寫)等許多開放的選擇Bytecount:可變值,依賴于文件名的字符串Buffer:包含要打開的文件的名稱包2S-C應(yīng)答:目的:顯示文件的ID,或者如果有問題則返回錯誤代碼服務(wù)器檢查,如果請求的文件名存在,且UID指定的用戶有權(quán)訪問該文件,則發(fā)送一個響應(yīng)包,其中包含F(xiàn)ID以便以后對該文件的訪問。如果條件不滿足,服務(wù)器返回相應(yīng)地錯誤類和錯誤代碼。數(shù)據(jù)包中各個域的值如下:Command:SMB_COM_OPEN_ANDX(0x2D)TID:16位數(shù)字代表服務(wù)器分配給指定共享資源的TIDPID:因為是從服務(wù)器發(fā)送,被忽略UID:16位數(shù)字,是該服務(wù)器分配給客戶端的用戶身份IDMID:匹配客戶端發(fā)送的唯一的編號Wordcount:15Parameterwords:表明要發(fā)生動作的類型的許多標志和非常重要的16位FIDBytecount:0Buffer:沒有數(shù)據(jù)數(shù)據(jù)交換包3C-S請求:目的:從文件中讀取數(shù)據(jù)包中各個域的值如下:Command:SMB_COM_READ_ANDX(0x2E)TID:16位數(shù)字代表服務(wù)器分配給指定共享資源的TIDPID:設(shè)置為客戶端處理進程的IDUID:16位數(shù)字,是該服務(wù)器分配給客戶端的用戶身份IDMID:任何唯一的編號Wordcount:10Parameterwords:包含F(xiàn)ID使得服務(wù)器端知道客戶端要打開那一個文件。還包含一個32位文件編譯和16位計數(shù)值,用來決定有多少文件數(shù)據(jù)返回Bytecount:0Buffer:沒有數(shù)據(jù)包4S-C應(yīng)答:目的:返回文件中的數(shù)據(jù)數(shù)據(jù)包中各個域的值如下:Command:SMB_COM_READ_ANDX(0x2E)TID:16位數(shù)字代表服務(wù)器分配給指定共享資源的TIDPID:因為是從服務(wù)器發(fā)送,被忽略UID:16位數(shù)字,是該服務(wù)器分配給客戶端的用戶身份IDMID:匹配客戶端發(fā)送的唯一的編號Wordcount:12Parameterwords:表明實際讀的數(shù)據(jù)的長度(?)Bytecount:可變值Buffer:客戶端所要求的文件數(shù)據(jù)2、NetBIOS協(xié)議2.1NetBIOS協(xié)議概述NetBIOS協(xié)議是由IBM公司開發(fā),主要用于數(shù)十臺計算機的小型局域網(wǎng)。NetBIOS協(xié)議是一種在局域網(wǎng)上的程序可以使用的應(yīng)用程序編程接口(API),為程序提供了請求低級服務(wù)的統(tǒng)一的命令集,作用是為了給局域網(wǎng)提供網(wǎng)絡(luò)以及其他特殊功能,幾乎所有的局域網(wǎng)都是在NetBIOS協(xié)議的基礎(chǔ)上工作的。2.2 NetBIOS名稱服務(wù)2.2.1NetBIOS名稱:NetBIOS具備獨立的名稱解析概念和能力,其使用的名稱解析方式和TCP/IP標準解析方式不同。如果經(jīng)過NetBIOS名稱解析并獲得相應(yīng)地IP地址后,NetBIOS會話就可以建立普通的TCP連接了。NetBIOS的名字解析是動態(tài)的。計算機必須先注冊自己的名稱然后才能解析該名稱。雖然動態(tài)解析很方便,但由于其復(fù)雜性和低效性,使得NetBIOS只能使用于小范圍的局域網(wǎng)。2.2.2NetBIOS 名稱屬性與格式:1.已注冊的NetBIOS名稱唯一指代一臺工作站或者組名;2.和IP地址類比,NetBIOS名稱沒有分層格式,即沒有“點”(“.”字符);3.NetBIOS名稱必須包含A-Z、a-z、0-9范圍之內(nèi)的字符,或者$( ) - . 字符之一;4.NetBIOS命名允許16個字母用在NetBIOS名稱中。而微軟只允許15個字母用在NetBIOS名稱中,第十六個為NetBIOS后綴。NetBIOS后綴用在Microsoft

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論