Domain Name System (DNS) คืออะไร และ ทำงานอย่างไร (Part 1: Concept)

domainDomain Name System (DNS) เป็น public service ที่ถูกใช้ในการแปลง domain name ให้เป็น IP address เรียกได้ว่าในปัจจุบัน ผู้ใช้งานอินเทอร์เน็ตทุกคนต่างพึ่งพา DNS ในการแปลง domain name เป็น IP address เพื่อเข้าใช้งาน Internet services เช่น Faceboo Google หรือ Pantip เป็นต้น ดังนั้น DNS ถือว่าเป็นระบบที่มีความสำคัญอย่างมากสำหรับเครือข่ายอินเทอร์เน็ต บทความนี้จะอธิบายถึงการทำงานของ DNS โดยละเอียด

 

รู้จักกับ Domain name

ก่อนที่จะไปทำความเข้าใจ DNS นักพัฒนาเว็บไซต์ทุกคนควรรู้จัก domain name เสียก่อน domain name เป็นชื่อที่ใช้ในการระบุบริการบนอินเทอร์เน็ต เช่น www.google.com www.facebook.com หรือ www.pantip.com โดย domain name จะถูกแปลงเป็น IP address ผ่านทาง Domain Name System (DNS) เพื่อให้คอมพิวเตอร์สามารถติดต่อสื่อสารกันได้ เนื่องจากคอมพิวเตอร์และอุปกรณ์สื่อสารต่าง ๆ ใช้ IP address ในการระบุผู้รับ ดังนั้น domain name จะต้องถูกทำการแปลงเป็น IP address ทุกครั้งที่มีการส่งและรับข้อมูล

จุดกำเนิดของ Domain Name

หลังจากที่ ARPANET ได้ให้กำเนิดอินเทอร์เน็ตขึ้นมาในช่วงประมาณปี 1950-1960 อินเทอร์เน็ตก็ได้ความนิยมขึ้นเรื่อย ๆ และกลายเป็นมาตรฐานกลาง โดยในปี 1972 Internet Assigned Numbers Authority (IANA) ก็ได้ถูกสร้างขึ้นเพื่อเป็นหน่วยงานกลางในการดูแล public IP address อย่างไรก็ตาม เนื่องจาก IP address นั้นเป็นตัวเลขและมีความยากแก่การจดจำสำหรับมนุษย์ ในปี 1984 นักวิจัยที่มหาวิทยาลัย Wisconsin ก็ได้คิดค้น Name Server ขึ้นมา โดย Name Server จะทำหน้าที่ในการแปลง domain name ให้เป็น IP Address เพื่ออำนวยความสะดวกให้กับผู้ใช้งานที่ไม่อยากจดจำหมายเลข IP Address

Domain Name ในช่วงแรกถูกบริหารจัดการโดย IANA ที่มีงบสนับสนุนจากรัฐบาลสหรัฐอเมริกา ทุกคนสามารถ reigister domain name ได้ฟรี แต่หลังจากที่อินเทอร์เน็ตมีการขยายตัวและได้รับความนิยมอย่างมาก ทางรัฐบาลสหรัฐจึงมีการจัดตั้งองค์กร Internet Corporation for Assigned Names and Numbers (ICANN) ทำหน้าที่ในการดูแลบริการ domain name

ICANN เป็นองค์กรกลางที่ทำหน้าที่ในการดูแล domain name ทั่วโลก อย่างไรก็ตาม เนื่องจากงานในการดูแล domain name ทั่วโลกนั้นเป็นงานที่ต้องใช้กำลังคนในการดูแลจำนวนมาก ICANN จึงแตกประเภทของ domain name ให้กับองค์กรย่อยดูแล

Screen Shot 2559-01-28 at 5.01.40 PM

ชนิดของ Domain Name

Domain Name นั้นจะมีโครงสร้างแบบ hierarchy โดยจะเรียก นามสกุลของ domain name (เช่น .com .net) ว่า TOP-level domain name ซึ่งจะมีผู้ดูแตกต่างกันออกไป เช่น .com จะมีบริษัท Verisign เป็นผู้ดูแล ส่วน .org มี Public Interest Registry เป็นผู้ดูแลเป็นต้น ชนิดของ domain name นั้นจะถูกแบ่งตาม Top-level domain name เช่น .com ถูกใช้สำหรับ comercial ถ้าเป็น .edu หมายถึงสถานศึกษา .in.th คือเว็บไซต์ในประเทศไทยเป็นต้น อย่างไรก็ตามเนื่องจาก domain .com นั้นถูกใช้อย่างแพร่หลายและจำง่ายที่สุด จึงเป็น domain name ที่มีคนจดทะเบียนมากที่สุด ผู้สนใจเกี่ยวกับชนิดของ top-level domain name สามารถเข้าไปดูข้อมูลใน wikipedia ได้

