دوشنبه ۳۱ ارديبهشت ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

بررسی عمیق مفهوم DNS

اگر فردا صبح بیدار شوید و با نوشتن نام‌هایی مانند google.com ، نتوانید به وب‌سایت‌ها دسترسی پیدا کنید چه احساسی خواهید کرد؟ اگر مجبور شوید به جای آن، یک سری از اعداد مثلاً 172.217.16.206 برای چک کردن Gmail را حفظ کرده و تایپ کنید تا بتوانید به اینترنت وصل شوید ،در این حالت مرور اینترنت به شدت خسته‌کننده خواهد شد!

خوشبختانه، این سناریوی وحشتناک اینترنت هیچ وقت رخ نخواهد داد تا زمانی که سیستم نام دامنه (Domain Name System) به خوبی در پس‌زمینه کار کند. DNS، که مخفف عبارت سیستم نام دامنه است، سرویس اساسی‌ست که ما را از زحمت بزرگ حفظ آدرس‌های IP عددی نجات می‌دهد. این مساله به طور کارآمد نام‌های دامنه‌ای که حفظ کردن آنها آسان است، با آدرس‌های IP متناظرشان متصل می‌کند تا ما بتوانیم به راحتی در اینترنت بگردیم.

در این مقاله، ما به بررسی عمیق این مفهوم اساسی در اینترنت می‌پردازیم.

DNS: دفترچه آدرس اینترنت

DNS یک سیستم توزیعی و سلسله مراتبی است که به عنوان دفترچه آدرس اینترنت عمل می‌کند. این سیستم، نام‌های دامنه را به آدرس‌های IP ترجمه می‌کند تا ارتباط کارآمد بین دستگاه‌ها در سراسر جهان فراهم سازد. هدف اصلی DNS این است که راهی راحت برای کاربران فراهم کند تا از طریق نام‌های دامنه‌ای که آسان در یاد می‌مانند به وب‌سایت‌ها و منابع دسترسی پیدا کنند، در حالی که کامپیوترها و سرورها از آدرس‌های IP برای ارتباطات در پس‌زمینه استفاده می‌کنند.

DNS به عنوان یک سرویس لایه برنامه‌نویسی پیاده‌سازی شده‌است. این سرویس به جای روترها و سوئیچ‌های در داخل شبکه، توسط سرورهایی پیاده‌سازی می‌شود که در لبه شبکه قرار دارند . این نشان دهنده فلسفه طراحی اینترنت است که می‌خواهد مرکز شبکه را ساده نگه دارد و پیچیدگی را در لبه شبکه قرار دهد.

خدمات کلیدی ارائه شده توسط DNS

DNS انواع مختلفی از خدمات را فراهم می‌کند تا عملکرد اینترنت را تسهیل کند. در ادامه، یک نقشه ذهنی از خدمات ارائه شده توسط DNS آورده شده‌است.

ما قصد داریم برخی از مهم‌ترین خدمات DNS را توضیح دهیم:

نگاشت میزبان به آدرس IP

DNS یک پایگاه داده از نام‌های دامنه و آدرس‌های IP متناظر آنها را نگه می‌دارد. این نگاشت برای دستگاه‌ها بسیار حیاتی است تا بتوانند یکدیگر را در اینترنت پیدا کنند.

به عنوان مثال، نام دامنه "www.example.com." را در نظر بگیرید. نگاشت میزبان به آدرس IP شامل تعیین آدرس IP مرتبط با این دامنه مانند "93.184.216.34" می‌شود.

نام‌ مستعار میزبان

DNS از امکانی پشتیبانی می‌کند که معمولاً با عنوان نام‌ مستعار میزبان شناخته می‌شود. این امکان از طریق رکوردهای CNAME (نام کانونی) فعال می‌شود. این امکان را فراهم می‌کند تا یک آدرس IP یا نام دامنه اصلی با چندین نام دامنه مستعار مرتبط شود.

به عنوان مثال، فرض کنید دامنه اصلی "example.com" باشد. ممکن است بخواهید وب‌سایت شما علاوه بر آدرس "example.com"  از طریق نام‌های مستعار مختلفی مانند "www.example.com"، "web.example.com" و "blog.example.com" نیز در دسترس باشد. با تنظیم رکوردهای CNAME مناسب در DNS، همه این نام‌های مستعار می‌توانند به دامنه اصلی "example.com" اشاره کنند. در نتیجه کاربران می‌توانند از هر یک از این نام‌های دامنه استفاده کنند، که همگی به همان آدرس IP مقصد اشاره می‌کنند.

مسیریابی ایمیل

