TTL چیست و چه کاربردی دارد؟
ممکن است با واژه TTL بارها و بارها برخورد کرده باشید ولی معنا و مفهوم آن را به خوبی درک نکنید. در این پست از مجله هاست ایران میخواهیم در رابطه با اینکه TTL چیست؟ TTL چگونه کار میکند و بسیاری از جنبههای مختلف دیگر آن به گفتگو بپردازیم. پس باما همراه باشید.
TTL چیست؟
TTL مخفف عبارت Time To Live است و به معنی زمان برای زندگی یا زمانی برای اعتبار داشتن (اعتبار داشتن یک بسته در شبکه) است. بهصورت کلی TTL به محدودیت زمانی اعمالشده برای بسته داده در شبکه قبل از منقضی شدن اشاره دارد. این یک مقدار باینری ۸ بیتی است که توسط میزبان فرستنده در هدر پروتکل اینترنت (IP) تنظیم شده است. هدف از TTL جلوگیری از گردش بستههای داده برای همیشه در شبکه است. حداکثر مقدار TTL= 255 است. مقدار TTL را میتوان از ۱ تا ۲۵۵ تنظیم کرد.
استفاده از TTL در برنامههای محاسباتی در بهبود عملکرد و مدیریت ذخیره دادهها نهفته است. همچنین در حافظه پنهان شبکه تحویل محتوا (CDN) و حافظه پنهان سیستم نام دامنه (DNS) استفاده میشود. تا به این جا فهمیدیم که TTL چیست، در بخش بعد نحوه کار آن موردبررسی قرار خواهد گرفت.
TTL چگونه کار میکند؟
بعد از اینکه فهمیدیم TTL چیست حال نوبت به نحوه کارکرد آن در شبکه است. هنگامیکه بستهای از اطلاعات ایجاد میشود و در سراسر اینترنت ارسال میشود، این خطر وجود دارد که بهطور نامحدود از نقطهبهنقطه دیگری منتقل شود و این بهصورت نامحدود ادامهدار باشد. برای کاهش این احتمال، بستهها با انقضایی طراحی میشوند که به آن محدودیت زمان تا زندگی یا hop میگویند. بسته TTL همچنین میتواند در تعیین مدتزمانی که یک بسته در گردش بوده است مفید باشد و به فرستنده اجازه دهد تا اطلاعات مسیر بسته را از طریق اینترنت دریافت کند.
هر بسته دارای مکانی است که در آن مقدار عددی را ذخیره میکند که تعیین میکند چه مدت دیگر باید در شبکه به حرکت خود ادامه دهد. هر بار که روتر بستهای را دریافت میکند، یک بسته را از تعداد TTL کم میکند و سپس آن را به مکان بعدی در شبکه ارسال میکند. اگر در هر نقطهای تعداد TTL پس از تفریق برابر با صفر باشد، روتر بسته را منقضی شده میداند و یک پیام ICMP را به میزبان اصلی ارسال میکند. برای اینکه بهتر درک کنیم که TTL چیست و نحوه کار آن به چه صورت است بیایید تصویر زیر را برای درک آن در نظر بگیریم. فرض ما بر این است که حداکثر محدوده برای بستهها با مقادیر TTL نشان داده میشود. در این تصویر ۵ مرحله مختلف دنبال شده است:
- میزبان فرستنده مقدار TTL اولیه را بهعنوان یک فیلد هشترقمی باینری در هدر بسته تنظیم میکند.
- فیلد TTL دیتاگرام توسط فرستنده تنظیم میشود و توسط هر روتر در طول مسیر به مقصد کاهش مییابد.
- روتر هنگام ارسال بستههای IP، مقدار TTL را حداقل یک بار کاهش میدهد.
- هنگامیکه مقدار TTL بسته به ۰ رسید، روتر آن را دور میاندازد و یک پیام ICMP را به میزبان اصلی ارسال میکند.
- این سیستم تضمین میکند که بستهای که از طریق شبکه در حال حرکت است، پس از مدتزمان معینی حذف میشود، نه اینکه بهطور نامحدود حلقه بزند و زنده بماند.
مثالی از TTL در شبکه
سناریوی زیر برای درک بهتر ماهیت TTL است.
در این سناریو میزبان A میخواهد با استفاده از یک بسته پینگ با میزبان B تعامل داشته باشد. میزبان A از TTL 255 در پینگ استفاده میکند و آن را به روتر A، دروازه خود، ارسال میکند. هنگامیکه روتر A متوجه میشود که بسته به لایه ۳ میرود، یعنی لایه شبکه، به روتر B میرود، TTL را ۲۵۵ – ۱ = ۲۵۴، کاهش میدهد و آن را به روتر B تحویل میدهد. روتر B و روتر C TTL را کاهش میدهند. روتر B TTL را در یک بسته از ۲۵۴ به ۲۵۳ کاهش میدهد و روتر C TTL را از ۲۵۳ به ۲۵۲ کاهش میدهد. بسته پینگ TTL با رسیدن به میزبان B به ۲۵۲ کاهش مییابد. هر زمان که TTL به مقدار صفر رسید، TTL=0، بسته توسط روتر منقضی میشود و پیغام خطای Time Exceeded به میزبان اصلی ارسال میشود.
مفهوم TTL در DNS
DNS TTL به زمان صرف شده توسط DNS برای ذخیره یک رکورد اشاره دارد. بهعبارتدیگر، مدتزمانی که قرار است یک رکورد DNS نگهداشته شود یا مدتزمانی که طول میکشد تا یک رکورد DNS از حافظه پنهان بازگردانده شود، بهعنوان زمان برای زندگی نامیده میشود. این یک مقدار عددی است که در یک رکورد DNS در سرور نام دامنه معتبر دامنه تنظیم شده است.
تعداد ثانیههایی را مشخص میکند که یک سرور کش میتواند مقدار ذخیرهشده رکورد را ارائه دهد. زمانی که زمان تنظیم شده از بهروزرسانی قبلی گذشته باشد، سرور ذخیره کننده با سرور معتبر تماس میگیرد تا مقدار فعلی و احتمالاً بهروزرسانی شده را برای رکورد به دست آورد.
TTL در HTTP
TTL در ثانیه اندازهگیری میشود و توسط هدرهای HTTP مانند هدر Cache-Control تنظیم میشود. اگر مقدار روی “Cache-Control: max-age=60” تنظیم شود، به این معنی است که هر ۶۰ ثانیه یک منبع معین را قبل از گذشتن از زمان زندگی، بهروزرسانی کنید. تنظیم “max-age=0” به این معنی است که منبع بههیچوجه نباید کش شود.
TTL تأثیر مستقیمی بر زمان بارگذاری صفحه (دادههای ذخیرهشده در حافظه کش سریعتر بارگیری میشود) و تازگی محتوا در سایت شما دارد (یعنی دادههایی که برای مدت طولانی در حافظه پنهان نگهداری میشوند ممکن است کهنه شوند).
TTL در کش
TTL همچنین در کش برای شبکههای تحویل محتوا (CDN) استفاده میشود. TTL ها در اینجا برای تعیین مدتزمان ارائه اطلاعات ذخیرهشده در حافظه پنهان تا زمانی که یک نسخه جدید از یک سرور اصلی دانلود شود استفاده میشود. اگر زمان بین کشش سرور مبدأ بهدرستی تنظیم شده باشد، CDN میتواند محتوای بهروز شده را بدون انتشار درخواستها به سرور مبدأ ارائه دهد. این اثر انباشته CDN را قادر میسازد تا بهطور مؤثر اطلاعات نزدیکتر به کاربر ارائه دهد و درعینحال پهنای باند موردنیاز در مبدأ را به حداقل برساند.
نحوه پیکربندی TTL
TTL ها باید بهصورت زیر پیکربندی شوند تا اطمینان حاصل شود که بازدیدکنندگان شما فقط آخرین نسخه وبسایت شما را میبینند:
- برای محتوای ایستا مانند تصاویر، اسناد و غیره، مقدار TTL طولانیتری تنظیم میشود زیرا بهندرت به روز میشوند.
- برای محتوای پویا مانند فایلهای HTML، تنظیم مقادیر TTL دشوار است. بهعنوان مثال، بخش نظرات یک وبسایت اغلب تغییر میکند و در صورتی که کاربر مجاز باشد پستهای موجود را تغییر دهد، بههیچوجه نمیتوان زمان بهروزرسانی آن را پیشبینی کرد، پس ذخیره کردن در حافظه پنهان یک عمل توصیهشده نیست.
کاربرد TTL چیست؟
مقدار TTL در ابزارهای شبکه مانند ping، traceroute و pathping استفاده میشود. دستور ping برای تست دسترسی به کامپیوتر مقصد استفاده میشود. بهعبارتدیگر، بررسی میکند که آیا ارتباط میتواند بین کامپیوتر مبدأ و مقصد یا یک دستگاه شبکه انجام شود یا خیر. با ارسال پیامهای درخواست ICMP Echo به کامپیوتر مورد نظر و سپس انتظار برای پاسخ کار میکند. اجرای دستور ping دو اطلاعات مهم را به دست میدهد: تعداد پاسخهایی که برگردانده میشوند و مدتزمان بازگشت آنها چقدر است.
دستور tracert/traceroute برای ردیابی مسیر بین دو دستگاه استفاده میشود. چندین روتر در مسیری وجود دارد که با استفاده از آن اتصال برقرار میشود؛ بنابراین، نام یا آدرس IP روترهای موجود در مسیر دو دستگاه متصل را ارائه میدهد.
در پروتکل اینترنت (IP)، TTL ممکن است بر دامنه یا محدوده ارسال بسته کنترل داشته باشد.
- ۰ به همان میزبان محدودشده است
- ۱ به همان زیر شبکه محدودشده است
- ۳۲ محدود به همان سایت است
- ۶۴ محدود به همان منطقه است
- ۱۲۸ محدود به همان قاره است
- ۲۵۵ بلامانع است
محدودیت زمانی یا محدودیت هاپ در TTL چیست؟
هاپ در IPv6 بهعنوان hop limit و در IPv4 بهعنوان TTL شناخته میشود. فیلد Hop همانند فیلد TTL در IPv4 است. این تابع برای عملیات شبکه ضروری است. به عبارتی هاپ از فروپاشی شبکهها در نتیجه حلقه بسته شدن بهطور نامحدود جلوگیری میکند. پروتکلهای حملونقل مانند TCP از تابع محدودیت زمانی استفاده میکنند تا اطمینان حاصل شود که دادهها بهطور قابلاعتماد منتقل میشوند.
حتی اگر زمان سپری شده بهطور قابلتوجهی کمتر از یک ثانیه باشد، هر روتری که یک بسته را مدیریت میکند باید حداقل یک TTL را کاهش دهد. در این منظر، Time-to-Live بهعنوان یک هاپ کانتر عمل میکند؛ بنابراین، محدودیتی در میزان انتشار دیتاگرام از طریق اینترنت ایجاد میکند. هنگامیکه یک بسته ارسال میشود، TTL باید حداقل یک واحد کاهش یابد. ممکن است برای هر ثانیه یک بسته TTL را کاهش دهد و یک بسته را برای بیش از یک ثانیه حفظ کند.
مقادیر رایج TTL چیست؟
بهطورمعمول، مقدار TTL، ۸۶۴۰۰ ثانیه یا ۲۴ ساعت است. از طرف دیگر رکوردهای MX و CNAME میتوانند TTL طولانیتری داشته باشند زیرا انتظار میرود بهندرت تغییر کنند. اگر سرویس شما یک سرویس حیاتی و حساس است توصیه میشود TTL را روی ۱ ساعت تنظیم کنید. TTL های کوتاهتر میتوانند به یک سرور DNS فشار وارد کنند، اما میتوانند هنگام تغییر آدرس سرویسهای کلیدی مانند وب سرورها یا رکوردهای MX سودمند باشند. در نتیجه، مدیران DNS اغلب قبل از انتقال سرویسها، TTL ها را کاهش میدهند تا از وقفه جلوگیری کنند.
در چه شرایط دیگری از TTL استفاده میشود؟
جدای از ردیابی مسیری که بستهها در اینترنت طی میکنند، از TTL در زمینه ذخیرهسازی اطلاعات برای مدتزمان معینی استفاده میشود. بهجای اندازهگیری زمان در پرش بین مسیریابها که هرکدام از آنها میتواند زمان متغیری را ببرد، برخی از موارد استفاده از شبکه به شیوه سنتیتری عمل میکنند.
CDN ها معمولاً از یک TTL برای تعیین مدتزمان ارائه محتوای کش شده از یک سرور لبه CDN قبل از واکشی کپی جدید از یک سرور اصلی استفاده میکنند. با تنظیم مناسب مدتزمان بین کشش سرور مبدأ، یک CDN میتواند محتوای بهروز شده را بدون اینکه درخواستها بهطور پیوسته به مبدأ منتشر شوند، ارائه دهد. این بهینهسازی به CDN اجازه میدهد تا بهطور مؤثر محتوا را نزدیکتر به کاربر ارائه دهد و درعینحال پهنای باند موردنیاز از مبدأ را کاهش دهد. در زمینه یک رکورد DNS، TTL یک مقدار عددی است که تعیین میکند یک سرور کش DNS چه مدت میتواند یک رکورد DNS را قبل از دسترسی به سرور DNS معتبر و گرفتن یک کپی جدید از رکورد، ارائه کند.