پینگ

پینگ یک نرم‌افزار مدیریت شبکه رایانه ای است که برای آزمایش دسترسی به یک میزبان در شبکه پروتکل اینترنت (IP) استفاده می‌شود. این برنامه تقریباً برای همه سیستم عامل‌هایی که دارای قابلیت شبکه هستند، از جمله بیشتر نرم‌افزارهای مدیریت شبکه تعبیه شده، در دسترس است.

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

این نام از "اصطلاحات سونار" است که نبض صدا را می‌فرستد و برای بازگشت گوش می‌دهد تا اشیا را در زیر آب تشخیص دهد.

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

گزینه‌های خط فرمان ابزار پینگ و خروجی آن بین پیاده‌سازی‌های متعدد متفاوت است. گزینه‌ها ممکن است شامل اندازه بار حمل، تعداد آزمایش‌ها، محدودیت‌هایی برای تعداد هاپ‌های شبکه (TTL) که کاوشگرها عبور می‌کنند، فاصله بین درخواست‌ها و زمان انتظار برای پاسخ باشد. بسیاری از سیستم‌ها برای تست در شبکه‌های پروتکل اینترنت نسخه 6 (IPv6) که ICMPv6 را پیاده‌سازی می‌کنند، یک برنامه همراه ping6 ارائه می‌دهند.

تاریخچه 
این ابزار پینگ توسط مایک مووس در دسامبر ۱۹۸۳ در آزمایشگاه تحقیقات بالستیک، آزمایشگاه تحقیقات ارتش ایالات متحده، نوشته شده‌است. اظهارات دیوید میلز در مورد استفاده از بسته‌های echo ICMP برای تشخیص و اندازه‌گیری شبکه IP , Muuss را وادار به ایجاد یک ابزار برای عیب‌یابی مشکلات شبکه می‌کرد. نویسنده آن را به دلیل صدایی که سونار می‌سازد، اینگونه نامگذاری کرده‌است، زیرا روش آن مشابه با اکو محل سونار است. بسته اینترنت Groper که مخفف آن PING نامیده می‌شود و بیش از ۳۰ سال است که استفاده می‌شود.

اولین نسخه منتشر شده نرم‌افزار دامنه عمومی بود. تمام نسخه‌های بعدی تحت مجوز BSD مجوز گرفته‌اند.

پینگ اولین بار در 4.3BSD قرار گرفت.

نسخه "FreeDOS" توسط Erick Engelke ساخته شده و تحت GPL مجوز دارد.

تیم کرافورد نسخه "ReactOS" را توسعه داد. تحت مجوز MIT مجوز دارد.

RFC 1122 باعث می‌شود که هر میزبان باید درخواست‌های پژواک ICMP را پردازش کند و در ازای آن پاسخ‌های اکو را صادر کند.

مثال استعلام 
در زیر خروجی اجرای پینگ در Linux برای ارسال پنج کاوشگر (فاصله ۱ ثانیه به‌طور پیش فرض، تنظیم از طریق -i گزینه) به میزبان هدف "www.example.com" وجود دارد:$ ping -c 5 www.example.com
PING www.example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=9.674 ms
64 bytes from 93.184.216.34: icmp_seq=4 ttl=56 time=11.127 ms

--- www.example.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 9.674/10.968/11.726/0.748 msدر خروجی هر پیام کاوشگر و نتایج بدست آمده لیست می‌شود. در آخر، آمار کل آزمون را لیست می‌کند.

در این مثال، کوتاهترین زمان رفت و برگشت ۹٫۶۷۴ میلی ثانیه، متوسط ۱۰٫۹۶۸ میلی ثانیه و حداکثر مقدار آن ۷٫۷۲۶ میلی ثانیه بوده‌است. اندازه‌گیری دارای انحراف استاندارد ۰٫۷۴۸ میلی ثانیه بود.

نشانه‌های خطا 
در موارد عدم پاسخ از میزبان هدف، بیشتر پیاده‌سازی‌ها هیچ چیزی را نشان نمی‌دهند یا به صورت دوره ای اعلان‌ها را دربارهٔ زمان پایان چاپ می‌کنند.

نتایج احتمالی پینگ نشان دهنده یک مشکل شامل موارد زیر است:
   or میزبان، شبکه یا پروتکل غیرقابل دسترسی است
  مسیر منبع ناموفق بود
  تکه‌تکه شدن لازم است
  or  شبکه / میزبان مقصد ناشناخته است
  میزبان منبع جدا شده‌است
  ارتباط با شبکه مقصد از نظر مدیریت ممنوع است
  ارتباط با میزبان مقصد از نظر مدیریت ممنوع است
  برای این ToS شبکه مقصد غیرقابل دسترسی است
  برای این ToS میزبان مقصد غیرقابل دسترسی است
  ارتباطات از نظر اداری ممنوع است
  نقض اولویت میزبان
  قطع اولویت در اثر

