NetBIOS คืออะไร

บทนำ
ผู้ใช้ระบบเครือข่ายคอมพิวเตอร์ส่วนใหญ่คงเคยได้ยินเรื่องราวของ NetBIOS กันมาบ้าง หลายคนอาจจะเกิดความสับสน ไม่เว้นแม้แต่ผู้ดูแลระบบเครือข่ายขององค์กรเอง เหตุผลหนึ่งอาจจะเป็นเพราะมีศัพท์ที่เกี่ยวข้องมากมาย เช่น NetBIOS, NetBEUI, CIFS, SMB เหล่านี้ล้วนแต่สร้างความสับสนตั้งแต่ยังไม่เริ่มศึกษา และอีกเหตุผลหนึ่งอาจจะเป็นเพราะว่า มีการนำ NetBIOS ไปใช้อย่างหลากหลายแต่ขาดมาตรฐานควบคุมที่ดี

อย่างไรก็ตาม หากกล่าวถึงเรื่องความปลอดภัยบนเครือข่ายอินเทอร์เน็ตในปัจจุบัน ก็จำเป็นต้องอ้างถึงเรื่องของ NetBIOS อย่างแน่นอน เอกสารฉบับนี้จะให้ความกระจ่างตั้งแต่ประวัติความเป็นมาและการนำ NetBIOS ไปใช้งานในรูปแบบต่างๆ ตั้งแต่การทำงานของ NetBIOS ของโปรโตคอลรุ่นเก่าอย่าง NetBEUI จนกระทั่งการทำงานของ NetBIOS บน IP network ซึ่งใช้งานกันอย่างแพร่หลายในปัจจุบัน โดยจะเน้นไปที่การนำ NetBIOS over TCP/IP มาใช้ในระบบปฏิบัติการของ Microsoft

เอกสารฉบับนี้เหมาะสำหรับผู้ดูแลระบบเครือข่ายที่มีความรู้พื้นฐานเกี่ยวกับเครือข่ายมาบ้างแล้ว โดยเฉพาะความรู้ที่เกี่ยวข้องกับ TCP/IP network

ความเป็นมาของ NetBIOS

NetBIOS ย่อมาจาก Network Basic Input/Output System ถูกพัฒนาขึ้นโดย Sytec สำหรับ IBM เมื่อปี 1983 ถูกออกแบบมาให้ทำงานกับเครือข่ายที่มีขนาดเล็กเท่านั้น
ในปี 1985 IBM ได้นำเทคโนโลยี Token-Ring ออกมาใช้งาน ซึ่งได้นำ NetBIOS และ NetBEUI (NetBIOS Extened User Interface) มาใช้ใน Token-Ring ด้วย
ปี 1986 Novell ได้แนะนำ Advanced Netware 2.0 ซึ่งได้รวมแพ็กเก็จ NetBIOS ลงไปด้วย
ปี 1987 IBM ได้แนะนำ PC LAN Support Program สำหรับเครื่อง Personal System (PS/2) ซึ่งได้รวม NetBIOS เข้าไปด้วยเช่นกัน
เดือนมีนาคม ปี 1987 RFC 1001 Protocol Standard for a NetBIOS Service on a TCP/UDP Transport ได้ถูกเผยแพร่
เช่นเดียวกัน ในปี 1987 Microsoft แนะนำ LAN Manager ซึ่งรันอยู่บน NetBIOS frame
แนะนำ NetBIOS
NetBIOS ถูกออกแบบมาเพื่อเป็น protocol ที่เป็นตัวเชื่อม (interface) ระหว่างระบบปฏิบัติการกับฮาร์ดแวร์ เพื่อให้ application สามารถสื่อสารกับเครือข่ายได้โดยเป็นอิสระจากฮาร์ดแวร์ ทั้งนี้ application จะสามารถเข้าถึงเลเยอร์สูงสุดของ OSI model ได้เท่านั้น ซึ่งทำให้ application ที่สร้างขึ้นมาสามารถทำงานได้ในเครือข่ายที่มี network environment ไม่เหมือนกัน ทั้งนี้ NetBIOS จะทำหน้าที่ขนส่งข้อมูลไปยัง application ที่อยู่บนเครื่องอื่นในเครือข่ายให้

ในช่วงเริ่มต้นนั้น NetBIOS ถูกออกแบบให้ทำงานได้กับ IBM’s PC LAN เท่านั้น แต่ปัจจุบัน NetBIOS ได้กลายเป็นพื้นฐานของ network application ไปแล้ว โดย NetBIOS เป็นโปรโตคอลที่ถูกใช้งานอย่างแพร่หลาย มันสามารถทำงานได้บน Ethernet, Token ring, IBM PC Network

NetBIOS ถูกออกแบบมาให้เป็นตัวเชื่อม เป็นส่วนขยายของ BIOS ที่ช่วยให้สามารถติดต่อใช้งานบริการบนเครือข่ายได้ จึงกล่าวได้ว่า NetBIOS ถูกออกแบบให้เป็น Application Program Interface (API) ในขณะเดียวกัน NetBIOS ก็ถือว่าเป็นโปรโตคอลได้เช่นเดียวกันกับ TCP/IP เพราะมีชุดของโปรโตคอลชั้นล่างลงไปที่สามารถทำงานร่วมกันได้

แนะนำ NetBEUI
แรกเริ่มนั้น NetBIOS ถูกออกแบบให้ทำงานกับเครือข่ายขนาดเล็กที่เป็นเครือข่ายท้องถิ่น ดังนั้น NetBIOS ในช่วงแรกๆ จึงถูกออกแบบให้ทำงานร่วมกับ NetBEUI (NetBIOS Extended User Interface) ซึ่งเป็น network-transport protocol

NetBIOS over NetBEUI
Layer Protocol Description
7 Application Redirector เป็นตัว redirect คำสั่งให้ออกไปยังเป้าหมายผ่านทางเครือข่าย
6 Presentation SMB Server Message Blocks ช่วยให้สามารถทำ file sharing, print sharing และ user-based messaging
5 Session NetBIOS ให้บริการ name service, datagram service และ session service (รายละเอียดโปรดอ่านใน NetBIOS service)
4 Transport NetBEUI ให้บริการขนส่งข้อมูล
3 Network
2 Datalink NIC Driver, NDIS
1 Physical NIC Adapter
NetBEUI ถูกพัฒนาขึ้นโดย IBM เพื่อเป็น networking protocol ของ PC และ Microsoft ได้นำมาใช้ใน product หลายตัวด้วยกัน โดย NetBEUI ทำงานอยู่บน 802.2 data-link protocol layer และเนื่องจาก 802.2 data-link protocol เป็น nonroutable protocol ดังนั้น NetBEUI ก็เป็น nonroutable protocol ด้วยเช่นกัน ซึ่งถือว่าเป็นข้อจำกัดของ NetBEUI

