Technology

DNS Server สมุดหน้าเหลืองแห่งโลกอินเตอร์เน็ต

By Arnon Puitrakul - 29 May 2020 - 2 min read min(s)

DNS Server สมุดหน้าเหลืองแห่งโลกอินเตอร์เน็ต

DNS Server ถือได้ว่าเป็นกลไกอันนึงที่สำคัญมาก ๆ บนโลกอินเตอร์เน็ต เพราะถ้าเราไม่มีมัน เราคงจะเข้าเว็บได้อย่างยากลำบากแน่นอน วันนี้เราจะพามาทำความรู้จักกับเครื่องมือที่จะช่วยทำให้เราสามารถเข้าเว็บได้ง่ายมากขึ้น

DNS คืออะไร ?

DNS Server คืออะไร

DNS หรือ Domain Name Server เป็น Server ที่คอยเปลี่ยน ชื่อเว็บ (Domain Name) ให้กลายเป็น IP Address อาจจะอ่านแล้ว งง

อธิบายให้ง่ายขึ้น นึกถึงตอนที่เราจะโทรศัพท์ เราก็ยังต้องใช้สมุดโทรศัพท์ เพื่อที่จะเปลี่ยนชื่อเป็นเบอร์โทร ตัวอย่างเช่น ถ้าเราต้องการจะโทรหาคุณยุทธ์ แต่เราจำเบอร์โทรศัพท์ไม่ได้ วิธีคือ เราก็อาจจะเปิด App โทรศัพท์ขึ้นมา แล้วเราก็หาชื่อคุณยุทธ์ ในนั้นก็จะมีเบอร์ แล้วเราก็กดโทรได้เลย

เว็บก็เหมือนกัน ที่อยู่ของเว็บ ในระบบเครือข่ายคอมพิวเตอร์ เราใช้ที่อยู่ ที่เรียกว่า IP Address หรือเต็ม ๆ คือ Internet Protocol Address หน้าตาง่าย ๆ คือ ตัวเลขทั้งหมด 12 ตัว เช่นเว็บที่ทุกคนกำลังเข้าอยู่ตอนนี้เองก็จะเป็น 103.91.205.250 ถ้าเราลองคลิกเข้าไป มันก็จะเป็นหน้าแรกของเว็บนี้เลย

ปัญหามันคือ จะบ้าเหรอ ใครมันจะไปจำเลขขนาดนี้ได้เยอะแยะ นี่ขนาดแค่เว็บเดียวยังจำไม่ได้เลย แล้ววันนึงเราเข้าตั้งกี่เว็บ นี่แหละ เลยเป็นที่มาว่า ทำไมเราจะต้องมี DNS อยู่

Domain Name คืออะไร ?

ก่อนเราจะลงไปลึกกว่านี้ เราต้องมาทำความเข้าใจกันถึงเรื่อง Domain Name กันก่อน เพราะมันถือว่าเป็น Input ที่ DNS ต้องใช้งาน

Domain Name เป็นชื่อที่เราใช้เพื่อให้เราสามารถจำที่อยู่ของระบบได้ง่ายขึ้น เช่น Facebook.com หรือ Po_nhub.com อะไรก็ว่ากันไป โดยที่เราจะแบ่งมันออกเป็นชิ้น ๆ เป็นต้นไม้

DNS Server คืออะไร

เราจะเริ่มจาก Root หรือรากที่ไม่มีอะไร มันเป็นจุดที่ต่อท้าย แต่เรามักจะไม่ได้พิมพ์ ซึ่งมันจะเพิ่มให้เอง จากนั้น มันจะแรกออกมา เป็นตัวแรก เราเรียกว่า Top Level Domain (TLD) ภาษาไทยใช้คำว่า โดเมนขั้นสูงสุด

ซึ่งเจ้า TLD ก็ยังสามารถแบ่งออกมาได้เป็นอีก 2 ประเภทใหญ่ ๆ คือ generic Top-Level Domain Name (gTLD) ที่ใคร ๆ ก็สามารถใช้งานได้ เช่น .com และ .edu ที่เราน่าจะเคยได้ยินมาบ้าง และอีกประเภทคือ country code Top-Level Domain Name (ccTLD) หรือก็คือ แบ่งตามประเทศ เช่น .th และ .jp เหมือนเว็บเราที่เป็น .in.th เห็นมั้ยว่า มี .th ตามท้ายนั่นเอง

สำหรับใครที่อยากรู้ว่า ทั้งโลกนี้มี TLD อะไรบ้าง เราสามารถเข้าไปดาวน์โหลดได้ที่เว็บของ IANA

