DNS چیست؟ آشنایی با دی ان اس و اجزای آن
DNS چیست؟ آیا تا به حال فکر کردهاید که وقتی آدرس یک وبسایت را در مرورگر خود تایپ میکنید، کامپیوتر شما چگونه آن را پیدا میکند؟ پاسخ در سیستم نام دامنه (DNS) نهفته است. در این مقاله از وب سایت آموزش برنامه نویسی سبزلرن، به زبان ساده به شما توضیح خواهیم داد که DNS چیست و چه نقشی در اینترنت ایفا میکند.
قبل از اینکه به تعریف DNS بپردازیم، نیاز است مباحث پیشنیاز این مبحث را بدانید.
پیشنیازهای آشنایی با DNS
3 مبحث وجود دارد که قبل از آشنایی با دی ان اس، باید آنها را درک کنید؛ اینترنت، IP و سرور! در ادامه به صورت مختصر به تعریف هرکدام میپردازیم.
شبکههای کامپیوتری و اینترنت
زمانی که دو یا چند رایانه یا دستگاه دیجیتالی را به یکدیگر متصل میکنیم، در واقع یک شبکه کامپیوتری ایجاد کردهایم. این کار با هدف به اشتراک گذاری منابع سخت افزاری (نظیر پرینتر، اسکنر، منابع پردازشی و هر دستگاه یا قطعه فیزیکی) یا منابع نرم افزاری (تصاویر، اسناد، فایلها، نرم افزار، ویدیو، متن و هر نوع داده غیرفیزیکی) انجام میشود. این اتصال ممکن است به صورت سیمی یا بیسیم صورت پذیرد و در هر حالت، به آن یک شبکه کامپیوتری گفته میشود.
اینترنت، بزرگترین شبکه کامپیوتری در جهان است که میلیاردها دستگاه مختلف به آن متصل بوده و در حال ارسال و دریافت اطلاعات هستند.
سرویس دهنده یا Server
سرویس دهنده یا همان سرور، رایانهای قدرتمند است که وظیفه مدیریت شبکه و پاسخ به درخواستهای ارسال شده از طریق دستگاههای سرویس گیرنده (Client) را برعهده دارد. در یک شبکه کامپیوتری، سرور میزبان شبکه و ارائه دهنده منابع به سرویس گیرندگان است و یکی از دستگاههای متصل به شبکه محسوب میشود. هر سایت، برنامه یا هرگونه دیتایی که از طریق اینترنت قابل دسترسی است، روی یک یا چند سرور قرار گرفته و میزبانی میشوند.
برای آشنایی کامل با سرور، پیشنهاد میکنم مقاله سرور چیست؟ را مطالعه کنید.
IP
فارغ از کاربرد و نوع کارکرد، هر دستگاه متصل به یک شبکه دارای یک شناسه منحصر به فرد است که نمیتواند با دیگر دستگاهها یکسان باشد. این شناسه را پروتکل آدرسدهی اینترنتی یا IP مینامیم. دو نسخه IP در اینترنت و کلا شبکههای کامپیوتری وجود دارد:
- IPv4 که از 4 بخش عددی تشکیل شده که هرکدام باید دارای مقداری بین 0 تا 255 باشند. مثلا 192.1.1
- IPv6 نسخه جدیدتر و متشکل از 8 بخش است که هر بخش میتواند دو مقدار برمبنای 16 (هگزادسیمال) داشته باشد. مثلا 2001:0db8:85a3:0000:0000:8a2e:0370:7334
برای دسترسی و ایجاد ارتباط بین دستگاهها در هر شبکه، نیاز به اطلاع از آدرس IP و اتصال آنها به یکدیگر است. از این طریق میتوان اطلاعات را بین دو یا چند دستگاه منتقل کرد.
حالا که با مباحث پیشنیاز برای آشنایی باDNS آشنا شدید، میتوانیم به سراغ اینکه DNS به زبان ساده چیست؟ برویم.
DNS چیست؟ به زبان ساده
قبل از تعریف DNS، بیایید یک مثال را تصور کنیم. یک سایت فروشگاهی را درنظر بگیرید. این سایت روی سرورهای یک شرکت ارائه دهنده سرور میزبانی شده و از منابع آن سرور استفاده میکند. طبق توضیحات بخش IP در بالاتر، برای دسترسی به این سایت و ایجاد ارتباط با آن باید از IP استفاده کنیم. این یعنی هر بار که بخواهیم وارد این سایت شویم، باید تعداد زیادی از اعداد را در مرورگر وارد کرده تا وارد آن سایت شویم. شاید این مورد کار سادهای باشد؛ اما شما واقعا در طول روز یا یک هفته، تنها از یک سایت استفاده میکنید؟
مسلما جواب منفی است. حفظ یا حتی ذخیره IP سایتها برای دسترسی به آنها کار سخت و بیهودهای است؛ زیرا سیستمی به نام سیستم نام دامنه یا همان DNS وجود دارد که یک نام را همراه با یک پسوند مشخص (نظیر .ir یا .com) به یک IP اختصاص میدهد. در این حالت، زمانی که نام سایت را جستجو میکنید، مرورگر شما به صورت خودکار و در کمتر از چند هزارم ثانیه، میتواند آدرس IP سایت را پیدا کرده و درخواست دسترسی به آن صفحه از سایت را به سرور سایت ارسال کند.
در واقع این سیستم، کاری میکند که نیازی به استفاده از آدرس IP سایتها برای دسترسی به آنها نداشته باشید و با اختصاص یک دامنه یکتا به IP موردنظر، دسترسی به آن را سادهتر میکند. البته IP مربوطه به دامنه اختصاص ندارد؛ بلکه متعلق به سرور بوده و مرورگر کاربر، اطلاعات آمده در ادامه آدرس سایت را از سرور درخواست میکند.
البته این نکته را نباید فراموش کنید که در زمان کار با اینترنت، این کامپیوترها هستند که پردازشهای مختلف را انجام میدهند. کامپیوتر نمیتواند نامها یا اطلاعات را مانند انسانها متوجه شود و تنها امکان درک اعداد را دارد. به همین دلیل، نیاز به ترجمه نام سایتها به آدرس IP وجود دارد.
طبیعی است کمی گیج شده باشید؛ به همین دلیل بهتر است با نحوه کارکرد DNS آشنا شوید تا بهتر این سیستم را درک کنید.
DNS چطور کار میکند؟
برای توضیح نحوه کارکرد DNS به زبان ساده، میتوان گفت که این سیستم وظیفه یافتن آیپی سرور سایت و اتصال به آن از طریق مرورگر است. به این ترتیب میتوان به سایت موردنظر وارد شده و آن را مشاهده کرد.
برای اطلاع از اینکه DNS دقیقا به چه صورت سایتها را تشخیص میدهد، باید کمی در سازوکار دی ان اس عمیق شویم. جهت درک بهتر این موضوع، همه مراحل به صورت یک سناریو تشریح میشوند. قبل از آن، میتوانید با نگاهی به تصویر زیر، خلاصهای از نحوه عملکرد دی ان اس ببینید.
زمانی که شما آدرس سایت سبزلرن را جستجو کرده یا روی یکی از لینکهای آن کلیک میکنید، مرورگر نیاز دارد آدرس Sabzlearn.ir را به IP ترجمه کند. در این حالت، DNS وارد عمل میشود.
در ابتدا، درخواست از طریق مرورگر به سروری به نام DNS Resolver یا تجزیهگر DNS ارسال میشود. این سرور وظیفه دارد با ارجاع درخواست به سرورهای DNS که در کل دنیا پخش شدهاند، IP متصل به سایت مدنظر را پیدا کرده و به مرورگر ارائه دهد. برای این کار، مراحل زیر انجام میشود:
- در ابتدا درخواستی به سرور ریشه یا Root Server ارسال میشود. این سرور وظیفه دارد با تشخیص TLD یا همان پسوند دامنه، DNS Resolver را به مرحله بعدی برساند. در این حالت، Root Server تشخیص میدهد که تجزیهگر باید در سرور مربوط به دامنههایی با پسوند .ir جستجو کند.
- در ادامه، DNS Resolver به سرور دیگری با نام TLD Server مراجعه کرده و درخواست مربوطه را ارائه میدهد. این سرور در دادههای خود جستجو کرده و در صورت موجود بودن چنین آدرسی، آن را تایید میکند و درخواست را به DNS Resolver برمیگرداند.
- در قدم سوم، DNS Resolver درخواستی را به سرور دیگری به نام Authoritative Nameserver Srever ارسال میکند. این سرور، وظیفه ارائه IP ثبت شده به تجزیهگر را دارد.
- در نهایت، آدرس IP از DNS Resolver به مرورگر ارائه شده و کار DNS به اتمام میرسد.
همه این فرآیند، از ارسال درخواست به DNS Resolver تا ارائه IP به مرورگر، در کمتر از نیم ثانیه انجام میشود و به این ترتیب، دی ان اس کار خودش را به بهترین شکل انجام میدهد. البته شاید دانستن این موضوع که روش بسیار سریعتری نیز برای این کار وجود دارد، باعث کنجکاوی شما شود!
اگر DNS Resolver نتواند IP سایت را پیدا کند…
اگر تجزیهگر نتواند IP متصل به دامین سایت را پیدا کند، 3 حالت رخ میدهد:
- DNS Resolver اقدام به بررسی سایر سرورهای مربوط به هر مرحله میکند و در صورت یافتن آن، مراحل به صورت عادی طی میشوند.
- در صورتی که Resolver در این کار موفق نشود، مرورگر تلاش میکند از کش DNS خود برای یافتن IP سایت مربوطه استفاده کند.
- آدرس IP پیدا نشده، مرورگر نمیتواند به سرور سایت متصل شود و خطای Domain Not Found یا DNS Error را نمایش میدهد. چیزی مانند تصویر زیر:
کش DNS چیست؟
واژه کَش (Cache) یا همان حافظه موقت، چیزی است که در بحث توسعه وب زیاد با آن برخورد میکنید. این اصطلاح به فضایی برای ذخیره سازی دادههای پرکاربرد در نزدیکترین مکان به کاربر اشاره دارد که در صورت نیاز، با کمترین تاخیر قابل استفاده باشند.
در مرورگر شما، هر زمان که اطلاعاتی از یک سایت دریافت میشود، بخشی از آن به صورت کش نگهداری میشود تا در مراجعه بعدی به سایت، از این اطلاعات استفاده شود. قسمت کوچکی از این اطلاعات، مربوط به DNS است که آدرس IP سایتهایی که از آنها بازدید داشتهاید را درون خود ذخیره کرده و با نام DNS Cache شناخته میشود.
راهکار تشخیص IP سایت در سرورهای اشتراکی توسط DNS چیست؟
احتمالا میدانید که اکثر سایتها، نیاز به یک سرور کامل ندارند، بلکه تنها به بخش کوچکی از آن احتیاج دارند. شرکتهای ارائه دهنده خدمات میزبانی، ممکن است منابع یک سرور را به دهها سایت اختصاص دهند؛ در این حالت IP ارائه شده برای سایتهایی که روی یک سرور میزبانی میشوند، یکسان خواهد بود.
تشخیص اینکه درخواست ارسال شده از مرورگر، کدام یک از سایتهای موجود در یک سرور را درخواست میکند، برعهده سرور بوده و با استفاده از HTTP Header انجام میشود. در نتیجه انجام این کار برعهده سیستم DNS نیست؛ اما خلاصهای از آن را برای درک بهتر این موضوع توضیح میدهیم.
درخواست ارسال شده از مرورگر به سرور، اطلاعاتی راجع به دامنه موردنیاز را درون خود دارد که در بخش HTTP Header قرار گرفته است. سرور با بررسی این بخش از درخواست، دامنه را تشخیص و براساس ادامه آدرس، اطلاعات موردنیاز را پردازش و به مرورگر ارسال میکند. مثلا در HTTP Header نوشته شده که اطلاعات صفحهای با آدرس sabzlearn.ir/courses موردنیاز است؛ در این حالت، سرور بعد از تشخیص دامنه سایت، اطلاعات آمده در ادامه آدرس (/courses) را به مرورگر ارسال میکند.
اما نکته مهمی وجود دارد. سایتهای بزرگ (نظیر دیجی کالا) چندین سرور در اختیار دارند؛ پس DNS چطور میتواند IP مناسب را پیدا کند؟ اگر بخشهای قبلی را به دقت مطالعه کرده باشید، اشاره کردیم که سرورهای DNS در سرتاسر جهان وجود دارند و روی ارائه هرچه سریعتر IP به مرورگر تمرکز دارند. در نتیجه، تجزیهگر DNS ترجیح میدهد IP نزدیکترین سرور به کاربر را پیدا کرده و ارسال کند. این یعنی ممکن است یک کاربر در تهران، به سرور قرار گرفته در این شهر متصل شده و کاربر دیگری در شیراز، به سرور دیجی کالا در اصفهان متصل شود.
DNS Server چیست؟
در قسمت قبل و نحوه کارکرد DNS، به سرورهای مرتبط با آن اشاره کردیم که شامل 3 سرور و یک تجزیهگر بوده و با نحوه کار آنها نیز آشنا شدیم. اگر میخواهید بدانید دقیقا DNS Server چیست، میتوان گفت این سرورها، پایگاههای داده عظیمی از نام دامنهها و آدرسهای IP مربوط به آنها را نگهداری میکند. وظیفه اصلی DNS Server، ترجمه نام دامنهها به آدرس IP برای دسترسی کاربران به سایتها و اطمینان از امنیت و حفاظت از آنهاست. جدول زیر خلاصهای از کارکرد این سرورها را درون خود جای داده است.
نام سرور | کاربرد | چه کاری میکند؟ |
Resolver (سرور بازگشتی) | دریافت درخواست کاربر و ارتباط با سایر سرورها برای پیدا کردن آدرس IP نهایی | مدیریت کل فرآیند جستجو |
Root Server (سرور ریشه) | شروع جستجوی نام دامنه و هدایت درخواست به سرورهای دامنه سطح بالا (TLD) | نقطه شروع جستجو |
TLD Server (سرور سطح بالا) | مدیریت دامنههایی با پسوند مشخص (مثل .com، .org) | هدایت به دامنه معتبر |
Authoritative Server (سرور معتبر) | ذخیره اطلاعات نهایی دامنه و ارائه آدرس IP مربوطه | پاسخدهی نهایی به درخواست |
لازم به ذکر است که در محتواهای آموزشی مختلف، نوع دیگری از DNS Derver با نام Caching Server معرفی شده و به عنوان یک سرور جداگانه درنظر گرفته میشود. کلیات ماجرا درباره این سرور درست است؛ اما در واقع، DNS Caching Server بخشی از DNS Resolver محسوب میشود که دامنههای پرتقاضا در اینترنت را کش میکند. به این ترتیب حتی اگر قبلا به سایتی مراجعه نکرده باشید و مرورگرتان آدرس IP آن را کش نکرده باشد، نیازی به طی شدن فرآیندهای مربوط به یافتن IP سایت از طریق DNS نیست.
جمعبندی
در این مطلب از وبلاگ سبزلرن، با DNS و نحوه کارکرد آنها آشنا شدیم. همچنین با مباحثی مثل اینکه اگر IP سایت پیدا نشود، چه اتفاقی میافتد، چطور در هاستهای اشتراکی، میتوان به سایت مدنظر دسترسی داشت و DNS Cache چیست و چه کاربری دارد، اشنا شدیم. برای یادگیری و ورود به دنیای توسعه وب و IT، نیاز است با این مباحث آشنایی کامل پیدا کرده و آنها را درک کنید. در این صورت، امکان یادگیری مباحث جدید و پیشرفتهتر در زمان کمتر را کسب میکنید.
بسیار عالی