دوره‌ های آموزشی نووا
آوریل 4, 2019

آموزش کامل دستور Ping

Avatar photo
برنامه نویس MERN Stack
آموزش کامل دستور Ping

در سیستم عامل ویندوز برای بررسی و اطمینان حاصل نمودن از برقراری ارتباطات بین شبکه ای، میتوان از دستور ping استفاده نمود. کار دستور ping ارسال پیام های Echo Request و Echo Reply میباشد که از پیام های پروتکل ICMP است. در این آموزش قصد دارم شما را با این دستور فوق العاده در ویندوز آشنا کنم.

استفاده از دستور ping

برای استفاده از دستور ping ابتدا باید وارد محیط خط فرمان ویندوز شوید سپس میتوانید دستور ping را با نام یک هاست (Hostname) یا آدرس IP آن وارد کنید تا دستور ping پیام Echo Request خود را برای آدرس مشخص شده ارسال کند و در صورت برقراری ارتباط پیام Echo Reply پروتکل ICMP را دریافت کند. برای مثال:

ping 192.168.1.1
دستور ping

همانطور که در تصویر بالا مشاهده میکنید بعد از وارد نمودن دستور ping برنامه ping به صورت پیش فرض چهار بار پیام Echo Request را برای آدرس 192.168.1.1 ارسال نمود و بعد از هر ارسال پاسخ Echo Reply را دریافت نمود که در ویندوز این پیام ها به صورت Reply from 192.168.1.1 Bytes=32 time=1ms TTL=64 نمایش داده میشود.

تجزیه پیام Reply from Host دستور Ping

البته هر بخش از این پیام (Reply from 192.168.1.1 Bytes=32 time=1ms TTL=64) یک معنای خاص میدهد که در ادامه به پیام های دستور ping و معنای آنها خواهم پرداخت.

در اینجا کلمه Bytes=32 حجم ارسالی (Buffer Size) پیام را مشخص میکند که مقدار آن 32 بایت است. البته شما میتوانید این مقدار را برای تست و بررسی با استفاده از پارامتر -l افزایش یا کاهش دهید.

از پیام های پر اهمیت پیغام Echo Reply بخش زمان آن میباشد، همانطور که در تصویر بالا مشاهده میکنید در جلوی گزینه time مقدار 1ms یا 1 Milli Second مشخص شده است، این بدان معناست که پیام Echo Request و Echo Reply فقط با اختلاف 1 میلی ثانیه به مقصد خود رسیده اند.

مقدار TTL در پیام بالا حداکثر تعداد مسیر یاب (Routers) های مجاز را مشخص میکند. در واقع این پیغام به این معنی میباشد که پیام Echo Request میتواند تا حداکثر 64 مسیر یاب را برای پیدا کردن مقصد خود دنبال کند و در صورتیکه بعد از آن به مقصد خود نرسد خطای عدم دسترسی را نمایش میدهد.

بخش Ping Statistics for 192.168.1.1 مشخص میکند چه تعداد پیام Echo Request ارسال شده (Sent = 4) و چه مقدار از آنها به مقصد خود رسیده اند (Received = 4) و همچنین حداقل (Minimum = 1ms) و حداکثر (Maximum = 1ms) و میانگین (Average = 1ms) زمان دسترسی پیامها به مقصد خود را نمایش میدهد.

پیامهای مختلف دستور Ping و مفهوم آنها

دستور Ping در ویندوز دارای چند پیام اساسی میباشد که هر کدام از آنها یک مفهوم خاصی دارند مثلا همین پیامی که در بالا (Reply from 192.168.1.1 Bytes=32 time=1ms TTL=64) مشاهده میکنید به معنی برقرار بودن ارتباط با سیستم مقصد است.

هنگامیکه دستور Ping نتواند پیام Echo Request خود را به سیستم مقصد ارسال کند پیغام Request timed out. را به شما نمایش میدهد. برای مثال:

پیام request time out

