TTL یا Time To Live چیست و چگونه بهینه سازی کنیم؟
TTL مخف کلمه Time to Live میباشد که به معنی مدتزمان زنده ماندن (اعتبار داشتن) یک بسته (packet) در سطح شبکه گفته میشود.
در این مقاله به بررسی TTL یا Time To Live چیست می پردازیم. TTL مخف کلمه Time to Live است. که به معنی مدتزمان زنده ماندن (اعتبار داشتن) یک بسته (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
چرخهی به روزرسانی حافظهی cache سرورهای DNS بسیار اهمیت دارد. تصور کنید TTL رکوردهای DNS دامنهی شما یک روز تعیین شده باشد. این امر به این معنا میباشد که اگر شما در همین لحظه تغییراتی در رکوردهای DNS وبسایت خود اعمال نمایید دست کم یک روز زمان میبرد تا سرورهای DNS بالادستی و بهشکل کامل سرورهای DNS در سطح اینترنت، رکورد سایت شما را بهروز کنند. در نتیجه طولانی بودن زمان TTL یک رکورد در cache سرور DNS امکان دارد تغییرات شما در رکوردهای DNS وب سایتتان را با مشکل روبهرو کند. پس طولانی شدن مقدار TTL امکان دارد مزایای استفاده از cache در سرویس DNS را تحت تاثیر قرار بدهد.
کاربرد TTL در CDN
کاربرد دیگر TTL در حافظه cache سرورهای لبهی CDNها میباشد. شبکهی توزیع محتوا یا CDN، با استفاده از TTL مشخص مینماید که هر محتوای ذخیره شده در حافظه cache تا چه مدت زمانی باید بهوسیلهی یک سرور لبه ذخیره و منتشر گردد. همچنین مدت زمانی نیاز به ارجاع به سرور اصلی میزبان سایت و بهروزرسانی تغییرات محتوا را نیز تعیین مینماید. اگر این بازه زمانی به درستی تنظیم گردد، CDNها توانایی آن را دارند بدون نیاز به ارجاع پیدرپی به سرورهای اصلی میزبان سایت، محتوای بهروز را به کاربران ارائه دهند. این امر سبب افزایش سرعت در تحویل محتوا به کاربران نهایی و افزایش سرعت وبسایت میگردد.
کاربردهای دیگر TTL
TTL در CDN Caching و DNS Caching هم استفاده میگردد.
در DNS برای هر رکورد، TTL تعریف میگردد تا مدت زمان کش بودن اطلاعات مربوط به دامنه و آی پی آدرس مشخص میگردد. با کش شدن این اطلاعات، بار کمتری به سرور DNS وارد میگردد و زمان لود صفحات کاهش پیدا میکند.
TTL در شبکه توزیع محتوا یا CDN هم کاربری دارد و مدت زمانی لازم برای مراجعه به سرور هاست و آپدیت محتوا را مشخص مینماید. نتیجه آن افزایش سرعت وب سایت و افزایش سرعت ارائه محتوا به کاربر میباشد.
TTL در پینگ به چه معنا میباشد؟
دستورات رایج شبکه، ping و traceroute هر دو از TTL استفاده مینمایند. اول بگوییم Ping مخفف چه چیزی میباشد.. Ping مخفف Packet Internet Groper و ابزاری برای عیب یابی اتصالات شبکه میباشد.
معنی TTL in ping چه چه چیزی است؟ پینگ مستقیما برای TTL یا hop limit استفاده نمی شود. اما خروجی این دستور، TTL یا hop limit بسته آی پی ورودی که برای پیامهای ICMP Echo Response دریافت می شود را نشان میدهد.
تغییر TTL در سیستم عاملهای لینوکس و ویندوز
برای کاهش یا افزایش TTL در سربرگ IP packet روش های متفاوتی هست. که به نوع سیستم عامل بستگی دارد. که در ادامه به تغییر TTL در لینوکس و ویندوز میپردازیم.
تغییر TTL در لینوکس
تغییر TTL در IPv4 در لینوکس به شکل زیر میباشد:
برای تغییر TTL از دستور زیر استفاده نمایید:
sysctl -w net.ipv4.ip_default_ttl=128
در این دستور مقدار TTL را ۱۲۸ تعریف مینماییم. این تغییر موقتی میباشد و تا مدتی ریبوت بعدی اعمال میگردد.
اگر بخواهید مقدار TTL به صورت دائم و ثابت تغییر پیدا کند، از روش های زیر استفاده نمایید:
- ادیت فایل/etc/sysctl.conf
- ایجاد فایل جدید با پسوند .conf در دایرکتوری /etc/sysctl.d/
- ادیت فایل موجود در دایرکتوری/etc/sysctl.d/
هر مسیری که انتخاب مینمایید دستور زیر را به فایل اضافه و ذخیره نموده و خارج شوید:
net.ipv4.ip_default_ttl = 128
سپس سیستم را ریبوت نمایید.
نحوه تغییر TTL در IPv6 در لینوکس شبیه IPv4 میباشد ولی باید IPv4 را به IPv6 تغییر بدهید.
تغییر TTL در ویندوز
شیوه تغییر TTL در IPv4 در ویندوز به شکل زیر میباشد:
برای نمایش مقدار کنونی TTL در command prompt دستور زیر را تایپ نمایید:
1 2 3 4 5 |
C:\WINDOWS\system32>netsh int ipv4 show global Querying active state General Global Parameters Default Hop Limit: 128 hops |
با دستور زیر بلافاصله و به صورت دایم مقدار ttl تغییر مینماید:
netsh int ipv4 set global defaultcurhoplimit=64
تغییر TTL در IPv6 در ویندوز شبیه IPv4 میباشد ولی باید IPv4 را به IPv6 تغییر بدهید.
شیوه افزایش و کاهش TTL در DNS
در دامین و DNS مشخص کننده مدت زمان کش شدن دامنه و آی پی سرور در سیستم کلاینت میباشد. مقدار TTL در DNS را میتوان زیاد و کم کرد. TTL بیشتر یا کمتر کاملا بستگی به کاربرد و تغییراتی دارد که در آدرس و وب سرور و رکوردها اعمال میگردد.
cPanel یک گزینه برای این کار میباشد. مقدار پیش فرض در سی پنل ۱۴۴۰۰ و معادل ۴ ساعت میباشد.
نحوه افزایش و کاهش TTL در DNS به ترتیب زیر میباشد:
- وارد کنترل پنل در cPanel بشوید.
- در قسمت Domains گزینهZone Editor را کلیک نمایید.
- از لیست نمایش داده شده گزینه Manage مربوط به دامنه موردنظرتان را انتخاب نمایید.
- در لیست رکوردهای دامنه روی گزینه Edit بزنید.
- مقدار TTL را بر حسب ثانیه تغییر دهید و Save کنید.