เมื่อเราแยกย่อย TLD ลงมาอีก เราก็จะเจอกับ Second Level Domain ซึ่งถ้าเป็นเว็บที่ใช้ gTLD ก็จะเป็นชื่อเว็บไปเลย เช่น facebook.com ถ้าแยกออกมา TLD ของเว็บนี้ก็คือ .com และ Second Level Domain ก็คือ Facebook เท่านั้นเลยจบ

แต่เอ๊ะ ตัวอย่างเช่น เว็บนี้ที่ลงท้ายด้วย .in.th แน่นอนว่า .th ก็คือ TLD ของเรา ที่เป็น ccTLD ด้วยนั่นคือ เป็นการบ่งบอกเลยว่า นี่เป็นเว็บจากประเทศไทยนะ แล้ว Second Level ของเราก็คือ in หรือก็คือ เป็น Domain สำหรับบุคคลทั่วไป

ถ้าเราลองไปดูเว็บของโรงเรียนหรือมหาลัย มันจะเป็นชื่ออะไรสักอย่างแล้วลงท้ายด้วย .ac.th เราลองมาดูกัน .th. ต่อท้ายคือ ccTLD จากประเทศไทย และ .ac ก็คือ เป็นการบอกว่าเป็น Academics นั่นเอง

Second Layer Domain ของพวก ccTLD มันก็จะมีตัวย่อพวกนี้แหละใช้บอกว่า มันเป็นเว็บอะไร หลัก ๆ ที่เราน่าจะเคยเจอกันก็จะเป็น .co.th, .go.th, .in.th, ac.th, .or.th, mi.th จะเป็น บริษัท, รัฐบาล, บุคคล, สถานศึกษา, องค์กรไม่แสวงหากำไร และ องค์กรที่เป็นทหาร ตามลำดับเลย

Layer ต่อ ๆ ไปก็จะไปเรื่อย ๆ ไม่ได้มีอะไรบังคับแล้ว อย่างของเราก็จะเป็น arnondora.in.th ใน Layer ที่ 3 ก็จะเป็นชื่อเว็บของเราแล้ว แต่แน่นอนว่า เราก็ยังสามารถเพิ่ม Layer ไปได้เรื่อย ๆ เหมือนกัน เช่น mail.arnondora.in.th ที่เป็น Mail Server ของเรา

โดยที่สุดท้ายแล้ว Domain Name ของเราจะยาวเกิน 253 ตัวอักษรไม่ได้ และ ชื่อของแต่ละ Layer จะยาวเกิน 60 ตัวอักษรไม่ได้ นอกจากนั้นมันยังมีข้อบังคับอย่างพวกอักขระพิเศษที่จะไม่ให้ใช้

เวลาเราจะจด Domain Name เราก็จะไม่ได้จดมั่ว ๆ ซั่ว ๆ ทำเองได้ เราจะต้องไปจดทะเบียนกับ Registrar หรือภาษาไทยง่าย ๆ ก็คือ นายทะเบียนนั่นเอง ที่จะเป็นบริษัท หรือ องค์กรที่ได้รับการรับรองจาก Internet Corporation for Assigned Names and Numbers (ICANN) หรือไม่ก็จากคนที่ถืออำนาจการจด ccTLD

ในประเทศไทยเรา TLD ที่เป็น .th ก็จะมีบริษัทที่เป็น Registrar อยู่นั่นคือ THNIC แล้วเวลาเราไปจด เราก็อาจจะจดกับตัวแทนจำหน่ายอีกที แต่ Bill เรียกเก็บเงิน ก็จะออกในนามของ THNIC ไป พูดง่าย ๆ คือ THNIC เป็นผู้ดูแล ccTLD .th ทั้งหมดเลย ไม่ว่าจะเป็น .in.th และอื่น ๆ ทั้งหมด

ซึ่งในการจดทะเบียนพวกที่ใช้ ccTLD เราจะต้องมีการส่งเอกสารบางอย่าง เพื่อเป็นการยืนยันจริง ๆ ว่า บุคคล หรือองค์กรที่เราจะจดทะเบียน เลือกใช้ Domain Name ได้ถูกต้อง เช่น .in.th ที่เราใช้งาน มันก็จะต้องมีการให้เรา Upload สำเนาบัตรประชาชน เพื่อยืนยันว่า เราเป็นประชาชนชาวไทยจริง ๆ ถึงจะมีสิทธิ์จด Domain Name .in.th ได้ กลับกัน ถ้าเราจะไปจด Domain Name ที่เป็น .in.jp เราก็ต้องเป็นพลเมืองชาวญี่ปุ่นถึงจะจดได้นั่นเอง ซึ่งในแต่ละแบบ ก็จะมีในการใช้เอกสารยืนยันที่ไม่เหมือนกันไป อันนี้ก็ต้องดูตามว่า เราจดในฐานนะอะไร เขาก็จะแจ้งมาให้เรา Upload ส่งไปให้

