ردیاب و تراسروت چگونه کار می کنند. شرح دستور TRACERT $ traceroute options host_address

زمان هایی در زندگی شبکه وجود دارد (مخصوصاً برای کاربران شماره گیری 😉 که دسترسی به میزبان غیرممکن است (برای من این اغلب www.microsoft.com ;-| است) - اینجاست که این ابزار کمک می کند (در ویندوز). - tracert .exe با کمک آن می توانید تعیین کنید که خرابی در کدام قسمت از شبکه IP رخ داده است - یا میزبان شکست خورده است یا ارائه دهنده کند است یا اتصال IP شما بد است :).

اما چیزی که من واقعاً در مورد tracert دوست دارم، امکاناتی است که برای مطالعه شبکه های IP ارائه می دهد - و آنها از نظر دامنه و تمرکز متفاوت هستند؛). اولین قدم ممکن است تحقیق در مورد زیرشبکه ارائه دهنده شما باشد. با traceroute، می‌توانید خود شبکه را کاوش کنید، و دانش تئوری را که کسب کرده‌اید - در مورد مسیریابی، سرورهای DNS، ستون فقرات، سیستم‌های زیرشبکه، و هیچ‌وقت نمی‌دانید چه چیز دیگری کسب کرده‌اید را عملی کنید.

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

ابتدا باید فرمت هدر بسته IP یا بهتر است بگوییم یکی از فیلدهای آن - TTL (Time To Live) را به خاطر بسپارید. این فیلد هشت بیتی حداکثر تعداد پرش (hop - عبور دیتاگرام از یک روتر به مسیریاب دیگر) را مشخص می کند که طی آن یک بسته می تواند در شبکه باقی بماند. هر روتر
پردازش این دیتاگرام عملیات TTL=TTL-1 را انجام می دهد. وقتی TTL صفر شد، روتر بسته را دور می اندازد.
یک پیام ICMP Time برای فرستنده ارسال می شود
فراتر رفت.

ابزار یک بسته با TTL=1 را در جهت میزبان مشخص شده ارسال می کند و منتظر می ماند تا ببیند چه کسی پاسخ بیش از حد زمان را برمی گرداند. پاسخ دهنده به عنوان اولین پرش (نتیجه اولین قدم به سمت هدف) ثبت می شود. سپس بسته هایی با TTL=2، 3، 4 و ... به ترتیب ارسال می شوند. به منظور تا زمانی که بسته در مقداری TTL به هدف برسد و پاسخی از آن دریافت کند.

*nix traceroute بسته های UDP را به سمت یک میزبان داده شده به یک پورت دلخواه می فرستد - به احتمال زیاد توسط سرویس دیگری اشغال نشده است (مثلا 28942، 30471) یا به یک رزرو رزرو شده، به عنوان مثال 0، پیش فرض - 33434. اول، یک سری از 3 مورد از این قبیل بسته های با TTL= 1 ارسال می شود، به محض رسیدن پاسخ ها، زمان انتقال اندازه گیری می شود و نام دامنه گره انتقال مشخص می شود (اگرچه این بستگی به گزینه های مشخص شده دارد). سپس سری بعدی بسته ها با همان TTL ارسال می شوند که برای شناسایی همان هاپ طراحی شده اند. در پایان، یک پاسخ غیرقابل دسترس پورت از میزبان پایانی دریافت می‌کنیم که به این معنی است که ردیابی کامل شده است.
ردیاب استاندارد کنسول ویندوز دقیقاً مشابه کار می کند، اما فقط بسته های درخواست اکو ICMP را ارسال می کند.

من خودم با کمال میل از ردیابی استاندارد و ردیاب داخلی CyberKit (یک ابزار نسبتاً خوب) استفاده می کنم.
همچنین Necrosoft Quick Traceroute). من نمی توانم هیچ چیز اضافی را برای لینوکس توصیه کنم - من فقط از استاندارد Debian traceroute استفاده کردم :).

در پایان، من می گویم، از آزمایش نترسید - این تنها راه برای "درک واقعی" شبکه است. به دنبال اطلاعات باشید و از آن استفاده کنید. موفق باشید.

ترجمه من

اگر به عنوان مدیر شبکه، مدیر سیستم یا در هر گروه عملیاتی کار می کنید، ممکن است نام ابزاری به نام TRACEROUTE را شنیده باشید. این یک ابزار بسیار راحت است که به طور پیش فرض در بسیاری از سیستم عامل ها موجود است.

مدیران شبکه و سیستم از این ابزار در کارهای روزمره خود استفاده می کنند. این اساسا یک ابزار تشخیصی شبکه مناسب است. سه وظیفه اصلی ابزار traceroute وجود دارد. این وظایف که توسط traceroute انجام می شود بینشی را در مورد خطا در شبکه شما ارائه می دهد.

  1. مسیر کاملی که بسته طی می کند.
  2. نام و شناسایی روترها و دستگاه های موجود در مسیر
  3. تأخیر شبکه یا به عبارت دقیق‌تر، زمان مورد نیاز برای دریافت و ارسال داده‌ها به همه دستگاه‌ها در طول مسیر

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

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

در این مقاله نحوه کار Traceroute و انواع ابزار Traceroute و تفاوت آنها را توضیح خواهم داد. ما همچنین به گزینه های مختلف موجود برای دستور traceroute در لینوکس نگاه خواهیم کرد

ابتدا اصول اولیه

هر بسته ای که به اینترنت ارسال می کنید دارای یک فیلد به نام TTL است. TTL مخفف زمان برای زندگی است. اگر چه به آن طول عمر می گویند، اما در واقع زمان در ثانیه نیست، بلکه داستانی کاملا متفاوت است.

TTL نه در تعداد ثانیه ها و نه در تعداد پرش ها تغییر نمی کند. این حداکثر تعداد پرش هایی است که یک بسته می تواند قبل از نابود شدن از طریق شبکه عبور کند.

هاپ چیزی نیست جز کامپیوترها، روترها یا سایر دستگاه هایی که بین مبدا و مقصد قرار می گیرند

