ممکن است واژه ی DNS را زیاد نشنیده باشید ولی زمانی که روی لینکی کلیکی می کنید، یا تلگرام را باز میکنید یا ایمیل میفرستید و … دستگاه مورد استفاده شما به سامانه DNS مراجعه می کند.
تقریباً هر آن چه که بر روی اینترنت وجود دارد با یک درخواست DNS (سامانهٔ نام دامنه) شروع میشود. DNS کتابچه ی آدرسهای اینترنتی است. هنگامی که بر روی یک لینک کلیک میکنید، اولین کاری که دستگاه شما انجام میدهد مراجعه به DNS است. به زبان ساده ، DNS یک فهرست اسامی است که با اعداد مطابقت دارد. اعداد همان آدرس های IP هستند که کامپیوترها برای برقراری ارتباط با یکدیگر از آن ها استفاده می کنند. در این مقاله نگاهی به DNS ( دی ان اس یا نیم سرور) خواهیم داشت همچنین چگونگی کار با DNS را خواهیم فهمید.
DNS چیست؟
DNS مخفف Domain Name System ، سیستم نام دامنه است که نوعی ساختار و شبکهبندی است که برای نامگذاری کامپیوتر ها و سایر منابعی که به اینترنت وصل می شوند بکار میرود. در این سیستم نام هایی که برای انسان آشنا است به آدرس های منحصر بفرد resolve می شود.
سرورهای نام دامنه (DNS) یک تکنولوژی شگفت انگیز است که به ما کمک می کند آدرس های اینترنتی را بدون هیچگونه مشکلی باز کنیم. در واقع ، DNS معادل کتابچه تلفن اینترنت است. آن ها یک فهرست از نامهای دامنه را حفظ کرده و آن ها را به آدرس های پروتکل اینترنت (IP) ترجمه می کنند. نحوه کار DNS دقیقاً مانند بخش مخاطبین تلفن هوشمند شما است. شماره دوست تان را می خواهید؟ فقط نام او را تایپ کنید و تلفن شما آن را برای شما می آورد.
اطلاعات دریافت شده از همه سرورهای نام دامنه در سراسر اینترنت در Registry Central ذخیره میشوند. شرکتهای میزبان و ارائهدهندگان خدمات اینترنتی برای بدست آوردن اطلاعات DNS به روز ، دائماً با Registry Centre در تماس هستند.
عملکرد اصلی DNS
عملکرد اصلی DNS وضوح نام است. این نوعی معماری است که نام ها را برای آدرس ها تطبیق میدهد بهطوری که وقتی کاربر سعی می کند به یک کامپیوتر دیگر در یک شبکه دسترسی پیدا کند ، او را به آنجا راهنمایی میکند.
وقتی یک آدرس وب را وارد میکنید ، به عنوان مثال ، www.get.tech ، ارائه دهنده خدمات اینترنت شما DNS مرتبط با نام دامنه را مشاهده می کند ، آن را به یک آدرس IP دوستانه با ماشین ترجمه میکند (به عنوان مثال 215.178.254.70 IP است. برای www.get.tech ) و اتصال اینترنت شما را به وب سایت صحیح هدایت میکند.
به منظور درک فرآیندی که در پشت صحنه عملکرد DNS وجود دارد، مهم است که در مورد اجزای سخت افزاری مختلفی که یک پرس و جو DNS باید از آن عبور کند یاد بگیرید. برای مرورگر وب، جستجوی DNS “در پشت صحنه” رخ میدهد و جدا از درخواست اولیه ، نیازی به تعامل از رایانه کاربر ندارد.
چهار سرورDNSبرای بارگذاری یک صفحه وب درگیر هستند:
- DNS recursor:این سرور را میتوان بهعنوان کتابدار در نظر گرفت که از او خواسته میشود یک کتاب خاص را در یک کتابخانه پیدا کند. DNS recursor سروری طراحیشده برای دریافت پرسوجواز سیستم کاربر از طریق برنامههایی مانند مرورگرهای وب است. معمولاً recursor مسئول ایجاد درخواستهای اضافی برای پاسخ به کوئری DNS کاربر هست.
- Root nameserver: سرور root اولین گام در ترجمهی نام میزبان به آدرس IP هست. می توان مانند فهرستی در یک کتابخانه هست که نام کتابهای چندین قفسه را شامل میشود. سرور مورد نظر بهطور معمول بهعنوان مرجعی برای آدرسهای خاص متعددی عمل میکند.
- TLD nameserver:نام دامنه سطح بالا TLD را می توان به عنوان یک قفسه خاص از کتابها در یک کتابخانه تصور کرد. این نام سرور، مرحله بعدی در جستجوی یک آدرس IP خاص هست و آخرین بخش، نام هاست میزبان را میزبانی میکند. به عنوان مثال .com سرور comTLD است.
- Authoritativenameserver: آخرین نام سرور را میتوان بهعنوان یک فرهنگ لغت در یک قفسه کتاب در نظر گرفت که در آن یک نام خاص میتواند به معنی خود ترجمه شود. نام سرور معتبر آخرین توقفگاه در کوئری نام سرور است. اگر نام سرور معتبر به رکورد درخواست شده دسترسی داشته باشد، آدرس IP برای نام هاست درخواست شده را به DNS Recursor (کتابدار) که درخواست اولیه را کرده است، باز میگرداند.
بیایید بصورت مرحله به مرحله و با یک مثال ببینیم که DNS (دی ان اس) چگونه کار می کند:
مراحل کار DNS
- مرحله 1: درخواست اطلاعات
شما نام دامنه را در مرورگر وب خود وارد می کنید و یک جستجوی DNS برای یافتن جواب محلی که در آن وبسایت قرار دارد ، اجرا می شود. DNS مانند واسطه عمل می کند.
- مرحله 2: سرورهای ریشه
DNS آدرسIP را از سرور ریشه می پرسد. آنها جواب سؤال شما را ندارند ، اما می دانند آن را از کجا می توانند پیدا کنند. پاسخ سرورهای ریشه آدرس سرورهای نام ( TLD دامنه سطح بالا) است. در مورد www.get.tech ، این سرورهای نام Tech هستند.
- مرحله 3: سرورهای نام TLD (دامنه سطح بالا)
DNS اکنون از سرورنام TLD آدرس IP نام دامنه را می خواهد. سرورنام TLD با آدرس سرور معتبر نام دامنه پاسخ می دهد. در مثال ما ، سرور نام .TECH آدرس سرورهای معتبر name.tech را ارائه میدهد.
- مرحله 4: سرورهای معتبر DNS
سرورهای معتبر DNS سوابق DNS مربوط به نامهای دامنه لازم برای وضوح DNS را نگه می دارند. این سوابق به طور ایده آل در یک پرونده توسط مالک دامنه یا یک مدیر فنی مسئول مدیریت عملکرد یک نام دامنه نگهداری می شوند. پرونده های مختلفی در یک پرونده منطقه وجود دارد ، به عنوان مثال ، آدرس IP سرور که در آن وبسایت میزبانی میشود ، توسط یک رکورد ارائه می شود ، که معمولاً به عنوان “A” ذخیره میشود.
- مرحله 5: بازیابی رکورد Record Retrieval
سرورهای نام (Name Server) پاسخ دهنده، A Record مربوط به دامنه www.get.tech را از سرور های نام معتبر می پرسند و این رکورد را در حافظه کش محلی ذخیره میکنند و اگر هر شخص دیگری رکوردهاست این سایت را درخواست کند، سرور های نام بازگشتی پاسخ او را خواهند داشت و دیگر نیازی به اجرای فرآیند جستجو ندارند.
همه رکورد ها دارای مقداری به نام time-to-live یا (TTL) هستند که همانند تاریخ انقضا عمل می کند. پس از گذشت مدتی، سرور های نام بازگشتی باید نسخه جدیدی از این رکورد ها را درخواست کنند تا اطمینان حاصل کنند که تاریخ مصرف آنها به اتمام نرسیده باشد.
- مرحله ششم: آدرس وب سایت
سرور بازگشتی ضبط A را به رایانه شما ارسال می کند. PC این رکورد را ذخیره می کند ، IP را میخواند و اطلاعات را به مرورگر شما منتقل می کند. که سپس اتصال به سرور وب را برقرار میکند ، و میتوانید www.get.tech را ببینید. اگرچه به نظر میرسد فرایندی طولانی و پیچیده است ، اما در بعضی مواقع فقط چند میلی ثانیه طول میکشد تا کل فرایند DNS انجام شود.
با استفاده از این سیستم ، کاربرانی که به دنبال بازدید از وبسایت شما هستند ، فقط باید نام دامنه شما را بدانند. آدرس IP برای سرورهای اختصاصی که سایت شما در آن قرار دارد برای آنها بیربط نیست. اگر بروزرسانی هایی در وب سایت یا نام دامنه انجام شده باشد ، DNS برای اشاره به آدرس IP سرور جدید شما نیز به روز میشود. بازدید کنندگان شما هنوز فقط با استفاده از نام دامنه شما از سایت شما بازدید می کنند. حتی اگر آدرس IP شما تغییر کرده است. این نوع انعطاف پذیری همان چیزی است که اینترنت را بسیار قدرتمند می کند.
تفاوت بین سرورauthoritative DNS و تحلیلگرrecursive DNS چیست؟
هر دو مفهوم به سرورها (گروه سرورها) اشاره میکنند که برای زیرساخت DNS لاینفک هستند ، اما هرکدام نقش متفاوتی را انجام می دهند و در مکانهای مختلف درون خط لوله یک کوئری (پرس و جو) DNS وجود دارند. تنها تفاوتشان این است که «recursive resolver» در ابتدای کوئری DNS و authoritative nameserver در انتهای آن قرار دارد.
Recursive DNS resolver چیست؟
Recursive resolver کامپیوتری است که به یک درخواست بازگشتی از مشتری پاسخ میدهد و زمانی را برای بررسی رکورد DNS اختصاص میدهد. این کار را با ایجاد یک سری درخواستها انجام میدهد تا زمانی که به DNS nameserver معتبری برای رکورد درخواست شده برسد، (یا در صورت عدم یافتن سابقهای ، خطایی را حذف کرده یا خطایی را برمیگرداند)
خوشبختانه، تحلیلگرهای recursive DNS برای ردیابی رکوردهای موردنیاز برای پاسخ به درخواست مشتری، نیازی به ایجاد درخواستهای متعدد ندارند؛ حافظه پنهان یا همان کَش کردن (Cashing) فرآیندی است برای با ثبات کردن اطلاعات که برای پاسخ به برخی درخواستهای ضروری، میانبری ایجاد کرده و از سوابق درخواستهای قبلی ایجاد شده برای بررسی DNS و رکورد منابع استفاده میکند. از این رو مشتری خیلی سریعتر میتواند نتیجهی درخواست خود را مشاهده کند.
Authoritative DNS server چیست؟
درواقع authoritative DNS server، سروری است که در واقع سوابق منابع DNS را در خود نگه میدارد و مسئول آن است. این سرور در انتهای زنجیره جستجوی DNS است که با سوابق منابع داده شده پاسخ میدهد ، در نهایت به مرورگر وب اجازه می دهد تا به آدرس IP که برای دسترسی به یک وبسایت یا منابع وب دیگر نیاز دارد ، دسترسی پیدا کند.
یک authoritative nameserver قادر است که بدون نیاز به کوئری گرفتن از منابع دیگر با استفاده از دادههای خود به کوئریها پاسخ دهد، چرا که این آخرین منبع حقیقی برای رکورد DNSهای مشخص است. شایان ذکر است در مواردی که کوئری ها برای زیر دامنه ای از قبیل foo.example.com یک سرور نام اضافی پس از authoritative nameserver، که وظیفه ذخیره سوابق زیر دامنه CNAME را دارد ، به دنباله اضافه می شود.
بین سرویسهای DNS و Cloudflare یک تفاوت اساسی وجود دارد. تحلیلگرهایDNS recursive مختلف مانندGoogle DNS، OpenDNS و سرویس دهندههایی مانند Comcast، مراکز داده ای را برای تحلیلگرهای DNS recursive برقرارکردهاند. این تحلیلگرها امکان جستجوی سریع و آسان را از طریق خوشههای بهینهشدهی DNS برای سیستمها فراهم میکنند که البته تفاوتی اساسی با نام سرورهایی میزبانیشده توسط Cloudflare دارند.
انواع کوئری هایDNS (پرس و جوهای DNS)
در یک جستجوی معمولی DNS سه نوع کوئری یا پرس و جو اتفاق میافتد. با استفاده از ترکیبی از این پرس و جوها یا همان کوئریها، یک فرآیند بهینه سازی شده برای تفکیک DNS میتواند باعث شود که مسافت انتقال کاهش یابد. در یک وضعیت ایدهآل، داده های ضبط شده ذخیره می شوند که اجازه میدهد نام سرور DNS، یک جستجوی غیر بازگشتی را برگرداند.
انواع کوئریDNS:
- کوئری بازگشتی Recursive query
در یک کوئری بازگشتی، یک سرویسگیرندهی DNS نیاز دارد که یک سرور DNS با یک رکورد منبع درخواستشده و یا با یک پیغام خطا (اگر تحلیلگر نتواند رکورد را پیدا کند) به وی پاسخ دهد.
- کوئری تکراری Iterative query
در این وضعیت، سرویسگیرندهی DNS به سرور DNS اجازه میدهد تا بهترین پاسخ ممکن را بازگرداند. اگر سرور DNS پرسوجو شده با نام پرسوجو تطابق نداشته باشد، ارجاعی به DNS server authoritative برای یک سطح پایینتر از فضای نام دامنه (Domain Namespace) باز میگرداند. سپس سرویس گیرندهی DNS یک پرسوجو برای آدرس مرجوعی میفرستد. این فرآیند با سرورهای DNS اضافی در پایین زنجیره کوئری ادامه مییابد تا زمانی که یک خطا یا تایم اوت رخ دهد.
- کوئری غیر بازگشتی Non-recursive query
این کوئری معمولاً زمانی رخ میدهد که یک سرویسگیرندهی تحلیلگر DNS از سرور DNS برای ثبت رکوردی، درخواست میگیرد که به هر دو دسترسی دارد، چرا که هم برای رکورد معتبر است و هم برای رکوردی که داخل حافظه پنهان آن وجود دارد. بهطور معمول، یک سرور DNS، رکوردهای DNS را برای جلوگیری از مصرف اضافی پهنای باند و بارگذاری بر روی سرورهای آپ استریم (Upstream server)، ذخیره خواهد کرد.
DNS Caching چیست و در کجا اتفاق می افتد؟
هدف از caching یا ذخیره سازی اطلاعات این است که بهطور موقت اطلاعات در مکانی ذخیره شوند که باعث بهبود عملکرد و ایجاد اطمینان برای درخواستهای اطلاعات میشود.
DNS caching یا حافظه پنهان دی ان اس شامل ذخیرهسازی اطلاعات، در محلی نزدیکتر به مشتری مورد نظر است، بطوری که پرسوجوی DNS سریعتر جداسازی و تفکیک شود و از پرسوجوهای بیشتر در امتداد زنجیره جستجوی DNS جلوگیری گردد و درنتیجه زمان بارگذاری بهینه سازی شود و مصرف پهنای باند/ CPU را کاهش دهد. دادههای DNS را میتوان در مکانهای مختلفی ذخیره کرد، هرکدام از آنها رکوردهای DNS را برای مدت زمان مشخص توسط یک TTL) Time-to-Live) ذخیره می کنند
- DNS caching مرورگر (حافظه پنهان DNS)
مرورگرهای وب جدید به طور پیش فرض برای ذخیره کردن سوابق DNS برای مدت زمان مشخصی طراحی شده اند. هدف این موضوع واضح است؛ هرچه DNS cachingبه مرورگر وب نزدیک تر باشد، برای بررسی حافظه پنهان و ایجاد درخواست های صحیح برای یک آدرس IP ، باید مراحل پردازش کمتری انجام شود. هنگامیکه یک درخواست برای یک رکورد DNS ساخته میشود، حافظه پنهان مرورگر اولین مکانی است که برای رکورد درخواست شده بررسی میشود. شما نیز در کروم میتوانید وضعیت حافظه DNS خود را با رفتن به آدرس chrome://net-internals/#dns مشاهده کنید.
- DNS cachingسطح سیستمعامل (OS)
تحلیلگر DNS سطح سیستمعامل، دومین و آخرین توقفگاه محل، قبل از آن است که پرسوجوی DNS، دستگاه شما را ترک میکند. فرآیند موجود در سیستم عامل شما که برای پاسخگویی به این سؤال طراحی شده است معمولاً یک “stub resolver” یا مشتری DNS نامیده میشود.
یک stub resolver درخواستی را از یک برنامه دریافت میکند، ابتدا حافظه پنهان خود را بررسی میکندتا ببیند آیا این سابقه را دارد یا خیر. اگر جستجوی آن نتیجهای نداشت، آنگاه یک کوئری DNS با یک recursive flag set، خارج از شبکه محلی به یک تحلیلگر بازگشتی DNS در سرویسدهنده خدمات اینترنتی (ISP) میفرستد.
- DNS cachingتحلیلگر بازگشتی
هنگامی که تحلیلگر بازگشتی در ISP، مانند همه مراحل قبلی یک پرسوجوی DNS را دریافت میکند، بررسی می کند که آیا ترجمه آدرس میزبان به IP از قبل درخواست شده در داخل لایه ماندگاری محلی آن ذخیره شده است یا خیر.
تحلیلگر بازگشتی نیز بسته به انواع رکورد موجود در حافظه پنهان خود،عملکردهای بیشتری دارد:
- اگر تحلیلگر دارای رکورد A نباشد، اما رکوردهای NS را برای نام سرورهای معتبر باشد، تحلیلگر نام سرورها را مستقیماً با عبور از چندین گام در کوئری DNS، پرسوجو میکند. این میانبر از جستجوی روت یا همان ریشه و سرورهای نام .com جلوگیری می کند.
- اگر تحلیلگر رکوردهای NS را نداشته نباشد، یک کوئری را با Skip سرور root، برای سرورهای TLD ارسال خواهد کرد (مثل .com).
- معمولا بعید است که تحلیلگر هیچ رکوردی که به سرورهای TLD اشاره کند، نداشته باشد ولی اگر این اتفاق بیفتد، در این زمان سرورهای روت (root) را پرسوجو خواهد کرد. این اتفاق معمولاً پس از اینکه حافظه پنهان یک DNS پاک می شود اتفاق می افتد.
جمع بندی
در این مقاله سعی کردیم که مفهوم DNS را برای تان توضیح دهیم و چگونگی عملکرد آن و … را بیان کنیم. خوشحال می شویم که اگر در این زمینه سوالی یا نظری دارید با ما به اشتراک بگذارید و دیدگاه تان را برای ما بفرستید.