DNS แปลงที่อยู่ให้เราได้ยังไง

อย่างที่บอกไปว่า DNS ทำหน้าที่ในการแปลง ชื่อเว็บที่เราต้องการจะเข้า เป็น IP Address เพื่อให้ Web Browser ที่เราใช้งานอย่าง Google Chrome และ Firefox สามารถเชื่อมต่อไปหาได้

ถ้าเอาสั้น ๆ คือ เมื่อเราต้องการจะเข้าเว็บไซต์สักเว็บนึง Web Browser จะส่ง Query พูดง่าย ๆ เหมือนกับคำร้องขอว่า เราต้องการ IP Address หรือที่อยู่ของเว็บนี้นะ จากนั้น DNS ก็จะส่ง IP Address ของเว็บที่เราร้องขอไปกลับมา ก็เป็นอันจบว่า DNS มันทำงานยังไง แต่แค่นั้นก็ไม่สนุกอะเดะ เพราะตอนที่ DNS มันจะเอา ที่อยู่ กลับมาให้เราได้ มันต้องผ่านอะไรมากกว่านั้นอีก

ถ้าเรามองลงไปให้ลึกกว่านั้นเมื่อเราส่ง Query ไปที่ DNS ซึ่งในชั้นแรก มันจะส่งไปที่ Server ที่เรียกว่า Resolver ก่อน มันก็จะเข้าไปหาเลยว่า เอ๋ Query นี้เรามีเก็บผลลัพธ์ไว้มั้ย เพราะเอาจริง ๆ คือ จำนวนเว็บบนโลกนี้มันเยอะมาก ๆ เลยนะ จะให้มานั่งเก็บอะไรเยอะขนาดนั้นหลาย ๆ ที่ก็จะเป็นการสิ้นเปลืองไป

ซึ่ง Resolver เองก็มีการเก็บผลลัพธ์ไว้หลายอยู่หลายระดับเช่นกัน อย่างเครื่องเราเองก็จะมี DNS Cache เก็บไว้อยู่ เว็บที่เราเข้าบ่อย ๆ มันก็จะเข้าได้เร็วขึ้น เพราะมันไม่ต้องไปเรียก DNS ที่อื่น มันเจอในเครื่องเราแล้วเชื่อมต่อได้เลย

หรืออีกที่ก็คือที่ Internet Service Provider (ISP) ของเราเอง ก็จะมี DNS Server อยู่บนนั้นเช่นกัน ก็จะเป็นเหมือน Cache ไว้ให้เผื่อเราเรียก จะได้เร็วขึ้นนั่นเอง

DNS Server คืออะไร

แต่เมื่อหาไม่เจอ มันก็ต้องไปเรียกพวกละ อย่างที่บอกว่า Domain Name มันทำงานกันเป็นเหมือนต้นไม้ ไล่กันไปเป็นระดับชั้นตั้งแต่ Root ไปที่ TLD และลงไปเรื่อย ๆ ดังนั้น มันจะวิ่งไปหา Root Server ก่อน ณ ตอนที่เขียน ทั้งโลกนี้มี Root Server อยู่ 13  Zone ด้วยกัน ดูได้จาก ที่นี่  ถ้าเกิดทั้งหมดล่มหมด แน่นอนว่าระบบ Internet ก็จะหยุดชะงัก เพราะคนจำ IP Address ของทุกเว็บไม่ได้หรอก เว็บไหนที่จำได้ ก็ยังสามารถเข้าใช้ได้ตามปกติถึงแม้ว่า DNS จะเดี้ยงไปแล้วก็ตาม

DNS Server คืออะไร

แต่สิ่งที่ Root Server ตอบกลับมา ก็จะยังไม่ใช่ IP Address ที่เราต้องการอยู่ดี เพราะอีกแหละว่า ชื่อเว็บมันเยอะมาก แต่ Root Server จะบอกว่า ที่ต่อไปที่ Resolver ต้องไปหาคือที่ไหน ซึ่งลำดับต่อไปก็คือ TLD มันก็จะโยน IP Address ของ TLD Server กลับมาให้ Resolver พร้อมกับบอกว่า ชั้นไม่รู้ ไปถามคนนี้ต่อละกัน

DNS Server คืออะไร