اگر اصلا TTL وجود نداشت چه اتفاقی می افتاد؟ اگر TTL وجود نداشت، یک بسته IP بی‌پایان از یک روتر به مسیریاب دیگر جریان می‌یابد و به طور مداوم به دنبال مقصد می‌گردد. مقدار TTL توسط فرستنده داخل بسته IP تنظیم می شود (فردی که از سیستم استفاده می کند یا بسته را ارسال می کند متوجه این اتفاقات در پشت صحنه نمی شود، اما به طور خودکار توسط سیستم عامل مدیریت می شود)

اگر پس از عبور از تعداد زیادی روتر میانی (هپ) مقصد پیدا نشد و مقدار TTL صفر شد (به این معنی که پیمایش دیگری وجود ندارد)، روتر دریافت کننده بسته را دور می اندازد و به فرستنده اصلی اطلاع می دهد.

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

فرض کنید باید به آدرس 10.1.136.23 برسم و TTL من 30 جهش است، یعنی فقط می توانم حداکثر 30 جهش را طی کنم تا قبل از از بین رفتن بسته به مقصد برسم.

اما چگونه روترهای در طول مسیر تعیین می کنند که به حد TTL رسیده است؟ هر روتر در امتداد مسیر بین مبدا و مقصد به کاهش TTL قبل از ارسال آن به روتر بعدی ادامه می دهد. یعنی اگر TTL پیش فرض 30 داشته باشم، اولین روتر من آن را به 29 کاهش می دهد و در طول مسیر به روتر بعدی ارسال می کند.

روتر گیرنده آن را 28 می کند و به بعدی می فرستد و غیره. اگر روتر بسته ای با TTL یک دریافت کند (به این معنی که دیگر جابجایی یا ارسال وجود ندارد)، بسته دور انداخته می شود. اما روتری که بسته را دور می اندازد به فرستنده اصلی اطلاع می دهد که مقدار TTL از آن بیشتر شده است! (طول عمر بسته به پایان رسیده است)

اطلاعات ارسال شده توسط روتر که بسته ای با TTL یک دریافت می کند، نامیده می شود. ICMP TTL از پیام ها فراتر رفتالبته، در اینترنت، وقتی چیزی را برای گیرنده ارسال می کنید، گیرنده آدرس فرستنده را می داند.

بنابراین، هنگامی که یک پیام ICMP بیش از حد TTL توسط روتر ارسال می شود، فرستنده اصلی آدرس روتر را می آموزد.

Traceroute از پیام‌های فراتر از TTL برای کشف مسیریاب‌هایی استفاده می‌کند که در مسیر رسیدن به هدف با آنها مواجه می‌شوند (زیرا این پیام‌های ارسال شده توسط روتر حاوی آدرس آن هستند).<>/p>

اما چگونه traceroute از پیام "TTL بیش از حد" استفاده می کند تا بفهمد کدام روترها/هپ ها بین آنها قرار دارند؟

ممکن است فکر کنید که پیام های "TTL بیش از حد" فقط توسط روتری ارسال می شود که بسته را با TTL 1 دریافت می کند. این درست است، هر روتر بین شما و گیرنده پیام های بیش از TTL ارسال نمی کند. سپس چگونه آدرس تمام روترها/هپ های بین شما و مقصد را پیدا می کنید؟ بنابراین، هدف اصلی traceroute شناسایی هاپ بین شما و مقصد است.

اما می‌توانید با ارسال هدفمند بسته‌هایی با TTL 1 از رفتار پیام بیش از حد TTL روترها/هپ‌ها در طول مسیر سوء استفاده کنید.

نمودار را برای مثالی از کل فرآیند ببینید، جایی که فرستنده از یک traceroute به یکی از سرورها در یک مکان راه دور استفاده می کند.


بیایید نگاهی بیندازیم به آنچه در پشت صحنه می گذرد. وقتی traceroute -n 8.8.8.8 را اجرا می کنم، کامپیوتر من چه کار می کند؟ - یک بسته UDP ارسال می کند. (بله، UDP. نگران نباشید، ما در این مورد به تفصیل صحبت خواهیم کرد). بسته UDP شامل موارد زیر است:

  • آدرس فرستنده من
  • آدرس مقصد (8.8.8.8)
  • و شماره پورت مقصد که نادرست است. این بدان معنی است که traceroute بسته را به یک پورت UDP در محدوده 33434 تا 33534 می فرستد که معمولاً استفاده نمی شود.

بیایید ببینیم چگونه کار می کند

مرحله 1.آدرس منبع من یک بسته با آدرس مقصد 8.8.8.8 و یک پورت مقصد بین 33434 و 33534 ایجاد می کند. و اصلی ترین کاری که انجام می دهد این است که مقدار TTL را برابر با 1 می کند.

گام 2.البته بسته من به سرور دروازه می رسد. به محض دریافت بسته من، دروازه TTL را یک بار کاهش می دهد (همه روترها/هپ های بین TTL را 1 کاهش می دهند). وقتی TTL به 1 کاهش می یابد (1-1=0)، مقدار TTL صفر می شود. بنابراین سرور دروازه من پیام بیش از زمان TTL را برای من ارسال می کند. لطفاً به یاد داشته باشید که وقتی سرور دروازه من TTL بیش از حد را برای من می فرستد، 28 بایت اول بسته ای را که من ارسال کردم برای من ارسال می کند.

مرحله 3: با دریافت این پیام "TTL Time Overed"، برنامه traceroute من می تواند آدرس و سایر اطلاعات مربوط به اولین هاپ را که سرور دروازه من است، پیدا کند.

مرحله 4: اکنون ردیاب همان بسته UDP را دوباره با مقصد 8.8.8.8 و پورت مقصد تصادفی UDP از 33434 به 33534 ارسال می کند. اما این بار TTL =2 اولیه را می سازم. در نتیجه، دروازه یا روتر من آن را 1 کاهش می دهد و سپس این بسته را به hop/router بعدی ارسال می کند (بسته ارسال شده توسط دروازه من به هاپ بعدی دارای مقدار TTL 1 خواهد بود).