NeBEUI สามารถทำงานได้เป็นอย่างดีกับเครือข่ายขนาดเล็กที่มีจำนวนเครื่องคอมพิวเตอร์ตั้งแต่ 20 – 200 เครื่อง และยังสามารถทำงานข้าม segment ของ LAN ได้ แต่ต้องมี gateway เป็นตัวควบคุม segment อีกที

NetBEUI เป็นโปรโตคอลที่สามารถทำงานได้เร็วมากในเครือข่ายขนาดเล็ก โดยเฉพาะใน Windows NT นั้น NetBEUI ถือได้ว่าเป็นโปรโตคอลที่เร็วที่สุด ซึ่งเป็น NetBEUI 3.0 เป็นเวอร์ชั่นที่ได้รับการแก้ไขข้อผิดพลาดจากเวอร์ชั่นเก่าค่อนข้างมาก

จริงๆ แล้ว ไม่อาจเรียก NetBEUI เวอร์ชัน 3.0 ว่าเป็น NetBEUI protocol ได้เต็มที่นัก ถือว่าเป็น NetBIOS Frame (NBF) format protocol เสียมากกว่า เพราะ NetBEUI จริงๆ นั้นจะใช้งาน NetBIOS interface และ interface อื่นที่อยู่สูงกว่า แต่ NBF นำ Transport Driver Interface (TDI) มาใช้งานแทน ซึ่ง NBF ก็สามารถทำงานร่วมกันและเข้ากันได้ดีกับ NetBEUI ที่ Microsoft ได้นำไปใช้งานใน product ตัวก่อนหน้านี้

เนื่องจาก NetBEUI เป็น nonroutable protocol ซึ่งไม่สามารถ forward packet ผ่าน routed network ได้ แต่ NetBIOS นั้นสามารถทำงานร่วมกับ routable protocol ตัวอื่นๆ ได้ เช่น IPX และ TCP/IP ซึ่งรายละเอียดจะได้อธิบายอีกครั้งในหัวข้อ Encapsulation

เมื่อ NetBEUI เป็นโปรโตคอลที่ทำงานได้ดีกว่าโปรโตคอลตัวอื่นใน LAN แต่ทำงานได้แย่มากสำหรับ WAN จึงมีการแนะนำให้ใช้ทั้ง NetBEUI และ TCP/IP ใน Windows NT ทั้งนี้จะต้องมีการติดตั้ง NetBEUI ในทั้ง 2 ฝั่งของการสื่อสาร และตั้งค่าให้ NetBEUI เป็นโปรโตคอลแรกที่จะถูกใช้ (ให้ลำดับความสำคัญมากกว่า TCP/IP) โดย Windows NT จะเลือกใช้ NetBEUI สำหรับการสื่อสารภายใน LAN segment และใช้ TCP/IP สำหรับการสื่อสารไปยัง router หรือ WAN ส่วนอื่นๆ

NetBIOS name
การที่โหนดแต่ละโหนดจะสื่อสารกันได้จะต้องมีชื่อ (NetBIOS name) ที่ไม่ซ้ำกันในเครือข่าย ซึ่งโหนดอาจจะหมายถึง เครื่องคอมพิวเตอร์, เราเตอร์, เครื่องพิมพ์ โดย NetBIOS Name จะมีชื่อยาวได้สูงสุด 16 Bytes หรือ 16 ตัวอักษร แต่สำหรับระบบปฏิบัติการของ Microsoft สามารถตั้ง NetBIOS name ได้สูงสุดเพียง 15 ตัวอักษรเท่านั้น เพราะ byte ที่ 16 นั้นถูกนำไปใช้เพื่อบ่งบอกชนิดของ NetBIOS name นั้นๆ เช่น domain name, group name, computer name หรืออื่นๆ

NetBIOS name โดยทั่วไป สามารถแบ่งออกได้เป็น 2 ประเภทคือ

Unique name คือชื่อที่ไม่สามารถซ้ำกันได้ในเครือข่ายวงเดียวกัน โดยส่วนใหญ่จะเป็น Computer name เช่น MYMACHINE
Group name คือชื่อของ domain หรือ workgroup ที่เครื่องนั้นๆ สังกัดอยู่ เช่น MYWORKGROUP
ข้อควรจำ: เนื่องจาก NetBIOS ทำงานที่ session layer ซึ่งอยู่เหนือ network layer ดังนั้น NetBIOS จะไม่มีข้อมูลที่เกี่ยวข้องกับ network address เช่น ข้อมูล IP ของ NetBIOS name รายละเอียดการค้นหา network address ของ NetBIOS name นั้นจะอธิบายในหัวข้อ NetBIOS name resolution ต่อไป

วิธีการส่งข้อมูลของ NetBIOS
NetBIOS ถูกออกแบบให้ทำงานกับกลุ่มของเครื่องคอมพิวเตอร์ที่ใช้ broadcast medium เดียวกัน ซึ่งมันสามารถทำงานได้ทั้งแบบ connection-oriented , และแบบ connectionless นอกจากนี้ยังสนับสนุนการทำงานแบบ broadcast และ multicast อีกด้วย

เมื่อโหนดต้องการสื่อสารผ่านเครือข่าย สามารถทำได้ 2 วิธีหลักๆ คือ

Session mode เป็นการรับส่งข้อมูลที่มีขนาดใหญ่ มีระบบตรวจสอบข้อผิดพลาดและการกู้คืน (recovery) แต่มีข้อเสียที่เป็นการสื่อสารแบบ 1 ต่อ 1 เท่านั้น ขนาดของข้อมูลสามารถขยายได้สูงสุดถึง 64 KByte นอกจากนี้ยังมี NetBIOS session control command และ NetBIOS session data tranfer command ซึ่งช่วยให้สามารถทำการสื่อสารผ่านทาง session ได้ (connection-oriented connection)
Datagram mode (รวมถึงการส่งข้อมูลแบบ broadcast) สามารถรับส่งข้อมูลได้เร็วที่สุด แต่ไม่มีการรับประกันว่าข้อมูลจะไปถึงปลายทางหรือไม่ และไม่สามารถส่งข้อมูลซ้ำในกรณีที่ข้อมูลไปไม่ถึงปลายทางได้ โดยปกติจะมีขนาด 512 Byte แต่สามารถสื่อสารกับเครื่องคอมพิวเตอร์อื่นได้หลายเครื่องในเวลาเดียวกัน (connectionless connection)
NetBIOS Service
หลายคนอาจจะเคยใช้งาน browsing service (ผ่านทาง network neighborhood), domain authentication, trust, file sharing หรือ printer sharing ซึ่ง application เหล่านี้ล้วนทำงานได้โดยใช้พื้นฐานจาก บริการพื้นฐานของ NetBIOS ซึ่งมี 3 อย่างด้วยกัน ได้แก่

