TTL چیست ؟
Time to Live یا به اختصار TTL به مدتزمان زنده ماندن (اعتبار داشتن) یک بسته (packet) در سطح شبکه گفته میشود. هر بسته (Packet) در طول مسیر، از مبدا تا مقصد از دستگاههایی عبور میکند که هر کدام از آنها یک گام (hop) محسوب میشوند. TTL بسته رابطهی مستقیمی با تعداد گامهای مسیری که بسته از آن عبور میکند، دارد. با عبور از هر hop یک واحد از TTL بسته کم میشود. TTL افزون بر اینکه مفهومی در مسیریابی شبکه است، در حوزههایی مانند DNS Caching و CDN Caching نیز کاربرد دارد.
یکی از دلایل استفاده از این پارامتر در بستههای اینترنتی جلوگیری از ارسال نامحدود و پیدرپی بستهها بین مسیریابها و تجهیزات شبکه است. TTL به نوعی تاریخ انقضا بسته محسوب میشود و از سوی دیگر این قابلیت را به ارسال کننده میدهد که از تعداد گامها در طول مسیر آگاه شود.
کاربرد TTL در شبکه
براساس پروتکل IP (Internet Protocol) پارامتر TTL یک فیلد ۸ بیتی در هدر بستههای IPv4 است. حداکثر مقدار TTL میتواند مقداری برابر با 255 باشد. اما معمولن مقدار پیشفرض و پیشنهادی آن 64 است.
TTL بهوسیلهی فرستنده در ساختار بسته تعریف میشود و پس از گذشت از هر دستگاه یک واحد از مقدار آن کم میشود. این کم شدن مقدار در هر گام، قبل از عبور بسته از آن گام انجام میشود. بنابراین، اگر در گامی به جز مقصد، دستگاه پس از دریافت بسته، یک واحد از مقدار TTL آن کم کند و این مقدار صفر شود، بسته دور انداخته میشود و به مقصد نمیرسد. در این شرایط گامی که بسته را دور انداخته است، یک پیغام خطا با استفاده از پروتکل ICMP به فرستنده بسته ارسال میکند.
کاربرد TTL در DNS
همانگونه که بیان شد، TTL افزون بر مسیریابی شبکه، در مکانیزمهایی مانند DNS Caching و CDN Caching هم کاربرد دارد. هر رکورد DNS دارای یک مقدار TTL است که مشخص میکند یک سرور Resolver چه مدت زمان میتواند آن رکورد DNS را در cache خود ذخیره کند. با cache رکوردها در سرویس DNS، سرعت ترجمهی نام دامنه و در نتیجه بارگذاری صفحات وبسایتها سریعتر خواهد شد. چرا که در این حالت، پاسخگویی سرور DNS محلی که رکورد DNS درخواستی در آن cache شده است، به مراتب سریعتر از ارسال و دریافت پاسخ از DNS سرورهای بالادستی در سطح اینترنت است. از سوی دیگر نوعی تقسیم بار در سرورهای سطح شبکه اینترنت رخ میدهد که به جای ارسال درخواست همهی کاربران به چند سرور، درخواست ها بین سرورها تقسیم میشوند.
حال در نظر بگیرید تغییری در یک رکورد DNS رخ دهد. در این حالت قابلیت cache در سرویس DNS کمی دارای اشکال است. چرا که رکورد مربوط به یک وبسایت در سطح سرورهای DNS جهانی تغییر میکند و بهروزرسانی میشود اما سرورهای DNS محلی و سطح پایین همچنان رکورد قبلی را در حافظهی خود دارند. در این حالت پاسخی که به کاربر برای ترجمهی یک نام دامنه به یک آدرس IP بازگردانده میشود، اشتباه است.
در این شرایط TTL به کمک سرویس DNS میآید و با تعیین تاریخ انقضا و مدت زمان اعتبار هر رکورد DNS در حافظهی cache، برای Resolver مشخص میکند که حداکثر تا چه مدتی میتواند از یک رکورد cache شده، استفاده کند و پس از اتمام این مدت زمان، باید اطلاعات cache خود را با سرورهای بالادستی بهروز کند.
چرخهی به روزرسانی حافظهی cache سرورهای DNS بسیار مهم است. تصور کنید TTL رکوردهای DNS دامنهی شما یک روز تعیین شده باشد. این امر به این معناست که اگر شما در همین لحظه تغییراتی در رکوردهای DNS وبسایت خود اعمال کنید دست کم یک روز زمان میبرد تا سرورهای DNS بالادستی و بهشکل کلی سرورهای DNS در سطح اینترنت، رکورد وبسایت شما را بهروز کنند. در نتیجه طولانی بودن زمان TTL یک رکورد در cache سرور DNS ممکن است تغییرات شما در رکوردهای DNS وب سایتتان را با مشکل روبهرو کند. پس طولانی شدن مقدار TTL ممکن است مزایای استفاده از cache در سرویس DNS را تحت تاثیر قرار دهد.
کاربرد TTL در CDN
کاربرد دیگر TTL در حافظه cache سرورهای لبهی CDNها است. شبکهی توزیع محتوا یا CDN، با استفاده از TTL مشخص میکنند هر محتوای ذخیره شده در حافظه cache تا چه مدت زمانی باید بهوسیلهی یک سرور لبه ذخیره و منتشر شود. همچنین بازه زمانی نیاز به ارجاع به سرور اصلی میزبان سایت و بهروزرسانی تغییرات محتوا را نیز تعیین میکند. اگر این بازه زمانی به درستی تنظیم شود، CDNها میتوانند بدون نیاز به ارجاع پیدرپی به سرورهای اصلی میزبان سایت، محتوای بهروز را به کاربران ارایه دهند. این امر سبب افزایش سرعت در تحویل محتوا به کاربران نهایی و افزایش سرعت وبسایت میشود.