مرحله 5: هنگام دریافت یک بسته UDP، پرش بعدی به سرور دروازه من دوباره آن را به 1 کاهش می دهد، به این معنی که TTL اکنون دوباره 0 است، بنابراین، از آنجا یک پیام ICMP بیش از حد با آدرس منبع نیز برای من ارسال می کند به عنوان 28 بایت اول هدر بسته که من پست کرده ام.

مرحله 6. هنگامی که زمان دریافت TTL بیش از حد است، برنامه traceroute من آدرس IP روتر/hop را پیدا کرده و آن را روی صفحه نمایش به من نشان می دهد.

مرحله 7. اکنون برنامه traceroute من دوباره همان بسته UDP را با یک پورت تصادفی UDP و آدرس مقصد 8.8.8.8 ایجاد می کند. اما این بار مقدار TTL سه است، بنابراین TTL به طور خودکار با رسیدن به سومین hop/router صفر می شود (لطفاً به یاد داشته باشید که gateway من و hop بعدی آن را یک کاهش می دهند). بنابراین با بیش از زمان TTL به من پاسخ می دهد و برنامه taceroute من از آدرس IP روتر/hop مطلع خواهد شد.

مرحله 8: با دریافت این پاسخ، traceroute یک بار دیگر یک بسته UDP ایجاد می کند، این بار با TTL 4. اگر TTL Time بیش از آن را نیز دریافت کنم، برنامه traceroute من یک بسته UDP با TTL=5 و غیره ارسال می کند.

اما برنامه Traceroute من چگونه می داند که به نقطه پایانی 8.8.8.8 رسیده است؟ ردیاب از این طریق می داند: هنگامی که گیرنده اصلی بسته 8.8.8.8 (به یاد داشته باشید که تمام بسته های UDP دارای آدرس مقصد 8.8.8.8 بودند) درخواست را دریافت می کند، پیامی را برای من ارسال می کند که کاملاً با همه پیام ها متفاوت است. " زمان TTL بیشتر شد".

هنگامی که گیرنده اصلی (8.8.8.8) بسته UDP من را دریافت می کند، این پیام را برای من ارسال می کند. مقصد/پورت ICMP غیرقابل دسترسی است". این باید اتفاق بیفتد زیرا ما همیشه یک پورت UDP تصادفی بین 33434 تا 33534 ارسال می کنیم. بنابراین برنامه Traceroute من می داند که به مقصد نهایی رسیده ایم و ارسال بسته های اضافی را متوقف می کند.

حالا هر چیزی که با کلمات توصیف می شود، نظریه نامیده می شود. ما باید این موضوع را با اجرای Tcpdump در طول Traceroute تأیید کنیم. بیایید به خروجی tcpdump نگاه کنیم. لطفاً توجه داشته باشید که من خروجی کامل tcpdump را به شما نشان نمی دهم زیرا خیلی طولانی است.


traceroute را در یک ترمینال دستگاه لینوکس خود اجرا کنید. و در یک ترمینال دیگر، tcpdump را اجرا کنید تا ببینید چه اتفاقی می افتد.

خروجی بالا فقط بسته های UDP ارسال شده از دستگاه من را نشان می دهد. پیام‌های پاسخ را جداگانه نشان می‌دهم تا واضح‌تر شود

لطفاً به TTL در هر خط توجه کنید. با TTL یک شروع می شود، سپس 2، و سپس 3 تا TTL از 6. ممکن است تعجب کنید که چرا سرور من 3 پیام UDP با TTL=1، سپس 2، سپس 3 ارسال می کند؟

دلیل این امر محاسبه میانگین زمان حمل و نقل است. برنامه traceroute برای هر پرش سه بسته UDP ارسال می کند تا میانگین دقیق زمان انتقال بسته را اندازه گیری کند. میانگین زمان ترانزیت چیزی بیش از زمانی بر حسب میلی ثانیه نیست که برای ارسال و سپس دریافت پاسخ صرف شده است. من عمداً در همان ابتدا به این موضوع اشاره نکردم تا از سردرگمی جلوگیری کنم.

بنابراین خط پایانی برنامه traceroute من سه بسته UDP را برای هر جهش فقط برای محاسبه زمان تقریبی حمل و نقل ارسال می کند. بنابراین خروجی traceroute این سه مقدار را نشان می دهد. بیایید نگاهی دقیق تر به خروجی traceroute بیندازیم. برای هر پرش سه مقدار میلی ثانیه را نشان می دهد تا به شما ایده روشنی از زمان سفر بدهد.

حالا بیایید پاسخی را که از همه هاپ ها از طریق TCPDUMP دریافت کردیم، ببینیم. لطفاً توجه داشته باشید که پیام‌های پاسخ زیر بخشی از همان TCPDUMP هستند که قبلاً اجرا کردم، اما برای واضح‌تر شدن آن، آنها را جداگانه به شما نشان می‌دهم.

نکته جالب دیگری که باید به آن توجه کنید این است که هر بار برنامه من یک شماره پورت تصادفی UDP متفاوت می فرستد. این برای تعیین این است که پاسخ متعلق به کدام بسته است. همانطور که قبلاً گفته شد، پیام پاسخی که پرش ها و مقصد ارسال می کنند حاوی سربرگ بسته اصلی است که ما ارسال کرده ایم، بنابراین برنامه traceroute می تواند زمان دقیق انتقال (برای هر یک از سه بسته UDP ارسال شده به هر هاپ) را با دقت محاسبه کند. به راحتی می تواند پاسخ و مقایسه را تعیین کند. اعداد تصادفی پورت ها نوعی شناسه برای تعیین پاسخ هستند.

پیام های پاسخ مانند زیر است.


لطفاً توجه داشته باشید که پیام های بیش از زمان ICMP در بالا نشان داده شده است (من همه پیام های پاسخ را نشان ندادم)

حالا اجازه دهید آخرین پیام را نشان دهم که با زمان بیش از ICMP متفاوت است. همانطور که قبلاً گفته شد، این یک پیام غیرقابل دسترسی است. و برنامه traceroute می داند که هدف ما محقق شده است.

