آشنایی کامل با دستور Traceroute

traceroute

دستور Traceroute (که در برخی سیستم‌عامل‌ها به نام tracert شناخته می‌شود) یکی از ابزارهای حیاتی در تشخیص و عیب‌یابی مشکلات شبکه است. این دستور، مسیر دقیقی را که بسته‌های داده از کامپیوتر مبدا تا مقصد (مثلا یک وب‌سایت یا سرور) طی می‌کنند، به شما نشان می‌دهد. درک عملکرد و خروجی Traceroute برای هر متخصص شبکه، توسعه‌دهنده وب و مدیر سیستمی که با مسائل تاخیر یا قطعی شبکه سروکار دارد، ضروری است.

دستور Traceroute چیست؟

Traceroute یک ابزار خط فرمان است که برای نمایش مسیر و اندازه‌گیری تاخیر (latency) بسته‌های داده در یک شبکه پروتکل اینترنت (IP) استفاده می‌شود. به زبان ساده، این دستور نقش یک «ردیاب» را دارد و تمامی روترها (Hop) را که بسته داده برای رسیدن به مقصد باید از آن‌ها عبور کند، لیست می‌کند.

خروجی این دستور معمولا شامل موارد زیر است:

  • شماره روتر (Hop Number) در مسیر
  • سه زمان اندازه‌گیری شده رفت و برگشت (Round-Trip Time یا RTT) بر حسب میلی‌ثانیه، برای هر روتر
  • آدرس IP و در صورت امکان نام دامنه روتر
traceroute چگونه کار می‌کند؟

Traceroute چگونه کار می‌کند؟

عملکرد Traceroute بر اساس دو مفهوم اصلی در شبکه است: TTL و ICMP.

TTL یا Time to Live: هر بسته داده‌ای که در اینترنت ارسال می‌شود، یک مقدار TTL دارد (مثلا ۶۴ یا ۱۲۸). این مقدار در هر مسیریاب (روتر) که بسته از آن عبور می‌کند، یکی کم می‌شود. هدف از TTL این است که اگر بسته‌ای به دلیل مشکل در مسیریابی نتوانست به مقصد برسد، برای همیشه در شبکه سرگردان نماند.

فرایند Traceroute به این شکل است:

  1. گام اول: Traceroute یک بسته داده (معمولا با استفاده از پروتکل UDP یا ICMP) با مقدار TTL برابر با ۱ ارسال می‌کند.
  2. پاسخ روتر اول: اولین روتر در مسیر، مقدار TTL را به صفر می‌رساند و طبق قانون، آن را دور می‌اندازد. سپس یک پیام ICMP Time Exceeded به مبدا (کامپیوتر شما) باز می‌فرستد. این پاسخ، آدرس روتر اول و زمان تاخیر را مشخص می‌کند.
  3. تکرار: این فرآیند با افزایش TTL در هر مرحله (مثلا TTL=۲، TTL=۳ و …) تکرار می‌شود تا زمانی که بسته به مقصد نهایی برسد. وقتی بسته به مقصد می‌رسد، به جای ICMP Time Exceeded، یک پیام نهایی از مقصد دریافت می‌شود.
  4. تفسیر خروجی: با استفاده از این دنباله از پاسخ‌های ICMP، Traceroute کل مسیر و زمان صرف‌شده در هر نقطه پرش (Hop) را ترسیم می‌کند.

کاربردهای حیاتی دستور Traceroute

Traceroute یک ابزار تشخیصی قدرتمند است که کاربردهای کلیدی متعددی در شبکه‌های کامپیوتری دارد:

  • تشخیص تاخیر (Latency) و نوسانات: اصلی‌ترین کاربرد Traceroute، شناسایی دقیق محلی است که تاخیر در آنجا به طور ناگهانی افزایش می‌یابد. اگر شما یک سرور مجازی خارج از ایران دارید و احساس می‌کنید سرعت اتصال کاربران به آن کم شده، Traceroute به شما نشان می‌دهد که آیا مشکل از زیرساخت کشور خودتان است، از روترهای میانی بین‌المللی، یا از سرور مقصد.
  • پیدا کردن روترهای از کار افتاده: اگر در طول مسیر به نقطه‌ای برخورد کنید که هیچ پاسخی (Request Timed Out) دریافت نمی‌شود، به احتمال زیاد، آن روتر دچار مشکل شده یا توسط فایروال مسدود شده است.
  • بررسی مسیریابی نامناسب: این ابزار به شما کمک می‌کند تا بررسی کنید آیا مسیر انتخابی بسته‌های داده، بهینه و منطقی است یا خیر.
  • عیب‌یابی فایروال: اگر فایروال‌های میانی، پیام‌های ICMP را فیلتر کرده باشند، ممکن است در خروجی به جای آدرس، ستاره (*) نمایش داده شود.