Name Service เป็นบริการที่ช่วยให้ NetBIOS node สามารถลงทะเบียน (register) NetBIOS name ที่เป็น unique name หรือ group name ในเครือข่ายได้ เช่น เมื่อเครื่องคอมพิวเตอร์เปิดเครื่องขึ้นมาใหม่ มันจะส่ง ADD NAME QUERY ออกไปเพื่อตรวจสอบว่ามีเครื่องคอมพิวเตอร์หรือ NetBIOS node อื่นใดใช้ชื่อ NetBIOS name ซ้ำกันหรือไม่ ซึ่งโดยปกติแล้วหากไม่มีการตอบกลับ (response) กลับมาภายหลังการส่งคิวรีดังกล่าวออกไปแล้วหกครั้งใน 0.5 วินาที ถือได้ว่า NetBIOS name ดังกล่าวไม่ซ้ำกับใคร(ในขณะนั้น) สามารถใช้งานเป็น NetBIOS name ได้ ทั้งนี้บริการ Name service นี้สามารถตรวจสอบ NetBIOS name ได้ทั้ง unique name และ Group name ด้วย
Session Service เป็นบริการที่ใช้การสื่อสารแบบ connection-oriented ซึ่งมีความเชื่อถือได้ และเป็นการสื่อสารแบบ full-duplex ทั้งนี้ NetBIOS ต้องการอย่างน้อย 1 โปรเซสเพื่อทำหน้าที่เป็น client และตัวอื่นๆ เป็น Server การที่จะสร้าง session ได้จะต้องมีการเตรียมการทั้งสองฝ่าย ฝ่ายแรกจะเป็นตัว Listen ในขณะที่อีกฝ่ายจะเป็นฝ่าย Call ทั้งนี้ฝ่าย Listen จะอ้างอิงชื่อจาก NetBIOS name table ของตัวเองและยังต้องตรวจสอบชื่อของฝั่งตรงข้ามอีกด้วย ถ้าฝ่ายรับ (Listener) ไม่พร้อมที่จะรับการติดต่อ กาตติดต่อที่เกิดขึ้นจากฝ่าย Call ก็จะล้มเหลว หากสามารถสร้าง session การติดต่อได้สำเร็จ application ของทั้งสองฝ่ายจะได้รับข้อมูล session-id จากนั้น application จะเริ่มการรับส่งข้อมูล และในตอนท้ายของการติดต่อทั้งสองฝ่ายสามารถเป็นฝ่ายส่งคำสั่ง Hang-Up เพื่อยกเลิกการเชื่อมต่อได้ การสื่อสารแบบ session นี้ไม่มีการควบคุมการขนส่งข้อมูล เพราะถือว่า LAN มีความเร็วสูงเพียงพอที่จะขนส่งข้อมูลได้โดยไม่มีปัญหา
Datagram Service เป็นการสื่อสารที่สามารถส่งข้อมูลไปยังเครื่องที่ระบุหรือส่งไปยังทุกเครื่องใน group ที่ระบุหรือ broadcast ไปยังวง LAN ได้ บริการนี้ใช้การสื่อสารแบบ connectionless เช่นเดียวกันกับการรับส่งข้อมูลแบบ Datagram แบบอื่นๆ เช่น UDP/IP โดยผู้ส่งจะใช้คำสั่ง Send_Datagram ซึ่งต้องระบุผู้รับปลายทางด้วย ซึ่งอาจจะเป็น group หรือ NetBIOS node เดี่ยวๆ ก็ได้ ส่วนทางด้านผู้ที่เรียกใช้คำสั่ง Receive_Datagram นั้นจะต้องระบุ local name หรือชื่อของปลายทางที่ต้องการรับ นอกจากนี้ยังมีคำสั่ง Send_Broadcast_Datagram ซึ่งจะส่งข้อความไปยังทุกเครื่องใน LAN ซึ่งหากมีโปรเซสที่รันคำสั่ง Receive_Broadcast_Datagram ไว้ก็จะได้รับ broadcast datagram นั้นไป
NetBIOS Encapsulation
โดยปกติแล้ว NetBIOS ทำงานได้เป็นอย่างดีบน NetBEUI protocol แต่เพื่อให้ NetBIOS สามารถทำงานข้ามเครือข่ายได้ จึงได้มีการนำ NetBIOS ไปใช้งานบน routable protocol อื่น เช่น TCP/IP และ IPX/SPX

ดังนั้นเพื่อให้แน่ใจได้ว่า NetBIOS สามารถทำงานได้บน TCP/IP และ IPX/SPX ได้ดีเช่นเดียวกับการรัน NetBIOS บน NetBEUI หรือ NBF จึงได้มีการนำ encapsulation มาใช้ ซึ่งพอจะอธิบายได้ดังนี้

NetBIOS over IPX/SPX
NetBIOS over TCP/IP
NetBIOS over IPX/SPX
IPX เป็นโปรโตคอลที่พัฒนาขึ้นโดย Novell Netware และได้มีการเผยแพร่การใช้งาน NetBIOS over IPX ในปี 1986 ตารางด้านล่างแสดงกลไกการทำงานของ NetBIOS over IPX (เอกสารฉบับนี้ไม่ได้เจาะลึกในรายละเอียดของ NetBIOS over IPX)

NetBIOS over IPX
7 Application Higher level protocols e.g. SMB / CIFS e.g. Browser Service
6 Presentation
5 Session Session Management Protocol
4 Transport
3 Network User Datagram Protocol, Name Management Protocol, NetBIOS Diagnostic and Monitoring Protocol
IPX
2 Datalink e.g. IEEE 802.2
1 Physical Token Ring / Ethernet etc
NetBIOS over TCP/IP (NBT)
่ภายหลังจากที่เครือข่ายอินเทอร์เน็ตได้รับความนิยม มีผู้นำระบบเข้ามาเชื่อมต่อจำนวนมาก และเพื่อให้การใช้งานเป็นไปในแนวทางเดียวกัน จึงได้มีการเผยแพร่ request for comment 2 ฉบับ ดังนี้

RFC 1001 (PROTOCOL STANDARD FOR A NetBIOS SERVICE ON A TCP/UDP TRANSPORT: CONCEPTS AND METHODS )
RFC 1002 (PROTOCOL STANDARD FOR A NetBIOS SERVICE ON A TCP/UDP TRANSPORT: DETAILED SPECIFICATIONS )
ทั้งนี้เพื่อกำหนดมาตรฐานในการนำ NetBIOS มาใช้งานบน TCP/IP network ให้สามารถใช้งาน NetBIOS service ได้ครบ โดยพยายามให้มีการเปลี่ยนแปลงให้น้อยที่สุดและสามารถเข้ากับมาตรฐานเดิมได้ และยังทำงานได้อย่างยืดหยุ่นและมีประสิทธิภาพ โดยไม่จำเป็นต้องมีศูนย์กลางในการควบคุม (ไม่ใช่ central management) และสามารถทำงานได้โดยไม่จำเป็นต้องใช้ facility เสริมอื่นใด