توجه داشته باشید که سه پاسخ از 8.8.8.8 به برنامه traceroute من وجود دارد. همانطور که قبلا گفته شد، traceroute سه بسته UDP یکسان را روی پورت های مختلف ارسال می کند تا به سادگی زمان دقیق ترانزیت را محاسبه کند. مقصد نهایی هم فرقی نمی کند.

انواع مختلف برنامه های Traceroute

انواع مختلفی از برنامه های ردیابی وجود دارد. هر کدام از آنها کمی متفاوت عمل می کنند. اما مفهوم کلی آنها یکی است. همه آنها از مقدار TTL استفاده می کنند.

چرا پیاده سازی های مختلف؟ این به این دلیل است که شما می توانید از موردی استفاده کنید که برای محیط شما قابل استفاده است. با فرض اینکه فایروال ترافیک UDP را مسدود می کند، می توانید از یک ردیابی متفاوت برای این منظور استفاده کنید. انواع مختلف در زیر آورده شده است.

موردی که قبلا استفاده کردیم UDP Tracing است. این پروتکل پیش فرضی است که توسط برنامه traceroute در لینوکس استفاده می شود. با این حال، می توانید با استفاده از دستور زیر به ابزار traceroute ما در لینوکس بگویید که از ICMP به جای UDP استفاده کند.

Root@workstation:~# traceroute -I -n 8.8.8.8

ICMP traceroute دقیقاً مانند UDP traceroute عمل می کند. برنامه traceroute درخواست های ICMP Echo را ارسال می کند و پرش های بین آنها با پیام های ICMP پاسخ می دهد. زمان ICMP بیشتر شد" (زمان منقضی شده است). اما مقصد نهایی یک پاسخ اکو ICMP ارسال می کند. دستور tracert که در سیستم عامل ویندوز موجود است، به طور پیش فرض از روش ردیابی مسیر ICMP استفاده می کند.

و آخرین مورد جالب ترین است. TCPtraceroute نامیده می شود. به این دلیل استفاده می شود که تقریباً تمام فایروال ها و روترهای میانی به ترافیک TCP اجازه می دهند. و اگر بسته روی پورت 80 باشد که ترافیک وب است، اکثر روترها به آن بسته اجازه عبور می دهند. TCPTRACEROUTE به طور پیش فرض درخواست های TCP SYN را به پورت 80 ارسال می کند.

همه مسیریاب‌ها بین مبدا و مقصد پیام «زمان TTL بیش از حد» را ارسال می‌کنند و مقصد در صورت بسته شدن پورت 80 یک بسته RST یا یک بسته SYN/ACK ارسال می‌کند. (اما tcptraceroute اتصال TCP ایجاد نمی کند. هنگام دریافت بسته SYN/ACK، traceroute یک بسته RST را برای بستن اتصال ارسال می کند.) بنابراین برنامه ردیابی می داند که هدف محقق شده است. به این واقعیت توجه کنید که گزینه -n که در دستور traceroute قبلا نشان داده شده استفاده کردم، نام های DNS را حل نمی کند. در غیر این صورت، ردیابی پرس و جوهای DNS را برای تمام پرش هایی که در طول مسیر با آن مواجه می شود ارسال می کند.

حال سوال اصلی این است که از کدام ردیابی استفاده کنم: ICMP، UDP یا TCP؟

همه چیز به محیط بستگی دارد. با فرض اینکه روترهای میانی پروتکل خاصی را مسدود می کنند، باید از پروتکل دیگری استفاده کنید.

    ابزاری برای ردیابی مسیر به یک گره معین TRACERT.EXEیکی از پرکاربردترین ابزارهای تشخیص شبکه است. هدف اصلی آن به دست آوردن زنجیره ای از گره ها است که از طریق آن یک بسته IP عبور می کند و به یک گره انتهایی که نام یا آدرس IP آن توسط پارامتر خط فرمان مشخص می شود، آدرس داده می شود.

فرمت خط فرمان:

tracert [-d] [-h maxNumber] [-j لیست گره] [-w timeout] [-R] [-S آدرس منبع] [-4] [-6] نام نهایی

گزینه های خط فرمان:

- از وضوح در نام هاست استفاده نکنید.

-h maxNumber- حداکثر تعداد پرش هنگام جستجو برای یک گره.

-j listNodes- انتخاب رایگان مسیر از لیست گره ها (فقط IPv4).

-w تایم اوت- بازه زمانی هر پاسخ در میلی ثانیه

- ردیابی مسیر (فقط IPv6).

آدرس منبع -S- از آدرس منبع مشخص شده (فقط IPv6) استفاده کنید.

-4 - استفاده اجباری از IPv4.

-6 - استفاده اجباری از IPv6.

ردیابی بر اساس روشی برای تجزیه و تحلیل پاسخ ها هنگام ارسال متوالی بسته های ICMP به یک آدرس مشخص با افزایش فیلد TTL 1 است. ("زمان زندگی" - زمان زندگی). در واقع این فیلد ربطی به زمان ندارد، بلکه شمارنده تعداد انتقالات احتمالی در حین ارسال یک بسته مسیریابی است. هر روتر با دریافت یک بسته، یکی را از این فیلد ذخیره شده در هدر بسته کم می کند و مقدار شمارنده TTL حاصل را بررسی می کند. اگر مقدار صفر شود، بسته دور ریخته می شود و یک پیام ICMP زمان تا زنده (پیام "زمان بیش از حد"، مقدار 0x11 در سربرگ ICMP) برای فرستنده ارسال می شود.