DNS نقش بسیار حیاتی در مسیریابی ایمیل از طریق رکوردهای MX ایفا می‌کند. این رکوردها به یک دامنه اجازه می‌دهند تا مشخص کند کدام سرورهای ایمیل مسئول دریافت پیام‌های ایمیل به نمایندگی از آن هستند. این مکانیزم امکانات مختلفی را در پیکربندی ایمیل فراهم می‌کند.

به عنوان مثال، فرض کنید سرور اصلی ایمیل مسئول دریافت ایمیل‌ها برای دامنه "example.com" سرور "mail.example.com" باشد. ممکن است بخواهید آدرس‌های ایمیل خاصی داشته باشید، مانند آنهایی که با "@sales.example.com" یا "@support.example.com" پایان می‌یابند، اما همچنان تمام ایمیل‌های وارد برای این آدرس‌ها را به سرور "mail.example.com" هدایت کنید. با پیکربندی رکوردهای MX به درستی، ایمیل‌های ارسال شده به هر یک از این آدرس‌ها به سرور اصلی ایمیل تعیین‌شده هدایت خواهند شد.

نگاشت آدرس IP به میزبان (IP-to-host)

هرچند DNS اصولاً برای ترجمه نام‌های دامنه به آدرس‌های IP استفاده می‌شود، اما می‌تواند همچنین نگاشت‌های معکوس را نیز انجام دهد، یعنی ترجمه آدرس‌های IP به نام‌های دامنه. این برای اهداف امنیت شبکه و ثبت وقایع (لاگ‌ها) مفید است.

توازن بار

DNS می‌تواند برای پرس‌وجوی نام دامنه یکسان ترافیک شبکه ورودی را به سمت چندین سرور توزیع کند . توازن توزیع بار بین چندین سرور ، عملکرد و قابلیت اطمینان سرویس را بهبود بخشد.

سلسله مراتب DNS

DNS به عنوان یک پایگاه داده توزیعی سلسله مراتبی عمل می‌کند. تصویر زیر نمایی از سلسله مراتب DNS را به نمایش می‌گذارد.
سلسله مراتب DNS
 

سرورهای اصلی دی‌ان‌اس (Root DNS Servers)

در بالای سلسله مراتب DNS، سرورهای ریشه واقع شده‌اند. زمانی که یک سرور قادر به حل یک نام نیست، به سرورهای ریشه مراجعه می‌شود. می‌توانید آن را به عنوان اولین نقطه تماس برای شروع فرایند تبدیل نام تصور کنید.

سرورهای ریشه همچون سیستم عصبی مرکزی اینترنت عمل می‌کنند و به همین دلیل امنیت بسیار مهم است. بسیاری از زیرساخت‌های مرتبط با سرورهای ریشه، تحت مسئولیت ICANN (شرکت اینترنت برای اختصاص نام‌ها و شماره‌ها) است. در سراسر جهان 13 سرور ریشه منطقی وجود دارد، اما هرکدام از این سرورهای ریشه منطقی در واقع تکرار شده‌اند، بنابراین به ازای این 13 سرور ریشه منطقی، در واقع نزدیک به هزار سرور فیزیکی در سراسر جهان وجود دارد.

سرورهای دامنه در سطح بالا (Top-Level Domain - TLD)

از سطح سرورهای ریشه به پایین‌تر حرکت می‌کنیم، به سرورهای دامنه در سطح بالا می‌رسیم و هر یک از سرورهای این لایه مسئول حل یکی از آدرس‌هایی است که با .com، .edu، .net و .org ختم می‌شوند.

تمامی دامنه‌های سطح بالا استفاده شده در اینترنت در اختیار شرکت اینترنت برای اختصاص نام‌ها و شماره‌ها (ICANN)  می باشد و این شرکت مسئولیت این دامنه‌ها را به انجمن‌ها و سازمان‌های مختلف انتقال می‌دهد. افراد یا نهادهایی که می‌خواهند یک دامنه جدید زیر این دامنه‌ها ثبت کنند، معمولاً به ثبت‌کنندگان نام دامنه مراجعه می‌کنند که نهادهای مجوز‌دار هستند که با رجیسترها برای مدیریت فرآیند ثبت ارتباط دارند.

سرورهای DNS اختصاصی

سرورهای اختصاصی منبعی برای حل نام‌های دامنه در دامنه خاص خود هستند. آنها از اطلاعات نام به آدرس IP برای یک دامنه داده شده نگهداری می‌کنند. در حالی که مکانیزم‌های مختلف حافظه نهان در سراسر اینترنت برای تسریع در حل نام‌های دامنه وجود دارند، اما سرورهای اختصاصی هنگام پرسش پاسخ درست و نهایی را فراهم می‌کنند. صاحبان یا مدیران دامنه‌ها رکوردهای دامنه خود را پیکربندی می‌کنند، اما زیرساخت واقعی - سرورهای DNS - معمولاً توسط ارائه‌دهندگان میزبانی DNS یا رجیسترها مانند Cloudflare، Namecheap، GoDaddy و دیگران نگهداری و اداره می‌شود.