NetBIOS name สามารถเปรียบได้กับระบบ Domain Name System (DNS) ใน TCP/IP protocol แต่ก็มีข้อแตกต่างกันพอสมควร คือ

NetBIOS name เป็นระบบชื่อที่เป็น flat คือไม่สามารถแตกชื่อเป็นกลุ่มย่อยลงไปได้เหมือน DNS ในขณะที่ระบบชื่อของ DNS เป็นแบบ hierarchy เช่น thaicert.nectec.or.th
ตัวอักษรที่ใช้ในระบบชื่อของ DNS ใช้ได้แค่ alphanumeric, hyphen และ stop เท่านั้น ในขณะที่ NetBIOS name สามารถใช้ได้ทั้ง space, underscore และ non-alphanumeric อื่นๆ
NetBIOS จะสามารถส่งและรับข้อมูลได้เฉพาะโหนดที่มี NetBIOS scope identifier เป็นค่าเดียวกันเท่านั้น โดย scope identifier นี้เป็น string ที่อยู่ในรูปแบบที่ compatible กับ DNS format

Note: มีการใช้งาน NetBIOS over TCP/IP ที่เห็นได้ชัดเจนคือ ระบบปฏิบัติการ Windows ของ Microsoft และ Samba ที่สามารถทำงานได้บน Unix และ Linux ทั้งนี้การ implement ของทั้งสองค่ายอาจจะแตกต่างไปจาก RFC ที่ได้กำหนดไว้บ้าง แต่ก็ดำเนินไปในแนวทางคล้ายๆ กัน อย่างไรก็ตามเอกสารฉบับนี้จะเน้นถึงการ implement NetBIOS over TCP/IP ของ Microsoft มากกว่า เพราะมีการนำไปใช้งานมากกว่า

NetBIOS over TCP/IP
7 Application Higher level protocols e.g. SMB / CIFS e.g. Browser Service
6 Presentation
5 Session Name Service datagram service Session Service
4 Transport UDP TCP
3 Network IP
2 Datalink e.g. IEEE 802.2
1 Physical Token Ring / Ethernet etc
NetBIOS Service over TCP/IP
บริการของ NetBIOS บน TCP/IP มีด้วยกัน 3 บริการเหมือนกับ NetBIOS ที่รันบน NBF ซึ่งมีรายละเอียดเพิ่มเติมของแต่ละบริการดังนี้

Name Service ให้บริการลงทะเบียนและยกเลิกการใช้งาน NetBIOS name ภายในเครือข่ายที่อยู่ใน segment เดียวกัน โดยใช้โปรโตคอล UDP port 137 (broadcast packet) ทั้งนี้ Name service สามารถใช้ได้ในวง LAN เท่านั้นเนื่องจาก router ส่วนใหญ่จะถูกตั้งค่าให้ไม่อนุญาตให้ UDP broadcast packet ผ่านไปได้
การที่บริการนี้ทำงานบน UDP protocol ทำให้มีข้อดีตรงที่ header ของ packet มีขนาดเล็กและใช้เวลาในการสื่อสารน้อยกว่าการใช้ TCP protocol ส่วนข้อเสียก็คือเมื่อส่งข้อมูลออกไปแล้วจะไม่สามารถรู้ได้เลยว่าข้อมูลถูกส่งออกไปถึงเป้าหมายที่ต้องการจริงหรือไม่
Datagram Service เป็นบริการที่ทำให้สามารถสื่อสารกับโหนดอื่นๆ ได้ โดยสามารถส่งข้อมูลได้ทั้งแบบ connectionless และแบบ broadcast โดยใช้ UDP protocol port 138 ตัวอย่างการนำไปใช้งานที่เห็นได้ชัดเจนคือ browser service ซึ่งจะถูกเรียกใช้เมื่อผู้ใช้รัน network neighborhood จาก Windows Desktop ซึ่ง browser service จะเรียกใช้งาน datagram service โดยการ broadcast ข้อความออกไป ทั้งนี้ Datagram service ซึ่งรันอยู่บน UDP port นั้นก็มีข้อดีและข้อเสียเหมือนกับ Name service เช่นเดียวกัน
Session Service เป็นบริการที่ให้การเชื่อมต่อแบบ connection-oriented โดยใช้ TCP protocol port 139 ตัวอย่างการใช้งานที่เห็นได้ชัดเจนคือ file sharing, printer sharing นอกจากนี้ยังมี network application ของ Windows ทำงานโดยอาศัยบริการนี้ เช่น Server Manager, Event Viewer, Register Editor และ Performance Monitor
session service มีความซับซ้อนมากกว่า name หรือ datagram service เพราะ session service ทำงานบน TCP port ซึ่งต้องมีการทำ establish connection, computer authentication, user authentication และการยกเลิกการเชื่อมต่อ
อย่างไรก็ตามหากกล่าวถึง service หรือ application ที่ทำงานอยู่ในเลเยอร์ที่สูงกว่า NetBIOS มักจะพบว่า บริการดังกล่าวมักจะอาศัยบริการพื้นฐานทั้ง 3 อย่างของ NetBIOS จึงจะสามารถทำงานได้อย่างสมบูรณ์ เช่น Messenger Service ซึ่งสามารถใช้งานได้โดยการใช้คำสั่ง net send message ซึ่งสามารถระบุปลายทางเป็น user, เครื่องคอมพิวเตอร์หนึ่งเครื่อง หรือทุกเครื่องในโดเมนก็ได้ หากเป้าหมายเป็นเครื่องคอมพิวเตอร์ 1 เครื่อง NetBIOS name service ก็จะส่ง broadcast message ออกไปเพื่อค้นหาเครื่องคอมพิวเตอร์ดังกล่าว ในกรณีที่ปลายทางเป็น user ตัว NetBIOS name service ก็จะส่ง broadcast ไปทั้งเครือข่ายเพื่อค้นหา user ที่มีชื่อตามที่ระบุไว้ (byte ที่ 16 มีค่าเป็น<03h>) หลังจากนั้นก็จะเป็นขั้นตอนการส่งข้อความที่ต้องการส่ง หากปลายทางเป็นกลุ่มของเครื่องคอมพิวเตอร์ NetBIOS datagram service จะเป็นตัวส่งข้อความ broadcast ออกไปทั้งเครือข่าย แต่ถ้าเป็นเครื่องคอมพิวเตอร์เครื่องเดียว NetBIOS session service จะเชื่อมต่อไปหาเครื่องคอมพิวเตอร์นั้นโดยตรง

