DNS مخفف عبارت Domain Name System می باشد , وقتی می خواهید وارد وب سایتی شوید باید آدرس وب سرور آنرا بدانید , آدرس وب سرور با IP مشخص می شود , اما به خاطر سپردن آدرس IP دشوار است. می توان به جای IP از Domain Name ها استفاده کرد , برای هر IP یک Domain Name در نظر گرفته شده است , مثلا IP آدرس گوگل 192.0.34.65 است که شما برای دسترسی به گوگل میتوانید از IP یا آدرس www.google.com استفاده کنید.

Domain Name System یا DNS یا سیستم نام گذاری حوزه روشی سلسله مراتبی است که بانک اطلاعاتی مربوط به نام های نمادین و معادل IP آنها را روی کل شبکه اینترنت توزیع کرده است و هر ایستگاه می تواند در یک روال منظم و سلسله مراتبی آدرس IP معادل با ایستگاه مورد نظرش را در نقطه ای ازشبکه پیدا کند , این سیستم در سال 1984 معرفی شد.

در DNS , کل آدرس های اینترنت درون بانک های اطلاعاتی توزیع شده ای هستند که هیچ تمرکزی روی نقطه ای خاص از شبکه دارند , روش ترجمه ی نام بدین صورت است که وقتی یک برنامه کاربردی مجبور است برای برقراری یک ارتباط , معادل آدرس IP از یک ماشین با نامی مثل cs.ucsb.edu را بدست بیاورد , قبل از هر کاری یک تابع کتابخانه ای یا Library Function را صدا می زند , به این تابع کتابخانه ای تابع تحلیلگر نام یا Name Resolver گفته می شود.

تابع تحلیلگر نام یک آدرس نمادین را که بایستی ترجمه شود , بعنوان پارامتر ورودی پذیرفته و سپس یک بسته درخواست یا Query Packet به روش UDP تولید کرده و به آدرس یک سرویس دهنده DNS که به صورت پیش فرض مشخص می باشد ارسال می کند , همه ماشین های میزبان , حداقل باید آدرس IP از یک سرویس دهنده ی DNS را در اختیار داشته باشند , این سرویس دهنده محلی پس از جستجو , آدرس IP معادل با یک نام نمادین را بر می گرداند , تابع تحلیلگر نام نیز آن آدرس IP را به برنامه ی کاربردی تحویل می دهد با پیدا شدن آدرس IP , برنامه کاربردی می تواند عملیات مورد نظرش را ادامه بدهد.

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

7 حوزه عمومی که همه آنها سه حرفی هستند عبارتند از:

  1. com. صاحب این نام جزو موسسات اقتصادی و تجاری به شمار می آید مانند www.sony.com
  2. edu. صاحب این نام جزو موسسات علمی یا دانشگاهی به شمار می آید مانند www.sharif.edu
  3. gov. این مجموعه از نام ها برای آژانس های دولتی آمریکا اختصاص داده شده است مانند www.whitehouse.gov
  4. int. صاحب این نام یکی از سازمان های بین المللی (مثل یونسکو ، فائو ،...) محسوب می شود مانند www.unicef.int
  5. mil. صاحب این نام یکی از سازمان های نظامی دنیا به شمار می آید.
  6. net. صاحب این نام جزو یکی از « ارائه دهندگان خدمات شبکه » به شمار می رود مانند www.pegah.net
  7. org. صاحب این نام جزو یکی از سازمان های عام المنفعه و غیرانتفاعی محسوب می شوند مانند www.ieee.org


نام های حوزه ی بسیار زیادی در اینترنت تعریف شده اند که هیچ یک از حوزه های سه حرفی هفتگانه را در انتهای آنها نمی بینید , معمولا در انتهای این آدرس ها یک رشته ی دو حرفی مخفف نام کشوری است که آن آدرس و ماشین صاحب آن , در آن کشور واقع است.


هر حوزه می تواند به زیر حوزه های کوچکتری تقسیم شود , بعنوان مثال نام های مربوط به حوزه ژاپن با مخفف .jp به دو حوزه کوچکتر تقسیم می شود مانند ac.jp و .co.jp که اولی یک موسسه علمی و دانشگاهی و دومی یک موسسه بازرگانی یا تجاری را در ژاپن تعیین می نماید یعنی محل جستجو برای ترجمه ی یک نام متفاوت خواهد بود.

بعنوان مثال: cs.keio.ac.jp
کشور: ژاپن
هویت: دانشگاهی
نام دانشگاه: Keio
نام دانشکده: کامپیوتر computer science

