آموزشی

آشنایی با صفر تا صد TraceRoute | مرجعی جامع بهمراه مثال و تصویر

shahin شاهین نوعی
15 بازدید | 0 دیدگاه | 12 شهریور 1401
/storage/post-images/1662198623_2022-09-03_1656781915_2022-07-02_02-min.png
سرفصل های مهم
آشنایی با صفر تا صد TraceRoute | مرجعی جامع بهمراه مثال و تصویر

با استفاده از ping می توانیم بدانیم که آیا اتصال برقرار است یا نه؛ یعنی یک پرسش ساده ی بله یا خیر. اما traceroute تجزیه و تحلیل های شبکه سیستم عامل داخلی (native-OS network) را یک سطح بالاتر برده است. نه تنها traceroute به ما از برقراری اتصال می گوید، بلکه به ما می گوید که دقیقاً مشکل از کجاست و چرا چنین اتفاقی رخ داده است. در این مطلب به هرآنچه در خصوص traceroute ها نیاز داشته باشید، اشاره خواهیم کرد، از چیستی این تکنولوژی، نحوه عملکزدش، تفاوتش با tracert، نحوه اجرای آن بر روی ویندوز، لینوکس و macOS و مقایسه آن با Ping.

Traceroute چیست؟

در واقع traceroute یک دستور رصد کردن ساده است که اغلب توسط ادمین های شبکه یا سیستم ها به عنوان یک وظیفه روزانه صورت می گیرد.

این ابزار عارضه یاب شبکه ای سه هدف اولیه دارد، که به شما یک نمایه کامل از مشکل به وجود آمده می دهد.

به عبارتی دیگر به کمک traceroute شما می توانید:

  1. مسیر کاملی که یک بسته برای رسیدن به مقصدش طی می کند را مشاهده کنید.
  2. با نام ها و هویت روترها و دستگاه های میان راه مسیر آشنا شوید.
  3. مدت زمانی که داده ها برای ارسال و دریافت بین هر دستگاه درون مسیر طول صرف کرده اند را پیدا کنید.

Traceroute اطلاعات کاملی در خصوص مسیری که داده هایتان باید برای رسیدن به مقصد طی کنند را حتی بدون ارسال داده ها، در اختیارتان می گذارد.

برای مثال، اگر مرجع اصلی مسیر ( کامپیوتر شما ) فرضاً در Boston ، و مقصد در San Jose کالیفرنیا ( یک سرور ) باشد، traceroute مسیر کامل، تعداد پرش های بین مسیر ( کامپیوترها، روترها و هر دستگاهی که بین مرجع و مقصد قرار گیرد ) و مدت زمان لازم را شناسایی کرده و اطلاعاتش را در اختیار شما می گذارد.

 

 

Traceroute چطور عمل می کند؟

هر بسته IP که در اینترنت ارسال می شود، دارای فیلدی به نام TTL یا Time to Live است. اما این فیلد لزوماً به مدت زمان اندازه گیری شده توسط تعداد پرش ها مرتبط نیست. بلکه، به حداکثر تعداد پرش هایی که یک بسته می تواند قبل از نادیده گرفته شدن، در اینترنت انجام دهد، اشاره دارد.

فیلد TTL در یک بسته IP بسیار مهم و حیاتی است چراکه اگر چنین فیلدی وجود نداشت، بسته تا ابد از یک روتر به روتری دیگر سرگردان می بود و به دنبال مقصدش می گشت.

مقدار TTL به مشکلات مسیریابی کمک کرده و از همه مهمتر به پروتکل های مسیردهی در جلوگیری از بازگشت های مکرر ( Routing loops ) یاری می رساند.

 

در یک Traceroute، مبداء هر بار پس از دریافت پاسخ مقدار TTL را مجدداً تعریف کرده و بسته را با یک مقدار +1 ارسال می کند.

زمانی که بسته به مقدار حداکثری TTL خود رسد، آخرین پرش در راه ، یک پیغام " ICMP TTL Exceeded" به مبداء ارسال می کند.