همانطور که در تصویر بالا مشاهده میکنید دستور ping آدرس 9.9.8.1 را بررسی میکند و خروجی آن نمایش چهار پیام Request timed out. است.

نکته: توجه کنید پیام Request timed out. میتواند علت های گوناگونی از قبیل در دسترس نبودن شبکه مقصد یا کمبود مقدار TTL باشد که به صورت پیشفرض مقدار آن 64 عدد است و برای بررسی هر شبکه ای از هر نقطه از جهان کاملا کافی است.

زمانیکه دستور Ping میتواند به شبکه مقصد دسترسی داشته باشد اما نمیتواند Host مقصد را پیدا کند خطای Destination Host Unreachable را نمایش میدهد.

همانطور که در تصویر بالا مشاهده میکنید آدرس 192.168.1.120 در رنج شبکه محلی سیستم من میباشد اما به دلیل عدم وجود چنین سیستمی در این شبکه پیغام Destination Host Unreachable توسط دستور ping تولید شده است.

هنگامیکه پیکربندی پروتکل سویت TCP/IP درست نباشد دستور Ping پیغام PING: transmit failed. General failure. را نمایش میدهد. مثلا زمانیکه شما فقط از سیستم آدرس دهی IPv6 استفاده میکنید و سپس سعی میکنید با آدرس IPv4 در دسترس بودن یک Host را بررسی کنید با خطای General failure مواجه خواهید شد. برای مثال:

ping 4.2.2.4
خطای General Failure

همانطور که در تصویر بالا مشاهده میکنید خطای PING: transmit failed. General failure. به دلیل غیر فعال شدن IPv4 است. البته من به صورت دستی تیک گزینه Internet Protocol Version 4 (TCP/IP) را از بخش Properties کارت شبکه برداشتم تا با خطای PING: transmit failed. General failure. مواجه شوم.

ارسال بدون توقف Echo Request

همانطور که میدانید به صورت پیشفرض دستور ping فقط چهار بار ICMP Echo Request را برای بررسی ارتباط بین شبکه ای ارسال میکند. اگر میخواهید به صورت دائمی از در دسترس بودن Host مورد نظر خود مطمئن شوید میتوانید از پارامتر -t برای این منظور استفاده کنید. برای مثال:

ping -t 4.2.2.4
تجزیه دستور ping

دستور بالا تا زمانیکه از کلید های Ctrl+C استفاده نکنید متوقف نخواهد شد. اگر میخواهید دستور متوقف نشود اما تجزیه و تحلیل دستور ping را مشاهده کنید باید از کلید های Ctrl+Break استفاده کنید.

اگر میخواهید تعداد پیام های Echo Request را خودتان مشخص کنید باید از پارامتر -n برای این منظور استفاده کنید. مثلا برای 10 بار ارسال پیام Echo Request به آدرس 192.168.1.1 باید به شکل زیر عمل کنید:

ping -n 10 192.168.1.1

پیدا کردن آدرس IP یک Host یا Domain

با استفاده از دستور ping میتوانید آدرس IP یک دامنه یا Host را به سادگی پیدا کنید. برای این منظور کافیست بعد از دستور ping نام Host یا Domain مورد نظر خود را وارد کنید. مثلا برای پیدا نمودن آدرس IP سایت نووا بلاگ باید به صورت زیر عمل کنید:

ping tml-manager.ir
آموزش دستور ping

همانطور که در تصویر بالا مشاهده میکنید آدرس IP مرتبط با دامنه tml-manager.ir در بین دو علامت [77.238.122.163] قابل مشاهده میباشد.

نکته: توجه کنید برای ping گرفتن به یک دامنه حتما باید تنظیمات مربوط به DNS Server روی سیستم انجام شده باشد در غیر اینصورت دستور ping نمیتواند آدرس IP معادل با یک دامنه را پیدا کند.

