ping و traceroute
جواب کوتاه
ping پیامی به مقصد میفرستد و میپرسد «هستی؟»؛ اگر جواب آمد، راه باز است و زمان رفت و برگشت را به میلیثانیه نشان میدهد. traceroute (در ویندوز tracert) راه بستهها را منزلبهمنزل نشان میدهد: پیامهایی با TTL یک، دو، سه و بیشتر میفرستد، و هر روتری که TTL پیام نزدش به صفر رسید، نامهای با نشانی خودش برمیگرداند. بیجوابی همیشه یعنی خرابی نیست؛ فایروالها و بعضی روترها جواب نمیدهند.
نام
ping و traceroute دو فرمان سادهاند که روی ویندوز، مک و لینوکس هستند. ping میپرسد مقصد در دسترس است یا نه، و جواب چقدر طول میکشد. traceroute، که در ویندوز tracert نام دارد، نشان میدهد بستهها از کدام روترها میگذرند تا به مقصد برسند.
«پینگ گرفتن» یعنی همین فرمان ping را اجرا کردن؛ ربطی به بازی پینگپنگ ندارد. هر دو از پیامهای پروتکل ICMP استفاده میکنند، پروتکلی که کارش رساندن پیامهای کوچک دربارهی خود شبکه است.
جاده و کاروانسراها
جادهای کاروانرو را تصور کنید با چند کاروانسرا تا مقصد. اگر بخواهید بدانید راه تا مقصد باز است، پیکی میفرستید که برود و رسید بیاورد. اگر رسید آمد، راه باز است؛ و از زمان رفت و برگشتش میفهمید راه چقدر طول میکشد. این ping است:
حالا اگر بخواهید بدانید راه از کدام کاروانسراها میگذرد، پیک اول را با توشهی یک منزل میفرستید، دومی را با توشهی دو منزل، و همینطور. هر جا توشهی پیکی تمام شد، کاروانسرادار نامهای با نام کاروانسرا برایتان پس میفرستد. از نامهها، راه را منزلبهمنزل میشناسید. این traceroute است:
باز کردن خط فرمان
هر دو فرمان را در پنجرهی خط فرمان مینویسید؛ پنجرهای که در آن فرمان تایپ میکنید و Enter میزنید:
- ویندوزکلید ویندوز را بزنید، cmd بنویسید و Enter بزنید؛ پنجرهی Command Prompt باز میشود.
- مکبرنامهی Terminal را از جستوجوی سیستم باز کنید.
- لینوکسبرنامهی ترمینال را باز کنید؛ در بیشتر نسخهها در فهرست برنامهها هست.
ping و خواندن جوابش
بنویسید ping و بعد نشانی IP یا نام مقصد. در ویندوز، این فرمان چهار پیام میفرستد و تمام میشود:
C:\> ping 203.0.113.10 Reply from 203.0.113.10: bytes=32 time=101ms TTL=124 Reply from 203.0.113.10: bytes=32 time=100ms TTL=124 Reply from 203.0.113.10: bytes=32 time=120ms TTL=124 Reply from 203.0.113.10: bytes=32 time=120ms TTL=124
هر خط، یک جواب. بخشهایش:
| بخش | یعنی |
|---|---|
| Reply from 203.0.113.10 | جواب از همین نشانی آمد |
| bytes=32 | اندازهی دادهی پیام: ۳۲ بایت |
| time=101ms | رفت و برگشت ۱۰۱ میلیثانیه طول کشید |
| TTL=124 | توشهای که جواب با آن رسید (بخش TTL) |
در مک و لینوکس، ping تا وقتی Ctrl+C نزنید ادامه میدهد، هر ثانیه یک پیام. وقتی قطعش کردید، خلاصهای میدهد: چند پیام فرستاده و چند جواب گرفته، چند درصد گم شده، و کمترین، میانگین و بیشترین زمان. اگر فقط چند پیام میخواهید، تعداد را با -c بگویید، مثلا ping -c 4 203.0.113.10. در ویندوز هم ping /t تا وقتی قطعش کنید ادامه میدهد.
وقتی جواب نمیآید
اگر جواب در مهلتش، که در ویندوز چهار ثانیه است، نرسد، بهجای آن خط، «Request timed out» میآید. یعنی پیک برنگشت. شاید راه بسته است، شاید مقصد خاموش است، و شاید فایروال مقصد به ping جواب نمیدهد؛ چون فایروال میتواند پیامهای ICMP را رد کند، همانطور که در درس فایروال دیدید.
یک آزمون ساده کمک میکند: یک بار نشانی IP را ping کنید و یک بار نام را.
پینگ بالا یا پایین
«پینگ» در گفتوگوی روزمره همان زمان رفت و برگشت است. هر چه کمتر، بهتر: یعنی جواب زودتر میرسد، و این برای بازی آنلاین و تماس تصویری مهم است. پینگ به فاصله، به کیفیت راه، و به شلوغی بستگی دارد؛ ping یک سرور در همین شهر کمتر از ping سروری در آن سوی دنیاست. فرق پینگ و سرعت را در درس پهنای باند و پینگ دیدید.
TTL و توشه
هر بستهی IP عددی به نام TTL دارد. هر روتری که بسته را جلو میفرستد، دستکم یکی از آن کم میکند؛ مثل کاروانسرایی که یک روز از توشهی پیک برمیدارد. وقتی TTL به صفر رسید، روتر بسته را جلو نمیفرستد و پیام «Time Exceeded» به فرستنده برمیگرداند. همانطور که در درس مسیریابی دیدید، این جلوی چرخیدن بیپایان بستهها را میگیرد:
traceroute از همین کار استفاده میکند: TTL را عمدا کوچک میگیرد تا هر روتر، به نوبت، خودش را معرفی کند.
traceroute و خواندن جوابش
در ویندوز بنویسید tracert و نام یا نشانی مقصد؛ در مک و لینوکس traceroute. در هر منزل سه آزمون میفرستد، و در ویندوز تا ۳۰ منزل جلو میرود:
C:\> tracert example.com 1 1 ms 1 ms <1 ms 192.168.1.1 2 11 ms 13 ms 6 ms 10.41.0.49 3 20 ms 11 ms 18 ms 198.51.100.7 4 * * * Request timed out. 5 50 ms 52 ms 47 ms 203.0.113.10 Trace complete.
هر خط یک منزل است، با سه ستون:
اگر خواستید سریعتر جواب بگیرد، در ویندوز tracert /d و در مک و لینوکس traceroute -n فقط نشانیها را نشان میدهند و نام روترها را نمیپرسند. traceroute مک بهجای پیام ICMP، بستهی UDP میفرستد، ولی کارش همان است.
ستارهها
اگر در منزلی جوابی در مهلت نیامد، بهجای زمان، ستاره (*) میآید. بعضی روترها نامهی Time Exceeded نمیفرستند و برای traceroute پنهاناند، ولی بستهها را جلو میفرستند:
پس به منزلهای بعد نگاه کنید. اگر بعد از ستارهها منزل دیگری یا مقصد جواب داد، راه باز است. ولی اگر از یک منزل به بعد همه ستاره شد و مقصد هرگز جواب نداد، احتمالا مشکل حوالی همان منزل است؛ همان روش «دنبال کردن مسیر» که در درس عیبیابی دیدید.
«اینترنت نمیآید»، قدمبهقدم
- ping دروازه: نشانی مودم یا روتر خانه را ping کنید (نشانیاش را درس بعد پیدا میکنید). جواب نیامد؟ مشکل میان شما و مودم است: کابل، وایفای یا خود مودم.
- ping یک نشانی IP بیرونی: جواب نیامد؟ مشکل از مودم به بعد است. traceroute نشان میدهد تا کجا رسیده.
- ping یک نام: نشانی جواب داد ولی نام نه؟ احتمالا مشکل از DNS است.
- همه جواب دادند: راه و نام سالماند؛ مشکل از خود سایت یا برنامه است، لایههای بالاتر.
این همان روش «از وسط» است: با ping از لایهی شبکه شروع میکنید و بسته به جواب، بالا یا پایین میروید.
سه اشتباه
- «ping جواب نداد، پس دستگاه خاموش است.»شاید فایروالش ping را رد میکند. بیجوابی فقط یعنی جواب نیامد؛ با آزمونهای دیگر مطمئن شوید.
- «ستاره در traceroute یعنی راه همانجا بسته است.»اگر منزلهای بعدی و مقصد جواب دادند، آن منزل فقط نامه نفرستاده و کاروان را رد کرده است.
- «یک بار ping کافی است.»زمانها از پیامی به پیام دیگر فرق دارند و گاهی پیامی گم میشود؛ چند پیام بفرستید و میانگین و گمشدهها را ببینید.
جمعبندی. آنچه از این درس با خودتان میبرید.
- ping: «هستی؟» و «هستم»؛ با زمان رفت و برگشت.
- Request timed out: جواب در مهلت نرسید، نه لزوما خاموشی.
- پینگ کمتر بهتر؛ به فاصله و شلوغی بستگی دارد.
- TTL: توشهای که هر روتر یکی از آن برمیدارد.
- traceroute و tracert: راه، منزلبهمنزل.
- ستاره: منزلی که نامه نفرستاد؛ اگر بعدیها جواب دادند، راه باز است.
خودتان را بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را میبینید: چند درست، چند نادرست.