DNS چیست؟ سیستم نام دامنه (Domain Name System) یا DNS در واقع دفتر تلفن اینترنت است؛ و افراد میتوانند از طریق نام دامنهی سایتها مانند Hostiran.net به یک سری اطلاعات آنلاین دسترسی داشته باشند.
هر دستگاه متصل به اینترنت یک آدرس آی پی منحصربهفرد دارد. با وجود DNS و تبدیل آدرس IP از اعداد به حروف، دیگر نیازی به حفظ کردن یک سری اعداد برای رسیدن به وبسایت مورد نظر نخواهد بود. اگر این اتفاق نمیافتاد باید بجای حروف و نام دامنه، اعداد را حفظ میکردیم و با اعداد پیچیده یا ترکیب اعداد با حروف مواجه میشدیم. بهعنوانمثال ۲۴۰۰:cb00:2048:1::c629:d7a2 یکی از پیچیدهترین آیپیهاست که به راحتی حفظ کردن نیست!
DNS چگونه کار میکند؟
برای اینکه بدانید DNS چیست، باید این موضوع را در نظر بگیرید که فرایند تفکیک DNS شامل ترجمهی نام هاست (مانند www.example.com) به یک آدرس IP سازگار با کامپیوتر (مثل ۱۹۲.۱۶۸.۱.۱) است. یک آدرس IP به هر دستگاه در اینترنت داده میشود و این آدرس برای پیدا کردن دستگاه مناسب اینترنت ضروری است، در واقع این آدرس مانند آدرس یک خیابان است که برای دسترسی به یک خانه خاص استفاده میشود. برای لود شدن هر صفحه از وب، باید آدرسی که توسط کاربر در مرورگر وارد میشود (مثل shanliweb.com) به آدرس سازگار و قابل درکی برای سیستم ترجمه شود.
چهار سرور درگیر DNS برای بارگذاری یک صفحه وب
- DNS recursor: این سرور را میتوان بهعنوان کتابدار در نظر گرفت که از او خواسته میشود یک کتاب خاص را در یک کتابخانه پیدا کند. DNS recursor سروری طراحیشده برای دریافت پرسوجو (query) از سیستم کاربر از طریق برنامههایی مانند مرورگرهای وب است. معمولاً recursor مسئول ایجاد درخواستهای اضافی برای پاسخ به کوئری DNS کاربر خواهد بود.
- Root nameserver: سرور root اولین گام در ترجمهی نام میزبان (Host name) به آدرس IP هست. این امر مصداق فهرستی در یک کتابخانه هست که نام کتابهای چندین قفسه را شامل میشود. سرور مورد نظر بهطور معمول بهعنوان مرجعی برای آدرسهای خاص متعددی عمل میکند.
- TLD nameserver: نام دامنه سطح بالا (TLD) میتواند بهعنوان یک قفسه خاص از کتابها در یک کتابخانه تلقی شود. این نام سرور، مرحله بعدی در جستجوی یک آدرس IP خاص هست و آخرین بخش، نام هاست را میزبانی میکند. بهعنوانمثال «com» در «com»، سرور TLD هست.
- Authoritative nameserver: آخرین نام سرور را میتوان بهعنوان یک فرهنگ لغت در یک قفسه کتاب در نظر گرفت که در آن یک نام خاص میتواند به معنی خود ترجمه شود. نام سرور معتبر آخرین توقفگاه در کوئری نام سرور است. اگر نام سرور معتبر به رکورد درخواست شده دسترسی داشته باشد، آدرس IP برای نام هاست درخواست شده را به DNS Recursor (کتابداری) که درخواست اولیه را کرده باز میگرداند.
Recursive DNS resolver چیست؟
Recursive resolver کامپیوتری است که به درخواست بازگشتی از سمت کاربر پاسخ داده و زمانی را برای بررسی رکورد DNS اختصاص میدهد. این کامپیوتر، کار را با ایجاد یک سری درخواستها انجام میدهد؛ و تا زمانی که به DNS nameserverمعتبری برای رکورد درخواست شده برسد، زمان به پایان برسد یا اینکه هیچ رکوردی را پیدا نکرده باشد و پیام خطایی را بجای آن ارسال کند.
خوشبختانه، تحلیلگرهای recursive DNS برای ردیابی رکوردهای موردنیاز برای پاسخ به درخواست کاربر، نیازی به ایجاد درخواستهای متعدد ندارند؛ کَش کردن (Cashing) فرآیندی است برای باثبات کردن اطلاعات که برای پاسخ به برخی درخواستهای ضروری، میانبری ایجاد کرده و از نتایج درخواستهای قبلی ایجاد شده برای بررسی DNS و رکورد منابع استفاده میکند. به همین خاطر، کاربر خیلی سریعتر میتواند نتیجهی درخواست خودش را ببیند.
Authoritative DNS server چیست؟
درواقع authoritative DNS server، سروری است که وظیفهی نگهداری از منابع رکورد DNS را بر عهده دارد. این سرور در انتهای زنجیره جستجوی DNS قرار دارد که با استفاده از کوئری رکورد منبع عمل کرده و در نهایت به مرورگر برای ارسال درخواست آدرس IP موردنیاز بهمنظور دسترسی به وبسایت یا دیگر منابع وب اجازه میدهد. یک authoritative nameserver قادر است که بدون نیاز به کوئری گرفتن از منابع دیگر با استفاده از دادههای خود به کوئریها پاسخ دهد، چرا که این آخرین منبع حقیقی برای رکورد DNSهای مشخص است.
در مواردی که کوئریها برای زیردامنهای مانند design.hostiran.net تعریف شدهاند، نام سروری دیگر بعد از مرحلهی authoritative nameserver اضافه خواهد شد که نقش ذخیره رکورد CNAME زیردامنه (subdomain) را بر عهده دارد.
بین سرویسهای DNS و Cloudflare یک تفاوت اساسی وجود دارد. تحلیلگرهایDNS recursive مختلف مانند Google DNS، OpenDNS و سرویس دهندههایی مانند Comcast، دیتاسنترهایی را برای تحلیلگرهایDNS recursive برقرار کردهاند. این تحلیلگرها امکان جستجوی سریع و آسان را از طریق خوشههای بهینهشدهی DNS برای سیستمها فراهم میکنند. البته این سرویسها تفاوتی اساسی با نام سرورهایی میزبانیشده توسط Cloudflare دارند.
Cloudflare نام سرور (Namesever) های زیرساختی را برقرار کرده که برای عملکرد اینترنت نیز ضروری هستند. مثال مهم آن، شبکه سرویسدهنده F-root هست که Cloudflare تا حدی میزبانی آن را برعهدهگرفته است.F-root یکی از اجزای زیرساخت نام سرور سیستم DNS سطح روت هست که مسئولیت میلیاردها درخواست اینترنتی در هر روز را بر عهده دارد.
مراحل بررسی DNS
یکی از مواردی که موقع بررسی DNS چیست در نظر گرفته میشود مراحل آن است. در بیشتر، DNS با نام دامنهای که به آی پی مناسبی ترجمه شده باشد متصل است. با دنبال کردن مسیر بررسی DNS از مرورگر وب طی این فرآیند و بازگشت آن به محل اول، میتوان با چگونگی عملکرد مراحل بررسی DNS آشنا شد. در ادامه نگاهی به مراحل این فرآیند میاندازیم:
نکته: اغلب اطلاعات بررسی DNS بهصورت محلی در کامپیوتر جستجوگر یا بهصورت remote در زیرساخت DNS ذخیره (کَش) خواهند شد. بهطور معمول بررسی DNS در ۸ مرحله صورت میگیرد. پس از کَش شدن اطلاعات دی ان اس، برخی از مراحل فرآیند بررسی DNS بهصورت خودکار Skip میشوند که این موضوع باعث پیشرفت سریعتر فرآیند کلی خواهد شد. مثال زیر خلاصهی تمام ۸ مرحله پیش از ذخیرهی اطلاعات هست:
هشت مرحلهی بررسی DNS:
- پس از تایپ آدرس «com» در مرورگر توسط کاربر، کوئری آن از طریق اینترنت منتقل شده و توسط یک تحلیلگرDNS recursive دریافت میشود.
- تحلیلگر (resolver)، نام روت سرور DNS را پرسوجو میکند.
- سپس سرورِ روت توسط آدرس یک سرور DNS دامنه سطح بالا (Top Level Domain) به تحلیلگر پاسخ میدهد (مثل .com یا .net) که اطلاعات مربوط به دامنههایش را ذخیره میکند. زمانی که برای com سرچ میکنیم، درخواست ما دامنه سطح بالای .com را هدف قرار میدهد.
- تحلیلگر یک درخواست برای دامنه سطح بالا com. میفرستد.
- سرور دامنه سطح بالا (TLD) با آدرس IP نام سرور دامنه پاسخ میدهد؛ com.
- در انتها، تحلیلگر recursive یک درخواست به نام سرور دامنه میفرستد.
- آدرس IP برای com از نام سرور به تحلیلگر بازمیگردد.
- تحلیلگر DNS به مرورگر وب با آدرس IP دامنهی درخواستیِ اولیه پاسخ میدهد.
هنگامیکه ۸ مرحله جستجوی DNS، آدرس IP را برای example.com بازگرداند، آنگاه مرورگر قادر به ایجاد درخواست برای صفحه وب خواهد بود:
- مرورگر یک درخواست HTTP برای آدرس IP میسازد.
- سرور با IP مورد نظر، صفحه وب را باز میگرداند تا در مرورگر نمایش داده شود.
تحلیلگر DNS چیست؟
تحلیلگر DNS اولین توقفگاه در جستجوی DNS و مسئول تعامل با کاربری است که درخواست اولیه را ایجاد کرده است. تحلیلگر مراحل کوئری را آغاز میکند و در نهایت به یک URL میرسد که باید به آدرس IP ضروری ترجمه شود.
نکته: یک جستجوی DNS معمولی کَش نشده، شامل کوئریهای recursive و iterative خواهد بود.
نکته مهم این است که بین یک کوئری بازگشتی DNS و یک تحلیلگر DNS بازگشتی تمایز قائل شویم. این کوئری به درخواست ارسالشده به سیستم DNS اشاره میکند که نیاز به تفکیک کوئری دارد. یک تحلیلگر بازگشتی DNS، رایانهای است که کوئری بازگشتی را میپذیرد و پاسخ را با ایجاد درخواستهای ضروری پردازش میکند.
انواع کوئری های DNS
در یک جستجوی معمولی DNS سه نوع کوئری رخ میدهد. با استفاده از ترکیبی از این کوئریها، یک فرآیند بهینه برای تفکیک DNS میتواند منجر به کاهش مسافت انتقال شود. در یک موقعیت ایدهآل، دادههای ذخیره (کَش) شده در دسترس قرار خواهند گرفت که اجازه میدهد نام سرور DNS، یک جستجوی غیر بازگشتی را برگرداند.
انواع کوئری DNS
- کوئری بازگشتی (Recursive query): در یک کوئری بازگشتی، یک سرویسگیرندهی DNS نیاز دارد که یک سرور DNS (معمولاً یک تحلیلگر بازگشتی DNS) با یک رکورد منبع درخواستشده و یا با یک پیغام خطا (اگر تحلیلگر نتواند رکورد را پیدا کند) به وی پاسخ دهد.
- کوئری تکراری (Iterative query): در این وضعیت، سرویسگیرندهی DNS به سرور DNS اجازه میدهد تا بهترین پاسخ ممکن را بازگرداند. اگر سرور DNS پرسوجو شده با نام پرسوجو تطابق نداشته باشد، ارجاعی به DNS server authoritative برای یک سطح پایینتر از فضای نام دامنه (Domain Namespace) باز میگرداند. سپس سرویسگیرندهی DNS یک پرسوجو برای آدرس مرجوعی میفرستد. این فرآیند با سرورهای DNS اضافی در پایین زنجیره کوئری ادامه مییابد تا زمانی که یک خطا یا تایم اوت رخ دهد.
- کوئری غیر بازگشتی (Non-recursive query): این کوئری معمولاً زمانی رخ میدهد که یک سرویسگیرندهی تحلیلگر DNS از سرور DNS برای ثبت رکوردی، کوئری میگیرد که به هر دو دسترسی دارد، چرا که هم برای رکورد معتبر است و هم برای رکوردی که داخل cache آن وجود دارد. بهطور معمول، یک سرور DNS، رکوردهای DNS را برای جلوگیری از مصرف بیشازحد پهنای باند و بارگذاری بر روی سرورهای آپ استریم (Upstream server)، کَش خواهد کرد.
DNS Caching یا کش کردن دی ان اس چیست و کجا رخ میدهد؟
هدف از caching این است که بهطور موقت دادهها در مکانی ذخیره شوند که منجر به بهبود عملکرد و اعتبار برای درخواستهای اطلاعات میشود. DNS caching شامل ذخیرهسازی داده، در محلی نزدیکتر به کاربر مورد نظر است.
با این روش پرسوجوی DNS سریعتر تفکیک خواهند شد و میتوان از پرسوجوهای بیشتر در امتداد زنجیره جستجوی DNS اجتناب کرد. درنتیجه زمان بارگذاری بهبود پیدا کرده و مصرف پهنای باند/ CPU کم میشود.
دادههای DNS را میتوان در مکانهای مختلفی ذخیره کرد، هرکدام از آنها رکوردهایDNS را برای مدتزمانی تعیینشده توسط یک TTL (Time-to-Live) ذخیره خواهند کرد.
DNS caching مرورگر
مرورگرهای وب جدید طوری طراحی شدهاند که رکوردهای DNS برای مدت زمان معینی بهطور پیشفرض در آنها ذخیره میشوند. هدف این موضوع واضح است؛ هرچه DNS caching در نزدیکی مرورگر وب اتفاق بیفتد، مراحل پردازش کمتری باید بهمنظور بررسی cache و ایجاد درخواستهای صحیح برای یک آدرس IP به کار گرفته شوند.
هنگامیکه یک درخواست برای یک رکورد DNS ساخته میشود، cache مرورگر اولین مکانی است که برای رکورد درخواست شده چک میشود.در کروم میتوانید وضعیت حافظه DNS خود را با رفتن به آدرس chrome://net-internals/#dns مشاهده کنید.
DNS caching سطح سیستمعامل (OS)
تحلیلگر DNS سطح سیستمعامل، دومین و آخرین توقفگاه محل، قبل از آن است که پرسوجوی DNS، دستگاه شما را ترک میکند. فرآیند درون سیستمعامل شما که برای تنظیم این کوئری طراحی شده است معمولاً «stub resolver» یا سرویسگیرندهی DNS نامیده میشود.
وقتی یک stub resolver درخواستی را از یک برنامه دریافت میکند، ابتدا cache خود را برای یافتن رکورد مورد نظر بررسی میکند. اگر جستجوی آن نتیجهای نداشت، آنگاه یک کوئری DNS (با یک recursive flag set)، خارج از شبکه محلی به یک تحلیلگر بازگشتی DNS در سرویسدهنده خدمات اینترنتی (ISP) میفرستد.
DNS caching تحلیلگر بازگشتی
هنگامی که تحلیلگر بازگشتی در ISP، یک پرسوجوی DNS را مانند تمامی مراحل قبلی دریافت میکند، بررسی خواهد کرد که ترجمه آدرسِ هاست به IP در حال حاضر در لایه تداوم محلی خود ذخیره شده باشد.
تحلیلگر بازگشتی نیز بسته به انواع رکورد موجود در cache آن قابلیت بیشتری دارد:
- اگر تحلیلگر دارای رکورد A نباشد، اما دارای رکوردهای NS برای نام سرورهای معتبر (authoritative nameserver) باشد، تحلیلگر نام سرورها را مستقیماً با عبور از چندین گام در کوئری DNS، پرسوجو میکند. این میانبر مانع از جستجوی روت و نام سرورهای .com میشود (بهعنوانمثال در جستجوی com) و به تفکیک سریعتر پرسوجوی DNS کمک میکند.
- اگر تحلیلگر دارای رکوردهای NS نباشد، یک کوئری را با Skip سرور root، برای سرورهای TLD ارسال خواهد کرد (مثل .com).
- در یک رویداد غیرمحتمل که تحلیلگر هیچ رکوردی را ندارد که به سرورهای TLD اشاره کند، سرورهای روت را پرسوجو خواهد کرد. این اتفاق معمولاً پس از اینکه یک DNS cache پاک میشود رخ میدهد.
سخن پایانی
ظهور کامپیوترها دنیا را با تغییرات زیادی مواجه کرده و هر روز تکنولوژی دریچه جدیدی به سوی ما باز میکند. یکی از مواردی که دنیای آنلاین را تحت تأثیر قرارداد ایجاد مفهومی به نام دی ان اس برای سادهتر شدن دسترسی کاربران به صفحات وب بود. در این مطلب به طور خلاصه نحوه کار دی ان اس را شرح دادیم.