اگر برای گنجاندن فیلد TTL در بسته‌های IP نبود، در صورت بروز خطا در مسیرها، وضعیتی پیش می‌آید که بسته برای همیشه در شبکه گردش می‌کند و توسط روترها در یک دایره ارسال می‌شود.

    هنگام اجرای دستور tracert.exe، ابتدا یک بسته ICMP با فیلد TTL در سربرگ برابر با 1 و اولین روتر در زنجیره (معمولاً دروازه اصلی از تنظیمات اتصال شبکه)، با کم کردن یک از TTL، مقدار صفر خود را دریافت می کند و گزارش می دهد که طول عمر بیشتر شده است. بنابراین، ابزار TRACERT.EXE آدرس IP اولین مسیریاب را که در تحویل بسته ها به گره پایانی دخیل است، به دست می آورد. این دنباله سه بار تکرار می شود، بنابراین خط نتیجه تولید شده توسط tracert.exe سه زمان پاسخ را بعد از شماره انتقال نمایش می دهد:
1     1 ms     1 - شماره انتقال (1 - روتر اول)
1 ms 192.168.1.1 - آدرس (یا نام) آن

    سپس این روش تکرار می شود، اما TTL روی تنظیم می شود 2 - روتر اول آن را به 1 کاهش می دهد و به بعدی در زنجیره ارسال می کند که پس از کم کردن 1، TTL را مجددا تنظیم می کند و گزارش می دهد که طول عمر بیشتر شده است. ابزار TRACERT.EXE آدرس IP دوم گره درگیر در تحویل بسته به گیرنده و زمان پاسخ آن را به دست می آورد. فرآیند ردیابی تا رسیدن به گره پایانی که نام یا آدرس آن به عنوان پارامتر خط فرمان مشخص شده است، ادامه خواهد یافت، به عنوان مثال. tracert yandex.ru، یا تا زمانی که عیب تشخیص داده شود که از تحویل بسته جلوگیری می کند. به طور پیش فرض، ابزار TRACERT.EXE از حداکثر تعداد پرش 30 استفاده می کند که برای رسیدن به هر گره روی سیاره کافی است. در صورت لزوم، با استفاده از پارامتر می توان مقدار شمارنده متفاوتی را تنظیم کرد -h

نمونه ای از نتایج اجرا tracert google.com

tracert google.com- ردیابی مسیر به گره google.com

نتیجه:


ردیابی یک مسیر به google.com با حداکثر تعداد پرش 30:
1 1 ms 2 498 ms 444 ms 302 ms ppp83-237-220-1.pppoe.mtu-net.ru
3 * * * .
4 282 میلی‌ثانیه * * a197-crs-1-be1-53.msk.stream-internet.net
5 518 ms 344 ms 382 ms ss-crs-1-be5.msk.stream-internet.net
6 462 ms 440 ms 335 ms m9-cr01-po3.msk.stream-internet.net
7 323 ms 389 ms 339 ms bor-cr01-po4.spb.stream-internet.net
8 475 ms 302 ms 420 ms anc-cr01-po3.ff.stream-internet.net
9 334 ms 408 ms 348 ms 74.125.50.57
10 451 ms 368 ms 524 ms 209.85.255.178
11 329 ms 542 ms 451 ms 209.85.250.140
12 616 ms 480 ms 645 ms 209.85.248.81
13 656 ms 549 ms 422 ms 216.239.43.192
14 378 ms 560 ms 534 ms 216.239.43.113
15 511 ms 566 ms 546 ms 209.85.251.9
16 543 ms 682 ms 523 ms 72.14.232.213
17 468 ms 557 ms 486 ms 209.85.253.141
18 593 ms 589 ms 575 ms yx-in-f100.google.com

ردیابی کامل شده است.

    نتایج Trace ممکن است حاوی خطوطی باشد که در آن یک ستاره به جای آدرس گره نمایش داده می شود (گره شماره 3 در مثال). این لزوماً نشانه ای از یک روتر معیوب نیست و اغلب نشان می دهد که تنظیمات این گره ارسال پیام های ICMP را به دلایل امنیتی و کاهش بار روی کانال در صورت بروز انواع خاصی از حملات DDoS ممنوع می کند. به عنوان مثال، تنظیمات مشابه در شبکه های مایکروسافت استفاده می شود. سرورهای شرکت به پینگ پاسخ نمی دهند و اجازه ردیابی مسیر به آنها را نمی دهند.

نمونه هایی از استفاده از TRACERT

tracert google.com- مسیر تا گره را ردیابی کنید google.com.

tracert 8.8.8.8- مسیر را به یک گره با آدرس IP ردیابی کنید 8.8.8.8

tracert -d yandex.ru- مسیر تا گره را ردیابی کنید yandex.ruبدون تفکیک آدرس های IP در نام هاست. ردیابی در این حالت سریعتر است.

tracert -d -6 ipv6.google.com- ردیابی را با استفاده از پروتکل IPv6 انجام دهید.

نمونه ای از نتایج ردیابی با استفاده از پروتکل IPv6:

ردیابی به ipv6.google.com (2a00:1450:4013:c00::71)، حداکثر 30 پرش، بسته‌های 40 بایتی 1 2a02:348:82::1 (2a02:348:82::1) 8.087 ms 8.03 میلی‌ثانیه 8.086 ms 2 te0-22.cr1.nkf.as49685.net (2001:4cb8:40b:1::1d01) 2.143 ms 2.129 ms 2.103 ms 3 amsix-router.google:7:7f:2001 5169:1) 1.379 ms 1.415 ms 1.422 ms 4 (2001:4860::1:0:87ab) 1.437 ms (2001:4860::1:0:87aa) 2.157 ms:8:681:2001 ) 1.408 ms 5 (2001:4860::8:0:87b0) 1.494 ms 1.469 ms (2001:4860::8:0:87b2) 8.350 ms 6 (2001:4860:0:87:05 ms 1.494 ms 1.469 ms. ms 4.748 ms 7 (2001:4860::2:0:8651) 4.653 ms 6.994 ms (2001:4860::2:0:8652) 13.926 ms 8 ee-in-x71.1e-x71.1e1001 (35:1001:5) :c00::71) 4.732 ms 4.733 ms 4.783 ms