محدودیت‌ها و جایگزین‌های Traceroute

اگرچه Traceroute یک ابزار قدرتمند است، اما محدودیت‌هایی نیز دارد و ابزارهای دیگری می‌توانند تصویر کامل‌تری از وضعیت شبکه ارائه دهند:

  • ناهمخوانی مسیر (Asymmetric Routing): Traceroute تنها مسیر رفت (از مبدا به مقصد) را نشان می‌دهد. مسیر برگشت بسته (از مقصد به مبدا) ممکن است کاملا متفاوت باشد. این مسئله هنگام عیب‌یابی اتصال به یک سرور که تحت مدیریت دو شبکه مختلف است، می‌تواند مهم باشد.
  • پروتکل: همانطور که قبلا ذکر شد، Traceroute معمولا از ICMP یا UDP استفاده می‌کند، که پروتکل‌های لایه اپلیکیشن مورد استفاده وب‌سایت‌ها (مثل TCP) نیستند. فیلتر شدن این پروتکل‌ها می‌تواند منجر به نمایش غلط ستاره‌ها شود، در حالی که سرویس اصلی همچنان در دسترس است.

برای به دست آوردن اطلاعات بیشتر، می‌توانید از دستورات مکمل زیر استفاده کنید:

  1. Ping: ساده‌ترین ابزار برای بررسی وضعیت فعال بودن مقصد و اندازه‌گیری سریع تاخیر کلی.
    ping google.com
  2. MTR (My Traceroute): این ابزار ترکیبی از قابلیت‌های ping و traceroute است. MTR به طور مداوم بسته‌ها را ارسال می‌کند و به جای گرفتن سه نمونه، آمار زنده‌ای از تاخیر و از دست رفتن بسته در هر هاپ را نمایش می‌دهد. این ابزار برای تشخیص مشکلات ناپایدار و متناوب در میزبانی اختصاصی مناسب کسب و کار بسیار کارآمدتر است.
    mtr google.com
دستور traceroute

تفاوت Traceroute در ویندوز، لینوکس و مک

اگرچه هدف نهایی هر دو یکسان است، اما در جزئیات اجرای دستور و پروتکل‌های مورد استفاده، تفاوت‌هایی وجود دارد:

  • ویندوز: دستور مورد استفاده tracert است. این دستور معمولا برای ارسال بسته‌های پروب (Probe) از پروتکل ICMP Echo Request استفاده می‌کند.
  • لینوکس و macOS: دستور استاندارد traceroute است. در این سیستم‌عامل‌ها، معمولا به طور پیش‌فرض برای ارسال بسته‌ها از پروتکل UDP (User Datagram Protocol) استفاده می‌شود؛ مگر اینکه با گزینه‌های دستوری مثلا -I از آن بخواهید که از ICMP استفاده کند.

نحوه استفاده از دستور Traceroute (مثال‌های عملی)

استفاده از این دستور بسیار ساده است. کافی است پنجره خط فرمان (Command Prompt در ویندوز یا Terminal در لینوکس/مک) را باز کرده و دستور را به صورت زیر وارد کنید:

دستور صحیح در ویندوز (Command Prompt)

tracert google.com

در لینوکس/مک (Terminal):

traceroute 8.8.8.8

خروجی شبیه به زیر خواهد بود:

Tracing route to 8.8.8.8 over a maximum of 30 hops

1 1 ms 1 ms 1 ms 192.168.1.1 [آدرس روتر خانگی] 2 10 ms 10 ms 9 ms 10.20.30.1 [روتر ISP] 3 25 ms 24 ms 25 ms server-ip-example.com ... 10 120 ms 121 ms 119 ms 8.8.8.8 [مقصد نهایی]

تفسیر خروجی:

  • 1 (اولین سطر): شماره روتر (Hop) است.
  • 1 ms 1 ms 1 ms: سه مقدار زمان رفت و برگشت (RTT) برای این هاپ را نشان می‌دهد. اگر این مقادیر ناگهان برای یک روتر خاص بسیار بالا رود، نشان‌دهنده bottleneck در آن نقطه است.
  • 192.168.1.1: آدرس IP یا نام دامنه روتر (Gateway) است.

