همه ما از اهمیت DNS و DNS Server در شبکه آگاه هستیم. سرویسی که اسم دستگاه ها را به آدرس IP و برعکس، تبدیل می کند. زمانی که به دنبال کامپیوتر یا دستگاه خاصی در شبکه می گردیم، این DNS است که کار پیدا کردن دستگاه را برای ما انجام می دهد.
وقتی در اینترنت آدرس www.ITPro.ir را وارد می کنیم، پشت پرده پردازش هایی انجام می شود که DNS عهده دار آنها است. ولی آیا تا به حال توجه کرده ایم که DNS هم با پروتکل TCP کار می کند و هم با پروتکل UDP؟ چطور این امر ممکن است؟ چرا DNS با هر دو پروتکل TCP و UDP کار می کند؟ برای فهمیدن پاسخ این پرسش، لطفا تا پایان این مقاله با من همراه باشید.
همانطور که میدانید، TCP یک پروتکل اتصال گرا می باشد. TCP الزام می کند که داده در مقصد،سالم و پایدار باشد. برای چک کردن درستی و سالم بودن داده، TCP با میزبان (مبدا) ارتباط برقرار می کند.این در حالی است که UDP، یک پروتکل غیر اتصال گرا بوده و مستلزم پایداری داده در مقصد نیست و هیچ گونه ارتباطی با میزبان برای چک کردن درستی داده، برقرار نمی کند. بسته های UDP از نظر اندازه، کوچک تر از بسته های TCPهستند.
هر بسته UDP حداکثر 512 بایت حجم دارد. بنابراین هر نرم افزاری که بخواهد حجم داده بالاتری از 512 بایت منتقل کند، از TCP استفاده می کند. از UDP برای انتقال اطلاعات کوچک استفاده می شود، در حالی که می بایست از TCP برای انتقال اطلاعات بیشتر از 512 بایت استفاده شود. UDP به دلیل حجم کمتر خود و اینکه دارای مکانیزمی برا چک کردن درستی داده نیست، سریعتر از TCP می باشد.
DNS از ساختار Master & Slave (یا ارباب و برده) استفاده می کند که در این ساختار، شما یک Name Server معتبر و مورد تائید (Authoritative) دارید که همان Master بوده و تمامی ورودی ها را در اختیار دارد و بقیه سرور ها که همان Slave ها هستند
با استفاده از Replication (یا یکسان سازی اطلاعات)، فایل های Zone ها را از این سرور معتبر دریافت کرده و به DNS Query ها، رسیدگی می کنند. از آنجایی که می بایست فایل های Zone ها همیشه پایدار و سالم باشند، DNS از TCP به عنوان پروتکل ارتباطی برای انتقال فایل های Zone ها استفاده می کند که از این طریق، از صحت انتقال فایل ها اطمینان حاصل می کند.
DNS از پروتکل UDP برای انجام کارهای اولیه، مانند جواب دادن به پرسش های کلاینت ها، استفاده می کند. زمانی که یک کلاینت از DNS برای تبدیل اسم به IP و یا IP به اسم سوال می پرسد، DNS از پروتکل UDP برای جواب دادن به کلاینت استفاده می کند.
دلیل استفاده از UDP این است که UDP یک پروتکل غیر اتصال گرا بوده و بنابراین، سبک و سریع می باشد که باعث می شود ارسال جواب به کلاینت در زمان به مراتب کوتاه تری نسبت به TCP ،انجام شود. اگر کلاینت پاسخی از DNS دریافت نکرد، پس از طی دوره زمانی 3 تا 5 ثانیه می بایست درخواست خود را این بار از طریق TCP مجددا ارسال کند.
در عین حال، DNS می تواند در صورت نیاز روی TCP نیز کار کند تا بتواند به پرسش های کلاینت ها، جواب دهد. اما همیشه UDP به خاط سرعت بیشترش، مقدم در نظر گرفته می شود.نکته ای که باید در نظر گرفته شود این است که جواب های (DNS (DNS Answers که حجمشان بیشتر از 512 بایت است، از طریق TCP ارسال می شوند.
(منظور جواب هایی است که DNS Server به کلاینت ها ارسال می کند) اگر DNS Server پرسشی دریافت کند که جواب آن بیشتر از 512 بایت باشد، DNS Server از کلاینت درخواست کننده می خواهد که درخواست خود را از طریق TCP ارسال کند. این امر به خاطر محدودیت های حجمی و کیفی پروتکل UDP می باشد.
نمونه ای از یک Truncated Bit در یک بسته
پاورقی: EDNS یا مکانیزم توسعه برای (DNS (Extension Mechanism for DNS اجازه می دهد که جواب هایی که حجمشان بیشتر از 512 بایت است، برای ارسال توسط پروتکل UDP مجددا بسته بندی شوند. لازم به ذکر است که EDNS قادر به ارسال بسته ها با حجم بیشتر از 512 بایت روی پروتکل UDP می باشد.
متخصص سرویس های مایکروسافت