این ارتباط چیزی است که یک traceroute به دنبالش است. این پیغام ارسالی دارای اطلاعات با ارزشی است، از جمله مدت زمانی که برای رسیدن به آن پرش صرف شده ، و نام سروری که در حال پاسخ دادن است.

 

تفاوت بین Tracert و Traceroute در چیست؟

Tracert و traceroute دارای syntax های متفاوتی هستند اما در اصل هر دوی این دستورها یک کار مشابه را انجام می دهند.

چیزی این دو را از یکدیگر متمایز می کند، سیستم عاملی است که آنها روی آن اجرا می شوند، در واقع tracert برای ویندوز و traceroute برای لینوکس است.

مورد دیگر این است که هر یک از دستورها در پشت صحنه چطور عمل می کنند.

در خروجی هر دو شما یک سری اطلاعات مشابه مشاهده می کنید. در نتیجه، با route ها و تاخیرات انتقالی بسته های یکسانی در سراسر مسیر مواجه خواهید شد.

این دستور در سیستم های Unix محور  و MacOS  تحت عنوان traceroute و در ویندوز تحت عنوان tracert در دسترس است.

نحوه فراخوانی یک trace route در ویندوز، لینوکس و macOS

اگرچه عملکرد یکسان است، سینتکس و خروجی مشابه نیستند؛ برای اجرای یک Traceroute در ویندوز، لینوکس و macOS باید دستورالعمل های زیر را پیش ببرید:

  • برای ویندوز

شما می توانید روی هر پلتفرم ویندوزی دستور Traceroute را اجرا کنید، از XP گرفته تا ویندوز 11.

  1. ابتدا Command Prompt را از منوی استارت و با تایپ CMD و زدن دکمه ENTER فراخوانی کنید.
  2. از دستور Tracert استفاده کنید؛ برای این کار tracert را کنار هدف ردیابی مسیر رسیدن به مقصد تایپ کنید.

 

  • برای لینوکس

برای اجرای یک traceroute روی هر سیستم عامل لینوکسی ( debian، red hat، ubuntu و غیره ) ...

  1. با باز کردن ترمینال شروع کنید: دکمه های Ctrl + Alt + T را زده و یا عبارت terminal را در منوی جستجو وارد کنید.
  2. Traceroute را نصب کنید: اگر traceroute از قبل بر روی سیستم شما نصب شده است، باید آن نصب کنید، مثلاً روی Ubuntu نصب را به کمک دستور "sudo apt-get install traceroute" انجام دهید.
  3. از دستور traceroute استفاده کنید: در کنار آدرس IP یا Hostname عبارت traceroute را تایپ کنید.

 

  • برای mac OS

می توانید دستور Traceroute را روی macOS خود نیز اجرا کنید...

  1. ترمینال را باز کنید: ابتدا باید ترمینال را باز کنید پس می توانید به بخش applications و بعد utilities رفته و بر روی terminal کلیک کنید.
  2. دستور traceroute را تایپ کنید: این دستور را در کنار هدف مورد نظر وارد کنید.

مقایسه Ping و Traceroute

در زمان یک تست بدون traceroute نظیر ping، TTL با هر مقداری بین 1 و 255 شروع خواهد شد، که معمولاً روی هر سیستم عامل به طور متفاوتی تعریف شده است.

فرض کنید آدرس IP مقابل را پینگ گرفته : 8.8.8.8 و مقدار پیش فرض TTL نیز بر روی 51 پرش باشد.

 

بسته شما با محدودیت 51 پرش آغاز خواهد شد تا از هرگونه loop جلوگیری کند؛ به همین دلیل از حداکثر 51 پرش برای رسیدن به مقصد استفاده خواهد کرد.

هر روتری که بین مبداء و مقصد قرار گیرد قبل از ارسال بسته به روتر بعدی، یک مقدار از TTL کم می کند.

این کاهش مقدار -1 در کل مسیر تا زمان رسیدن به مقصد ادامه پیدا خواهد کرد تا زمانی که مقدار TTL به حداکثر خود یعنی 51 برسد. آخرین پرش نیز پیغام ICMP TTL Exceeded را ارسال خواهد کرد.