ทำความเข้าใจ Name table
Name tables เป็นตารางที่ใช้เก็บข้อมูล NetBIOS name ของเครื่องตัวเอง โดยภายหลังจากที่บริการพื้นฐานของ NetBIOS ทั้งหมดถูกรันในเครื่องคอมพิวเตอร์นั้นๆ แล้ว มันจะลงทะเบียน (register) ชื่อ (NetBIOS name) ลงใน local NetBIOS name table จากนั้น NetBIOS application ก็จะรอดูว่ามีเครื่องอื่นส่ง query ที่เกี่ยวข้องกับชื่อที่ได้ลงทะเบียนไว้แล้วหรือไม่ (ผ่านทาง TCP หรือ UDP port) ถ้าชื่อ NetBIOS name ที่ถูกส่ง query มาไม่ปรากฏใน local NetBIOS name table มันก็จะไม่ทำอะไร แต่ถ้าชื่อนั้นมีปรากฏอยู่ NBT(NetBIOS over TCP/IP) ก็จะส่งข้อมูลนั้นไปยัง application เพื่อทำการประมวลผลต่อไป

ตามที่ได้เคยกล่าวมาแล้วว่า Micorsoft ได้ใช้ byte ที่ 16 ของ NetBIOS name ในการเก็บข้อมูลชนิด (type) ของ NetBIOS name นั้นๆ ซึ่งสามารถตรวจสอบได้ เช่น หากพิมพ์คำสั่ง NBTSTAT -n ดูก็จะได้ผลคล้ายๆ ตัวอย่างด้านล่าง

Local Area Connection:
Node IpAddress: [10.68.7.11] Scope Id: []

NetBIOS Local Name Table

Name Type Status

NAC <00> UNIQUE Registered
WORKGROUP<00> GROUP Registered
NAC<03> UNIQUE Registered
hooroo<03> UNIQUE Registered
NAC<01> UNIQUE Registered

ซึ่งหากทราบ ค่า type ที่เป็นเลขฐานสิบหกก็พอจะมองออกได้ว่า ค่าที่แสดงผลออกมามีความเกี่ยวเนื่องกันอย่างไรบ้าง ซึ่งสามารถอ้างอิงได้จากตารางด้านล่างนี้

COMMON NetBIOS NAME ENTRIES
Type Value Sixteenth Character Name Type
Unique Computer name 00h Workstation service
Unique “IS” Computer name 00h IIS server/Internet Service Manager
Unique Computer name 01h Messenger service
Unique Computer name 03h Messenger service
Unique User name 03h Messenger service
Unique Computer name 06h RAS Server service
Unique Domain 1Bh Domain master browser
Unique Computer name 1Dh Master browser
Unique Computer name 1Fh NetDDE service
Unique Computer name 20h Server service
Unique Computer name 21h RAS Client service
Unique Computer name BEh Network Monitor agent
Unique Computer name BFh Network Monitor application
Group Domain name 00h Domain name
Group “\–MSBROWSE” 01h Master browser
Group Domain 1Ch Domain controller
Group “Inet-Services” 1Ch IIS server/Internet Service Manager
Group Domain 1Eh Browser service elections
จากตัวอย่าง ทำให้ทราบว่าเครื่องคอมพิวเตอร์ดังกล่าวมีค่าที่เกี่ยวข้องต่างๆ ดังนี้

Computer name : NAC
Workgroup : WORKGROUP
Current User : hooroo

NetBIOS name table นี้จะถูกใช้งานและเป็นประโยชน์กับ inbound NetBIOS connection เท่านั้น

เกิดอะไรขึ้นบ้างเมื่อ Windows NT เปิดเครื่องขึ้นมาใช้งานจนกระทั่งปิดเครื่อง

เมื่อเปิดเครื่องคอมพิวเตอร์ขึ้นมาใหม่
ผู้ดูแลระบบหลายคนอาจจะเคยได้รับ alert เตือนเมื่อ IP address ของ NT ที่เปิดขึ้นมาใหม่ไปซ้ำกับ IP address ของเครื่องอื่นที่เปิดไว้ก่อนแล้ว ซึ่งกระบวนการตรวจสอบนี้ไม่ใช่หน้าที่ของ NetBIOS แต่อย่างใด เป็นหน้าที่ตามปกติของ TCP/IP stack โดยระบบจะส่ง arp request ออกไป หากมี IP ซ้ำก็จะมี arp reply กลับมา

ก่อนที่ NT จะ start Workstation service มันจะตรวจสอบก่อนว่ามีเครื่องอื่นใช้ชื่อเครื่องคอมพิวเตอร์ซ้ำกันหรือไม่ โดยจะส่ง NetBIOS name query ออกไปผ่าน port 137 (UDP)

หาก NT เป็นสมาชิกของโดเมน มันจะส่ง request ไปยัง domain controller จำนวน 3 ครั้ง โดยเว้นช่วงการส่ง 1.5 วินาที จากนั้นโดยไม่สนใจว่าจะเป็นหรือไม่ได้เป็นสมาชิกโดเมน มันจะส่ง broadcast การลงทะเบียนชื่อโดเมนจำนวน 4 ครั้ง เว้นระยะห่าง 0.75 วินาที ไปยัง local subnet

ในขั้นตอนการลงทะเบียน NetBIOS name นั้น เครื่องคอมพิวเตอร์อื่นๆ ที่อยู่ใน local subnet เดียวกัน จะรอรับข้อมูลการลงทะเบียน แล้วนำข้อมูลดังกล่าวไปตรวจสอบกับ local Name table ว่าซ้ำกันหรือไม่ หากซ้ำก็จะส่ง response กลับไป

หาก NT สามารถลงทะเบียนได้สำเร็จ มันจะเพิ่มชื่อดังกล่าวลงใน local Name table (สามารถดูรายชื่อ NetBIOS name ใน local Name table ได้ โดยใช้คำสั่ง nbtstat -n)

ในกรณีที่ NT เป็น domain controller ด้วย มันจะต้องลงทะเบียนการเป็น domain controller ด้วย โดยการระบุในไบต์ที่ 16 เป็น <1ch>

หลังจากนั้นก็จะ start service อื่นๆ เช่น Messenger service, Browser service

หลังจาก start service ต่างๆ ครบแล้ว จะมีบางโปรเซสจะสร้าง NetBIOS traffic ขึ้นมา เช่น

ทุกๆ 2 นาที NetDDE จะส่ง request จำนวน 3 ครั้ง ห่างกัน 1.5 วินาที ไปยัง domain controller
นอกจานี้ยังมีโปรเซสที่ทำหน้าที่ส่ง Host annoucement เพื่อประกาศสถานภาพทุกๆ 12 นาที (ค่าโดย default) โดยใช้ netBIOS Datagram service

เมื่อล็อกออนเข้าใช้งานระบบ
ไม่ว่าจะเป็นการล็อกออนไปยัง local database หรือ doamin controller ก็ตาม NetBIOS จะส่ง broadcast Name service เพื่อลงทะเบียน username ที่เพิ่งล้อกออนเข้ามาด้วยรหัส <03h> ในไบต์ที่ 16 ของ NetBIOS name