هنگام جستجو برای علل مشکلات شبکه، ابزار ردیاببعد از ابزار کاربردی رتبه دوم را دارد پینگ. ردیاب(در لینوکس" e ردیابی) به شما اجازه می دهد تا تعیین کنید مشکل در کدام قسمت از شبکه (بین کدام روترها) رخ داده است. برای استفاده از برنامه، باید این دستور را در خط فرمان ویندوز یا لینوکس اجرا کنید:

Tracert yandex.ru

اینتر را فشار می دهیم و چیزی شبیه به این می بینیم:

تصویر بالا نشان می دهد که بین کامپیوتر من و سرور yandex.ru 12 روتر میانی وجود دارد، آدرس IP روترها و مدت زمانی که طول می کشد تا بسته به هر روتر برسد نشان داده شده است.

اگر در بخشی از شبکه مشکلی وجود داشته باشد (عدم مسیری به شبکه مقصد، عدم اتصال به روتر بعدی، عدم وجود گره مقصد در شبکه مشخص شده و غیره)، به جای زمان انتقال بسته، یک ستاره خواهیم دید. و به جای آدرس IP روتر پیغام "Exceeded" timeout for request":

بنابراین ابزار tracert چگونه کار می کند؟

برای پاسخ به این سوال، باید ساختار بسته IP را به خاطر بسپارید، یا بهتر است بگوییم، یکی از فیلدهای آن - TTL (تعداد پرش) را به خاطر بسپارید:

هنگام ارسال یک بسته، این فیلد روی 255 تنظیم می شود و سپس هر مسیریاب که این بسته از آن عبور می کند، این مقدار را 1 کاهش می دهد. TTL=TTL-1. روتری که بسته ای با TTL=1 دریافت می کند آن را یک بار کاهش می دهد و سپس بسته را رها می کند زیرا مقدار فیلد TTL بسته اکنون 0 است. پس از رها شدن بسته توسط روتر، یک پیام ICMP با کد 11: "فاصله زمانی بیش از حد" برای فرستنده بسته ارسال می شود. در هدر یک بسته IP با پیام ICMP منبعآدرس IP روتری است که بسته را رها کرده است و وقت ملاقات- آدرس IP رایانه ای که بسته دور انداخته شده را ارسال کرده است.

حالا حدس زدن اینکه چگونه کار می کند دشوار نیست ردیاب:

  • یک بسته IP با مقدار فیلد TTL=1 به گره مشخص شده (در مثال ما yandex.ru) ارسال می شود.
  • اولین روتر در مسیر بسته، TTL را کاهش می دهد و بسته را رها می کند (نابود می کند).
  • روتر یک اعلان ICMP مبنی بر از بین رفتن بسته ارسال می کند
  • سودمند ردیابآدرس IP روتر را از یک بسته ICMP استخراج می کند و زمان صرف شده برای ارسال بسته به روتر را اندازه می گیرد.
  • مگر اینکه در گزینه های راه اندازی غیر از این مشخص شده باشد ردیاب، سپس یک درخواست به سرور DNS ارسال می شود و نام دامنه روتر در صورت وجود تعیین می شود
  • آدرس IP (یا نام دامنه) اولین روتر در کنسول نمایش داده می شود
  • بسته IP دوباره به گره مشخص شده ارسال می شود، اما با TTL=2
  • بسته در دومین روتر میانی رها می شود
  • این روش تا زمانی تکرار می شود که پاسخی از گره مقصد (yandex.ru) دریافت شود یا تعداد گره های میانی از حداکثر مقدار برای آن بیشتر شود. ردیاب- 30 گره

این همه چیز است، هیچ چیز پیچیده ای نیست!

تمرینات عملی شماره 03-006

ابزار شبکه Tracert (traceroute در لینوکس، سیسکو IOS، سیستم عامل MAC). اصول عملیات و کاربرد.

سودمند ردیاب استفاده شده برای مطالعه مسیرهای بسته های IP در شبکه هایی که با استفاده از پشته پروتکل TCP/IP از جمله اینترنت جهانی کار می کنند. هنگام استفاده از این برنامه، باید به یاد داشته باشید که در طول عملیات آن تعداد نسبتاً زیادی بسته IP هم روی هاست شما و هم روی روترهای میانی تولید می شود. این باعث ایجاد بار اضافی در شبکه می شود.

ردیاب [- د] [- ساعتحداکثر تعداد] [- j لیست گره ها] [-w فاصله] [مقصد_نام_کامپیوتر]

گزینه ها:

- دامتناع از تفکیک آدرس های IP گره های میانی به نام

- ساعتحداکثر تعدادحداکثر تعداد انتقال (پرش) هنگام جستجوی یک گره مقصد

-j node_listاستفاده از گزینه مسیریابی آزاد را در هدر IP با مجموعه ای از مقصدهای میانی مشخص شده در node_list (در حال حاضر عملاً در روترها پشتیبانی نمی شود)

-w فاصلهزمان انتظار را برای هر پاسخ بر حسب میلی ثانیه تنظیم می کند

مقصد_نام_کامپیوترمقصدی را مشخص می کند که با آدرس IP یا نام میزبان مشخص می شود.

عملکرد این ابزار مبتنی بر دستکاری محتوای فیلدهای هدر استاندارد و گزینه‌های هدر بسته IP است. ابزار اصلی ابزار محتویات فیلد "زمان برای زندگی" (یا TTL) است.

یک عنصر مورد نیاز آدرس IP یا نام میزبان مقصد است.

پس از دریافت آن از کاربر، ابزار یک سری (معمولاً سه) بسته به شبکه به این آدرس ارسال می کند که مقدار TTL روی 1 تنظیم شده است. این بسته ها هیچ شانسی برای رسیدن به مقصد ندارند، زیرا اولین روتر در طول مسیر، با کم کردن TTL 1 از این، 0 دریافت می شود. و او موظف است چنین بسته ای را پس از پایان عمر مجاز در شبکه از بین ببرد. اما در عین حال، روتر موظف است برای فرستنده این بسته ICMP ناموفق پیامی در مورد سرنوشت غم انگیز آن ارسال کند (نوع 11، کد 0).

در نتیجه، رایانه شما به سرعت سه اعلان دریافت می کند که بسته های ارسال شده قبلی از بین رفته اند. با یادآوری زمان ارسال و ضبط زمان دریافت اعلان‌های ICMP، محاسبه میانگین زمان دریافت پاسخ‌ها که روی صفحه نمایش داده می‌شود، برای ابزار tracert دشوار نیست.

سپس سری بعدی بسته ها با TTL 2 ارسال می شود و به همین ترتیب تا زمانی که بسته ها به مقصد برسند.

هنگامی که بسته ای با TTL 1 به آن آدرس داده می شود به آدرس میزبان یا روتر می رسد، پذیرفته می شود. از آنجایی که دیگر نیازی به فوروارد کردن آن نیست، هیچ پیام ICMP زمانی تا زنده تولید نخواهد شد.

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

این پیام توسط فرستنده به عنوان تأیید تکمیل انتقال تفسیر می شود.

یکی از ویژگی های مهم ابزار tracert، توانایی یافتن نام گره های میانی است. این به شما اجازه می دهد تا ایده ای از ساختار سازمانی و موقعیت جغرافیایی مسیر بسته به دست آورید.

نام هاست بر اساس سیستم نام دامنه (DNS) است:

به طور رسمی، هم کاربران و هم برنامه ها می توانند از طریق آدرس IP خود به هاست ها، صندوق های پستی و سایر منابع اینترنتی دسترسی داشته باشند، اما اگر برای یک برنامه، رویه "به خاطر سپردن" یک آدرس IP با "به خاطر سپردن" هر 4 بایت دیگر اطلاعات از هر نوع تفاوتی ندارد. برای کاربر، به خاطر سپردن ترکیبات اعدادی مانند 111.124.133.44 به سادگی از نقطه نظر ساختار حافظه ما دشوار است. علاوه بر این، شناسایی هر سرویس با آدرس IP هاست یا سرورهایی که روی آنها کار می کنند، انتقال آنها را در صورت لزوم بسیار دشوار می کند. برای در نظر گرفتن "عامل انسانی" و جدا کردن نام ماشین ها از آدرس آنها، تصمیم گرفته شد از نام های متنی ASCII استفاده شود. با این حال، شبکه فقط آدرس های عددی را درک می کند، بنابراین مکانیزمی برای تبدیل رشته های ASCII به آدرس های IP مورد نیاز است.

وقتی همه چیز شروع شد، در ARPANET مطابقت بین متن و آدرس های باینری در فایل های خاصی ذخیره می شد , که تمام هاست ها و آدرس های IP آنها را فهرست می کند. در شبکه ای متشکل از چند صد ماشین بزرگ، این رویکرد کاملاً خوب عمل کرد.

اما هنگامی که هزاران ایستگاه کاری به شبکه متصل شدند، مشکلاتی به وجود آمد: تعداد رکوردهایی که باید ذخیره شوند به سرعت افزایش یافت و مدیریت متمرکز نام همه میزبان های یک شبکه بین المللی غول پیکر بسیار دشوار بود.

برای حل این مشکلات توسعه داده شد سرویس نام دامنه (DNS،سیستم نام دامنه). این سیستم برای تبدیل نام هاست و مقصد ایمیل به آدرس IP استفاده می شود، اما می تواند برای مقاصد دیگر نیز استفاده شود. سیستم DNS در RFC های 1034 و 1035 تعریف شده است.

نام دامنه نامی است متشکل از کلماتی که با نقطه از هم جدا شده اند. کلمه سمت چپ نام به میزبان اشاره دارد. همه کلمات دیگر نام دامنه را تشکیل می دهند. سیستم نامگذاری ساختاری سلسله مراتبی و درخت مانند دارد.

هر گره (دایره ها در شکل) دارای یک برچسب تا 63 کاراکتر است. ریشه درخت یک گره خاص بدون برچسب است. برچسب ها ممکن است دارای حروف بزرگ یا حروف کوچک باشند. نام دامنه برای هر گره در درخت، دنباله ای از برچسب ها است که با گره به عنوان ریشه شروع می شود و برچسب ها با نقطه از هم جدا می شوند. (این برخلاف سیستم فایلی است که ما به آن عادت کرده‌ایم، جایی که مسیر کامل همیشه از بالا (ریشه) شروع می‌شود و به سمت پایین درخت حرکت می‌کند.) هر گره در درخت باید یک نام دامنه منحصربه‌فرد داشته باشد، اما یکسان است. برچسب ها را می توان در نقاط مختلف درخت استفاده کرد.

یک نام ریشه وجود دارد که با یک "." نشان داده می شود، که اغلب در نام دامنه نوشته نمی شود. نام دامنه های سطح اول وجود دارد. آنها به 2 دسته تقسیم می شوند - نام دامنه قلمرو و نام دامنه موضوع. نام دامنه های سطح دوم و بعدی می تواند هر چیزی باشد و دو نام دامنه یا میزبان یکسان نمی تواند وجود داشته باشد. بنابراین، اگر N i یک نام دامنه از سطح i و T یک کلمه باشد، نام دامنه سطح i+1 طبق قانون N i +1 =T+N i .. یک دامنه تشکیل می شود. نامی که با نقطه ختم می شود، نام دامنه مطلق (نام دامنه مطلق) یا نام دامنه کاملا واجد شرایط (FQDN) نامیده می شود.

اجازه دهید دوباره تاکید کنیم که از آنجایی که آدرس های IP به طور منحصر به فرد میزبان ها را در یک شبکه شناسایی می کنند، یک رابطه یک به یک بین مجموعه نام میزبان و مجموعه آدرس ها وجود دارد.

این رابطه توسط جدولی ایجاد می شود که در آن به تعداد نام دامنه هاست، ورودی از نوع "نام میزبان، آدرس IP" وجود دارد. هنگام نامگذاری یک میزبان جدید، یک ورودی باید به جدول اضافه شود، اگر یک میزبان موجود تغییر نام دهد، ورودی باید تغییر کند. استفاده از چنین سیستم نامگذاری راحت است زیرا به راحتی قابل یادآوری است و به شبکه های IP محلی سازی شده جغرافیایی گره نمی خورد. هنگام انتقال یک منبع با نام از یک میزبان به میزبان دیگر، تنها کاری که باید انجام دهید این است که ورودی نام آن را در جدول نام تغییر دهید. وجود چنین جدولی برای اینترنت در یک وب سایت دشوار است و به روز نگه داشتن آن غیرممکن است.

پایگاه داده DNS توزیع شده است. سیستم نام سلسله مراتبی مربوط به سیستم سلسله مراتبی سرورهای DNS است که قطعات جدول روی آن قرار دارند. در حالت ایده آل، باید یک سرور نام جداگانه برای هر دامنه وجود داشته باشد. پایگاه داده سرور نام در هر سطحی باید حاوی رکوردهای همه دامنه های فرزند در سطح بعدی باشد. همه دامنه های سطح اول در پایگاه داده سرورهای نام ریشه قرار دارند. آنها توسط سازمان NIC ارائه می شوند.

در واقع، یک میزبان می‌تواند یک پایگاه داده برای چندین دامنه میزبانی کند و پایگاه‌های داده یکسان یا همپوشانی را می‌توان بر روی چندین میزبان قرار داد. شاخه ای از درخت نام که تحت کنترل یکپارچه به همراه میزبان هایی که پایگاه داده این شاخه از درخت روی آنها قرار دارد، منطقه DNS نامیده می شود. به طور معمول، یک منطقه دارای یک سرور DNS اولیه (سرور نام اصلی) و چندین نسخه پشتیبان (سرورهای نام ثانویه) است. تغییرات در یک منطقه در پایگاه داده سرور اصلی منطقه ایجاد می شود و سپس این اطلاعات روی سرورهای ثانویه کپی می شود.

فرآیند انتقال اطلاعات از یک سرور اولیه به یک سرور ثانویه را انتقال منطقه می گویند. هنگامی که یک میزبان جدید در منطقه ظاهر می شود، مدیر اطلاعات مناسب (حداقل، نام و آدرس IP) را به یک فایل دیسک در سرور اصلی اضافه می کند. سرورهای ثانویه به طور منظم از سرورهای اولیه نظرسنجی می کنند (معمولاً هر 3 ساعت)، و اگر اولیه حاوی اطلاعات جدیدی باشد، ثانویه آن را با استفاده از انتقال منطقه دریافت می کند.

بر اساس عملکرد مشخص شده سیستم و ساختار آن، نتیجه می شود که پروتکل باید شامل دو جزء باشد - یک پروتکل برای حل نام به آدرس های IP و یک پروتکل برای تبادل داده بین گره های یک پایگاه داده توزیع شده، به ویژه، بین اصلی و سرورهای منطقه پشتیبان

سیستم تفکیک آدرس

برای اینکه نرم افزار پشته پروتکل TCP/IP از سرویس نام استفاده کند، تنظیمات پشته باید آدرس IP سرور نام را مشخص کند که منطقه آن شامل میزبان یا سرور دیگری است که درخواست های شبکه میزبان را می پذیرد. هنگامی که یک عنصر برنامه از یک نام دامنه برای شناسایی طرف دوم در یک جلسه استفاده می کند، فرآیند حل آدرس IP آغاز می شود. عنصر برنامه کاربردی سرویس نام میزبان درخواستی را به سرور نام ارسال می کند. اگر سرور نام بتواند آدرس را حل کند، پاسخی حاوی آن آدرس ارسال می کند. اگر سرور نام نتواند درخواست را حل کند، می تواند دو اسکریپت تفکیک نام را راه اندازی کند

    سرور آدرس سرور نام ریشه را به عنوان بخشی از پاسخ ارسال می کند و میزبان یک درخواست برای این سرور ایجاد می کند (یک درخواست تکراری).

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

پاسخ سرور کنترل کننده دامنه معتبر نامیده می شود.

هر سرور نام در اینترنت باید حاوی آدرس سرورهای ریشه در پایگاه داده خود باشد.

وضوح نام . پروتکل DNS علاوه بر وظیفه اصلی خود در حل نام دامنه میزبان در آدرس IP آن، وضوح معکوس یک آدرس IP را به نام دامنه با استفاده از زیرمنطقه های منطقه معکوس in_addr.arpa نیز ارائه می دهد.

این قابلیت‌های این پروتکل است که به ابزار tracert اجازه می‌دهد نه تنها هنگام تعیین مکان ردیابی در قالب یک نام DNS با موفقیت کار کند، بلکه اطلاعاتی در مورد نام گره‌های میانی در اختیار ما قرار دهد.

سوالات خودآزمایی

    سیستم نام دامنه چیست و چه کاربردی دارد؟

    حداکثر اندازه برچسب میزبان دامنه چقدر است

    نام دامنه DNS ریشه چیست؟

    ابزار tracert از چه نوع و کدهایی از پیام های ICMP استفاده می کند؟

    کدام فیلد هدر بسته IP برای تنظیم طول عمر بسته ها با استفاده از ابزار tracert استفاده می شود؟

    پارامترهای ابزار Tracert

    هدف ابزار tracert و گزینه های استفاده از آن

تجهیزات لازم

IBM PC یک کامپیوتر سازگار با سیستم عامل ویندوز دارای مجوز، اتصال به شبکه محلی، دسترسی به اینترنت است.

وظایف

1. با استفاده از دستور tracert مسیر توزیع بسته های IP به سایت www.sgu.ru را تعیین کنید.

2. با استفاده از دستور tracert، مسیر توزیع بسته های IP را در یکی از سایت های زیر تعیین کنید: www. nla. دولت. au , www. ibge. دولت. br , www. کونایچو. برو. jp(شما می توانید هر سایتی را در خارج از روسیه انتخاب کنید).

3. ردیابی را با گزینه –d تکرار کنید.

4. ساختار DNS نام سروری که ردیابی کردید را شرح دهید.

5. از سرویس استفاده کنید www. آی پی2 محل. com/ نسخه ی نمایشی. aspx(یا مشابه) و تعیین محل تقریبی نقاط میانی مسیر.

6. نمودار مسیر را رسم کنید.

7. در مورد نتایج نظر دهید.

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

اشتراک گذاری