|
|
|||||||
ชื่อเรื่อง : ทำความรู้จักกับ NetBIOS
เรียบเรียงโดย : ภูวดล ด่านระหาญ
เผยแพร่เมื่อ : 4 มิถุนายน 2545
บทนำ
ผู้ใช้ระบบเครือข่ายคอมพิวเตอร์ส่วนใหญ่คงเคยได้ยินเรื่องราวของ NetBIOS กันมาบ้าง
หลายคนอาจจะเกิดความสับสน ไม่เว้นแม้แต่ผู้ดูแลระบบเครือข่ายขององค์กรเอง เหตุผลหนึ่งอาจจะเป็นเพราะมีศัพท์ที่เกี่ยวข้องมากมาย
เช่น NetBIOS, NetBEUI, CIFS, SMB เหล่านี้ล้วนแต่สร้างความสับสนตั้งแต่ยังไม่เริ่มศึกษา
และอีกเหตุผลหนึ่งอาจจะเป็นเพราะว่า มีการนำ NetBIOS ไปใช้อย่างหลากหลายแต่ขาดมาตรฐานควบคุมที่ดี
อย่างไรก็ตาม หากกล่าวถึงเรื่องความปลอดภัยบนเครือข่ายอินเทอร์เน็ตในปัจจุบัน ก็จำเป็นต้องอ้างถึงเรื่องของ NetBIOS อย่างแน่นอน เอกสารฉบับนี้จะให้ความกระจ่างตั้งแต่ประวัติความเป็นมาและการนำ NetBIOS ไปใช้งานในรูปแบบต่างๆ ตั้งแต่การทำงานของ NetBIOS ของโปรโตคอลรุ่นเก่าอย่าง NetBEUI จนกระทั่งการทำงานของ NetBIOS บน IP network ซึ่งใช้งานกันอย่างแพร่หลายในปัจจุบัน โดยจะเน้นไปที่การนำ NetBIOS over TCP/IP มาใช้ในระบบปฏิบัติการของ Microsoft
เอกสารฉบับนี้เหมาะสำหรับผู้ดูแลระบบเครือข่ายที่มีความรู้พื้นฐานเกี่ยวกับเครือข่ายมาบ้างแล้ว โดยเฉพาะความรู้ที่เกี่ยวข้องกับ TCP/IP network
ความเป็นมาของ NetBIOS
แนะนำ 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
| 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 ประเภทคือ
ข้อควรจำ: เนื่องจาก 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 วิธีหลักๆ คือ
NetBIOS Service
หลายคนอาจจะเคยใช้งาน browsing service (ผ่านทาง network neighborhood), domain
authentication, trust, file sharing หรือ printer sharing ซึ่ง application เหล่านี้ล้วนทำงานได้โดยใช้พื้นฐานจาก
บริการพื้นฐานของ NetBIOS ซึ่งมี 3 อย่างด้วยกัน ได้แก่
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
IPX เป็นโปรโตคอลที่พัฒนาขึ้นโดย Novell Netware และได้มีการเผยแพร่การใช้งาน NetBIOS
over IPX ในปี 1986 ตารางด้านล่างแสดงกลไกการทำงานของ 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 ฉบับ ดังนี้
ทั้งนี้เพื่อกำหนดมาตรฐานในการนำ NetBIOS มาใช้งานบน TCP/IP network ให้สามารถใช้งาน NetBIOS service ได้ครบ โดยพยายามให้มีการเปลี่ยนแปลงให้น้อยที่สุดและสามารถเข้ากับมาตรฐานเดิมได้ และยังทำงานได้อย่างยืดหยุ่นและมีประสิทธิภาพ โดยไม่จำเป็นต้องมีศูนย์กลางในการควบคุม (ไม่ใช่ central management) และสามารถทำงานได้โดยไม่จำเป็นต้องใช้ facility เสริมอื่นใด
NetBIOS name สามารถเปรียบได้กับระบบ Domain Name System (DNS) ใน TCP/IP protocol แต่ก็มีข้อแตกต่างกันพอสมควร คือ
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 มากกว่า เพราะมีการนำไปใช้งานมากกว่า
| 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
ซึ่งมีรายละเอียดเพิ่มเติมของแต่ละบริการดังนี้
อย่างไรก็ตามหากกล่าวถึง service หรือ application ที่ทำงานอยู่ในเลเยอร์ที่สูงกว่า NetBIOS มักจะพบว่า บริการดังกล่าวมักจะอาศัยบริการพื้นฐานทั้ง 3 อย่างของ NetBIOS จึงจะสามารถทำงานได้อย่างสมบูรณ์ เช่น Messenger Service ซึ่งสามารถใช้งานได้โดยการใช้คำสั่ง net send <destination> 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 วิธีคือ
ข้อดีของการค้นหา 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 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 นี้ถูกเก็บไว้ที่ <systemroot>\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 คือ 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 ออกไปทั้งเครือข่าย ซึ่งหมายถึงช่วยให้ลดความคับคั่งของเครือข่ายลงได้
ข้อดีของการนำระบบ DNS มาใช้คือ
จากวิธีในการค้นหา IP address ทั้ง 5 วิธีที่กล่าวมา จะเห็นได้ว่าแต่ละวิธีก็มีข้อดีข้อเสียแตกต่างกันไป การนำไปใช้ขึ้นอยู่กับสภาวะหลายๆ อย่าง เช่น ขนาดของเครือข่าย ระบบแจกจ่าย IP หรือนโยบายขององค์กร การนำวิธีใดวิธีหนึ่งไปใช้อย่างเดียวอาจจะไม่เกิดประสิทธิผลสูงสุด จำเป็นต้องมีการประยุกต์ใช้หลายวิธีควบคู่กันไป ซึ่งจะอธิบายในหัวข้อต่อไปนี้
The Major Name Resolution Method
ดังที่กล่าวมาแล้วว่า การค้นหา IP address จาก NetBIOS name นั้นสามารถทำได้ผ่าน
5 วิธีที่กล่าวมาแล้ว แต่เพื่อประสิทธิภาพสูงสุดจึงได้มีการประยุกต์นำหลายๆ วิธีดังกล่าวมาใช้อย่างเป็นแบบแผน
โดย Microsoft ได้กำหนดให้สามารถทำได้ 4 วิธีหลักๆ คือ b-node, p-node, m-node
และ h-node ซึ่งแต่ละวิธีก็มีข้อดีข้อเสียแตกต่างกันไป
![]() |
![]() |
flow chart แสดงขั้นตอนการทำ Name Resolution ของ Windows 2000 |
Default Node Type for Microsoft Client
ผู้ใช้สามารถตรวจสอบได้ว่า ระบบปฏิบัติของ Microsoft Windows ที่ใช้อยู่ใช้กลไก
name resolution แบบใด โดย
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
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 กันอย่างแพร่หลายนั่นเอง อย่างไรก็ตามยังมีรายละเอียดบางส่วนที่ยังไม่ได้นำมากล่าวถึงในเอกสารฉบับนี้
ไม่ว่าจะเป็น SMB หรือความปลอดภัยในการใช้งาน เนื่องจากเกรงว่าเอกสารจะมีความยาวและมีเนื้อหาที่หลากหลายมากเกินไป
ซึ่งจะได้นำเสนอในโอกาสต่อไป
Reference
| Home
|| เอกสารเผยแพร่ || Security Basic
ThaiCERT Disclaimer | Copyright © 2001 ThaiCERT(NECTEC). All rights reserved. |