เมื่อล็อกออฟออกจากระบบ
หากมีการแชร์ไฟล์ใน NT มันจะส่งข้อมูลขอยกเลิกการเชื่อมต่อ ผ่าน SMB protocol จากนั้นก็จะส่ง release request สำหรับ username ที่ต้องการล้อกออฟออกไป

เมื่อสั่งปิดเครื่องคอมพิวเตอร์
NetBIOS name ที่ถูกลงทะเบียนใน local Name table จะถูกส่ง release ออกไป โดยไม่มีการส่ง broadcast แต่อย่างใด

หาก Messenger service รันอยู่ มันจะส่ง release request สำหรับ Computer name ออกไป

เช่นเดียวกัน หากบาง service รันอยู่ มันจะส่ง broadcast ออกไป เช่น NetDDE

ในที่สุดชื่อเครื่องของ NT ก็จะหายไปจาก browse list

NetBIOS Name Resolution Component
เครื่องคอมพิวเตอร์จะไม่สามารถติดต่อสื่อสารกันได้โดยใช้ NetBIOS name จะต้องแปลง NetBIOS name เป็นค่า IP address ก่อน จึงจะสามารถติดต่อไปยังเป้าหมายที่แท้จริงได้ ซึ่งเป็นที่มาของกระบวนการ NetBIOS name resolution นี้ ทั้งนี้ผู้ใช้จะไม่สามารถมองเห็นการทำงานของกระบวนการนี้ได้ (transparent to the user) กระบวนการนี้มีประโยชน์เพราะช่วยให้ผู้ใช้ไม่ต้องจำค่า IP address ซึ่งมีความยุ่งยากมากกว่าการจำ NetBIOS name

NBT มีกลไกในการหาค่า IP address จาก NetBIOS name หรือ Computer name คือ การส่ง broadcast, ดูจาก LMHOSTS file และขอข้อมูลจาก WINS เครือข่ายส่วนใหญ่จะใช้ค่า default ซึ่งก็คือ ค้นหา IP address โดยการส่ง broadcast packet ถ้าเครือข่ายมีความซับซ้อนมากขึ้น เช่น มี WAN link ซึ่งไม่สามารถส่ง broadcast packet ได้นั้น ก็สามารถใช้ไฟล์ LMHOSTS ได้ อย่างไรก็ตามสำหรับเครือข่ายขององค์กรขนาดใหญ่นั้นจำเป็นต้องมีศูนย์กลางในการจัดการจึงได้มีการนำ WINS server มาใช้บริหารจัดการ NetBIOS name

จนกระทั่งในปัจจุบันกลไกการทำงาน NetBIOS name resolution ได้พัฒนาขึ้นอย่างมาก เพื่อให้สามารถค้นหา IP address ได้มีประสิทธิภาพ จึงได้มีการคิดค้นกลไกเพิ่มเติม โดยสามารถค้นหา IP address ได้จาก 5 วิธีคือ

Name Cache
เมื่อจำเป็นต้องค้นหา IP address จาก NetBIOS name จะมีการค้นหาใน name cache เป็นอันดับแรกเสมอ ซึ่ง name cache ก็คือหน่วยความจำที่ถูกแบ่งไว้สำหรับเก็บข้อมูลเพื่อใช้ในการทำ mapping ไปมาระหว่าง NetBIOS name และ IP address นั่นเอง
ข้อดีของการค้นหา IP address จาก name cache ก็คือลดการส่งข้อมูล request หา IP address ของ NetBIOS name ที่ซ้ำกันลงไป โดยไม่สนใจว่าวิธีการส่งข้อมูลหา IP address นั้นจะเป็น broadcast หรือ WINS server ก็ตาม ซึ่งช่วยให้สามารถทำงานได้เร็วขึ้น

หากต้องการดูข้อมูล name cache ของเครื่องคอมพิวเตอร์สามารถใช้คำสั่ง NBTSTAT -c ได้ ซึ่งจะได้ผลคล้ายกับตัวอย่างด้านล่าง

C:>nbtstat -c

Local Area Connection:
Node IpAddress: [192.168.97.111] Scope Id: []

NetBIOS Remote Cache Name Table

Name Type Host Address Life [sec]

A8-BROUHAHA <00> UNIQUE 192.168.97.241 602
A8-JUCK <00> UNIQUE 192.168.97.199 580
A8-MARUKO <00> UNIQUE 192.168.97.8 572

โดยคอลัมน์สุดท้ายด้านขวามือแสดงจำนวนเวลาที่ข้อมูลดังกล่าวจะยังคงอยู่ใน name cache (เป็นวินาที) ทั้งนี้สามารถตั้งค่าจำนวนเวลาที่ต้องการให้ข้อมูลถูกเก็บไว้ใน cache ได้โดยแก้ไขพารามิเตอร์ในเรจิสทรีย์ ดังนี้

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT\Parameters\CacheTimeout
ค่า default ของ CacheTimeout เป็น 600,000 milliseconds หรือ 10 นาที ซึ่งสามารถปรับเปลี่ยนให้เพิ่มขึ้นได้หากในเครือข่ายไม่ค่อยมีการเปลี่ยนแปลง IP address เท่าใดนัก

ปัญหาที่จะเกิดขึ้นส่วนใหญ่คือ เมื่อมีการเปลี่ยนแปลง IP address ของเครื่องปลายทาง แต่ข้อมูล IP address ใน name cache ยังคงเป็นค่าเก่าอยู่ก็จะทำให้เกิดปัญหาไม่สามารถสื่อสารกันได้ ซึ่งสามารถแก้ปัญหาได้โดยสั่งให้ NBT ทำการ refresh ข้อมูลใหม่ โดยใช้คำสั่ง NBTSTAT -R

Broadcast
เป็นวิธีที่เป็น default ของการค้นหาค่า IP address สำหรับ Windows NT ซึ่งวิธีนี้เหมาะสำหรับเครือข่ายขนาดเล็กเท่านั้น ซึ่งการส่ง broadcast query นี้กระทำผ่าน NetBIOS name service ผ่านทาง UDP port 137
เมื่อส่ง broadcast query ออกไปแล้ว ทุกเครื่องที่อยู่ใน subnet เดียวกันจะได้รับ packet ดังกล่าว ซึ่งต้อง interupt การทำงานของ CPU เพื่อส่งต่อ packet ดังกล่าวไปยัง network protocol โดยทุกเครื่องจะต้องนำ query ดังกล่าวไปตรวจสอบกับ name table ของตนเองว่ามี NetBIOS ตรงกับที่ request มาหรือไม่ หากไม่ตรงก็ไม่ต้องทำอะไร หากตรงเครื่องดังกล่าวจะต้องส่ง response message กลับไปยังผู้ที่ส่ง broadcast query มา

