سیستم نام دامنه (DNS) مانند دفترچه تلفن اینترنت عمل میکند. انسانها برای دسترسی به اطلاعات آنلاین از نام دامنهها استفاده میکنند، مانند nytimes.com، در حالی که مرورگرهای وب از آدرسهای پروتکل اینترنت (IP) برای ارتباط استفاده میکنند. DNS نام دامنهها را به آدرسهای IP تبدیل میکند تا مرورگرها بتوانند منابع اینترنتی را بارگذاری کنند.
هر دستگاهی که به اینترنت متصل است، یک آدرس IP منحصر به فرد دارد که سایر دستگاهها برای یافتن آن استفاده میکنند. سرورهای DNS نیاز به حفظ کردن آدرسهای IP، مانند 192.168.1.1 (در IPv4) یا آدرسهای پیچیدهتر و جدیدتر مانند 2400:cb00:2048:1::c629:d7a2 (در IPv6)، را از بین میبرند.
DNS چگونه کار می کند؟
فرآیند حل DNS شامل تبدیل یک نام میزبان (مانند www.example.com) به یک آدرس IP سازگار با کامپیوتر (مانند 192.168.1.1) است. هر دستگاهی در اینترنت یک آدرس IP دارد که برای یافتن دستگاه مناسب اینترنت ضروری است، درست مانند آدرس خیابانی که برای یافتن یک خانه خاص استفاده میشود. وقتی کاربری میخواهد یک صفحه وب را بارگذاری کند، باید ترجمهای بین چیزی که کاربر در مرورگر وب خود تایپ میکند (مانند example.com) و آدرس سازگار با ماشین که برای یافتن صفحه وب example.com لازم است، انجام شود.
برای درک فرآیند پشت حل DNS، مهم است که با اجزای سختافزاری مختلفی که یک درخواست DNS باید از میان آنها عبور کند، آشنا شوید. برای مرورگر وب، جستجوی DNS "پشت صحنه" انجام میشود و به جز درخواست اولیه از طرف کامپیوتر کاربر، نیازی به تعامل دیگری ندارد.
برای بارگذاری یک صفحه وب، ۴ سرور DNS درگیر هستند:
1- بازپرس DNS (DNS Recursor):
بازپرس DNS را میتوان به عنوان یک کتابدار در نظر گرفت که از او خواسته شده کتاب خاصی را در کتابخانه پیدا کند. بازپرس DNS یک سرور است که برای دریافت درخواستها از دستگاههای مشتری از طریق برنامههایی مانند مرورگرهای وب طراحی شده است. معمولاً این بازپرس مسئول انجام درخواستهای اضافی برای پاسخ به درخواست DNS مشتری است.
2- سرور نام ریشه (Root Nameserver):
سرور ریشه اولین گام در ترجمه (حل) نامهای میزبان قابل خواندن برای انسان به آدرسهای IP است. این سرور را میتوان مانند یک فهرست در کتابخانه تصور کرد که به قفسههای مختلف کتاب اشاره میکند - معمولاً به عنوان مرجع برای مکانهای خاصتر عمل میکند.
3-سرور نام دامنه سطح بالا (TLD Nameserver):
سرور دامنه سطح بالا (TLD) را میتوان به عنوان یک قفسه خاص از کتابها در کتابخانه تصور کرد. این سرور گام بعدی در جستجوی یک آدرس IP خاص است و بخش آخر نام میزبان را مدیریت میکند (در example.com، سرور TLD مربوط به ".com" است).
4 -سرور نام معتبر (Authoritative Nameserver):
این سرور نهایی را میتوان به عنوان یک فرهنگ لغت روی قفسه کتابها در نظر گرفت، که در آن یک نام خاص به معنای آن ترجمه میشود. سرور نام معتبر آخرین مرحله در جستجوی سرورهای نام است. اگر این سرور به رکورد درخواستشده دسترسی داشته باشد، آدرس IP مربوط به نام میزبان درخواستشده را به بازپرس DNS (کتابدار) که درخواست اولیه را ارسال کرده بود، بازمیگرداند.
تفاوت بین سرور DNS معتبر (Authoritative DNS Server) و مفسر DNS بازگشتی (Recursive DNS Resolver) چیست؟
هر دو مفهوم به سرورهایی (یا گروهی از سرورها) اشاره دارند که برای زیرساخت DNS ضروری هستند، اما هر یک نقش متفاوتی دارند و در مکانهای مختلفی از مسیر یک درخواست DNS قرار میگیرند. میتوان گفت مفسر بازگشتی در ابتدای درخواست DNS قرار دارد، در حالی که سرور نام معتبر در انتهای آن است.
مفسر DNS بازگشتی (Recursive DNS Resolver):
مفسر بازگشتی کامپیوتری است که به درخواست بازگشتی یک کلاینت پاسخ میدهد و زمان لازم را برای پیدا کردن رکورد DNS صرف میکند. این کار را با انجام مجموعهای از درخواستها تا زمانی که به سرور DNS معتبر برای رکورد مورد نظر برسد انجام میدهد (یا اگر رکوردی پیدا نشود، با تایماوت یا خطا مواجه میشود).خوشبختانه، مفسرهای DNS بازگشتی همیشه نیاز به انجام درخواستهای متعدد برای یافتن رکوردها ندارند. فرآیند کشینگ (Caching) یا ذخیرهسازی دادهها به کوتاه کردن مراحل لازم کمک میکند و رکورد درخواستشده را زودتر از زمان عادی در جستجوی DNS ارائه میدهد.
سرور DNS معتبر (Authoritative DNS Server):
به زبان ساده، سرور DNS معتبر، سروری است که رکوردهای منبع DNS را نگهداری کرده و مسئولیت آنها را بر عهده دارد. این سرور در انتهای زنجیره جستجوی DNS قرار دارد و با ارائه رکورد منبع درخواستشده، در نهایت به مرورگر وب امکان میدهد به آدرس IP مورد نیاز برای دسترسی به یک وبسایت یا منابع وب دیگر برسد.یک سرور نام معتبر میتواند درخواستها را از دادههای خود پاسخ دهد، بدون نیاز به پرسیدن از منبع دیگری، زیرا منبع نهایی و معتبر برای رکوردهای خاص DNS است.
در مواردی که درخواست مربوط به یک زیردامنه مانند foo.example.com یا blog.cloudflare.com باشد، یک سرور نام اضافی به زنجیره جستجو اضافه میشود. این سرور نام مسئول ذخیره رکورد CNAME مربوط به زیردامنه است.
تفاوت کلیدی بین بسیاری از خدمات DNS و خدماتی که Cloudflare ارائه میدهد وجود دارد. مفسرهای DNS بازگشتی مختلفی مانند Google DNS، OpenDNS و ارائهدهندگانی مانند Comcast مراکز دادهای را برای مفسرهای بازگشتی DNS خود نگهداری میکنند. این مفسرها از طریق خوشههای بهینهشده سیستمهای کامپیوتری، امکان جستجوهای سریع و آسان را فراهم میکنند، اما از لحاظ اساسی با سرورهای نامی که توسط Cloudflare میزبانی میشوند، متفاوت هستند.
Cloudflare زیرساختهایی در سطح سرورهای نامی نگهداری میکند که برای عملکرد اینترنت ضروری هستند. یکی از نمونههای کلیدی، شبکه سرور F-root است که Cloudflare تا حدی مسئول میزبانی آن است. F-root یکی از اجزای زیرساخت سرورهای نام در سطح ریشه DNS است که مسئولیت پردازش میلیاردها درخواست اینترنتی روزانه را بر عهده دارد. شبکه Anycast ما، Cloudflare را در موقعیتی منحصر به فرد برای مدیریت حجم عظیمی از ترافیک DNS بدون ایجاد وقفه در خدمات قرار میدهد.
مراحل جستجوی DNS
در بیشتر موارد، DNS تبدیل یک نام دامنه به آدرس IP مناسب مربوط میشود. برای درک این فرآیند، بهتر است مسیر یک جستجوی DNS را از مرورگر وب تا اتمام فرآیند جستجو و بازگشت نتیجه دنبال کنیم. در ادامه به مراحل این فرآیند پرداخته شده است.
نکته: اغلب اطلاعات DNS در حافظه نهان (cache) بهصورت محلی در کامپیوتر درخواستکننده یا بهصورت دوردست در زیرساخت DNS ذخیره میشود. معمولاً جستجوی DNS شامل ۸ مرحله است. در صورتی که اطلاعات DNS از قبل در حافظه نهان باشد، برخی مراحل حذف میشوند و فرآیند سریعتر انجام میشود. مثال زیر تمام ۸ مرحله را نشان میدهد که زمانی رخ میدهد که هیچ اطلاعاتی در حافظه نهان وجود نداشته باشد.
۸ مرحله در جستجوی DNS:
- کاربر آدرس «example.com» را در مرورگر وب وارد میکند. این درخواست وارد اینترنت شده و توسط مفسر بازگشتی DNS دریافت میشود.
- مفسر بازگشتی یک درخواست به سرور نام ریشه (Root Nameserver) ارسال میکند (.).
- سرور ریشه به مفسر بازگشتی آدرس سرور دامنه سطح بالا (TLD) (مانند .com یا .net) را ارسال میکند که اطلاعات مربوط به دامنهها را ذخیره میکند. برای جستجوی example.com، درخواست به سمت TLD مربوط به .com هدایت میشود.
- مفسر بازگشتی یک درخواست به سرور TLD مربوط به .com ارسال میکند.
- سرور TLD به درخواست پاسخ داده و آدرس سرور نام دامنه example.com را ارائه میدهد.
- در نهایت، مفسر بازگشتی یک درخواست به سرور نام دامنه ارسال میکند.
- آدرس IP مربوط به example.com از سرور نام به مفسر بازگشتی بازگردانده میشود.
- مفسر بازگشتی آدرس IP مربوط به دامنه درخواستشده را به مرورگر وب بازمیگرداند.
پس از دریافت آدرس IP در ۸ مرحله جستجوی DNS:
مرورگر وب یک درخواست HTTP به آدرس IP ارسال میکند.
سرور موجود در آدرس IP، صفحه وب را به مرورگر بازمیگرداند تا نمایش داده شود (مرحله ۱۰).
مفسر DNS چیست؟
مفسر DNS اولین ایستگاه در جستجوی DNS است و مسئولیت پردازش درخواست اولیهای را دارد که از سوی کاربر ارسال شده است. این مفسر فرآیند جستجو را آغاز میکند که در نهایت منجر به ترجمه یک URL به آدرس IP مورد نیاز میشود.
نکته: یک جستجوی DNS معمولی (بدون کش) شامل هر دو نوع درخواست بازگشتی (recursive) و تکراری (iterative) است.
مهم است که بین درخواست بازگشتی DNS و مفسر بازگشتی DNS تفاوت قائل شویم:
درخواست بازگشتی به درخواستی اشاره دارد که به مفسر DNS ارسال میشود و نیازمند حل آن درخواست است.
مفسر بازگشتی DNS کامپیوتری است که درخواست بازگشتی را دریافت میکند و با انجام درخواستهای لازم، پاسخ را پردازش میکند.
انواع درخواستهای DNS
در یک جستجوی معمولی DNS، سه نوع درخواست رخ میدهد. با استفاده از ترکیبی از این درخواستها، میتوان فرآیند حل DNS را بهینه کرده و فاصله طیشده را کاهش داد. در شرایط ایدهآل، دادههای رکورد کش شده در دسترس خواهند بود که به سرور DNS اجازه میدهد یک درخواست غیر بازگشتی (non-recursive query) را پاسخ دهد.
۳ نوع درخواست DNS:
درخواست بازگشتی (Recursive Query):
در یک درخواست بازگشتی، کلاینت DNS از سرور DNS (معمولاً مفسر بازگشتی DNS) میخواهد که یا رکورد منبع درخواستشده را ارائه دهد یا اگر نتواند رکورد را پیدا کند، یک پیام خطا بازگرداند.
درخواست تکراری (Iterative Query):
در این نوع درخواست، کلاینت DNS به سرور DNS اجازه میدهد بهترین پاسخی که میتواند را ارائه دهد. اگر سرور DNS پرسیدهشده مطابقتی برای نام درخواستشده نداشته باشد، یک ارجاع به سرور DNS معتبر برای یک سطح پایینتر از فضای نام دامنه بازمیگرداند. سپس کلاینت DNS یک درخواست به آدرس ارجاعشده ارسال میکند. این فرآیند با سرورهای DNS اضافی در زنجیره درخواست ادامه مییابد تا زمانی که یا خطا یا تایماوت رخ دهد.
درخواست غیر بازگشتی (Non-Recursive Query):
معمولاً زمانی رخ میدهد که یک کلاینت مفسر DNS، از یک سرور DNS درخواست رکوردی کند که به آن دسترسی داشته باشد؛ یا به این دلیل که برای رکورد معتبر است یا رکورد در حافظه کش آن وجود دارد. معمولاً سرور DNS رکوردهای DNS را کش میکند تا از مصرف پهنای باند اضافی و بارگذاری بیش از حد بر روی سرورهای بالادستی جلوگیری کند.
کش DNS چیست؟ کش DNS در کجا رخ میدهد؟
هدف از کش کردن، ذخیره موقت دادهها در مکانی است که باعث بهبود عملکرد و قابلیت اطمینان در درخواستهای داده میشود. کش DNS شامل ذخیرهسازی دادهها نزدیکتر به کلاینت درخواستدهنده است تا جستجوی DNS زودتر حل شود و از درخواستهای اضافی در زنجیره جستجوی DNS جلوگیری شود. این کار زمان بارگذاری را بهبود میبخشد و مصرف پهنای باند و پردازنده (CPU) را کاهش میدهد. دادههای DNS میتوانند در مکانهای مختلفی کش شوند که هر کدام رکوردهای DNS را برای مدت زمانی مشخص (بر اساس مقدار TTL یا زمان برای زنده ماندن) ذخیره میکنند.
کش DNS در مرورگر:
مرورگرهای وب مدرن به طور پیشفرض طراحی شدهاند تا رکوردهای DNS را برای مدت زمان مشخصی کش کنند. هدف این کار واضح است؛ هرچه کش DNS به مرورگر وب نزدیکتر باشد، مراحل پردازش کمتری برای بررسی کش و ارسال درخواستهای صحیح به یک آدرس IP نیاز است. زمانی که درخواستی برای یک رکورد DNS ارسال میشود، اولین مکانی که بررسی میشود، کش مرورگر است.
در مرورگر کروم میتوانید وضعیت کش DNS را با رفتن به آدرس زیر مشاهده کنید:
chrome://net-internals/#dns
کش DNS در سطح سیستمعامل (OS Level DNS Caching)
مفسر DNS در سطح سیستمعامل، دومین و آخرین مرحله محلی است که پیش از خروج درخواست DNS از دستگاه شما انجام میشود. فرآیندی که در سیستمعامل برای مدیریت این درخواست طراحی شده، معمولاً به نام Stub Resolver یا کلاینت DNS شناخته میشود. زمانی که Stub Resolver از یک برنامه درخواستی دریافت میکند، ابتدا کش خود را بررسی میکند تا ببیند آیا رکورد مورد نظر در آن وجود دارد یا خیر. اگر رکورد موجود نباشد، سپس یک درخواست DNS (با پرچم بازگشتی) را به خارج از شبکه محلی، به سمت یک مفسر بازگشتی DNS در داخل ارائهدهنده خدمات اینترنت (ISP) ارسال میکند.
زمانی که مفسر بازگشتی در ISP یک درخواست DNS را دریافت میکند، همانند مراحل قبلی، ابتدا بررسی میکند که آیا ترجمه نام میزبان به آدرس IP در لایه محلی ذخیرهسازی آن موجود است یا خیر.
قابلیتهای اضافی مفسر بازگشتی بسته به نوع رکوردهای موجود در کش:
اگر مفسر رکوردهای A نداشته باشد، اما رکوردهای NS مربوط به سرورهای نام معتبر را داشته باشد:
مستقیماً به سرورهای نام معتبر درخواست ارسال میکند و چندین مرحله از فرآیند جستجوی DNS را دور میزند. این میانبر باعث میشود که نیازی به جستجو از سرورهای ریشه و سرورهای TLD (مانند .com در مثال example.com) نباشد و فرآیند جستجوی DNS سریعتر انجام شود.
اگر مفسر رکوردهای NS را نداشته باشد:
یک درخواست به سرورهای TLD ارسال میکند (مانند .com در مثال ما)، و از سرور ریشه صرفنظر میکند.
در موارد نادر که مفسر هیچ رکوردی برای سرورهای TLD نداشته باشد:
یک درخواست به سرورهای ریشه ارسال میکند. این وضعیت معمولاً زمانی رخ میدهد که کش DNS پاک شده باشد.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید