یکی از ابزارهایی که مدیران و تکنسینهای شبکه همواره برای عیبیابی یک شبکه از آن استفاده میکنند، Traceroute میباشد. هر جا که اختلالاتی مثل تاخیر (Latency) و قطعی (Connectivity Issue) درون یک شبکه وجود داشته باشد، Traceroute و Ping دو ابزار ابتدایی ولی کارآمدی هستند که میتوانند در زمینه رفع مشکل به ما کمک کنند.
حتما با ابزار Ping آشنایی دارید. ابزاری که به ما کمک میکند تا متوجه شویم با یک IP ارتباط داریم یا خیر. فرض کنید میخواهیم بفهمیم که آیا دو سیستم با یکدیگر ارتباط دارند یا خیر. کافیست پشت یکی از سیستمها بنشینیم و درون CMD، سیستم دیگر را Ping کنیم. اگر پاسخ پکتهای ارسالی را با موفقیت دریافت کنیم، متوجه میشویم که ارتباط بین این دو سیستم بدون مشکل است. اما اگر پاسخ درستی دریافت نکنیم، تنها میفهمیم که ارتباط مشکل دارد. چگونه تشخیص دهیم که کجای ارتباط مشکل دارد؟ چراکه احتمالا چندین روتر و سوییچ بین این دو سیستم وجود دارد.
اگر در ارتباط بین دو سیستم مشکلی وجود داشته باشد، Traceroute اولا میتواند مشخص کند که یک مشکلی در ارتباط وجود دارد، دوما میتواند مشخص کند که این مشکل از کجاست!
Traceroute عموما از پکتهای Echo (متعلق به پروتکل ICMP) و همچنین مقادیر متفاوت TTL (یا همان Time To Live) استفاده میکند. اما قبل از اینکه بررسی کنیم Traceroute چگونه کار میکند، باید با مفهوم کلی TTL و RTT آشنا باشیم.
TTL چیست؟
به زبان ساده TTL یا همان Time To Live، عمر یک پکت را در شبکه، محدود میکند. این مقدار برای هر بسته توسط فرستنده آن مشخص میشود و با رسیدن به هر HOP در شبکه، یک واحد از آن کاسته میشود. یعنی اگر TTL یک بسته 100 باشد، نهایتا از 100 عدد HOP میتواند عبور کند تا به مقصد موردنظر برسد در غیر ای نصورت بسته ارسالشده، دور انداخته میشود (از بین میرود) و یک پیام خطا از طریق ICMP برای فرستنده ارسال میشود. HOP همان روترهایی هستند که بر سر راه این پکت قرار دارند.
RTT چیست؟
به زبان ساده RTT یا همان Round-Trip Delay، مدت زمانی است که طول میکشد تا یک پکت ارسال شود و پاسخ آن دریافت شود. RTT به ما کمک میکند تا بفهمیم که بهطور میانگین چه فاصله زمانی بین یک فرستنده و گیرنده وجود دارد. RTT به ما کمک میکند تا تاخیرهای موجود در ارتباط بین دو سیستم را ارزیابی کنیم.
عملکرد Traceroute
Traceroute در ابتدا شروع به ارسال پکتهایی میکند که TTL آنها 1 میباشد. این پکتها بعد از اینکه به اولین HOP رسیدند، از مقدار TTL یک واحد کم میکنند، از این رو، مقدار TTL برای این پکتها به صفر میرسد. همان طور که بالاتر گفتیم، وقتی مقدار TTL به صفر میرسد، اولا پکت DROP میشود. دوما یک پیام خطا به سمت فرستنده ارسال میشود. حالا تا به اینجا RTT نشان دهنده فاصله زمانی بین فرستنده (کسی که پکتها را ارسال کرد و در اصل همان کسی که دستور Traceroute را اجرا کرده است) و اولین HOP میباشد، چرا که TTL را برابر 1 قرار داده بودیم.
در گام بعدی، Traceroute شروع به ارسال پکتهایی میکند که TTL آنها 2 میباشد. هدف از این کار این است که بستههای ما تنها تا HOP دوم حرکت کنند. پس بستهها پس از اینکه شروع به حرکت کردند، ابتدا از HOP اول عبور میکنند و TTL آنها از عدد 2 به عدد 1 کاهش پیدا میکند. سپس با رسیدن پکتها به HOP دوم، TTL آنها از یک به صفر کاهش پیدا میکند و در نتیجه یک پیام خطا به سمت فرستنده ارسال میشود. بدین صورت فرستنده متوجه میشود که وضعیت RTT تا HOP دوم به چه صورت است.
Traceroute این کار مجددا ادامه میدهد و هر بار TTL را یک واحد افزایش میدهد تا وضعیت ارتباط و RTT هر یک از HOP ها را متوجه شود.
برای استفاده از Traceroute کار بسیار سادهای را پیشرو داریم.
در لینوکس:
traceroute 192.168.1.5
و در ویندوز:
tracert 192.168.1.5
که در هر دوی موارد 192.168.1.5 همان IP ای میباشد که میخواهیم مسیر ارتباط با آن مورد بررسی قرار گیرد.