برای مصور سازی این مثال ping بیایید محدودیت TTL را روی 10 بگذاریم...

این کامپیوتر طبق تصویر زیر، نمی تواند به مقصدش برسد، چون برای رسیدن به سرور 8.8.8.8 به بیش از 10 پرش نیاز دارد.

 

پس با این PING می توانیم اطلاعات ارزشمندی از پرش شماره 10 دریافت کنیم، مثل آدرس IP و داده های اضافی.

یک مثال از Traceroute

Traceroute سفرش به سمت مقصد را متفاوت شروع می کند؛ از TTL=1 آغاز کرده و تا زمان رسیدن به مقصد به آن مقدار یک واحد اضافه می کند.

زمان اجرای یک تست Traceroute، پرش بعدی که بسته را با یک TTL=1 دریافت کند، توسط پروتکل از TTL یک مقدار کم می کند، که در نهایت TTL=0 خواهد شد. این یعنی ادامه دادن مقدور نبوده و بسته نادیده گرفته خواهد شد.

پرش بعدی، به مبداء اطلاع می دهد که TTL به حد نصاب خود رسیده که در پیغام خود اطلاعاتی نظیر آدرس IP و تاخیر را اعلام می کند.

همانطور که در بخش قبل گفته شد، کار اصلی دستور Traceroute این است که به مقدار TTL تا زمان رسیدن به مقصد نهایی یک عدد اضافه کند.

پس طبق مثال قبل بیایید 8.8.8.8 را Trace route کنیم...

 

مثال traceroute ما نشان می دهد که این بسته برای رسیدن از مبداء 192.168.0.1 به مقصد 8.8.8.8 ، 13 پرش طی کرده و در این مسیر با چه دستگاه ها و روترهایی برخورد کرده است.

از اسکرین شات بالا می توانید ببینید که پرش شماره 10 "72.14.219.20" همان آدرس IP ای است که از دستور PING 8.8.8.8 -10 در یافت کردیم.

اگر روتر پاسخی ندهد چه؟

تاخیر محاسبه شده برای هر روتر در trace در واقع تفاوت زمانی است بین ارسال پیام و زمانی که پیغام TTL Exceeded دریافت می شود. البته جالب است بدانید که برای روتر هیچ الزامی در خصوص ارسال پیغام TTL exceeded وجود ندارد. پس اگر یک روتر هیچوقت پیغامی ارسال نکند، توسط traceroute قابل درک نبوده اما با توجه به اینکه همچنان از مقدار TTL کم خواهد شد، به عنوان یک پرش ناشناس در Trace منظور خواهد شد.

در مثال زیر می توانید پرش شماره 3 را مشاهده کنید که پیغام TTL Exceeded را ارسال نکرده است:

 

تاثیر توزیع بار یا load balancing بر traceroute

به منظور افزایش ظرفیت و انعطاف پذیری بین روترها، بهتر است از بیش از یک اتصال بین آنها استفاده کنیم. اگر تحت هر شرایطی یکی از روترها از سرعت بالاتر رابط های کاربری ( interface ها ) پشتیبانی نکند، تنها راهکار برای این مشکل استفاده از دو یا چند پورت در کنار هم است.

توزیع بار بین چند رابط کاربری

دو الگوریتم وجود دارد که توسط روترها استفاده می شود: pre-packet و per-flow.

در الگوریتم pre-packet ، توزیع بار برای هر بسته یک رابط کاربری متفاوت انتخاب می کند؛ این یک رویکرد عالی برای رسیدن به توزیع بار متعادل در رابط کاربری بوده و باعث استفاده بهینه از پهنای باند می گردد. با این وجود، ممکن است به سفارش گیری مجدد بسته ها (packet reordering) که برای ترافیک لحظه ای یک مصیبت است، منتج شود.