سرورهای DNS بازگشتی

سرورهای بازگشتی درخواست‌های DNS از دستگاه‌های مشتری ( کامپیوترها و گوشی‌های هوشمند و ...) را پردازش می‌کنند. زمانی که یک دستگاه می‌خواهد یک نام دامنه را حل کند، به این سرورها مراجعه می‌کند. سرورهای بازگشتی به نمایندگی از مشتری، سلسله مراتب DNS را طی کرده و با ارتباط با انواع سرورهای DNS، آدرس IP مرتبط با یک نام دامنه را تعیین می‌کنند. پس از دریافت پاسخ، آن را به مشتری باز می‌گردانند. به منظور کارایی، این سرورهای بازگشتی اغلب پاسخ‌ها را در حافظه نهان نگه می‌دارند تا از پرسش مکرر اطلاعات یکسان جلوگیری کنند.

تصویر زیر را بررسی کنید، این تصویر موقعیت برخی از اصلی‌ترین سرورهای DNS درون مسیر یک درخواست DNS نشان می‌دهد.

سرورهای DNS بازگشتی
 

چگونه تبدیل DNS کار می‌کند

در DNS دو روش اصلی برای تبدیل درخواست وجود دارد:
  • تبدیل پرس‌وجوهای مکرر (Iterative query resolution)

  • تبدیل پرس‌وجوهای بازگشتی (Recursive query resolution)

این روش‌ها نحوه تعامل سرورهای DNS با یکدیگر برای پیدا کردن آدرس IP مرتبط با یک نام دامنه را تعیین می‌کنند. در زیر یک مرور مختصر از هر یک ارائه شده‌است.

تبدیل پرس‌وجوهای مکرر (Iterative Query Resolution)

در تبدیل پرس‌وجوهای مکرر، سرور DNS درخواستی را که دریافت می‌کند، ارجاعاتی به سرور پرسش‌کننده ارائه می‌دهد و آن را از طریق سلسله مراتب DNS هدایت می‌کند. سرور پرسش‌کننده به فعالیت فعال در این فرآیند می‌پردازد و بر اساس ارجاعات دریافتی پرسش‌های پسین را ارسال می‌کند.

بیایید با استفاده از مثالی که در تصویر زیر نشان داده شده است، روش کار تبدیل پرس‌وجوهای مکرر را درک کنیم.

Iterative Query Resolution
 

فرض کنید که میزبان درخواستی برای تبدیل نام example.com دارد. این چگونه اتفاق می‌افتد:

  1. ابتدا میزبان یک پیام درخواست به تبدیل دهنده DNS محلی ارسال می‌کند. پیام درخواست شامل نام میزبان برای ترجمه example.com می باشد

  2. اگر تبدیل دهنده این آدرس IP را در حافظه نهان خود نداشته باشد، یک درخواست به یک سرور DNS روت ارسال می‌کند.

  3. سرور DNS روت با شناسایی پسوند .com، ارجاعی به سرورهای TLD که مسئول .com هستند، ارائه می‌دهد

  4. سپس تبدیل دهنده یک درخواست جدید به یکی از این سرورهای TLD ارسال می‌کند.

  5. سرور TLD ارجاعی به سرور DNS اختصاصی مسئول example.com می‌دهد.

  6. تبدیل دهنده یک درخواست دیگر به سرور DNS اختصاصی ارسال می‌کند.

  7. سرور DNS اختصاصی با آدرس آی پی example.com پاسخ می‌دهد.

  8. تبدیل دهنده DNS این آدرس IP را در حافظه نهان قرار می‌دهد و سپس آن را به میزبان درخواست‌کننده باز می‌گرداند.

  9. اکنون، میزبان درخواست‌کننده یک درخواست HTTP به آدرس IP سرور وب http://www.example.com ارسال می‌کند.

  10. سرور وب صفحه وب را برای www.example.com برمی‌گرداند

تبدیل پرس‌وجوهای بازگشتی

در تبدیل پزس‌وجوهای بازگشتی، سرور DNS دریافت کننده درخواست، مسئولیت پیدا کردن آدرس IP را به نیابت از کلاینت بر عهده می‌گیرد. این سرور ممکن است خود از پرسش‌های مکرر برای ناوبری در سلسله مراتب DNS استفاده کند تا به سرور DNS اختصاصی برای دامنه درخواستی برسد.

آدرس آی پی example.com با استفاده از روش تبدیل پرس‌وجوهای بازگشتی به عنوان نشانی در تصویر زیر نشان داده شده است

تبدیل پرس‌وجوهای بازگشتی