Zone ها با دامنه ها یکسان نبوده و یک Zone می تواند شامل رکورد هایی در رابطه با چندین دامنه باشد,. مثلا فرض کنید دامنه www.microsoft.com دارای دو زیر دامنه با نام West ، East باشد. West.microsoft.com , East.microsoft.com , مایکروسافت دارای دامنه اختصاصی msn.com بوده که خود شامل یک زیر دامنه با نام mail.microsoft.com است.

روشهای جستجو در سرویس دهنده های نام

همانگونه که اشاره شد اسامی نمادین در شبکه اینترنت که خود در قالب حوزه ها و زیر حوزه ها سازماندهی شده اند در یک فایل متمرکز ذخیره نمی شوند بلکه روی کل شبکه اینترنت توزیع شده اند , به همین دلیل برای ترجمه یک نام به آدرس IP ممکن است چندین مرحله پرس و جو صورت بگیرد تا یک آدرس پیدا شود , طبیعی است که یک پرس و جو برای تبدیل یک نام حوزه همیشه موفقیت آمیز نباشد و ممکن است به پرس و جوهای بیشتری نیاز شود یا حتی ممکن است یک آدرس نمادین اشتباه باشد و هیچ معادل IP نداشته باشد.

3 روش برای پرس و جوی نام در سرویس دهنده های نام وجود دارد:

  1. پرس و جوی تکراری (Iterative Query)
  2. پرس و جوی بازگشتی (Recursive Query)
  3. پرس و جوی مع*** (Reverse Query)


حال به بررسی این سه روش می پردازیم:

1) پرس و جوی تکراری:

در پرس و جوی تکراری قسمت اعظم تلاش برای تبدیل یک نام بر عهده سرویس دهنده محلی است , این DNS حداقل به آدرس ماشین Root به عنوان نقطه شروع نیاز دارد , وقتی یک تقاضای ترجمه آدرس به سرویس دهنده محلی ارسال می شود در صورتی که قادر به ترجمه نام به معادل IP آن باشد , معادل آدرس IP نام مورد نظر را به تقاضا کننده برمی گرداند , این حالت وقتی است که سرویس دهنده محلی قبلاً آن نام را ترجمه و در یک فایل ذخیره کرده باشد , در غیر این صورت سرویس دهنده محلی خودش یک تقاضا برای DNS سطح بالا ارسال می کند.

این سرویس دهنده , آدرس ماشینی را که می تواند برای ترجمه نام مورد نظر مفید باشد , به سرویس دهنده محلی معرفی می کند , سرویس دهنده محلی مجدداً یک تقاضا به ماشین معرفی شده در مرحله قبل ارسال می کند. در این حالت هم سرویس دهنده نام می تواند در صورت یافتن آدرس IP با آن نام حوزه , آنرا ترجمه کند و یا آنکه آدرس سرویس دهنده سطح پایینتری را به او برگرداند .این روند ادامه می یابد تا DNS نهایی نام مورد نظر را به آدرس IP ترجمه نماید. برای درک بهتر از روند کار به شکل زیر دقت کنید.

در این مثال فرض شده است که یک برنامه کاربردی با فراخوانی تابع تحلیلگر نام , تقاضای ترجمه نام www.microsoft.com را می نماید.

مراحلی که انجام می شود به شرح زیر است:

  1. در مرحله اول برنامه کاربردی با فراخوانی تابع تحلیل نام , تقاضای ترجمه آدرس www.microsoft.com را برای سرویس دهنده محلی ارسال کرده و منتظر می ماند.
  2. در مرحله دوم , سرویس دهنده محلی از سرویس دهنده Root که حوزه های متفاوت را تفکیک می کند آدرس ماشین یک DNS که متولی حوزه .com است را سؤال می کند.
  3. در مرحله سوم , آدرس سرویس دهنده مربوط به حوزه .com بر می گردد.
  4. در مرحله چهارم , سرویس دهنده محلی , از ماشین معرفی شده در مرحله قبلی , آدرس سرویس دهنده مربوط به حوزه Microsoft.com را سؤال می نماید.
  5. در مرحله پنجم فهرستی از سرویس دهنده های DNS مربوط به microsoft.com بر می گردد.
  6. در مرحله ششم , سرویس دهنده محلی تقاضای ترجمه آدرس نمادین www.microsoft.com را از DNS متعلق به حوزه microsoft.com می کند.
  7. در مرحله هفتم , معادل آدرس IP نام www.microsoft.com برمی گردد.
  8. در مرحله هشتم , آدرس IP خواسته شده در اختیار برنامه کاربردی قرار می گیرد.


2) پرس و جوی بازگشتی:

