برای پاسخ به سوال DNS چگونه کار میکند در ابتدا باید به دلیل پیدایش آن بپردازیم. وقتی که از اینترنت، استفاده مینمایید، در ابتدا، برای وارد شدن به هر سایت اینترنتی، نام دامنه (domain) آن را وارد میکنید، این در حالی است که، کامپیوترها در اینترنت، بر پایهی آدرس IP با هم ارتباط دارند. همانطور که، به یاد داشتن شماره تلفن اشخاص، مشکل است، به یاد داشتن IP میزبانها، کاری دشوار است. بدلیل اینکه، به یاد ماندن نامها، بسیار راحتتر از حفظکردن اعداد است، معمولا، به هر آدرس IP، یک نام منحصربفرد یا domain name اختصاص میدهیم. این نام، باید در مراکز ثبت دامنه، ثبت شده باشد. البته اختصاص نام، به هر IP، الزامی نیست و IPهایی هم میتوانند، بدون نام دامنه باشند.
سیستم نامگذاری دامنه یا DNS، شبیه یک دفتر تلفن عمل میکند. کار DNS، تبدیل نامهای دامنههای اینترنتی، به آدرس IP آنها میباشد. برای آشنایی با اینکه DNS چگونه کار میکند ، با ما همراه باشید.
تنظیم IP مربوط به DNS برای کاربران
وقتی برای یک کامپیوتر، جهت استفاده از اینترنت، IP قرار میدهیم، یکی از مواردی که باید تنظیم شود، آدرس IP های DNS است. قراردادن IP، میتواند به صورت دستی و یا توسط سرویسدهندهی DHCP، اعمال گردد. حال وقتی شما مثلا در مرورگر خود upgradeit.ir را وارد نموده و کلید Enter را میزنید، نام دامنهی upgradeit.ir به صورت یک بستهی UDP و یا TCP به آدرس IP مربوط DNSی که در کامپیوتر خود تنظیم کردهاید، ارسال میشود. سرویسدهندهی DNS، در پاسخ، IP دامنه درخواست شده را، طی مراحلی که در ادامه خواهیم گفت، برای درخواست کننده ارسال مینماید.
DNS چگونه کار میکند ؟
بنا بر گزارش verisign فقط تا سال 2017، بیش از سیصدو سی ملیون دامنهی اینترنتی ثبت شده است و هر ساله ثبت دامنهها، افزایش مییابد. این مسئله، جدا از زیردامنه(subdomain) هایی است که بسیاری از آنها آدرسهای IP جداگانه دارند. حال تصور کنید، اگر هر سرویس دهندهی دامنه، بخواهد تمام این حجم از اطلاعات را در خود ذخیره سازد، چه مقدار از منابع سختافراری و ذخیرهسازی را به خود اختصاص دهد. از این مهمتر، همگامسازی سرورها با یکدیگر، زمانبر و باعث ترافیک بالا در شبکهی جهانی خواهد شد.
برای حل این موضوع، DNS، بصورت سلسلهمراتبی طراحی گردید. با روش سلسلهمراتبی(hierarchical) دیگر نیاز به روشهای پیچیده نیست و پیمایش DNS، به صورت درختی انجام میپذیرد. قبل از هر چیز لازم است راجع به ساختار دامنهی سطح بالا، توضیحاتی را ارائه دهیم.
دامنهی سطح بالا TLD: Top Level Domain
هر نام دامنه، دارای یک دامنهی سطح بالا (TLD) مثل net , .org , com. و ir. میباشد. TLDها، دو دسته هستند: دستهی اول به صورت دامنههای سطح بالای عمومی، مثل com. و net. و org. میباشند که، در تمام جهان استفاده میشود. دستهی دوم، دامنههای سطح بالایی که به هر کشور اختصاص داده شده است و یک مخفف دو حرفی، برای هر کشور است. به عنوان مثال، ir. دامنهی سطح بالا برای ایران و uk. دامنهی سطح بالا، برای انگلستان میباشد. مدیریت تمام دامنههای سطح بالا توسط ICANN، انجام میپذیرد. بیش از هزار نام سطح بالا، وجود دارد، که حدود 300 نام مربوط به نام اختصاری کشورهای جهان، میباشد. نامهای ثبت شده تحت هرکدام از TLDها توسط سازمانهای مربوطه رجیستر میشوند. در ایران، ایرنیک ، عهده دار ثبت دامنههای اینترنتی تحت نام سطح بالای ir. میباشد.
انواع سرویسدهندههای نام (Nameservers)
میتوان سرویسدهندههای نام را، بر حسب کارکردشان تقسیمبندی نمود. برای بدست آوردن IP از روی نام دامنه هر کدام از این سرویسدهندهها، بخشی از کار را انجام میدهند. انواع سرویس دهندههای نام ، به شرح زیر میباشند:
- Recursive name servers
- Root name servers
- TLD name servers
- Authoritative name servers
مراحل به دست آوردن IP از نام دامنه
بدست آوردن IP از نام دامنهی مورد نظر، طی چهار مرحله، انجام میپذیرد.
مرحلهی اول: Recursive Nam Reseolver
در مرحلهی اول، کاربر، نام دامنهی مورد درخواست، مثلا upgradeit.ir را، در مرورگر خود تایپ مینماید. درخواست بدست آوردن IP دامنه به آیپی DNS ست شده در کامپیوتر کاربر ارسال میشود. این سویسدهندهها، از نوع Recursive DNS Resolver یا تحلیلگر نام هستند. سرورهای تحلیلگر نام، نقش پرس و جو، از سرویسدهندههای نام را، برعهده دارند. این سرورها درخواستهای کاربران برای تحلیل نام دامنه، طی سه مرحله پرس و جو، که در ادامه توضیح خواهیم داد، بدست آورده و نتیجه را برای کاربران ارسال میکنند.
یکی دیگر از نقشهای این سرورها ایناست که میتوانند بر حسب زمانبندی انجام شده، مدت زمانی، جستجوهای انجام شده را نگه داشته(Cache) و برای جستجوهای آتی استفاده نمایند.
مرحلهی دوم Root Name Server
در مرحلهی دوم، سرور تحلیل نام، پرس و جو را از سرورهای root آغاز میکند. سرورهای root، حاوی رکوردهای حاوی TLDها و IP مربوط به سرورهای TLDها میباشند. مثلا اگر TLD دامنهی ما، ir. باشد، سرور root آدرس name server حاوی دامنههای ir. را به ما میدهد.
تعداد سیزده سرور اصلی یا root servers در اینترنت وجود دارند، که Ip های DNS سرورهای مربوط به هر TLD، در در خود ذخیره کردهاند. لیست root server های اصلی در اینترنت به شرح زیر میباشد:
Verisign Inc | a.root-servers.net |
University of Southern California Information Sciences Institute | b.root-servers.net |
Cogent Communications | c.root-servers.net |
University of Maryland | d.root-servers.net |
NASA – Ames Research Center | e.root-servers.net |
Internet Systems Consortium Inc | f.root-servers.net |
US Department of Defense -NIC | g.root-servers.net |
US Army – Research Lab | h.root-servers.net |
Netnod | i.root-servers.net |
Verisign Inc | j.root-servers.net |
RIPE NCC | k.root-servers.net |
ICANN | l.root-servers.net |
WIDE Project | m.root-servers.net |
تعداد زیادی سیستم نامگذاری دامنه سرور در جهان هستند که به تکثیر رکوردهای این سیزده سرور، میپردازند. برای دیدن مکانهای این DNS سرورها در جهان میتوانید از سایت root-server.org بازدید نمایید.
مرحلهی سوم: TLD Name Server
در مرحلهی سوم، سرور تحلیل نام، پس از بهدست آوردن IP سرور TLD، که در مرحلهی دوم بدست آمده است، پرسوجو را ادامهمیدهد. در مثال مورد نظر، سرور تحلیلگر نام از سرور TLD مربوط به ir. ، آدرس سرویسدهندهی معتبر نام یا Authoritative Name Server درخواست IP مربوط به دامنهی upgradeit.ir را میدهد.
مرحلهی چهارم: Authoritative Name Server
پس از اینکه سرور TLD ، شمارهی IP مربوط به سرویسدهندهی معتبر نام، درخواست شده را داد، وارد مرحلهی بعد پرسوجو میشویم. سرویسدهندهی معتبر نام یا Authoritative Name Server، حاوی رکوردهای مربوط به دامنه (مثلا uogradeit.ir) میباشد. حالا نوبت استعلام از سرور معتبر نام برای این دامنهاست. به عنوان مثال ما از سرور نام دارای اعتبار برای upgradeit.ir میتوانیم تمام IP های مربوط به زیردامنههای upgradit.ir مثل www.upgradeit.ir یا mail.upgradeit.ir را از سرور معتبر نام مربوط به، دامنهی upgradeit.ir، را درخواست نماییم.