DNS چیست و چگونه کار می‌کند؟

DNS چیست و چگونه کار می‌کند؟

نوشته‌ی
avatar
1 سال و 10 ماه و 22 روز پیش

فهرست مطالب

DNS به کاربران این امکان را می‌دهد تا به جای آدرس IP با استفاده از نام دامنه به اینترنتی سایت‌ها متصل شوند. تا ادامه‌ی این مطلب با ما همراه باشید تا به آموزش کامل نحوه‌ی کار DNS بپردازیم.

DNS چیست؟

سیستم نام دامنه (DNS) دفترچه تلفن اینترنت است. انسان‌ها از طریق نام‌های دامنه مانند nytimes.com و یا espn.com به اطلاعات آنلاین دسترسی دارند. مرورگرهای اینترنتی از طریق آدرس‌های پروتکل اینترنت (IP) با یکدیگر تعامل دارند. DNS نام دامنه را به آدرس‌های IP ترجمه می‌کند تا مرورگرها بتوانند منابع اینترنتی را بارگیری کنند.

هر دستگاه متصل به اینترنت دارای یک آدرس IP منحصر به فرد است که سایر دستگاه‌ها برای یافتن این دستگاه مشخص از آن استفاده می‌کنند. سرورهای DNS نیاز انسان به حفظ آدرس‌های IP مانند 192.168.1.1 (در IPv4) یا آدرس‌های IP پیچیده‌تر و جدیدتر که تلفیقی از الفبا و اعداد هستند، مانند 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 که در بارگذاری یک صفحه اینترنتی دخیل هستند:

DNS Recursor: سرور Recursor را می‌توان به عنوان یک کتاب دار در نظر گرفت که از او خواسته می‌شود تا کتاب خاصی را در جایی از کتابخانه پیدا کند. DNS Recursor سروری است که برای دریافت کوئری‌ها از ماشین‌های سرویس گیرنده از طریق برنامه‌هایی مانند مرورگرهای اینترنتی طراحی شده است. معمولاً Recursor پس از آن مسئول ایجاد درخواست‌های اضافی به منظور برآورده کردن کوئری DNS مشتری است.

Root Nameserver: سرور Root اولین گام در ترجمه (تحلیل) نام‌های میزبانی که انسان‌ها قادر به خواندنشان هستند به آدرس‌های IP است. می‌توان این سرور را مانند فهرستی در کتابخانه در نظر گرفت که به قفسه‌های مختلف کتاب اشاره می‌کند و معمولاً به عنوان مرجعی برای مکان‌های خاص دیگر عمل می‌کند.

TDL Nameserver: سرور دامنه سطح بالا (TLD) را می‌توان به عنوان یک قفسه خاص از کتاب‌ها در یک کتابخانه در نظر گرفت. این سرور گام بعدی در جست و جوی یک آدرس IP خاص است و آخرین بخش از نام میزبان را شامل می‌شود (در example.com، سرور TDL همان «com» است.)

Authoritatuve Nameserver: این سرور نهایی را می‌توان به عنوان فرهنگ لغت روی قفسه‌ای از کتاب‌ها در نظر گرفت که در آن نام خاصی را می‌توان به تعریف آن ترجمه کرد. این سرور آخرین مرحله در کوئری سرورها است. اگر این سرور به نتیجه درخواستی دسترسی داشته باشد، آدرس IP برای نام میزبان درخواستی را به DNS Recursor (کتاب دار) که درخواست اولیه را صادر کرده است، برمی‌گرداند.

تفاوت بین سرور DNS معتبر و حل کننده DNS بازگشتی چیست؟

هر دو مفهوم به سرورهایی (گروه‌هایی از سرورها) اشاره دارند که با زیرساخت‌های DNS یکپارچه هستند، اما هر یک نقش متفاوتی را ایفا می‌کنند و در نقاط مختلفی در داخل خط لوله کوئری DNS زندگی می‌کنند. یکی از تفاوت‌های آن‌ها این است که حل کننده بازگشتی در ابتدای کوئری DNS و سرور Authoritative Nameserver در انتهای آن قرار دارد.

حل کننده DNS بازگشتی

