المفاهيم العامة
TTL (مدة البقاء) هو حقل في رأس IP (بروتوكول الإنترنت) يُستخدم لتحديد عمر حزمة البيانات على الشبكة. يتم تعريف TTL على أنه الحد الأقصى لعدد القفزات التي يمكن أن تقوم بها الحزمة قبل أن يتم التخلص منها.
في كل مرة يتم إرسال حزمة عبر جهاز توجيه، يقوم جهاز التوجيه بتخفيض قيمة TTL في رأس IP بمقدار واحد. إذا وصلت قيمة TTL إلى الصفر، فسيتم تجاهل الحزمة ويتم إرسال رسالة خطأ "تجاوز الوقت" ICMP (بروتوكول رسائل التحكم في الإنترنت) إلى المرسل. ستتضمن رسالة خطأ ICMP معلومات حول جهاز التوجيه حيث تم تجاهل الحزمة ووقت الرحلة ذهابًا وإيابًا للحزمة.
تتمثل الوظيفة الرئيسية لـ TTL في منع تداول الحزم إلى أجل غير مسمى على الشبكة. إذا كانت الحزمة تحتوي على TTL عالية جدًا، فقد تستمر في التداول على الشبكة لفترة غير محددة من الوقت، مما قد يتسبب في ازدحام الشبكة ومشكلات في الأداء.
مثال عملي لعملية TTL
لنفترض أن المضيف A يريد إرسال حزمة بيانات إلى المضيف B، وهناك العديد من أجهزة التوجيه المتوسطة على المسار بين A وB. يقوم المضيف A بتعيين قيمة TTL أولية في رأس IP للحزمة، والتي تساوي قيمة عدد معين من القفزات التي من المتوقع أن تجتازها الحزمة قبل الوصول إلى المضيف B.
عندما تصل الحزمة إلى جهاز التوجيه الأول على المسار، يقرأ جهاز التوجيه قيمة TTL في رأس IP للحزمة ويقللها بمقدار واحد. إذا وصلت قيمة TTL إلى الصفر، يتجاهل جهاز التوجيه الحزمة ويرسل رسالة خطأ ICMP "تم تجاوز الوقت" إلى المضيف A. إذا كانت قيمة TTL أكبر من الصفر، يقوم جهاز التوجيه بإعادة توجيه الحزمة إلى جهاز التوجيه التالي في مسار الشبكة.
تستمر هذه العملية حتى تصل الحزمة إلى المضيف B أو حتى تصل قيمة TTL إلى الصفر. إذا وصلت الحزمة إلى المضيف B، فسيقوم المضيف B بإرجاع إقرار إلى المضيف A. إذا وصلت قيمة TTL إلى الصفر، فسيتم تجاهل الحزمة ويتم إرسال رسالة خطأ ICMP "تم تجاوز الوقت" إلى المضيف A.
مثال على الأمر في Linux
في أنظمة Linux، يكون الأمر الخاص بضبط قيمة TTL هو ttl
. على سبيل المثال، لإرسال حزمة بقيمة TTL تبلغ 64 من مضيف على Linux إلى مضيف بعنوان IP 192.168.1.2
، يمكنك استخدام الأمر التالي:
ping -c 1 -t 64 192.168.1.2
في هذا الأمر ، -c 1
يحدد أنه سيتم إرسال حزمة واحدة و -t 64
يحدد أن قيمة TTL ستكون 64. الأمر ping
يرسل حزمة ICMP (بروتوكول رسائل التحكم في الإنترنت) إلى عنوان IP المحدد وينتظر الرد من المضيف البعيد.
إذا استجاب المضيف البعيد، سيتم عرض رسالة مشابهة لهذه:
64 bytes from 192.168.1.2: icmp_seq=1 ttl=63 time=1.23 ms
في هذه الرسالة، ttl=63
يشير إلى أنه تم تخفيض قيمة TTL بمقدار واحد عند جهاز التوجيه الأول على المسار قبل الوصول إلى المضيف البعيد.
إذا كانت قيمة TTL منخفضة جدًا، على سبيل المثال، إذا تم ضبطها على 1، فقد لا تصل الحزمة إلى المضيف البعيد. وبدلاً من ذلك، سيتم إرسال رسالة "تم تجاوز الوقت" إلى المضيف المصدر.
باختصار الأمر ping
في نظام Linux، يمكن استخدامه لإرسال حزم بقيمة TTL محددة وتتبع عدد القفزات في مسار الحزمة على الشبكة. يمكن أن يكون هذا مفيدًا لاستكشاف أخطاء الشبكة وإصلاحها وتحسين الأداء.
هل يمكن استخدام TTL على نظام التشغيل Windows؟
نعم، يمكنك أيضًا ضبط قيمة TTL على أنظمة Windows. الأمر المستخدم في Windows لضبط قيمة TTL هو ping
. كما هو الحال في Linux، الأمر ping
يُستخدم لإرسال الحزم إلى مضيف بعيد ويمكنك ضبط قيمة TTL باستخدام الخيار -i
.
على سبيل المثال، لإرسال حزمة بقيمة TTL تبلغ 64 من مضيف يعمل بنظام Windows إلى المضيف بعنوان IP 192.168.1.2
، يمكنك استخدام الأمر التالي:
ping 192.168.1.2 -i 64
في هذا الأمر ، -i 64
يحدد أن قيمة TTL ستكون 64. إذا استجاب المضيف البعيد، سيتم عرض رسالة مشابهة لهذه:
Reply from 192.168.1.2: bytes=32 time=1ms TTL=63
في هذه الرسالة، TTL=63
يشير إلى أنه تم تخفيض قيمة TTL بمقدار واحد عند جهاز التوجيه الأول على المسار قبل الوصول إلى المضيف البعيد.
باختصار الأمر ping
في نظام التشغيل Windows، يمكن استخدامه أيضًا لإرسال حزم بقيمة TTL محددة وتتبع عدد القفزات في مسار الحزمة على الشبكة. يمكن أن يكون هذا مفيدًا لاستكشاف أخطاء الشبكة وإصلاحها وتحسين الأداء.