سید مجید هاشمی
سید مجید هاشمی
خواندن ۴ دقیقه·۴ سال پیش

TTL چیست ؟

به مدت زمان زنده ماندن (اعتبار داشتن) یک packet در سطح شبکه Time to Live یا به اختصار TTL گفته می شود. هر بسته (Packet) در طول مسیر مبدا تا رسیدن به مقصد از دستگاه‌هایی عبور می کند که به هر کدام از آن‌ها یک hop گفته می شود. طول عمر یا همان TTL بسته رابطه مستقیم با تعداد hop های مسیری که بسته در حال طی کردن آن است دارد. بدین صورت که با عبور از هر hop یک واحد از TTL آن کم می شود. TTL علاوه بر مسیریابی در شبکه در مفاهیمی همچون DNS Caching و CDN Caching نیز استفاده می شود.

یکی از دلایل استفاده از این پارامتر در بسته‌های اینترنتی جلوگیری از ارسال نامحدود و پی در پی بسته‌ها بین مسیریاب ها و تجهیزات شبکه است. TTL به نوعی تاریخ انقضا بسته محسوب می شود و از سوی دیگر این قابلیت را به ارسال کننده می‌دهد که از تعداد hop های در طول مسیر مطلع شود.

بر اساس پروتکل IP (Internet Protocol) پارامتر TTL یک فیلد 8 بیتی در هدر بسته های IP v4 است. حداکثر مقدار TTL برابر 255 می تواند باشد که مقدار پیش فرض و پیشنهادی آن 64 است. TTL توسط فرستنده در ساختار بسته تعریف می شود و پس از گذشت از هر دستگاه از مقدار آن یک واحد کم می شود. اگر قبل از رسیدن بسته به مقصد مقدار TTL آن صفر شود همان دستگاه یا hopی که بسته در آخرین مقدار 1 به آن رسیده است بسته را دور می اندازد و یک پیغام خطا با استفاده از پروتکل ICMP به فرستنده بسته ارسال می شود. این فرآیند را در تصویر زیر مرحله به مرحله مشاهده می کنید.

همانگونه که گفته شد TTL افزون بر بسته‌های اینترنتی در طول مسیریابی شبکه در مکانیزم‌هایی همچون DNS Caching و CDN Caching هم کاربرد دارد. TTL برای هر رکورد DNS مقدار دهی می شود و مشخص می کند یک سرور Resolver چه مدت زمانی می تواند کوئری DNS را به اصطلاح cache نماید. مزایای قابلیت caching در سرویس DNS بر کسی پوشیده نیست و می دانیم که با این قابلیت سرعت ترجمه نام دامنه و در نتیجه بارگزاری صفحات وب سایت‌ها سریعتر خواهد شد. به این دلیل که فرآیند بررسی درخواست در سرور پاسخ دهنده Local شما که رکورد DNS درخواستی شما در آن cache شده است به مراتب سریعتر از ارسال و دریافت پاسخ از DNS سرور‌های بالادستی در سطح اینترنت خواهد بود. از سوی دیگر نوعی تقسیم بار در سرورهای سطح شبکه اینترنت رخ خواهد داد که به جای ارسال درخواست همه کاربران به چند سرور، درخواست ها بین سرور ها تقسیم خواهند شد.

حال در نظر بگیرید تغییری در یک رکورد DNS رخ دهد! در این حالت قابلیت cache در سرویس DNS کمی دارای اشکال می شود. بدین صورت که رکورد مربوط به یک وب سایت در سطح DNS های جهانی تغییر و به روز رسانی شده است ولیکن DNS سرور های محلی و سطح پایین همچنان رکورد قبل از تغییرات را در حافظه خود دارند. در این حالت پاسخی که به کاربر برای ترجمه نام دامنه درخواستی به آدرس IP بازگردانده خواهد شد اشتباه خواهد بود و عملکرد سرویس DNS را زیر سوال می برد. در این شرایط TTL به کمک سرویس DNS آمده و با تعیین تاریخ انقضا و مدت زمان اعتبار هر کوئری DNS در حافظه cache مشخص می کند Resolver حداکثر تا چه مدتی می تواند از یک کوئری استفاده کند و پس از انقضا می بایست اطلاعات cache خود را با استفاده از سرور های بالادستی به روز کند.

چرخه به روز رسانی حافظه cache سرور های DNS بسیار حائز اهمیت است. تصور کنید رکوردهای DNS دامنه شما در DNS سروی تنظیم شده است که TTL آن 1 روز است . این بدین معناست که اگر شما در همین لحظه تغییراتی در رکورد DNS وب سایت خود اعمال کنید حداقل 1 روز زمان خواهد برد تا سرور های DNS بالادستی و به صورت کلی در سطح شبکه اینترنت رکورد وب سایت شما را به روز کنند. در نتیجه طولانی بودن زمان TTL یک رکورد در cache سرویس DNS ممکن است تغییرات شما در رکورد DNS وب سایت تان را با مشکل مواجه کند. پس طولانی شدن مقدار TTL ممکن است مزایای استفاده از cache در سرویس DNS را تحت تاثیر قرار دهد.

دیگر کاربرد TTL در حافظه cache سرویس های شتاب دهنده یا همان CDN ها است. شرکت‌های ارایه دهنده خدمات CDN ، با استفاده از TTL مشخص می کنند هر محتوای ذخیره شده در حافظه cache تا چه مدت زمانی می بایست توسط یک سرور شتاب دهنده edge منتشر شود. همچنین بازه زمانی رجوع به سرور مبدا و به روز رسانی تغییرات محتوا را نیز تعیین می کند. اگر این بازه زمانی به درستی تنظیم شود، CDN ها قادر به ارائه محتوای به روز سرورهای مبدا خود می باشند بدون آن که نیاز باشد به صورت مکرر به سرور مبدا درخواست آپدیت محتوا دهند. این بهینه‌سازی به CDNها اجازه می دهد تا ضمن کاهش پهنای باند مورد نیاز سرور شتاب دهنده Edge تا مبدا ، محتوا را سریعتر و به روز تر در اختیار کاربر قرار دهند.

ttl
شاید از این پست‌ها خوشتان بیاید