حل کننده بازگشتی رایانه‌ای است که به درخواست بازگشتی از مشتری پاسخ می‌دهد و رکورد DNS را ردیابی می‌کند. حل کننده بازگشتی این عمل را با انجام یک سری درخواست انجام می‌دهد تا زمانی که DNS به سرور Authoritative Nameserver برای رکورد درخواستی برسد (یا در صورت یافت نشدن رکوردی، زمان را پایان دهد یا خطا را برگرداند). خوشبختانه، حل کننده‌‌های DNS بازگشتی برای ردیابی سوابق مورد نیاز برای پاسخگویی به مشتری، همیشه نیازی به درخواست‌های متعدد ندارند. کَش کردن (Caching) یک فرایند تداوم داده است که به اتصال کوتاه درخواست‌های ضروری با ارائه رکورد منبع درخواستی در جست و جوی DNS کمک می‌کند.

سرور Authoritative Nameserver

به زبان ساده، سرور Authoritative DNS سروری است که در واقع سوابق منابع DNS را نگه می‌دارد و مسئول آن است. این سرور در پایین زنجیره جست و جوی DNS است که با ارائه رکورد منبع درخواست شده پاسخ می‌دهد و در نهایت به مرورگر اینترنتی اجازه می‌دهد تا به آدرس IP مورد نیاز برای دسترسی به وب سایت یا سایر منابع اینترنتی برسد. یک سرور Authoritative Nameserver می‌تواند جست و جوها را از داده‌های خود بدون نیاز به کوئری از منبع دیگری پاسخ دهد، زیرا منبع نهایی پاسخ درست برای برخی رکوردهای DNS است.

شایان ذکر است که در مواردی که کوئری مربوط به یک زیر دامنه مانند foo.example.com یا blog.cloudflare.com است، یک نام سرور اضافی بعد از سرور سرور Authoritative Nameserver به دنباله اضافه می‌شود که وظیفه ذخیره رکورد CNAME زیر دامنه را بر عهده دارد.

مراحل جست و جوی DNS چیست؟

در اکثر مواقع، DNS به دنبال ترجمه نام دامنه به آدرس IP مناسب است. برای یادگیری نحوه عملکرد این فرایند، بهتر است مسیر جست و جوی DNS در حین حرکت از مرورگر اینترنتی، سر تا سر فرایند جست و جوی DNS و بازگشت آن را دنبال کنید. بیایید نگاهی به این مراحل بیندازیم.

توجه: اغلب اطلاعات جست و جوی DNS به صورت محلی در داخل رایانه ایجاد کننده کوئری یا از راه دور در زیرساخت DNS ذخیره می‌شود. معمولاً 8 مرحله در جست و جوی DNS وجود دارد. هنگامی که اطلاعات DNS در حافظه پنهان ذخیره می‌شود، مراحلی از فرایند جست و جوی DNS نادیده گرفته می‌شود که باعث سرعت گرفتن آن می‌شود. مثال زیر تمام 8 مرحله را در زمانی که هیچ چیزی در حافظه پنهان ذخیره نمی‌شود، تشریح می‌کند.

8 مرحله در جست و جوی DNS:

  1. یک کاربر عبارت «example.com» را در یک مرورگر اینترنتی تایپ می‌کند و کوئری به اینترنت سفر می‌کند و توسط یک حل کننده بازگشتی DNS دریافت می‌شود.
  2. سپس حل کننده یک سرور نام ریشه DNS را جست و جو می‌کند.
  3. سپس سرور Root با آدرسی از سرور TLD (مانند .com یا .net)، که اطلاعات را برای دامنه‌های خود ذخیره می‌کند، به حل کننده به عنوان پاسخ می‌فرستد. هنگام جست و جو برای example.com، درخواست ما به سمت .com سرور TLD فرستاده می‌شود.
  4. سپس حل کننده درخواستی را به .com سرور TLD ارسال می‌کند.
  5. سپس سرور TLD با آدرس IP سرور نام دامنه، example.com پاسخ می‌دهد.
  6. در نهایت، حل کننده بازگشتی یک کوئری به سرور نام دامنه ارسال می‌کند.
  7. سپس آدرس IP برای example.com از سرور نام به حل کننده بازگردانده می‌شود.
  8. سپس حل کننده DNS با آدرس IP دامنه درخواستی اولیه به مرورگر اینترنتی پاسخ می‌دهد.