อย่างไรก็ตามการส่ง broadcast query นี้ถือว่าเป็นวิธีที่ดีที่สุดสำหรับเครือข่ายขนาดเล็ก เพราะหากใช้ LHHOSTS file หรือ WINS server แล้ว ผู้ดูแลระบบจะต้องเสียเวลาในการติดตั้งและตั้งค่าค่อนข้างนาน และที่สำคัญการใช้วิธี broadcast นี้ไม่จำเป็นต้องได้รับการดูแลจากผู้ดูแลระบบเลย

โดยปกติจะส่ง broadcast query ออกไปจำนวน 3 ครั้ง หากไม่ได้รับ response message กลับมา โดยมี broadcast query timeout เป็น 750 milliseconds ซึ่งอาจกล่าวได้ว่า ถ้าหากส่ง broadcast query เพื่อหา IP address ของโหนดที่ปิดตัวเองลงไปแล้ว จะต้องใช้เวลาทั้งสิ้นประมาณ 26 วินาที จึงจะรู้ว่าโหนดดังกล่าวไม่ active ซึ่ง ค่า broadcast query timeout ดังกล่าวนี้อาจจะนานหรือเร็วเกินไปสำหรับบางเครือข่าย อย่างไรก็ตาม ผู้ดูแลระบบสามารถตั้งค่าเรจิสทรีย์เพิ่มหรือลดค่า timeout ได้ เช่น หากปรับลดค่า broadcast query timeout เป็น 250 millisecons ก็จะทำให้ ใช้เวลาในการรอลดลงเป็น 26/3 วินาที

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters\BcastQueryTimeout
ค่า default เป็น 750 milliseconds (สำหรับเครือข่ายขนาดเล็กควรปรับค่านี้ลง จะทำให้สามารถเข้าใช้งาน network neighborhood ได้เร็วขึ้น)

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters\BcastNameQueryCount
ค่า default เป็น 3 หมายถึง NBT จะส่ง query ออกไป 3 ครั้ง หากไม่ได้รับ response message

LMHOSTS File
คำว่า LM ย่อมาจาก LAN Manager ซึ่งเป็นซอฟแวร์ที่ใช้ก่อนหน้า Windows NT โดยข้อมูลในไฟล์ lmhosts เป็น text ที่มีรูปแบบแน่นอน ใช้สำหรับกำหนดชื่อเครื่องคอมพิวเตอร์ให้เข้ากับ IP address ที่ต้องการ โดยสามารถ map ได้แม้กับเครื่องที่อยู่คนละ subnet
ไฟล์ lmhosts นี้ถูกเก็บไว้ที่ \drivers\etc\lmhosts ซึ่งไฟล์นี้จะไม่มีอยู่โดย default แต่จะมีไฟล์ lmhosts.sam ซึ่งเป็นไฟล์ตัวอย่างแทน

สำหรับรูปแบบการใช้งานนั้น สามารถดูรายละเอียดเพิ่มเติมได้ที่ http://www.microsoft.com/windows2000/techinfo/reskit/en/ProRK/prcc_tcp_gclb.htm

ผู้ใช้ Windows สามารถกำหนดได้ว่าให้ resolve NetBIOS name โดยดูจากไฟล์ lmhosts โดยการเลือก checkbox ชื่อ “Enable LMHOSTS Lookup” ซึ่งอยู่ภายใต้ Network Control Panel หรือมีวิธีทำอีกวิธีคือ ตั้งค่าเรจิสทรีย์ของ EnableLMHOSTS ให้มีค่าเป็น 1 ซึ่งคีย์ดังกล่าวอยู่ที่

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters\EnableLMHOSTS

มีคำแนะนำเพิ่มเติมสำหรับการเขียนไฟล์ LMHOSTS เพื่อให้เกิดประสิทธิภาพสูงสุดคือ ให้นำ server name ที่ใช้บ่อยที่สุดวางไว้บรรทัดบนสุด ให้ลบบรรทัดที่เป็น comment ออก และนำบรรทัดที่ระบุ server name ที่ไม่ค่อยได้ใช้งานให้ไปวางไว้ด้านล่างของไฟล์

WINS Server
ในช่วงแรกของการนำ TCP/IP มาใช้ใน Unix จะอ้างอิงชื่อเครื่องและ IP address จากไฟล์ HOSTS จนกระทั่งมีการนำระบบ DNS มาใช้อย่างแพร่หลาย เช่นเดียวกัน ระบบปฏิบัติการ Windows ของ Microsoft นั้น จะอ้างอิงข้อมูลชื่อเครื่องและ IP address จากไฟล์ LMHOSTS จนกระทั่งมีการนำ WINS server มาใช้แทน ซึ่ง WINS Server และ DNS มีข้อดีที่เหมือนกันคือเป็นระบบที่สามารถควบคุมข้อมูลจากจุดเดียวได้ ง่ายต่อการดูแลของผู้ดูแลระบบ
WINS server คือ NT server หรือสูงกว่าที่รัน WINS server service ซึ่งเครื่องคอมพิวเตอร์อื่นๆ ในเครือข่ายจะลงทะเบียนชื่อเครื่องคอมพิวเตอร์นั้นๆ กับ WINS server โดยข้อมูลที่จะถูกเก็บไว้ที่ WINS server คือ ชื่อเครื่องและ IP address

ข้อดีของการใช้ WINS server คือทำให้ฐานข้อมูล NetBIOS name, IP address เป็นหนึ่งเดียว สามารถควบคุมดูแลได้ง่าย และยังสามารถใช้งานข้าม subnet ได้อีกด้วย เมื่อ client ต้องการทราบชื่อ IP address ฝั่ง client จะส่ง NetBIOS session service ไปยัง WINS server โดยตรง แทนที่การส่ง NetBIOS name service ซึ่งเป็นการส่ง broadcast query ออกไปทั้งเครือข่าย ซึ่งหมายถึงช่วยให้ลดความคับคั่งของเครือข่ายลงได้

HOSTS File and DNS
ระบบปฏิบัติการรุ่น NT 4.0 และรุ่นต่อๆ มา ได้มีการนำระบบ UNIX hostname มาใช้ร่วมกับการทำ NetBIOS name resolution ด้วย โดยไฟล์ hosts จะถูกเก็บไว้ที่ \drivers\etc\hosts ซึ่งลักษณะข้อมูลที่เก็บในไฟล์นี้มีสองคอลัมน์คือ IP address และ hostname
ข้อดีของการนำระบบ DNS มาใช้คือ