در صورت بروز خطا، میزبان هدف یا روتر میانی یک پیام خطای ICMP را برمی‌گرداند، به عنوان مثال «میزبان غیرقابل دسترسی» یا «TTL در انتقال بیش از حد است».

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

قالب پیام

بسته ICMP 

ترکیب عمومی بسته ICMP:
 سربرگ IPv4 (به رنگ آبی): پروتکل روی 1 (ICMP) و نوع سرویس روی ۰ تنظیم شده‌است.
 سربرگ IPv6 (به رنگ آبی): عنوان بعدی روی ۵۸ تنظیم شده‌است (ICMP6)
 سربرگ ICMP (با رنگ قرمز):
 نوع پیام ICMP (8 بیت)
 کد (۸ بیت)
 Checksum (16 بیت)، ۱۶ بیتی مکمل یک مجموعه مکمل بسته‌است. برای IPv4، این از پیام ICMP با شروع با قسمت Type (سربرگ IP موجود نیست). برای IPv6 این از پیام ICMP محاسبه می‌شود که با یک «عنوان شبه» IPv6 اضافه می‌شود.
 قسمت Header Data (32 بیت) که در این حالت (درخواست و پاسخ ICMP)، از شناسه (۱۶ بیت) و شماره توالی (۱۶ بیت) تشکیل خواهد شد.
 محموله ICMP: محموله برای انواع مختلف پاسخ‌ها، می‌تواند یک طول دلخواه باشد.
 با این حال، بسته‌های شامل "IP و ICMP" باید کمتر از حداکثر واحد انتقال شبکه باشد در غیر اینصورت ممکن است خطر تکه‌تکه شدن (تقسیم ip) رخ دهد.

درخواست اکو 
درخواست echo ("پینگ") یک پیام ICMP / ICMP6 است.

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

پاسخ اکو 
پاسخ اکو یک پیام ICMP است که در پاسخ به درخواست اکو تولید می‌شود. این برای همه میزبانها اجباری است و باید شامل محموله دقیق دریافت شده در درخواست باشد.

 "شناسه و شماره توالی" می‌تواند توسط مشتری استفاده شود تا هر درخواست اکو را با پاسخ خود مرتبط کند.

ظرفیت ترابری 
میزان بار بسته به‌طور کلی با کارکترهای ASCII پر می‌شود، همان‌طور که خروجی ابزار tcpdump در ۳۲ بایت آخر مثال زیر نشان می‌دهد (پس از هدر هشت بایت ICMP با شروع ):محموله می‌تواند شامل یک مهر زمان باشد که زمان انتقال و یک شماره توالی را نشان می‌دهد، که در این مثال یافت نمی‌شود.

محموله ممکن است شامل یک بسته جادویی برای پروتکل Wake-on-LAN باشد، اما کم‌ترین حالت محموله بیش از آن است که نشان داده شود. اگر میزبان به حالت "خواب زمستانی یا hibernation" رفته باشد، اکو معمولاً هیچ پاسخی دریافت نمی‌کند، اما اگر رابط آن برای پذیرش درخواست‌های بیدارسازی پیکربندی شود، میزبان از حالت خواب بیدار می‌شود. اگر میزبان قبلاً فعال و پیکربندی شده باشد تا بتواند به بسته‌های ورودی "ICMP درخواست اکو" پاسخ دهد، پاسخ برگردانده شده باید شامل همان محموله باشد. با تکرار یک درخواست جدید، پس از مدتی تأخیر، برای اینکه میزبان بتواند خدمات شبکه خود را از سر بگیرد، و همین‌طور برای تشخیص اینکه میزبان از راه دور بیدار شده‌است یا خیر، استفاده شود.

ملاحظات امنیتی 
برای انجام یک حمله منع سرویس، یک مهاجم درخواست‌های پینگ را در سریع‌ترین زمان ممکن ارسال می‌کند، تا قربانیان را با درخواست‌های اکو ICMP غافلگیر کند. به این روش "سیل پینگ یا ping flood" گفته می‌شود.

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

 fping
 hping
 Keepalive
 nping
 Ping of death
 Ping-pong scheme
 Security through obscurity
 Smurf attack
 Traceroute

پیوند به بیرون 
 پینگ | اسناد مایکروسافت

تحلیل‌گرهای شبکه
مدیریت ویندوز
نرم‌افزارهای آزاد مرتبط با مدیریت شبکه
نرم‌افزارهای شبکه‌ای مبتنی بر پروتکل اینترنت
نرم‌افزارهای یونیکس مرتبط با شبکه
دستورهای ویندوز