NetBIOS คืออะไรมักเจอใน Router

NetBIOS คืออะไร เจ้า NetBIOS เนี๊ยะมาจากคำเต็มๆ ที่ว่าNetwork Basic Input/Output System เป็น การสื่อสารที่ทำงานในเลเยอร์ 5 หรือที่เรียกว่า Session Layer ตามรูปแบบ OSI Model ส่วนหน้าที่ของมันคือ แลกเปลี่ยนชื่อเครื่องเป็นหมายเลย IP ให้แก่คอมพิวเตอร์ในเครือข่ายเดียวกันโดยไม่จำเป็นต้องใช้เครื่องแม่ข่าย หรือ server (แต่จะใช้ก็ได้น่ะ เค้าเรียกว่า WINS Server การทำงานก็จะคล้ายๆ กับ DNS Server นั่นแหละแต่จะง่ายกว่ากันหลายขุม แต่กระนั้นก็ไม่ค่อยมีใครทำขึ้นมาใช้หรอก เพราะปกติมันก็ทำงานได้อยู่แล้ว เอ่อ.... หมายถึงบนระบบ Windows อะน่ะ) การทำงานของเจ้า NetBIOS จะอธิบายง่ายๆ ได้ว่า สมมติคอมพิวเตอร์ A ต้องการดึงข้อมูลสักอย่างจากคอมพิวเตอร์ B เจ้าคอมพิวเตอร์ A ก็จะจัดการตะโกนถามชาวบ้านในเครือข่าย(ทั้งๆ ที่บางทีมันก็รู้อยู่แล้ว)ว่า “มีใครรู้ IP ของเครื่อง B บ้าง ” ก็จะมีเครื่องนึงแถวๆ นั้น(บางทีก็เป็นเครื่อง B นั่นแหละ)ตอบกลับมา(สมมติ)ว่า “192.168.1.2” ถ้ามีใครตอบกลับมาอีกหลังจากนั้นมันก็จะไม่รับแล้ว แล้วเจ้าคอมพิวเตอร์ A จึงเริ่มร้องขอข้อมูลที่ต้องการจากคอมพิวเตอร์ B ต่อไปโดยใช้ IP ที่ได้มานั้นแหละ


เอาหล่ะหลังจากรู้จักการทำงานของ NetBIOS เป็นที่เรียบร้อยแล้วก็มาสู่ปัญหาของเราบ้าง เมื่อ NetBIOS มันทำงานโดยอาศัยการตะโกนถามชาวบ้านทำให้ทุกคนในเครือข่ายได้ยินหมด (ภาษาเน็ตเวิร์คเรียกว่า “broadcast”) ทำให้โปรแกรมเมอร์บางคน (โดยเฉพาะบริษัทนโม) เอาไปใช้ในการป้องกันการใช้งานโดยใช้ License ช้ำกันด้วยการเขียนโปรแกรมให้มีการทำงานผ่านNetBOIS และมีการตรวจจับการbroadcast นั้นและส่งข้อมูลกลับ ดังนั้นการในไปใช้เพื่อการศึกษาจึงก่อให้เกิดปัญหาเราจึงจำเป็นต้องมีการปิด การทำงานของ NetBIOS นั้นซะ วิธีการปิดนั้นก็สุดแสนจะง่ายดาย เริ่มจากการเข้าไปที่ Control Panel แล้ว Double Click เลือก Network Connections แล้วจะมี icon ของเครือข่ายที่เราใช้งานได้อยู่ให้เราคลิกขวาเลือก Properties ของเครือข่ายที่เราต้องการปิดการใช้งานนั้น นอกจาก NetBOIS บน TCP/IP แล้ว NetBIOS บน NetWare หรือ IPX/SPX ก็ยังต้องปิดมันด้วย (ถ้ามีการเปิดไว้น่ะ เพราะปกติมันจะไม่ได้เปิดไว้) คราวนี้มาถึงปัญหาเพราะเราใช้เพื่อการศึกษาในบางครั้งเราต้องทำการ share ข้อมูลหรือ share folder เพื่อให้ผู้เรียนได้เข้าถึงข้อมูลในส่วนที่เราเปิดไว้ให้(เช่นไว้ส่งงานเป็น ต้น) หากเราจะให้ผู้เรียนเห็น IP อาจจะดูเป็นการยั่วยุทางจิตใจมากไปเราจึงจำเป็นต้องเปลี่ยนจาก IP เป็นชื่อเครื่อง แต่ทว่าหากเราจะใช้งานอ้างอิงธรรมดาคงไม่ได้ซะแล้ว เพราะเราไปปิด NetBIOS ซะแล้วเพราะฉะนั้นต้องใช้ตัวช่วย ให้ไปเปิดไฟล์ที่มีชื่อว่า hosts (ไม่มีนามสกุล)อยู่ที่C:WINDOWS\system32\drivers\etc ใช้โปรแกรม notepad หรือ text editor ตัวอื่นก็ได้เปิดแล้วจัดการจับคู่ IP Address เข้ากับชื่อเครื่องที่ต้องการ เช่น 192.168.1.2 server02 เป็นต้น (ถ้าอยากบล็อก site ไหนจะใช้วิธีกำหนดเป็น localhost ก็ได้น่ะ เช่น 127.0.0.1 sanook.com) คราวนี้ปัญหาของผมมันเกิดขึ้นตอนที่เราได้เครื่องชุดใหม่มา 1 ชุดใหญ่ (50+ เครื่อง) หลังติดตั้งระบบแล้วปรากฎว่ามันไม่วิ่งหา Server ที่กำหนดไปในไฟล์ hosts จึงพยายามหาทางแก้ไขต่างๆ นานา ครั้งจะส่ง email ไปหา microsoft ก็เกรงใจเค้า จึงเข้าไปหาข้อมูลต่างๆที่ support.microsoft.com ปรากฎว่าเจอครับพี่น้อง เค้าให้เข้าไปที่ services.msc แล้วไปนจัดการ enable ตรง TCP/IP NetBIOS Helper ซะ แล้วอย่าลืมตั้งให้เป็น Automatic ด้วยจะได้ไม่ต้องมา enable ทุกครั้งตอนเปิดเครื่อง ตอนนี้เครื่องในการดูแลของข้าพเจ้าจึงสามารถใช้งานโปรแกรมจากบริษัท นโมฯ ได้แล้วจ้า

จากรูปถ้ามีการเซ็ตค่าดีดีก็สามารถ ใช้เน็ค ADSL รวมกับคนอื่นๆ หรือ สามารถบังคับให้ในค่าย วง
Lan นั้นไม่ให้เปิด websit อะไรก็ได้หรือกำหนดให้ลูกค่ายบอกค่าหรือกำหนดความเร็วได้อีกด้วย แต่
ถ้า set ค่าไม่ดีดี ระบบอาจร่ม หรือ เน็ตไม่เดินได้เลยที่เดียว

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


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

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

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

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