در صورتیکه یک دامنه به هر دلیلی در دسترس نباشد یا ارتباط سیستم شما با شبکه قطع باشد زمان ping گرفتن به دامنه با خطای Ping request could not find host . Please check the name and try again. مواجه خواهید شد. برای مثال:

ping mohammadbarghamadi.ir
پینگ به دامنه

پیدا کردن نام دامنه از روی آدرس IP

از ویژگیهای فوق العاده دستور ping پیدا نمودن نام Host از روی آدرس IP آن میباشد. مثلا زمانیکه میخواهید متوجه شوید یک وبسایت توسط کدام شرکت Hosting میزبانی میشود میتوانید از پارامتر -a استفاده کنید. مثلا برای پیدا نمودن Hosting وبسایت نووا بلاگ باید به صورت زیر عمل کنید:

ping tml-manager.ir

ping -a 77.238.122.163
پیدا کردن نام هاست با دستور ping

در مثال بالا ابتدا به وبسایت نووا بلاگ ping گرفته شد تا آدرس IP مرتبط با دامنه tml-manager.ir پیدا شود. سپس با استفاده از ویژگی Reverse Name Resolution دستور ping (پارامتر -a) به آدرس IP مرتبط با دامنه tml-manager.ir پینگ گرفته شده تا دامنه مرتبط با آن نمایش داده شود.

مشخص نمودن TTL در دستور ping

برای مشخص نمودن تعداد Hop های مجاز در دستور ping میتوانید از پارامتر -i استفاده کنید. برای این منظور کافیست بعد از دستور ping از پارامتر -i و بعد از آن تعداد Time to Live (TTL) یا همان Hop های مد نظر خود را مشخص کنید. برای مثال:

ping -i 12 tml-manager.ir
مشخص کردن TTL در ping

همانطور که در تصویر بالا مشاهده میکنید خروجی دستور ping مقدار TTL expired in transit. میباشد که به معنی کافی نبودن مقدار TTL برای دسترسی به دامنه tml-manager.ir است.

نکته: اگر میخواهید تعداد Hop های بین Host مبدا و مقصد را پیدا کنید باید از دستور tracert در ویندوز استفاده کنید. در اینجا برای مواجه نشدن با خطا من میبایست حداقل از عدد 13 برای TTL استفاده میکردم چراکه بین سیستم من و سایت نووا بلاگ 13 مسیریاب وجود دارد.

مشخص نمودن حجم بسته ارسالی

در دستور ping میتوان با استفاده از پارامتر -l حداقل حجم Data بسته ارسالی را مشخص نمود. به صورت پیشفرض این مقدار 32 بایت میباشد. مثلا برای ارسال 5 پیام Echo Request به آدرس 192.168.1.1 که هر کدام از آنها 10 هزار بایت حجم Data داشته باشند باید به صورت زیر عمل نمود:

ping -n 5 -l 10000 192.168.1.1

توجه کنید زمانیکه حجم Data ارسالی در دستور ping را بیش از حد زیاد کنید (مثلا 65535) و تعداد پیام های Echo Request را نیز به صورت دائمی با پارامتر -t مشخص کنید ممکن است باعث سر ریز شدن Buffer کارت شبکه هاست مقصد شوید و به نوعی آنرا از دسترس خارج (Ping of Death in DOS Attack) کنید.

ارسال پیام Echo Request با برچسب Do not Fragment

اگر میخواهید از PMTU در شبکه خود اشکال زدایی کنید میتوانید از پارامتر /f برای فعال سازی برچسب Do not Fragment در Header بسته های ارسالی ICMP استفاده کنید. برای مثال:

ping -f -l 10000 4.2.2.4
do not fragment

همانطور که در تصویر بالا مشاهده میکنید خطای Packet needs to be fragmented but DF set. مربوط به برچسب Do not Fragment میباشد. چراکه حجم بسته بزرگتر از سایز MTU در مسیر مقصد میباشد و توانایی Fragment شدن هم توسط برچسب Do not fragment گرفته شده است.