เพิ่มความยืดหยุ่นเรื่องชื่อได้ดีว่า NetBIOS name แบบเดิม เพราะความยาวของ NetBIOS name ถูกจำกัดไว้ที่ 15 ตัวอักษร(สำหรับ Microsotf’s OS) ส่วนความยาวของชื่อในระบบ DNS นั้นสามารถใช้งานได้ถึง 25 ตัวอักษร และยังเป็นชื่อที่เป็น hierarchy อีกด้วย เช่น สามารถใช้ชื่อ \department.company.com\share แทน \dep_company\share ได้ ซึ่งสามารถจดจำได้ง่ายกว่า
ในเครือข่ายขนาดใหญ่ที่ติดตั้งระบบ DNS ไปแล้ว ไม่มีความจำเป็นต้องติดตั้ง WINS server ควบคู่กันไปด้วย เพราะทำให้เสียเวลาและเกิดความซ้ำซ้อนของข้อมูล นอกจากนี้ระบบ DNS ยังมีความสามารถมากกว่า WINS server เช่น สามารถทำ load balancing ได้
นอกจากนี้ระบบ DNS ยังสามารถกำหนดชื่อเครื่องได้หลายชื่อสำหรับ 1 IP address ในขณะที่ NetBIOS name สามารถกำหนดชื่อเครื่องคอมพิวเตอร์ได้เพียง 1 ชื่อต่อ 1 เครื่องเท่านั้น และการเปลี่ยนแปลงชื่อเครื่องก็กระทำได้โดยไม่จำเป็นต้องการการแก้ไขใดๆที่ client machine

จากวิธีในการค้นหา IP address ทั้ง 5 วิธีที่กล่าวมา จะเห็นได้ว่าแต่ละวิธีก็มีข้อดีข้อเสียแตกต่างกันไป การนำไปใช้ขึ้นอยู่กับสภาวะหลายๆ อย่าง เช่น ขนาดของเครือข่าย ระบบแจกจ่าย IP หรือนโยบายขององค์กร การนำวิธีใดวิธีหนึ่งไปใช้อย่างเดียวอาจจะไม่เกิดประสิทธิผลสูงสุด จำเป็นต้องมีการประยุกต์ใช้หลายวิธีควบคู่กันไป ซึ่งจะอธิบายในหัวข้อต่อไปนี้

The Major Name Resolution Method
ดังที่กล่าวมาแล้วว่า การค้นหา IP address จาก NetBIOS name นั้นสามารถทำได้ผ่าน 5 วิธีที่กล่าวมาแล้ว แต่เพื่อประสิทธิภาพสูงสุดจึงได้มีการประยุกต์นำหลายๆ วิธีดังกล่าวมาใช้อย่างเป็นแบบแผน โดย Microsoft ได้กำหนดให้สามารถทำได้ 4 วิธีหลักๆ คือ b-node, p-node, m-node และ h-node ซึ่งแต่ละวิธีก็มีข้อดีข้อเสียแตกต่างกันไป

B-Node (broadcast node)
เริ่มต้นด้วยการตรวจสอบจาก LMHOSTS cache หากพบข้อมูลใน cache ก็จะ return IP address ดังกล่าวกลับไป
หากไม่พบ NetBIOS name ในข้อ 1 ก็จะส่ง broadcast query ซึ่งหากมีโหนดนั้น active อยู่ ก็จะส่ง IP address กลับมา
ท้ายสุดหากยังไม่พบ NetBIOS name ก็จะค้นหาจากไฟล์ LMHOSTS
P-Node (point to point node)
p-node จะไม่ใช้การส่ง broadcast สำหรับการค้นหา IP address แต่จะอ้างอิงจาก WINS server แทน (หากผู้ใช้เลือก WINS server จาก netwok control panel ระบบ Windows จะเลือกให้การค้นหา IP address เป็น p-node โดยอัตโนมัติ)
ข้อเสียของ p-node คือ หาก WINS server ไม่สามารถทำงานได้ จะทำให้ client ไม่สามารถ access ไปยังเครื่องคอมพิวเตอร์อื่นได้เลย ทั้งนี้ p-node เหมาะสำหรับเครือขนาดขนาดกลางเป็นต้นไปที่ต้องการการรวมศูนย์ฐานข้อมูลไว้ที่ WINS server
M-Node (mixed node)
เป็นการผสมผสานกันระหว่าง b-node และ p-node โดยขั้นแรกจะทำงานแบบ b-node ก่อนโดยการส่ง broadcast query จากนั้นจึงใช้วิธีของ p-node คือขอข้อมูลจาก WINS server ในกรณีที่การส่ง broadcast query ในครั้งแรกไม่ได้ response ตอบกลับ
วิธีนี้ช่วยลดการทำงานของ WINS server ลงไปได้มาก และช่วยให้ผู้ดูแลระบบเครือข่ายที่อยู่ไกลออกไปสามารถปลับเปลี่ยนเพิ่มลด host ได้โดยไม่จำเป็นต้องแก้ไขข้อมูลที่ WINS server
นอกจากนี้ยังมีความเหมาะสมกับระบบที่มี WAN link ค่อนข้างช้า และการ access WINS server จะต้อง WAN link ดังกล่าว
H-Node (hybrid node)
เป็นการผสมผสานระหว่าง p-node และ b-node เช่นกัน แต่จะใช้วิธีของ p-node ก่อนเป็นอันดับแรก หากไม่สำเร็จจึงจะใช้วิธีของ b-node ต่อไป

flow chart แสดงขั้นตอนการทำ Name Resolution ของ Windows 2000

Default Node Type for Microsoft Client
ผู้ใช้สามารถตรวจสอบได้ว่า ระบบปฏิบัติของ Microsoft Windows ที่ใช้อยู่ใช้กลไก name resolution แบบใด โดย

Windows 2000, Windows NT ให้ตรวจสอบจาก
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters

Value Type: REG_DWORD – Number
Valid Range: 1,2,4,8 (b-node, p-node, m-node, h-node)
Default: 1 or 8 ขึ้นกับการตั้งค่าของ WINS server configuration

หรือตรวจสอบได้จากคำสั่ง ipconfig /all

Windows 95
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP

Value type: DWORD
Valid range: 1, 2, 4, or 8
Default: 1 (b-node) ถ้าไม่มีการระบุ WINS servers; 8 (h-node) ถ้ามีการระบุ WINS servers และ NodeType ไม่ได้ระบุเป็นชนิดอื่น

หรือตรวจสอบได้จากคำสั่ง winipcfg

สรุป
NetBIOS เป็นโปรโตคอลที่ใช้งานกันอย่างแพร่หลายโดยเฉพาะในเครือข่ายขนาดเล็ก ทำให้สามารถ share file, share printer หรือใช้งาน application อื่นได้อย่างสะดวก ปัจจุบันจะปรากฏการใช้งาน NetBIOS over TCP/IP มากกว่ารูปแบบอื่น คงเป็นเพราะมีการใช้งานอินเทอร์เน็ตซึ่งใช้โปรโตคอล TCP/IP กันอย่างแพร่หลาย

ขอขอบคุณ แหล่งที่มา:
ชื่อเรื่อง : ทำความรู้จักกับ NetBIOS
เรียบเรียงโดย : ภูวดล ด่านระหาญ
เผยแพร่เมื่อ : 4 มิถุนายน 2545

Leave a Reply

Your email address will not be published. Required fields are marked *