จะเป็นเจ้าของ Domain Name ได้อย่างไร

ทุกคนสามารถเป็นเจ้าของ domain name ได้โดยการจดทะเบียนและชำระค่าบริการผ่านทางบริษัทผู้ได้รับอำนาจจาก ICANN (รายชื่อตัวแทนจำหน่าย domain name โดยตรง LINK) ชื่อที่อยู่ของเจ้าของ domain name จะถูกบันทึกและส่งต่อไปให้กับ ICANN บันทึกลง registry directory ซึ่งเป็น public service ที่ให้บริการกับคอมพิวเตอร์ทั่วโลกในการแปลงชื่อ domain name เป็น IP Address

จะผูก domain name กับ IP address ได้อย่างไร

จุดประสงค์หลักของการจดทะเบียน domain name ก็เพื่อให้ DNS ทำการแปลง domain name นั้นให้กลายเป็น IP address ของผู้จดทะเบียน ผู้จดทะเบียนจะต้องมี DNS Server เป็นของตนเอง หรือใช้บริการ free DNS server ก็ได้ โดย DNS Server ที่ตั้งขึ้นนั้นจะทำหน้าที่เป็น authoritative DNS Server สำหรับแปลง domain name ให้เป็น IP address ขั้นตอนที่จะต้องทำมีดังนี้

1. ทำการระบุ authoritative DNS server ของผู้จดทะเบียน domain name (ข้อมูลนี้ต้องถูกระบุไปตอนจดทะเบียน domain เพื่อที่ root DNS server จะได้เก็บข้อมูลไว้ใน registry และตอบกลับเมื่อมีการสอบถามจากอุปกรณ์ทั่วโลก) จากตัวอย่างด้านล่างจะเห็นได้ว่า authoritative DNS ของ wisered.com คือ DNS ของ cloudflare ข้อมูลในส่วนนี้จะถูกเก็บไว้ที่ root DNS server

Screen Shot 2559-01-28 at 11.17.34 AM

2. ทำการกำหนด domain name IP address และ sub domain name IP address หลังจากที่ได้ทำการระบุ authoritative DNS ไปแล้ว ผู้จดทะเบียนสามารถกำหนด IP address ที่ผูกติดกับ domain และ sub domain ได้ที่ authoritative DNS ตัวอย่างด้านล่างเป็นการกำหนด sub domain ของ wisered.com (wisered.com ใช้ free DNS service จาก cloudflare)

Screen Shot 2559-01-28 at 11.15.55 AM

เมื่อมีผู้ใช้งานต้องการเชื่อมต่อกับ alberta.wisered.com authoritative DNS จะทำการคืนค่า IP เป็น 13.67.50.115 เช่นเดียวกับ www.wisered.com จะถูกแปลง IP เป็น 23.97.57.184 สิ่งที่น่าสังเกตคือ www.wisered.com และ wisered.com นั้นเป็นคนละ domain name ดังนั้น สามารถชี้ไปยัง server ที่แตกต่างกันได้

URL vs Domain Name

Universal Resource Locator (URL) นั้นคือสิ่งที่ใช้ในการระบุ location ของ object ที่เราต้องการเข้าถึง ตัวอย่างเช่น หากเราต้องการเข้าถึงไฟล์รูปของเว็บไซต์ blog.wisered.com URL ที่ได้ก็คือ http://blog.tamaid.com/somepicture.png จะเห็นได้ว่า URL นั้นจะมีองค์ประกอบเป็น protocol://domain_name/other_information ดังนั้น domain name เป็นเพียงส่วนหนึ่งของ URL

การทำงานของ DNS

อย่างที่ได้กล่าวไปในข้างต้น หน้าที่หลักของ DNS คือการแปลง domain name ให้เป็น IP address เพื่อให้สามารถทำความเข้าใจการทำงานของ DNS ได้ง่าย จะขอใช้การเข้าใช้งานเว็บไซต์เป็นตัวอย่างในการอธิบาย