مشخص نمودن آدرس مبدا در دستور ping

برای مشخص نمودن آدرس IP مبدا در دستور ping میبایست از پارامتر -S حروف بزرگ استفاده کنید. متاسفانه پارامتر -S مخصوص آدرس IPv6 میباشد و نمیتوان از آدرس IPv4 استفاده نمود. برای مثال:

ping -S 2a01:5ec0:2025:d131:38d7:d601:af4:6ce7 fe80::21f:fbff:fec4:e6c5%15
مشخص کردن آدرس مبدا

مشخص نمودن نسخه IP در هنگام ping گرفتن

زمانیکه میخواهید نسخه آدرس IP را در هنگام بررسی ارتباط بین شبکه ای مشخص کنید میتوانید از پارامتر های -6 برای مشخص کردن IPv6 و از پارامتر -4 برای مشخص کردن IPv4 استفاده کنید. برای مثال:

ping -6 -n 1 cisco.com

ping -4 -n 1 cisco.com
انتخاب نسخه ip

نکته: به صورت پیشفرض زمانیکه در هنگام ping گرفتن نسخه IP را با پارامتر های -6 یا -4 مشخص نمیکنید و هر دو نسخه IP روی کارت شبکه شما تنظیم شده است، IPv6 برای بررسی ارتباط بین شبکه ای استفاده میشود.

برای مشخص نمودن حداکثر زمان دسترسی به host مقصد در دستور ping میتوانید از پارامتر -w استفاده کنید. مثلا برای مشخص کردن حداکثر 100 میلی ثانیه برای دسترسی به آدرس novablog.ir دستور به شکل زیر نوشته میشود:

ping -w 100 novablog.ir

12 پاسخ به “آموزش کامل دستور Ping”

  1. Avatar photo میلاد محمدی گفت:

    با سلام و خسته نباشید
    آموزشی که برای حالت های مختلف دستور ping گفتید خیلی خوب بود تشکر

  2. Avatar photo محمد رضا گفت:

    با سلام و عرض ادب خواستم از زحمات شما تشکر کرده باشم

  3. Avatar photo مجید گفت:

    باسلام اگر بخواهیم بفهمیم که این ای پی که به کامپیوتر میدهیم روی سرور تکراری نباشد از چه دستوری استفاده میکنیم م

    • سلام
      در این زمینه دستور خاصی رو به یاد نمیارم، در کل تو شبکه باید بدونید به هر سیستم چه آدرسی اختصاص میدید یا اینکه از DHCP سرور استفاده کنید و به خودتون این سختی رو ندید.

      حالا در هر صورت اگر در ویندوز یک آدرس IP تکراری (Duplicate) به یک سیستم اختصاص داده بشه، اتفاقی که میافته خود ویندوز معمولا سریعا تشخیص میده و هشدار Duplicate بودن آدرس رو میده، یا اینکه میتونید از دستور arp استفاده کنید و نهایتا آدرس های که در همون VLAN هستند رو بررسی کنید.

  4. Avatar photo Arash گفت:

    سلام وقتتون بخیر
    میشه لطفا دستور ping -v هم توضیح بدید که چه کاربردی داره. ممنون میشم

  5. Avatar photo بهار گفت:

    سلام
    یسوال برام پیش اومده …
    اگر یکی یا دو تا از پکت های ارسالی time out بشه حالا به هرترتیبی، اونوقت نتیجه چی مشه؟!!!!
    پینگ داره یا پینگ نداره؟؟؟؟

    • سلام
      این یعنی دسترسی دارید اما شبکه به دلایل متفاوتی خیلی پایدار نیست، مثلا ممکنه مسیر ها بخاطر لود زیاد (ترافیک بالا شبکه) از دسترس خارج بشن و یا روتری با مشکل مواجه شده باشه و …

  6. Avatar photo کریم نوروزی فرد گفت:

    بسیار آموزنده

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *