เคยสับสนไหมครับว่า DNS กับ NETBIOS มันต่างกันอย่างไร หรือทุกวันนี้คิดว่ามันคือสิ่งเดียวกันจนคุณแยกมันไม่ออก จนเป็นที่มาของหลายปัญหาเช่น Ping ชื่อเครื่องเจอ, Ping ชื่อเว็บไม่เจอ, ทำไมใช้ IP เข้าได้, ทำไมใช้ชื่อเข้าไม่ได้ แล้วเรียกใช้งานยังไง เอาล่ะวันนี้จะมาแถลงไขกันให้ง่าย ๆ
DNS ย่อมาจาก Domain Name System แปลตรงตัวเลยคือ ระบบชื่อโดเมน ถ้าคุณไปค้นหาตามแหล่งข้อมูลต่าง ๆ คุณจะต้องพบกับศัพท์เทคนิคยาก ๆ หลายอย่าง มีรูทไอนั่น มีรูทไอนี่ อันนี้เป็น Parent อันนี้เป็น Child อ่านแล้วงงแทนครับ แต่มันก็เป็นทฤษฎีที่ดีนะครับถ้าหากคุณเข้าใจก่อนว่าสิ่งที่เค้ากำลังพูดถึง มันหมายถึงอะไร ดังนั้นเราจะมาทำความเข้าใจกันง่าย ๆ กับ DNS ดังนี้
DNS จะมีการเรียกอ้างอิงแบบเป็นลำดับชั้น (นั่นเริ่มยากกับเค้าละ) คือมีการแบ่งลำดับชั้นด้วยเครื่องหมาย จุด (.) เช่น คุณจะเรียกโดเมน a.local จะเห็นว่า คุณกำลังเรียกหาเจ้าของที่ชื่อว่า a ซึ่ง a นั้น อยู่ภายใต้ local
หรือคุณจะเรียกหาโดเมน x.a.local นั่นแสดงว่า คุณกำลังเรียกหาเจ้าของที่ชื่อว่า x โดยที่ x นั้นอยู่ภายใต้ a.local
พยายามให้คุณมองว่า สิ่งที่คุณกำลังเรียกหานั้น คือคำแรกก่อนที่จะเจอเครื่องหมายจุด และสิ่งที่คุณจะได้กลับมา คุณก็จะได้ x ตอบกลับมาโดยตรง คุณจะได้สิ่งที่อยู่ใน x ตอบกลับมา ไม่ใช่สิ่งที่อยู่ใน a.local ตัวอย่างเช่น
คุณเรียกเว็บไซต์ a.local คุณก็จะได้เว็บไซต์ a ตอบกลับมายัง Browser
คุณเรียกเว็บไซต์ x.a.local คุณก็จะได้เว็บไซต์ x กลับมา ไม่ใช่เว็บไซต์ a
จะเห็นจากภาพได้ว่า คุณเรียกถึงลำดับชั้นใด คุณก็จะได้ลำดับชั้นนั้นตอบกลับมา
ทีนี้ DNS มันไม่ได้เอาไว้ใช้กับเรื่องเว็บไซต์อย่างเดียว มันอาจจะถูกกำหนดให้กับชื่อเครื่องคอมพิวเตอร์ก็ได้ หรือชื่อเครื่อง Server ที่ทำหน้าที่เป็น Domain Controller ก็ได้ ดังนั้นถ้าเปรียบเทียบกับภาพเดิม เวลาคุณเรียกถึงชื่อเครื่องคอมพิวเตอร์ เช่น
คุณเรียกชื่อเครื่องคอมพิวเตอร์ชื่อ computer.local คุณก็จะได้รับการ Reply จาก computer กลับมา
คุณเรียกชื่อเครื่องคอมพิวเตอร์ชื่อ notebook.computer.local คุณก็จะได้รับการ Reply จาก notebook กลับมา
การที่มันมีลำดับชั้นที่ถูกแบ่งคั่นด้วยจุด (.) นั่นหมายถึงว่า ลำดับชั้นมีมีความสัมพันธ์ต่อกัน ซึ่งความสัมพันธ์นี้จะถูกมองได้หลายกรณี เช่น notebook.computer.local ก็จะหมายถึง notebook อยู่ภายใต้ computer ซึ่งอาจมีการใช้ทรัพยากรที่อยู่ในขอบเขตเดียวกัน, การยืนยันตัวตนที่อยู่ในขอบเขตเดียวกัน, การสอบถามจากแหล่งเดียวกันได้ เป็นต้น ซึ่งสิ่งเหล่านี้สามารถถูกสืบทอดมาได้ เพราะมันมีความสัมพันธ์กัน แต่เพียงถูกคั่นด้วย จุด เท่านั้นเอง
NETBIOS ย่อมาจาก Network Basic Input/Output System อันนี้ถ้าคุณไปค้นหาตามแหล่งข้อมูลล่ะก็ ผมเชื่อได้เลยว่าคุณจะต้องพบกับประวัติศาสตร์ชาติตระกูลของ NETBIOS ตั้งแต่สมัยฟริ้นสโตน ที่มีการกลายพันธุ์มาจาก NET นั่น NET นี่ ซึ่งเรื่องนี้ ผมไม่หยิบมาเล่าละกัน เพราะมันซ้ำกับข้อมูลที่มีอยู่แล้ว
NETBIOS ผมบอกสั้น ๆ เลยว่า มันคือ ชื่อเครื่องคอมพิวเตอร์ของคุณ จบ !! ไม่มีลำดับชั้น ไม่มีจุด ไม่มีความสัมพันธ์ในขอบเขตใด ๆ ทั้งสิ้น ถ้าคุณเรียกชื่อเครื่อง computer เช่น COM1 คุณก็จะได้คำตอบ Reply จาก COM1 กลับมา แค่นั้น
แล้ว DNS กับ NETBIOS ทำงานต่างกันอย่างไร ?
จำเหตุการณ์ที่คุณเข้าเว็บผ่าน IP ได้ แต่เข้าผ่านชื่อโดเมนไม่ได้ บ้างไหมครับ หรือเหตุการณ์ที่คุณเรียกชื่อเครื่องได้ แต่เรียกชื่อเว็บไม่ได้ อะไรก็แล้วแต่ที่คุณล้วนเคยเจอมา สามารถอธิบายได้ดังนี้การสื่อสารสำหรับคอมพิวเตอร์ จะใช้สิ่งที่สำคัญอยู่ 2 อย่าง คือ IP Address กับ MAC Address ซึ่งในเรื่องของ MAC Address นั้นจะมีกระบวนการของมันอีก แต่จะยังไม่พูดถึง ผมอยากให้โฟกัสไปที่เรื่อง IP Address อย่างเดียว โดยที่บอกไว้คือ ไม่ว่าจะเป็นชื่อแบบไหนก็แล้วแต่ จะ NETBIOS หรือ DNS สุดท้ายของกระบวนการสิ่งที่ได้มาคือ เลข IP Address ทั้งสิ้น เครื่องจะคุยกันผ่าน IP Address ล้วน ๆ ไม่ใช่ชื่อเครื่อง หรือ ชื่อโดเมนเนม ดังนั้น เมื่อคุณเรียกชื่อเครื่องใด ๆ ก็แล้วแต่ที่อยู่ในเครือข่ายเดียวกัน หรือต่างเครือข่ายที่ทราฟฟิกสามารถวิ่งถึงกันได้ การเรียกแบบ IP Address ย่อมสำเร็จเสมอ
แต่การที่นำชื่อ NETBIOS หรือ DNS มาตั้งชื่อแทนการเรียกแบบ IP Address นั้น มันทำให้จดจำง่ายเท่า นั้นเอง ซึ่งไม่ว่าคุณจะเรียกปลายทางในรูปแบบใด สุดท้ายมันก็จะต้องทำการค้นหาว่า ชื่อที่คุณเรียก มี IP Address เป็นอะไร แล้วมันจึงนำ IP Address นั้นไปสื่อสารกันเอง ดังนั้นเหตุการณ์ที่ว่าเมื่อคุณเรียกปลายทางด้วยชื่อใด ๆ แล้วไม่สามารถติดต่อได้ นั่นแสดงว่า กระบวนการ Name Resolution ของคุณนั้นไม่สามารถทำงานได้สมบูรณ์ พูดง่าย ๆ ก็คือ มันไม่สามารถแปลงชื่อเป็น IP Address ได้นั่นเอง เมื่อไม่มี IP Address ก็ไม่สามารถคุยกันได้ ไม่สามารถติดต่อสื่อสารกันได้, OK มั๊ย ?
NETBIOS name resolution
การที่คุณเรียกชื่อเครื่องคอมพิวเตอร์ ไม่ว่าจะเป็นการ Ping หรือเรียก Web Server โดยใช้เพียงชื่อ NETBIOS เช่น Ping COM1 หรือ http://COM1 หรือ Browse Computer ผ่าน Network เช่น \\COM1 กระบวนการของมันคือ มันจะตรวจสอบก่อนว่า ขั้นตอนการถามหาเครื่องปลายทางนั้นถูกกำหนดไว้ให้ใช้การถามหาในรูปแบบใด ซึ่งรูปแบบการค้นหานั้นแบ่งเป็น 4 รูปแบบดังนี้รูปแบบที่ 1 b-node (Broadcast)
เป็นการถามหาโดยจะหาจาก Cache ในเครื่องตัวเองก่อน ซึ่งการได้ Cache มานั้นแน่นอนว่า ย่อมมีการติดต่อสื่อสารกันมาก่อนหน้านั้นแล้วจึงจะมี Cache เกิดขึ้น และแน่นอน ถ้าหากไม่มีการสื่อสารกันครั้งแรกเกิดขึ้น Cache ก็ย่อมไม่มี มันก็จะทำการค้นหาต่อไปโดยการ Broadcast ตะโกนหาว่าเครื่องใดชื่อ COM1 ถ้ามี มันก็จะตอบกลับมาพร้อมกับหมายเลข IP Address แล้วจึงทำการสื่อสารกันวิธีนี้จะมีผลเสียคือ กระบวนการที่จะเกิดขึ้นทุกครั้งคือการ Broadcast ซึ่งจะทำให้เกิดทราฟฟิกในเครือข่ายมาก
รูปแบบที่ 2 p-node (peer to peer)
รูปแบบนี้ก็จะยังคงการถามหาจาก Cache ในเครื่องตัวเองก่อนเช่นกัน แต่ถ้าหากไม่สามารถค้นหา IP Address ปลายทางจาก Cache ตัวเองได้ มันก็จะสอบถามไปยังเครื่อง WINS Server (วินซ์) ซึ่งสุดท้ายแล้ว WINS Server ก็จะตอบคำถามกลับมาเป็นเลข IP Address ปลายทางเช่นเดียวกันวิธีนี้จะมีจุดอ่อนคือ หากไม่สามารถติดต่อ WINS Server ได้ ก็จะไม่สามารถสื่อสารกับคอมพิวเตอร์เครื่องอื่นได้เลย แม้ว่าคอมพิวเตอร์ปลายทางนั้นมีอยู่จริงก็ตาม
รูปแบบที่ 3 m-node (Mixed)
จะเป็นการค้นหาเริ่มจาก Cache ในเครื่องตัวเองอีกเช่นกัน แต่เมื่อค้นหาไม่พบ จึงจะทำการ Broadcast ออกไปเพื่อค้นหา IP Address เครื่องปลายทาง แต่ถ้ายังไม่พบอีก ก็จะไปสอบถามจาก WINS Server แทนวิธีนี้เป็นการผสมระหว่าง b-node และ p-node แต่ก็ยังมีจุดอ่อนตรงที่ แม้จะมี WINS Server คอยตอบคำถามในการ Resolve IP Address แล้ว แต่มันก็ยังคงมีทางเลือกเป็นการ Broadcast ก่อนอยู่ดี ทราฟฟิกจะถูกส่งออกกระจายไปยังทุกเครื่องเสมอ เช่นเดียวกับ b-node แต่ก็ยังมีแผนสำรองตรงที่ หากไม่สามารถ Broadcase ถามหา IP Address ได้ไม่ว่าจะอะไรก็ตาม ก็ยังคงมี WINS Server คอยตอบคำถามให้เสมอ
รูปแบบที่ 4 h-node (Hybrid)
รูปแบบนี้จะทำการค้นหาจาก Cache ในเครื่องตัวเองก่อน (อีกแล้ว) เมื่อไม่สามารถค้นหา IP Address ของเครื่องปลายทางได้ ก็จะสอบถามไปยัง WINS Server เพื่อค้นหา IP Address บน WINS Server และในที่สุดถ้า WINS Server ไม่สามารถตอบได้ ก็จะใช้การ Broadcast เพื่อตะโกนถามหาทุกเครื่องเป็นขั้นสุดท้ายจะเห็นได้ว่า รูปแบบที่ 4 Hybrid นั้นจะมีประโยชน์มากกว่า เพราะจะใช้การ Broadcast เป็นทางเลือกสุดท้ายเพื่อลดทราฟฟิกในเครือข่าย โดยหากไหน ๆ ก็มี WINS Server ไว้รอแล้ว ก็วิ่งไปถามที่ WINS Server ก่อนเสียเลย ซึ่งจะต้องมีคำตอบเป็น IP Address ให้ค่อนข้างแน่นอน
แล้วแต่ละรูปแบบนั้นถูกกำหนดไว้เป็นแบบใดในเครื่องคอมพิวเตอร์ คุณสามารถกำหนดได้จาก Option ของ DHCP Server หรืออีกวิธีคือการกำหนดผ่านค่า Registry บนเครื่องคุณเอง ซึ่งค่าเริ่มต้นในสมัยนี้ส่วนมากได้ถูกกำหนดมาเป็น Hybrid อยู่แล้ว คุณสามารถตรวจสอบได้ด้วยคำสั่ง ipconfig /all
DNS name resolution
การที่เรียกชื่อเครื่องคอมพิวเตอร์โดยระบบ DNS ไม่ว่าจะเป็นการ Ping หรือเรียก Web Server นั้น องค์ประกอบ 2 สิ่งที่จะต้องมีก่อนคือ การกำหนดค่า DNS Server บนเครื่องต้นทาง และจะต้องมีเครื่อง DNS Server ตั้งท่ารอไว้ด้วย ซึ่งการทำงานที่เกิดขึ้นคือ เมื่อมีการเรียกเครื่องปลายทาง เช่น ด้วยการ Ping หรือเรียก Web Server, จะมีการไปสอบถามค้นหาจาก DNS Server ว่าเครื่องที่กำลังถูกเรียกหานั้น มี IP Address เป็นอะไร เมื่อค้นหาคำตอบได้แล้วจึงส่งกลับไปให้เครื่องต้นทางทราบเพื่อนำ IP Address นั้นไปสื่อสาร โดยจะเห็นว่า วิธีนี้จะไม่ใช้การตะโกนถามหา แต่จะเหมือนกับมีผู้คอยตอบคำถามยืนรออยู่ ซึ่งจะทำให้คุณได้รับคำตอบทันที ดังนั้น ปัญหาที่คุณพบเมื่อเรียกชื่อเว็บไซต์แล้วเข้าไม่ได้ แต่เรียกด้วย IP Address กลับเข้าได้ ก็แสดงว่า การทำงานของ DNS Server นั้นมีปัญหาเสียแล้ว อาจจะต้องตรวจสอบว่ากำหนดค่า DNS บนเครื่องต้นทางถูกต้องหรือไม่ และบน DNS Server มี IP Address สำหรับให้คำตอบอยู่หรือไม่ทั้งหมดนี้ก็เป็นแนวทางที่แปลกแหวกแนวไปบ้างถ้าหากจะเอาไปเทียบกับตำรา วิชาการ แต่คิดว่ามันคงเป็นสิ่งที่จะทำให้คุณมองถึงการใช้งานจริงได้ง่ายขึ้น ก่อนที่จะไปอ่านตำรายุบยับหลังจากนี้ แล้วน่าจะวาดภาพในหัวได้ง่ายขึ้น เนอะ...
http://www.itsesa.com/kb/dns-vs-netbios.html