هنگامی که 8 مرحله جست و جوی DNS آدرس IP برای مثال .com را برگرداند، مرورگر می‌تواند درخواست صفحه اینترنتی را انجام دهد:

  1. مرورگر یک درخواست HTTP به آدرس IP ارسال می‌کند.
  2. سرور در آن IP صفحه اینترنتی را برای نمایش در مرورگر بر می‌گرداند.

حل کننده DNS چیست؟

حل کننده DNS اولین مرحله در جست و جوی DNS است و مسئول رسیدگی به مشتری که درخواست اولیه را انجام داده است می‌باشد. حل کننده دنباله‌ای از جست و جوها را شروع می‌کند که در نهایت منجر به ترجمه URL به آدرس IP لازم می‌شود.

توجه: یک جست و جوی DNS کَش نشده معمولی شامل جست و جوهای بازگشتی و تکراری می‌شود.

اینکه بین یک کوئری DNS بازگشتی و یک حل کننده DNS بازگشتی تفاوت قائل شوید، مهم است. کوئری به درخواستی اشاره دارد که به یک حل کننده DNS فرستاده می‌شود و نیاز به حل شدن دارد. حل کننده بازگشتی DNS رایانه‌ای است که کوئری بازگشتی را می‌پذیرد و پاسخ را با استفاده از درخواست‌های لازم پردازش می‌کند.

انواع کوئری‌های DNS چیست؟

در یک جست و جوی DNS معمولی سه نوع کوئری رخ می‌دهد. با استفاده از ترکیبی از این کوئری‌ها، یک فرایند بهینه برای رزولوشن DNS می‌تواند منجر به کاهش مسافت طی شده شود. در یک موقعیت ایده آل، داده‌های رکورد شده در حافظه پنهان در دسترس خواهد بود، که به یک سرور نام DNS اجازه می‌دهد یک کوئری غیر بازگشتی را برگرداند.

3 نوع کوئری DNS:

کوئری بازگشتی: در یک کوئری بازگشتی، سرویس گیرنده DNS سرور DNS (معمولاً یک حل کننده بازگشتی DNS) را وادار می‌کند در صورتی که حل کننده نتواند رکورد را پیدا کند، با رکورد منبع درخواستی یا یک پیام خطا به مشتری پاسخ دهد.

کوئری تکراری: در این شرایط، سرویس گیرنده DNS به سرور DNS اجازه می‌دهد تا بهترین پاسخی را که می‌تواند ارائه دهد. اگر سرور DNS مورد بررسی با نام کوئری مطابقت نداشته باشد، به سرور DNS معتبر برای سطح پایین‌تری از فضای نام دامنه را ارجاع می‌کند. سپس مشتری DNS یک کوئری به آدرس ارجاع می‌دهد. این فرایند با سرورهای DNS اضافی در زنجیره کوئری ادامه می‌یابد تا زمانی که یک خطا یا پایان مهلت زمانی رخ دهد.

کوئری غیر بازگشتی: معمولاً زمانی رخ می‌دهد که یک سرویس گیرنده حل کننده DNS از یک سرور DNS برای رکوردی که به آن دسترسی دارد یا به دلیل معتبر بودن رکورد یا وجود رکورد در حافظه پنهان به آن دسترسی دارد، کوئری می‌کند. به طور معمول، یک سرور DNS برای جلوگیری از مصرف پهنای باند اضافی و بارگذاری روی سرورهای آپ استریم، سوابق DNS را کَش می‌کند.

کش کردن DNS چیست؟ کش کردم DNS کجا صورت می‌گیرد؟