توزیع بار per-flow از یک الگوریتم hashing در هدرهای بسته ها استفاده می کند تا رابط کاربری مورد نظر را انتخاب کند. اگر دو بسته دارای مقادیر زیر باشند، در واقع در یک جریان یا flow یکسان در نظر گرفته می شوند:

  • Source IP Address
  • Destination IP Address
  • IP Protocol (ex: ICMP, TCP, UDP)
  • Source Port (if TCP or UDP)
  • Destination Port (if TCP or UDP)

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

بسته هایی که برای Traceroute استفاده می شوند

همانطور که گفتیم توزیع بار به کمک یک الگوریتم hashing در هدرهای بسته ها اتفاق می افند. بسته به نرم افزاری که برای اجرای traceroute مورد استفاده قرار می گیرد، بسته ارسالی می تواند ICMP, UDP, TCP SYN و ... باشد.

در Unix، دستور پیش فرض traceroute از UDP با پورت های تصادفی بین 33434 تا 33534 استفاده می کند. از آنجا که پورت تصادفی است، هدر بسته همیشه یکسان نخواهد بود، پس الگوریتم های توزیع بار از مسیرهای چندگانه استفاده خواهند کرد.

در ویندوز، دستور Traceroute از ICMP استفاده می کند؛ به این ترتیب Traceroute یک مسیر ثابت را نشان می دهد، که درک آن را آسان تر می کند.

راهکار میزبان کلود

به کمک سرویس ابری پیشرفته CDN میزبان کلود و یا DNS ابری می توانید از معماری Anycast و توزیع بار حرفه ای برای بهینه سازی ترافیک سرورهای خود استفاده کنید. پیشنهاد می کنیم حتماً از صفحات CDNخرید  ایران  و DNS ابری میزبان کلود بازدید کرده و با قابلیت ها و ویژگی های منحصر به فرد این سرویس ها آشنا شوید.

جمع بندی

با اینکه Traceroute دست کم گرفته می شود، این ابزار یک ابزار تحلیل شبکه ای درون سیستمی است که تنها به ارائه برقراری اتصال محدود نبوده و به ما اطلاعات جامع تری نظیر پرش های بین مبدا و مقصد، نام و نشان ها و زمان های تاخیرات ارائه می دهد. جالب اینجاست که تمام این اطلاعات همانند ping ، از پروتکل ICMP و تغییر یک فیلد در بسته IP نشات می گیرد.  برخی از توسعه دهندگان توانسته اند نسخه های جذاب تر و بصری تری از Traceroute ایجاد کرده و به آن چیزهایی مثل GUI، نقشه های جغرافیایی، نمودار و غیره اضافه کنند. اما با توجه به اطلاعاتی که امروزه در خصوص نحوه استفاده از این ابزار در اینترنت وجود دارد، شاید به چنین نرم افزارهایی نیاز پیدا نکنید. در این مطلب سعی شد تا در خصوص چیستی، نحوه عملکرد و کاربردهای traceroute اطلاعات مفیدی در اختیار شما قرار گیرد. امیدواریم این مطلب نیز برای شما مفید واقع شده باشد.

برای آشنایی بیشتر با syntax های traceroute در سیستم عامل های مختلف پیشنهاد می کنیم به منبع pcwdld مراجعه کنید.




پیشنهاد ویژه

CDN ابری میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

مشاهده پلانها
برچسب ها :
نویسنده مطلب شاهین نوعی

Hi everyone, my name is Shahin Noei; I'm so glad to be sharing with you my latest knowledge of IT infrastructure and I warmly invite you to ask any of your questions in my linkedin page. I've been working in digital marketing field for the last 5 years and I've been in touch with some IT businesses long enough to get the most out of the newest technologies in this modern era.

آشنایی با صفر تا صد TraceRoute | مرجعی جامع بهمراه مثال و تصویر 0 دیدگاه

مطالب را قبل از دیگران مطالعه کنید

دریافت جدیدترین مطالب در ایمیل شما

ایمیل شما به صورت کاملا محرمانه نزد ما محفوظ است
ما برای شما هرزنامه ارسال نمی کنیم