มันก็จะทำแบบนี้ไล่ไปเรื่อย ๆ จนกว่ามันจะไปเจอกับ Server ตัวนึงที่เรียกว่า Authoritative name server ที่มีหน้าที่ในการตอบแล้วว่ามันคือ IP Address อะไรกันแน่

DNS Server คืออะไร

จากนั้น Resolver ก็จะเอาคำตอบจาก Authoritative Name Server ไปบอกกับเครื่องของเราว่า นี่นะเว็บ A.com คือ IP Address อะไร แล้ว Web Browser ก็จะเชื่อมต่อกับ Web Server นั่นเอง

ปล. ถ้าอยากรู้ว่า Query กับ Reponse หน้าตาเป็นยังไง Comment มาถามได้ ถ้ามีคนสนใจเดี๋ยวจะเขียนให้ลึกขึ้น

ทำไมถึงต้องทำอะไรให้ซับซ้อนมากขนาดนี้ ?

มาถึงตรงนี้หลาย ๆ คนน่าจะเกิดคำถามแล้ว ว่าทำไมมันถึงต้องทำอะไรให้ซับซ้อนขนาดนี้ ทำไมเราไม่ทำให้ Server สักตัวมันมีชื่อของ Domain Name ทั้งหมดในโลกไปเลยละ ทำไมต้องมานั่งแบ่งอะไรแบบนี้ พอจะเรียกทีก็ต้องเสียเวลาไปเรียกคุยทั้งหลาย Server

With great power there must also come great responsibility

Quote นี้มาจากหนังเรื่อง Spider Man ลองคิดเล่น ๆ ถ้าเราบอกว่า DNS ของทั้งโลก ถูกควบคุมโดยองค์กร หรือ คน ๆ เดียว มันจะดูโหดร้ายเกินไปหน่อย และ อาจจะถูกแทรกแซงได้โดยง่าย ดังนั้น เพื่อการบริหารจัดการที่ดี และ การออกแบบระบบที่ง่ายขึ้น ทำให้ DNS จะต้องทำงานกันแบบนี้

ในไทยเรามี TLD ตัวไหนบ้าง

สำหรับในประเทศไทยเรา Top Level Domain (TLD) หลัก ๆ ที่เราน่าจะเคยเจอบ่อย ๆ น่าจะเป็น .th ที่เป็น ccTLD หรือ TLD ตามรหัสประเทศ และอีกอันที่แปลกมากสำหรับเราคือ .ไทย ใช่ฮ่ะ มันเป็นภาษาไทย

ซึ่งรายชื่อผู้ดูแล TLD ของแต่ละตัว ที่หน้าเว็บไซต์ของ IANA จะมีข้อมูลหมดเลยว่า ใครดูแลตัวไหนบ้าง

ตัวอย่างเช่นของประเทศไทยเรา ทั้ง .th และ .ไทย มี Thai Network Information Center Foundation (THNIC) เป็นผู้ดูแลทั้งหมด

DNS Update ข้อมูลกันยังไง

คำถามต่อไปคือ แล้วถ้าเกิดมี Domain Name ใหม่มาแล้วพวก Server ที่เราบอกไป จะรู้ได้ไงว่า มันมี Domain Name ใหม่เกิดขึ้นมาบนโลกเรา

ต้องย้อนกลับไปตอนที่เราจะจดทะเบียน Domain Name เราจะต้องไปจดกับ Registar หรือก็คือนายทะเบียน พูดกันง่าย ๆ แบบนั้นเลย เมื่อ Registrar บอกว่า โอเค จดได้ เขาก็จะแจ้งไปหา Registry หรือคนที่ดูแล List ในระบบว่า นี่นะมี Domain Name ใหม่เข้ามาในระบบแล้ว เข้าไปอัพเดทด้วย

สรุป : DNS ก็ไม่ต่างอะไรกับสมุดหน้าเหลืองของ Internet

DNS Server คืออะไร

DNS ถือว่าเป็นเหมือนฟันเฟืองชิ้นสำคัญตัวนึงของโลก Internet เลยก็ว่าได้ เพราะมันช่วยแปลง Domain Name ที่เรารู้จักให้กลายเป็น IP Address ที่เหมือนกับที่อยู่ในโลกอินเตอร์เน็ต หากมันเกิดหยุดทำงานขึ้นมา โลกอินเตอร์เน็ต ที่เรารู้จักคงจะใช้งานได้ลำบากน่าดู วันนี้เรานำเสนอเพียงแค่พื้นฐานของ DNS เท่านั้น ถ้าอยากรู้ลึกกว่านี้อีก ก็ Comment มาบอกได้