هدف از کش کردن ذخیره موقت داده‌ها در مکانی است که منجر به بهبود عملکرد و قابلیت اطمینان درخواست‌های داده می‌شود. کش DNS شامل ذخیره داده‌ها در نزدیکی مشتری درخواست کننده است، به گونه‌ای که می‌توان کوئری DNS را زودتر حل کرد و از درخواست‌های اضافی در زنجیره جستجوی DNS جلوگیری کرد، در نتیجه زمان بارگذاری بهبود می‌یابد و مصرف پهنای باند / CPU کاهش می‌یابد. داده‌های DNS را می‌توان در مکان‌های مختلفی ذخیره کرد، که هر یک از آن‌ها رکوردهای DNS را برای مدت زمان مشخصی که توسط زمان برای زندگی (TTL) تعیین می‌شود، ذخیره می‌کنند.

کش در DNS مرورگر

مرورگرهای اینترنتی مدرن به طور پیش فرض طراحی شده‌اند تا رکوردهای DNS را برای مدت زمان مشخصی ذخیره کنند. هدف این اقدام واضح است. هرچه کش کردن DNS به مرورگر اینترنتی نزدیک‌تر باشد، مراحل پردازش کمتری باید انجام شود تا کش را بررسی کرده و درخواست‌های صحیح را برای یک آدرس IP انجام دهید. هنگامی که درخواستی برای یک رکورد DNS ارسال می‌شود، کش مرورگر اولین مکانی است که برای رکورد درخواستی بررسی می‌شود.

در کروم، با رفتن به chrome://net-internals/#dns، می‌توانید وضعیت کش DNS خود را مشاهده کنید.

ذخیره سازی DNS در سطح سیستم عامل (OS)

حل کننده DNS سطح سیستم عامل، دومین و آخرین توقف محلی قبل از خروج یک درخواست DNS از دستگاه شما است. فرایند داخل سیستم عامل شما که برای رسیدگی به این کوئری طراحی شده است، معمولاً «حل کننده خرد» یا مشتری DNS نامیده می‌شود. هنگامی که یک حل کننده خرد درخواستی از یک برنامه دریافت می‌کند، ابتدا حافظه پنهان خود را بررسی می‌کند تا ببیند آیا رکورد را دارد یا خیر. اگر این‌طور نباشد، یک کوئری DNS (که بازگشتی به حساب می‌آید)، خارج از شبکه محلی به یک حل کننده بازگشتی DNS در نزد ارائه دهنده خدمات اینترنتی (ISP) ارسال می‌کند.

هنگامی که حل کننده بازگشتی در داخل سیستم ارائه دهنده خدمات اینترنتی یک کوئری DNS دریافت می‌کند، مانند تمام مراحل قبلی، همچنین بررسی می‌کند که آیا ترجمه میزبان به آدرس IP درخواستی قبلاً در لایه ذخیره سازی محلی آن ذخیره شده است یا خیر.

حل کننده بازگشتی بسته به نوع رکوردهایی که در حافظه پنهان خود دارد، عملکردهای اضافی نیز دارد:

  1. اگر حل کننده رکوردهای A را نداشته باشد، اما رکوردهای NS را برای سرورهای Authoritative Nameserver داشته باشد، مستقیماً از آن سرورهای نام کوئری می‌کند و چندین مرحله در کوئری DNS را دور می‌زند. این میان‌بر از جست و جو از سرورهای نام Root و .com (در جست و جوی ما به عنوان مثال .com) جلوگیری می‌کند و کمک می‌کند تا حل کردن کوئری DNS سریع‌تر رخ دهد.
  2. اگر حل کننده سوابق NS را نداشته باشد، درخواستی را به سرورهای TLD (در مورد ما .com) ارسال می‌کند و سرور Root را رد می‌کند.
  3. احتمال آن خیلی پایین است اما در صورتی که حل کننده سوابقی که به سرورهای TLD اشاره می‌کنند نداشته باشد، سرورهای ریشه را کوئری می‌کند. این رویداد معمولاً پس از پاک‌سازی کش DNS رخ می‌دهد.

امیدواریم که این مطلب برای شما عزیزان مفید و آموزنده بوده باشد. لطفا تمامی دیدگاه‌ها و پرسش‌های خود را در قسمت نظرات با ما به اشتراک بگذارید.

منبع: CloudFlare

برای ارسال دیدگاه ابتدا باید وارد شوید.