協定概況
英文原義:NetBIOS Services Protocols
中文釋義:(RFC-1001,1002)網路基本輸入/輸出系統協定
協定套用
在Windows作業系統中,默認情況下在安裝TCP/IP協定後會自動安裝NetBIOS。比如在Windows 2000/XP中,當選擇“自動獲得IP”後會啟用DHCP伺服器,從該伺服器使用NetBIOS設定;如果使用靜態IP位址或DHCP伺服器不提供NetBIOS設定,則啟用TCP/IP上的NetBIOS。具體的設定方法如下:首先打開“控制臺”,雙擊“網路連線”圖示,打開本地連線屬性。接著,在屬性視窗的“常規”選項卡中選擇“Internet協定(TCP/IP)”,單擊“屬性”按鈕。然後在打開的視窗中,單擊“高級”按鈕;在“高級TCP/IP設定”視窗中選擇“WINS”選項卡,在“NetBIOS設定”區域中就可以相應的NetBIOS設定。
在網路中使用計算機名通訊就是使用NetBIOS協定。
協定接口
NetBIOS是應用程式訪問符合NetBIOS規範的轉輸協定的接口,NetBEUI是該接口的一個擴展版本(1985年由IBM開發成功)。
兩者的區別如下:
NetBIOS最多只能與其他節點建立254個通訊話路。NetBEUI不再有此限制,它允許WindowsNT機器上的每個進程都能夠與多達254個節點進行通訊。
NetBIOS名稱最多可有15個字元,通話層應用程式通過它來與遠程計算機進行通訊。NetBEUI則是通過SMB協定(ServerMessageBlock——伺服器訊息塊,最初套用於3COM公司的LANManager)來實現在邏輯通道中的訊息傳送的。 NetBEUI總是包含在NetBIOS中,NetBIOS可以運行在幾種不同的傳輸協定上,包括NetBEUI、TCP/IP和IPX/SPX,後三者位於網路層驅動接口與傳輸層驅動接口之間。但運行在一種傳輸協定上的NetBIOS服務不能和運行另一種傳輸協定上的NetBIOS服務通信。NetBIOS可以使用的四種類型的SMB(賦予Windows計算機本地檔案重定向功能以便進入遠端檔案系統)
命令:話路控制命令,用於建立或終止與遠程計算機上某個資源的邏輯連線。
檔案命令:用於遠程檔案訪問。
印表機命令:用於傳送數據給一個遠程列印佇列,同時也檢查該列印佇列中各項任務的執行狀態。
訊息命令:用於實現計算機之間的訊息傳送。
協定解析
Netbios (網路基本輸入/輸出系統)最初由 IBM,Sytek 作為API開發,使用戶軟體能使用區域網路的資源。自從誕生,Netbios成為許多其他網路應用程式的基礎。嚴格意義上,Netbios 是接入網路服務的接口標準。
Netbios 原來是作為THE網路控制器為 IBM 區域網路設計的,是通過特定硬體用來和網路作業系統連線的軟體層。Netbios經擴展,允許程式使用Netbios接口來操作IBM令牌環結構。Netbios 已被公認為工業標準,通常參照 Netbios-compatible LANs。
它提供給網路程式一套方法,相互通訊及傳輸數據。基本上,Netbios 允許程式和網路會話。它的目的是把程式和任何類型的硬體屬性分開。它也使軟體開發員可以免除以下負擔:開發網路錯誤修復,低層信息定址和路由。使用Netbios接口,可以為軟體開發員做許多工作。
Netbios使程式和區域網路操作能力之間的接口標準化。有它們可以將程式細化到為OSI模型的哪一層所寫,使程式能移植到其他網路上。在Netbios區域網路環境下,計算機通過名字被系統知道。網路中每台計算機都有通過不同方法編的永久性名稱。這些名稱將在下面做進一步討論。
通過使用Netbios的數據報或廣播方式,在Netbios區域網路上的pc機建立會話彼此聯絡。會話允許更多的信息被傳送,探測錯誤,和糾正。通信是在一對一的基礎上的。數據報或廣播方式允許一台計算機和多台其他的計算機同時通信,但信息大小受限。使用數據報或廣播方式沒有探測錯誤和糾正。然而,數據報通信可以不必建立一個會話。
在這種環境下所有的通信以一種稱為“網路控制塊“的格式提交給NetBIOS。記憶體中這些塊的分配依賴於用戶程式。這些“網路控制塊“分配到域中,分別為輸入/輸出保留。
在當今的環境中,NetBIOS是使用很普遍的協定。乙太網,令牌環,IBM PC網都支持NetBIOS。在它原始版本中,它僅作為程式和網路適配器的接口。從那以後,傳輸類功能加入NetBIOS,使它功能日益增多。
在NetBIOS里,面向連線(tcp)和無連線(udp)通信均支持。它支持廣播和復播,支持三個分開的服務:命名,會話,數據報。
協定構成
NetBIOS名稱用來在網路上鑑別資源。程式用這些名稱開始和結束會話。你能用多個程式配置一台單獨的機器,每個程式都有獨特的NetBIOS名稱。每台支持套用的pc機也有用戶定義或通過內部方法獲得的NetBIOS站名。
NetBIOS能包含至多16個阿爾法數字字母。在整個資源路由網路里,字母的組合必須獨特。在一台使用NetBIOS的pc機在網路上能完全工作起來之前,PC必須先登記NetBIOS名稱。當客戶端活躍時,客戶端廣播它的名稱。當它成功廣播自己,並沒有其他人和它重名,客戶端就登記成功。登記過程如下:
1.在登入上,客戶端在所有地方廣播它自己和它的NetBIOS信息6到10次,確保其他網路成員收到信息。
2.如果有客戶端A已用此名,客戶端A發布它自己的廣播,包括它正在使用的名字。請求登入的客戶端停止所有登記的企圖。
3.如無其他客戶端反對登記,請求登入的客戶端完成登記過程。
在NetBIOS環境中有兩類名稱:獨特的和集合的。獨特的名稱必須在網路中獨特。集合的名稱不必在網路中獨特,所有同名過程屬於同一集合。每個NetBIOS節點包含一張該節點當前使用名稱的表。
NetBIOS命名允許16個字母用在NetBIOS名稱中。而微軟只允許15個字母用在NetBIOS名稱中,第十六個為NetBIOS後綴。NetBIOS後綴用在Microsoft Networking軟體中,區別安裝的功能,登記的設備和服務。
[注意:smb 和nbt(在tcp/ip上的NetBIOS)緊密的工作在一起,且都使用137,138,139連線埠。137連線埠是NetBIOS名稱UDP,138連線埠是NetBIOS數據報UDP,139連線埠是NetBIOS會話tcp,進一步的NetBIOS信息,看rhino9網站上所列文章]
以下是Microsoft WindowsNT目前使用的NetBIOS後綴表。後綴是16進制。
名稱 數字 類型 用途
============
00 U Workstation Service
01 U Messenger Service
02 U Master Browser
03 U Messenger Service
06 U RAS Server Service
1F U NetDDE Service
20 U File Server Service
21 U RAS Client Service
22 U Exchange Interchange
23 U Exchange Store
24 U Exchange Directory
30 U Modem Sharing Server Service
31 U Modem Sharing Client Service
43 U SMS Client Remote Control
44 U SMS Admin Remote Control Tool
45 U SMS Client Remote Chat
46 U SMS Client Remote Transfer
4C U DEC Pathworks TCPIP Service
52 U DEC Pathworks TCPIP Service
87 U Exchange MTA
6A U Exchange IMC
BE U Network Monitor Agent
BF U Network Monitor Apps
03 U Messenger Service
00 G Domain Name
1B U Domain Master Browser
1C G Domain Controllers
1D U Master Browser
1E G Browser Service Elections
1C G Internet Information Server
00 U Internet Information Server
[2B] U Lotus Notes Server
IRISMULTICAST [2F] G Lotus Notes
IRISNAMESERVER [33] G Lotus Notes
Forte_$ND800ZA [20] U DCA Irmalan Gateway Service
獨特的(u):該名僅有一個IP位址分給它。在網路設備中,一個名稱的多次出現看來會被登記,但後綴是唯一的,使整個名稱唯一。
集合的(g):普通集合,一個名稱可有多個IP位址。
多址的(M):名稱是唯一的,但由於在同一計算機上有多個網路接口,這種配置應該被允許登記。地址的最大數目是25。
Internet集合(I):這是組名的特殊配置,用在操作WINDOSNT的域名。
域名(D):在NT4.0中新引進的。
為了快速瀏覽一台伺服器上登記的NETBIOS名稱和服務,用以下命令:
nbtstat -a [ipaddress]
nbtstat -a [host]
NetBIOS 會話
NetBIOS 會話服務提供給用戶程式一種面向連線,可靠的,完全雙重的信息服務。 NetBIOS要求一個是客戶端程式,一個是伺服器端程式。NetBIOS會話的建立需要雙方預定的合作。一個程式必須先發出listen命令,其他程式才可以發出call令。listen命令參考在它的NetBIOS名稱表中的名稱(或windows伺服器中的),也參考用於作為會話另一端的遠端程式的名稱。如果聆聽者不在聆聽,call命令將不會成功。如果call成功,各程式將接到會話id,以作為會話建立的確認。
send和receive命令操作傳輸數據。在會話最後,各程式將執行掛起命令。沒有為會話服務的實際流控制,因為假定區域網路足夠快,能夠傳輸需要的數據。
NetBIOS 數據報
數據報可以傳送到特定的地點,或組中所有成員,或廣播到整個區域網路。與其它數據服務相比,NetBIOS 數據報是無連線,非可靠的。Send_Datagram 命令需要調用者設定目的名。如果目的名是組名,組中每個成員都收到數據。Receive_Datagram 命令的調用者必須確定它接收數據的本地名。除了實際數據外,Receive_Datagram也返回傳送者的名稱。如果NetBIOS收到數據,但卻沒有Receive_Datagram 命令在等待,數據將被丟棄。
Send_Broadcast_Datagram 命令傳送信息給本地網上每個NetBIOS系統。當NetBIOS節點收到廣播數據,發布Receive_Broadcast_Datagram 命令的每個進程都收到數據。如果當廣播數據被收到時,沒有這些命令在運行,數據將被丟棄。
NetBIOS使應用程式能和另一個設備建立會話,使網路轉發器和處理協定處理收到、傳送到另一台機器的請求。NetBIOS實際上不運算元據。NetBIOS定義規定了用來到達這些服務的協定的網路接口,而非協定本身。歷史上,NetBIOS曾與叫做NetBEUI的協定(網路擴展用戶接口)捆綁。接口和協定的結合有時引起混淆,但它們是不同的。
網路協定為定位、連線到網路上特定的服務提供至少一種方法。這通常由將節點和服務名轉化為網路地址(名稱解析)完成。在連線用TCP/IP建立前,NetBIOS服務名必須解析成IP位址。大多數NetBIOS的TCP/IP 實現,用廣播或LMHOSTS檔案完成名稱地址的解析。在Microsoft環境中,你最可能使用叫做WINS的NetBIOS 名稱伺服器。
NetBEUI 解釋
NetBEUI是網路作業系統使用 NetBIOS協定的加強版本。它規範了在NetBIOS 中未標準化的傳輸幀,還加了額外的功能。傳輸層驅動器經常被Microsofts LAN Manager(微軟區域網路操作器)使用。NetBEUI執行 OSI LLC2 協定。NetBEUI是原始的PC網路協定和IBM為LanManger(區域網路操作器)伺服器設計的接口。本協定稍後被微軟採用作為它們的網路產品的標準。它規定了高層軟體通過NetBIOS幀協定傳送、接收信息的方法。本協定運行在標準802.2數據鏈協定層上。
NetBIOS 範圍
NetBIOS範圍ID為建立在TCP/IP(叫做NBT)模組上的NetBIOS提供額外的命名服務。 NetBIOS範圍ID的主要目的是隔離單個網路上的NetBIOS通信和那些有相同NetBIOS範圍ID的節點。NetBIOS範圍ID是附加在NetBIOS 名稱上的字元串。兩個主機上的NetBIOS範圍ID必須匹配,否則兩主機無法通信。NetBIOS範圍ID允許 計算機使用相同的計算機名,不同的範圍ID。範圍ID是NetBIOS名稱的一部分,使名稱唯一。
安全隱患
NetBIOS 是指網路輸入輸出系統,在計算機網路發展史中,NetBIOS 算得上是歷史悠久。早在 1985 年,IBM 公司就開始在網路領域使用 NetBIOS,微軟推出第一套基於 Windows 的網路作業系統--Windows For Workgroups(面向工作組的視窗作業系統)時,就採用了一種適用於 Windows 的 NetBIOS 版本,即 NetBEUI。微軟當年之所以選擇 NetBEUI 作為網路傳輸的基本協定,是因為它占用系統資源少、傳輸效率高,尤為適用於由 20 到 200 台計算機組成的小型區域網路。此外,NetBEUI 還有一個最大的優點:
可以方便地實現網路中各單機資源的共享。
後來,網路的發展速度之快,已大大超出人們的想像,進入 20 世紀未,全球的計算機就已可通過國際網際網路方便連線,隨著網際網路的迅猛發展,TCP/IP 協定成為廣泛使用的傳輸協定。
今天,TCP/IP 協定已是網際網路領域的通用協定,幾乎所有接入網際網路的電腦都使用TCP/IP。但同時,NetBEUI 協定也還在區域網路領域廣泛使用,因此,在你安裝 TCP/IP
協定時,NetBIOS 也被 Windows 作為默認設定載入了你的電腦,而電腦隨即也具有了NetBIOS 本身的開放性。換句話講,在不知不覺間,你的上網電腦已被打開了一個危險的“後門”。
NetBIOS 的開放,意味著你的硬碟可能會在網路中成為共享。對於網上四處遊走的來講,他們可以通過 NetBIOS 獲知你電腦中的一切!
解除隱患
1、如果你使用的是最早版本的 Windows 95,那關閉 NetBIOS 就是一件非常容易的事 :找到系統里名為 Vnbt.386 的檔案,隨便將它改個名,如改為 Vnbt.out,這就算大功告成了。
2、如果你使用的是 Windows 95改進版、Windows 98、Windows 98 SE 或是 Windows Me,那就要稍微麻煩一點。首先,打開控制臺,進入“網路”對話窗,在配置表中,查看列表中是否已有 NetBEUI 組件,如果有,則直接跳過下一段。
3、如果在列表中沒有 NetBEUI 組件,則先點擊“添加”按鈕,在“要安裝的網路組件類型”列表中,選擇“協定”一項,再次點擊“添加”,在“網路協定”對話窗中,選 擇 Microsoft 的 NetBEUI,然後,插入 Windows 安裝盤,點擊“確定”即可。
4、回到“網路”對話窗,在網路組件中選擇“撥號適配器”,點擊“屬性”,在“屬性”對話窗中選擇“綁定”按鈕,將除TCP/IP之外其它協定的複選框裡的小勾清除掉。
5、最後,再次回到“網路”對話窗,選擇 TCP/IP 協定,點擊“屬性”,這時有可能會彈出一個警告視窗,不用理它,直接點“OK”就行了,進入 TCP/IP 的“屬性”視窗後,選擇“綁定”,將所有網路協定複選框內的小勾去掉,點擊“確定”,這時,Windows 會提示你至少應選擇一種協定,仍然不用理它,點擊“No”,關閉視窗。重新啟動你 的計算機,這樣,你計算機中的 NetBIOS後門就已被關閉了。
6、如果你的作業系統是WINDOWS 7,則需要進行如下操作。打開控制臺,進入“網路和共享中心”,點擊本地連結,點擊屬性,點擊INTERNET 協定版本 4(如果有IPV6也是類似操作)。點擊右下屬性,出現IP設定視窗,點擊高級,選擇“WINS”標籤,下面的NETBIOS設定選擇禁用,點擊確定,即可關閉NETBIOS。
名字解析
NetBIOS 名包含的內容
NetBIOS 名——即計算機名稱,用來標識獨立的用戶或計算機。獨立的 NetBIOS 名是工作組的成員,它們屬於一個默認的工作組或由用戶自定義可以加入一個自選的工作組。
工作組名——用來標識某個工作組的成員。
域名——同工作組名一樣,域名也是一種 NetBIOS 組名,它是通過域控制器來標識、證實其成員的。但在域名服務中這兩者被認為是一樣的,這也就是在“網路控制臺”的屬性的“標識”頁框中只有計算機名、工作組、計算機說明等項目而沒有“域名”的原因。
NetBIOS 名的登記
NetBIOS 在小型網路中登記名字的方法是廣播。NetBIOS 名字服務提供的功能有:自動登記名字、查詢名字、回響名字查詢、在關機時釋放名字等,但它並不需要專門的名字伺服器,甚至可以通過直接通信來進行名字登記。
NetBIOS 名字的解析方法
(綁定協定為TCP/IP)
NetBIOS 名字快取
——本地的名字快取通過預先載入或地址解析而將地址在存放在客戶機的記憶體中。其優點是從快取中查詢名字的速度特別快,缺點是快取中每條記錄的生存周期只有10分鐘,需要不停的刷新。
廣播查詢
——如果名字在快取中不能被查詢到,同時系統沒有配置 WINS 伺服器,系統就使用 UDP 連線埠137和138的 NetBIOS Datagram Distribution Service(NDDS,中文意思就是 NetBIOS 數據報分布服務)來進行查詢。本地網上的計算機在網路中搜尋它們的名字列表,如果目標主機在同一網路中,就發出一個回響。缺點是 NDDS 服務不能通過路由器,只能在單段網路上使用廣播查詢。
WINS
——這個我們已經做了專門的介紹,客戶機通過配置使用 WINS 伺服器來登記和撤消自己的名字。其優點是可以指引 UDP 連線埠137和138的訊息通過路由器,使得可以查詢本地網以外的主機。
LMHOSTS
——這與我們講到的名字快取有關了。LMHOSTS 是一種在存儲在本地機器上的純文本的主機檔案,採用的是 LAN Manager格式。其一般是在廣播查詢失敗後才用到,其方法是通過標記 #PRE 將 LMHOSTS 名預先載入到本地的 NetBIOS 名字快取,以避免使用廣播查詢用到的主機名。
這裡我們同時看看 Windows 系統中用到的另外兩種名字解析方法:
HOSTS
——HOSTS 也是一種在存儲在客戶本地機器上的純文本主機檔案,但採用的是 UNIX格式。同樣是在廣播查詢失敗及 LMHOSTS 查詢失敗後才用到。其優點是可以存儲別名和全域名,其缺點是不支持 Tag 操作。
DNS
——這一點我們也已經做了專門講述了。如果客戶機允許“啟動 DNS”來進行 Windows 名字解析,客戶機在上面的所有查詢操作都失敗後將查詢 DNS 伺服器。
我們可以看出這兩種解析方式是一種域名查詢方式,一般說來它們用於 IP主機名的解析。
接下來,我們來看一下 HOSTS 檔案,對於 LMHOSTS 我們準備作為一個專題獨立出來集中講述。
HOSTS 檔案的示範檔案可以在 C:\WINNT\SYSTEM32\DRIVERS\ETC 目錄中得到,其檔案名稱是:HOSTS.SAM。SAM 即 SAMPLE,是Microsoft 提供給用戶的一個如何配置 HOSTS 的例子,其中帶有說明性的文字。在用戶需要進行 HOSTS 配置的時候,可以直接將其改名複製為 HOSTS 並做相應修改即可。
節點類型
這裡有一個術語叫 node designation,中文意思我認為就是節點指定,它主要用來表明某計算機節點解析計算機名稱及地址的方法。每個 NetBIOS 計算機都有一種節點類型,共有四種節點類型對應於四種解析方法:
B節點
——只使用廣播方法。該類型的節點在本地子網上使用廣播訊息來發現位於同一子網中的計算機。
廣播節點(B節點)只通過廣播數據報來解析LAN子網中計算機名和地址,即它的有效範圍只是它所在的子網。其工作方式是:客戶機傳送一條廣播訊息到其所在的局域子網上,這條訊息包含有要查找的計算機的IP位址和其本身的MAC地址。由於使用廣播方式,則該網上的所有計算機都會接收到,如果該數據報中所要求的地址的計算機存在,則它就會根據包含在此數據報中的發出該訊息的計算機的MAC地址作出回應。這樣,計算機就會把經常用到的MAC地址快取起來,通過這些地址實現與遠程計算機的直接通信。
採用B節點方式的缺點:1、增大網路上不必要的通信流量,形成大量的廣播訊息泛濫。2、大多數路由器不會轉發這些廣播,阻止了B節點解析路由器另一邊的計算機,即B節點不能查找到其所在子網以外的計算機地址。
解決的辦法:1、採用 WINS 伺服器可以減少通信流量。2、採用一個 LMHOSTS 或 HOSTS 檔案將路由器另一邊的計算機的地址存入本地 NetBIOS 名字快取,避免通過廣播查找。
因此,一個完整的 NetBIOS B節點解析方式可作如下描述:
1、通過 NetBIOS 名字快取進行查詢,如果成功,返回一個IP位址,完成解析;如果不成功,轉向下一步:
2、通過廣播進行查詢,如果成功,返回一個IP位址,完成解析;如果不成功,轉向下一步:
3、通過本地 LMHOSTS 和 HOSTS 檔案進行查詢,無論成功與否都結束解析。
P節點
——只和名字伺服器使用點對點通信。該類型的節點使用服務(如WINS伺服器)來進行查詢以獲取要解析的地址。
P節點不是用廣播來解析名稱的,它通過點對點通信由UDP的數據報和TCP對話登記到一個 NetBIOS 名字伺服器(WINS),因此,它會直接向這台伺服器查詢以進行地址翻譯,然後再直接將信息傳送到目的計算機。因此,P節點的好處就是減少了本地廣播的數量,同時可以跨過路由器與位於其它子網中的 WINS 伺服器進行通信。
採用P節點方式的缺點:1、客戶機在配置時為P節點時必須知道 WINS 伺服器的IP位址。2、配置P節點還要使用到 DHCP 伺服器。3、如果 WINS 伺服器停止服務,P節點也就失去解析名稱和翻譯地址的能力。
M節點
——先使用廣播,再點對點通信。該類型的節點在LAN上傳送廣播訊息來查找另一台電腦,如果沒有回應或查找失敗,就轉為使用P點節方式繼續查詢。它向名稱解析伺服器註冊自己的名稱時也是用的廣播訊息。
M節點先使用廣播,在解析失敗後就直接和 WINS 伺服器通信,因此,它是前面講的兩種方式的組合。在實際套用中很少配置計算機為這種節點類型,這樣的唯一好處是在一個遠程沒有 WINS 伺服器的廣域網節點所需的大多數服務都在一個子網,即通信都發生在同一子網中,它可以減少路由器的信息傳送量。同時,即使 WINS 伺服器停止服務,它還可以使用廣播方式來查詢本地子網中的計算機。
H節點
——先使用點對點通信,然後使用廣播。該類型的節點使用 NetBIOS 名稱解析服務來進行註冊或解析,如果無法連線到名稱解析伺服器(如WINS伺服器)則再轉為使用B節點方式繼續查詢。
H節點如我們上面的測試中所示,在 Windows 9x 中它被稱為交叉節點,而在實際套用中,它也被稱為混合節點。它與M節點恰好相反,它先使用P節點方式請求 WINS 伺服器解析計算機名,如果這種方式失敗,它再使用廣播方式來解析。
因此,H節點與B節點的不同是,H節點可以通過路由器解析在同一個 WINS 伺服器上登記的所有計算機。
H節點與M節點的不同是,如果其配置的 WINS 伺服器沒有線上,H節點在解析過程中也繼續與其聯繫,即是說,只要該 WINS 伺服器重新開始服務,H節點就會立即改為使用 WINS 伺服器來解析計算機名稱,即使此時它正以廣播方式與目的計算機進行通信。
一個完整的 NetBIOS H節點解析方式可作如下描述:
1、通過 NetBIOS 名字快取進行查詢,如果成功,返回一個IP位址,完成解析;如果不成功,轉向下一步:
2、通過 WINS 伺服器進行查詢,如果成功,返回一個IP位址,完成解析;如果不成功,轉向下一步:
3、通過廣播進行查詢,如果成功,返回一個IP位址,完成解析;如果不成功,轉向下一步:
4、通過本地 LMHOSTS 和 HOSTS 檔案進行查詢,無論成功與否都結束解析。