กระบวนการเริ่มต้นเมื่อ ผู้ใช้งานทำการพิมพ์ www.google.com ลงไปในช่อง URL address หลังจากนั้นเว็บเบราเซอร์จำจะต้องแปลง URL www.google.com ให้เป็น IP address เพื่อที่จะใช้ในการสร้าง packet ส่งไปให้กับเซิร์ฟเวอร์ของ Google ซึ่งจะประกอบไปด้วยขั้นตอนดังนี้

  1. เว็บเบราเซอร์ทำการตรวจสอบ Web browser DNS cache เพื่อค้นหาว่ามี record ของ www.google.com ไหม หากไม่มีจะถาม Operating System
  2. Operating System ตรวจสอบ OS DNS cache หา record ของ  www.google.com ว่ามีไหม หากไม่มี จะถาม Local DNS
  3. Local DNS จะทำการตรวจสอบว่ามี record ใน cache หากไม่มีจะถาม ISP DNS
  4. ISP DNS  ทำการตรวจสอบ record ใน cache หากไม่มีจะถาม Root DNS (โดยส่วนมาก ISP DNS จะทราบคำตอบของเว็บไซต์ที่มีคนใช้บ่อย ๆ เช่น www.google.com)
  5. Root DNS Server ค้นหาข้อมูลใน registry ส่งคืน IP address ของ .com DNS Server ให้กับ ISP DNS
  6. ISP DNS ส่ง request ไปถาม .com DNS Server ว่า authoritative ของ www.google.com คือใคร
  7. .com DNS Server ค้นหาข้อมูลใน registry และตอบกลับ ISP DNS ด้วย authoritative DNS server ของ google.com
  8. ISP DNS ส่ง request ไปถาม google.com authoritative DNS server ว่าที่อยู่ของ www.google.com คือ IP address อะไร
  9. google.com authoritative DNS server ตอบกลับ ISP DNS ด้วย IP address ของ www.google.com
  10. ISP DNS ตอบกลับ Local DNS ด้วย IP address ของ www.google.com
  11. Local DNS ตอบกลับ OS DNS ด้วย IP address ของ www.google.com
  12. OS DNS ตอบกลับ Web browser ด้วย IP address ของ www.google.com

Screen Shot 2559-01-28 at 2.33.56 PM

หมายเหตุ

*Local DNS โดยส่วนมากคือ DNS ที่อยู่ใน router ที่ใช้ในบ้านหรือสำนักงาน ถ้าเป็นสำนักงานที่มีเครือข่ายขนาดใหญ่อาจจะมี DNS server แยกต่างหากออกมา
*ISP DNS (Internet Service Provider) คือ DNS ของ ISP เช่น True, TOT ซึ่ง IP ของ ISP DNS จะได้มาตอนสร้างการเชื่อมต่อกับ modem router
*Root DNS เป็น DNS server ที่บริหารจัดการโดย ICANN ซึ่งเป็นองค์กรที่เจ้าของ domain name ทุกคนต้องไปจดทะเบียนเพื่อกำหนดหมายเลข IP address ของเครื่องเซิร์ฟเวอร์ที่ผูกกับ IP address

จะเห็นได้ว่าการทำงานของ DNS นั้นมีลักษณะเป็นแบบ hierarchy นั่นคือ DNS จะถามกันเป็นทอด ๆ จนไปถึง Root DNS เมื่ออ่านมาถึงตรงนี้ ผู้อ่านที่ดีต้องเกิดคำถามขึ้นในใจว่า ทำไม Web browser ถึงไม่ถาม Root DNS ตรง ๆ แต่ต้องถามเป็นลำดับขั้น OS DNS -> Local DNS -> ISP DNS -> Root DNS Server? เหตุผลที่ DNS ต้องทำงานเป็นแบบ hierarchy ก็เพราะ

  1. เป็นการลดงานของ Root DNS เพราะเป็นการกระจายงาน โดยส่วนมาก ISP DNS จะรู้คำตอบของ IP address ของเว็บไซต์ที่ได้รับความนิยมอยู่แล้ว
  2. เป็นการเพิ่มประสิทธิภาพให้กับ DNS โดยรวม เนื่องจากเว็บเบราเซอร์จะได้รับข้อมูล IP address รวดเร็วกว่าจาก Local DNS หรือ DNS cache

สรุป

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

อ่านต่อ

  1. Domain Name System (DNS) Attacks (Part 2: การโจมตี DNS)

อ้างอิง

  1. History of the Internet Domain Name
  2. ICANN General Questions

Leave a Reply