اگر به جای زمان‌ها، ستاره‌های متوالی (***) مشاهده کردید، به این معنی است که روتر مذکور پیامی برگردانده نشده است. این می‌تواند به دلیل فیلتر شدن پیام‌های ICMP توسط فایروال آن روتر باشد و لزوما به معنای خرابی آن نیست.

علائم traceroute

تفسیر علامت‌های رایج در خروجی Traceroute

زمانی که دستور Traceroute را اجرا می‌کنید، ممکن است به جای زمان‌های پاسخ (RTT) با علامت‌هایی مواجه شوید که هر کدام معنای خاصی در تشخیص شبکه دارند. درک این علامت‌ها برای عیب‌یابی درست مسیر حیاتی است:

ستاره‌ها (***) به جای زمان

این شایع‌ترین علامت است و به این معناست که روتر در آن هاپ، پاسخی به درخواست پروب Traceroute نداده است. دلایل اصلی این اتفاق عبارتند از:

  1. فایروال: روتر یا فایروال آن هاپ به طور عمدی پیکربندی شده تا بسته‌های ICMP (که اغلب برای پاسخ‌دهی استفاده می‌شوند) را نادیده بگیرد یا فیلتر کند. این یک اقدام امنیتی رایج است و لزوما به معنی خرابی روتر نیست.
  2. از دست رفتن بسته (Packet Loss): بسته پروب در مسیر به آن هاپ گم شده یا پاسخ آن به کامپیوتر شما بازنگشته است. اگر این ستاره‌ها فقط در یک هاپ میانی دیده شوند اما ردیابی در هاپ‌های بعدی ادامه یابد، معمولا جای نگرانی نیست.
  3. محدودیت نرخ (Rate Limiting): روترهای پربار ممکن است ترافیک ICMP را محدود کنند تا منابع خود را برای ترافیک داده‌های اصلی آزاد نگه دارند.

علامت تعجب (!) در کنار خروجی

این علامت معمولا در سیستم‌عامل‌های لینوکس/مک دیده می‌شود و نشان‌دهنده یک خطا است. متداول‌ترین نوع آن !H است که نشان می‌دهد «Host Unreachable» یا میزبان غیرقابل دسترسی است. این به این معناست که روتر می‌داند بسته به مقصد نخواهد رسید و برای صرفه‌جویی در منابع، یک پیام خطا برای مبدا ارسال می‌کند.

سوالات متداول

01Traceroute دقیقا چه کاری انجام می‌دهد؟

مسیر و زمان سفر بسته‌های داده را از کامپیوتر شما تا یک مقصد خاص (مثل یک سرور یا وب‌سایت) در شبکه ردیابی می‌کند.

02منظور از «هاپ» (Hop) در خروجی Traceroute چیست؟

هر هاپ نشان‌دهنده یک مسیریاب (روتر) در شبکه است که بسته داده برای رسیدن به مقصد نهایی باید از آن عبور کند. Traceroute تاخیر زمانی عبور از هر روتر را اندازه‌گیری می‌کند.

03چرا در خروجی، علامت‌های سه ستاره (***) می‌بینم؟

این علامت معمولا نشان می‌دهد که روتر در آن نقطه، پاسخی به درخواست Traceroute نداده است. این معمولا به دلیل تنظیمات فایروال آن روتر یا محدودیت‌های امنیتی است و همیشه به معنی خرابی نیست.

04تفاوت دستور tracert و traceroute چیست؟

tracert نام دستوری است که در سیستم‌عامل ویندوز استفاده می‌شود و معمولا از پروتکل ICMP استفاده می‌کند. traceroute نام دستوری است که در لینوکس و macOS استفاده می‌شود و معمولا از پروتکل UDP استفاده می‌کند.

05آیا می‌توانم آدرس کامل یک وب‌سایت (URL) را به Traceroute بدهم؟

خیر. Traceroute یک ابزار سطح شبکه است و تنها یک نام دامنه ساده (مانند google.com ) یا یک آدرس IP را به عنوان مقصد می‌پذیرد. ورود پروتکل‌هایی مانند https:// باعث می‌شود دستور با خطا مواجه شود.

نظرات کاربران

شما میتوانید دیدگاه خود را در مورد این مطلب با ما با اشتراک بگذارید.

logo
ثبت نام ناحیه کاربری ارسال تیکت راهنمای خرید
ناحیه کاربری
ثبت نامناحیه کاربریداشبورد ابریارسال تیکتتماس تلفنی
تماس با ما
مشاوره تلفنی 1779 | 79625000
واحد مارکتینگ داخلی 1
واحد مشتریان داخلی 2
مالی و اداری داخلی 3
منابع انسانی داخلی 4