<< NetBIOS คืออะไร? >>

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

NetBIOS ย่อมาจาก Network Basic Input/Output System ถูกพัฒนาขึ้นโดย Sytec

NetBIOS ถูกออกแบบมาเพื่อเป็น protocol ที่เป็นตัวเชื่อม (interface) ระหว่างระบบปฏิบัติการกับฮาร์ดแวร์ เพื่อให้ application สามารถสื่อสารกับเครือข่ายได้โดยเป็นอิสระจากฮาร์ดแวร์ ทั้งนี้ application จะสามารถเข้าถึงเลเยอร์สูงสุดของ OSI model ได้เท่านั้น ซึ่งทำให้ application ที่สร้างขึ้นมาสามารถทำงานได้ในเครือข่ายที่มี network environment ไม่เหมือนกัน ทั้งนี้ NetBIOS จะทำหน้าที่ขนส่งข้อมูลไปยัง application ที่อยู่บนเครื่องอื่นในเครือข่ายให้

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 ประเภทคือ

  1. Unique name คือชื่อที่ไม่สามารถซ้ำกันได้ในเครือข่ายวงเดียวกัน โดยส่วนใหญ่จะเป็น Computer name เช่น MYMACHINE
  2. Group name คือชื่อของ domain หรือ workgroup ที่เครื่องนั้นๆ สังกัดอยู่ เช่น MYWORKGROUP

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

  1. Session mode เป็นการรับส่งข้อมูลที่มีขนาดใหญ่ มีระบบตรวจสอบข้อผิดพลาดและการกู้คืน (recovery) แต่มีข้อเสียที่เป็นการสื่อสารแบบ 1 ต่อ 1 เท่านั้น ขนาดของข้อมูลสามารถขยายได้สูงสุดถึง 64 KByte นอกจากนี้ยังมี NetBIOS session control command และ NetBIOS session data tranfer command ซึ่งช่วยให้สามารถทำการสื่อสารผ่านทาง session ได้ (connection-oriented connection)
  2. Datagram mode (รวมถึงการส่งข้อมูลแบบ broadcast) สามารถรับส่งข้อมูลได้เร็วที่สุด แต่ไม่มีการรับประกันว่าข้อมูลจะไปถึงปลายทางหรือไม่ และไม่สามารถส่งข้อมูลซ้ำในกรณีที่ข้อมูลไปไม่ถึงปลายทางได้ โดยปกติจะมีขนาด 512 Byte แต่สามารถสื่อสารกับเครื่องคอมพิวเตอร์อื่นได้หลายเครื่องในเวลาเดียวกัน (connectionless connection)

NetBIOS Service over TCP/IP

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

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

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

  1. 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
  1. Broadcast
    เป็นวิธีที่เป็น default ของการค้นหาค่า IP address สำหรับ Windows NT ซึ่งวิธีนี้เหมาะสำหรับเครือข่ายขนาดเล็กเท่านั้น ซึ่งการส่ง broadcast query นี้กระทำผ่าน NetBIOS name service ผ่านทาง UDP port 137

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

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

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