در این روش هر گاه برنامه ای بخواهد آدرس IP معادل یک نام مثل cs.yale.edu را بدست آورد بگونه ای که قبلاً اشاره شد ، "تابع سیستمی تحلیل نام" را فراخوانی می کند. این تابع یک ماشین را بعنوان سرویس دهنده محلی از قبل می شناسد و بنابراین تقاضای تبدیل نام را به روش UDP برای آن ارسال کرده و منتظر جواب می ماند , پاسخ نهایی DNS طبیعتاً باید یک آدرس 32 بیتی معادل آدرس IP یک ماشین باشد.

دو حالت ممکن است اتفاق بیفتد:

  • ممکن است در بانک اطلاعاتی مربوط به سرویس دهنده محلی , آدرس IP معادل با آن نام از قبل وجود داشته و بالطبع به سرعت مقدار معادل IP آن بر می گردد.
  • ممکن است در بانک اطلاعاتی سرویس دهنده محلی , معادل IP آن نام وجود نداشته باشد , مثلاً سرویس دهنده محلی در بانک اطلاعاتی خودش معادل IP نام cs.mit.edeu را نداشته و طبیعتاً نمی تواند آن را ترجمه کند , در چنین حالتی سرویس دهنده محلی موظف است بدون آنکه به تقاضا دهنده خبر بدهد , خودش رأسا به سرویس دهنده سطح بالاتر تقاضای ترجمه آدرس بدهد , در این حالت هم DNS سطح بالاتر به همین نحو ترجمه آدرس را پیگیری می کند یعنی اگر معادل IP آن نام را داشته باشد آنرا برمی گرداند و در غیر اینصورت خودش از سرویس دهنده سطح پایینتر تقاضای ترجمه آن نام را می نماید و این مراحل تکرار می شود. در روش پرس و جوی بازگشتی ماشین سرویس دهنده محلی این مراحل متوالی را نمی بیند و هیچ کاری جز ارسال تقاضای ترجمه یک آدرس بر عهده ندارد و پس از ارسال تقاضا برای سرویس دهنده سطح بالا منتظر خواهد ماند. بازهم تکرار می کنیم , روشی که DNS برای ترجمه آدرس بکار می برد می تواند بدون اتصال (UDP) باشد که این کار به سرعت عمل ترجمه آدرس می افزاید. دقت کنید که در روش پرس و جوی تکراری نسبت به روش پرس و جوی بازگشتی , حجم عمده عملیات بر عهده سرویس دهنده DNS محلی است و مدیریت خطاها و پیگیری روند کار ساده تر خواهد بود و روش منطقی تری برای بکارگیری در شبکه اینترنت محسوب می شود , روش پرس و جوی بازگشتی برای شبکه های کوچک کاربرد دارد.


3) پرس و جوی مع***:

فرض کنید حالتی بوجود بیاید که یک سرویس دهنده DNS , آدرس IP یک ماشین را بداند ولی نام نمادین معادل با آن را نداند , بعنوان مثال DNS مایل است بداند که چه نامی در شبکه اینترنت معادل با 195.13.42.7 می باشد , در چنین حالتی مسئله کمی حادتر به نظر می رسد , چرا که برای ترجمه نامهای نمادین , چون این نامها دارای حوزه و زیرحوزه هستند , تحلیل آدرسها ساده است ولی ترجمه آدرس IP به معادل نام حوزه , از چنین روابطی تبعیت نمی کند , بعبارت بهتر هیچ ارتباط مستقیم و متناظری بین آدرسهای IP و اسامی انتخاب شده در اینترنت وجود ندارد.

برای یافتن نامهای متناظر با یک آدرس IP باید یک جستجوی کامل و در عین حال وقتگیر انجام بشود , روش کار بدین صورت است که سرویس دهنده محلی یک تقاضا برای DNS متناظر با شبکه ای که مشخصه آن در آدرس IP , مشخص شده , ارسال می کند , بعنوان مثال آدرس IP شبکه ای را 138.14.7.13 در نظر بگیرید , آدرس کلاس B و مشخصه آن 138.14.0.0 است.

زمانی که مؤسسه ای یک کلاس IP ثبت می دهد یک سرویس دهنده DNS , متناظر با شبکه خود ایجاد کرده و آنرا نیز معرفی می کند , سرویس دهنده محلی بایستی آدرس DNS متناظر با شبکه 138.14.0.0 را پیدا کرده و سپس برای آن یک تقاضا ارسال کند.

DNS مربوط به این شبکه , براساس زیر شبکه هایی که دارد این سؤال را از طریق سرویس دهنده های متناظر با هر زیر شبکه پیگیری می کند ,چون هر زیر شبکه یک سرویس دهنده DNS مخصوص به خود دارد , نهایتاً یک نام نمادین حوزه معادل با آن آدرس IP بر خواهد گشت.

برگرفته شده از طراحی وب | وب کاران با کمی ویرایش