پینگ
پینگ یک نرم‌افزار مدیریت شبکه رایانه ای است که برای آزمایش دسترسی به یک میزبان در شبکه پروتکل اینترنت (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 در خروجی هر پیام کاوشگر و نتایج بدست آمده لیست می‌شود. در آخر، آمار کل آزمون را لیست می‌کند.
در این مثال، کوتاهترین زمان رفت و برگشت ۹٫۶۷۴ میلی ثانیه، متوسط ۱۰٫۹۶۸ میلی ثانیه و حداکثر مقدار آن ۷٫۷۲۶ میلی ثانیه بوده‌است. اندازه‌گیری دارای انحراف استاندارد ۰٫۷۴۸ میلی ثانیه بود.
در موارد عدم پاسخ از میزبان هدف، بیشتر پیاده‌سازی‌ها هیچ چیزی را نشان نمی‌دهند یا به صورت دوره ای اعلان‌ها را دربارهٔ زمان پایان چاپ می‌کنند.
نتایج احتمالی پینگ نشان دهنده یک مشکل شامل موارد زیر است:
در صورت بروز خطا، میزبان هدف یا روتر میانی یک پیام خطای ICMP را برمی‌گرداند، به عنوان مثال «میزبان غیرقابل دسترسی» یا «TTL در انتقال بیش از حد است».
علاوه بر این، این پیام‌ها شامل هشت بایت پیام اصلی (در این مورد هدر درخواست اکو ICMP، از جمله مقدار خاموش کننده) است، بنابراین برنامه پینگ می‌تواند پاسخ‌ها را با درخواست‌های اصلی مطابقت دهد.
ترکیب عمومی بسته ICMP:
درخواست echo ("پینگ") یک پیام ICMP / ICMP6 است.
مشتری می‌تواند از شناسه و شماره توالی برای مطابقت دادن پاسخ با درخواستی که باعث پاسخ شده‌است استفاده کند. در عمل، اکثر سیستم‌های لینوکس از یک شناسه منحصر به فرد برای هر فرایند پینگ استفاده می‌کنند. ویندوز از یک شناسه ثابت که بین نسخه‌های ویندوز متفاوت است و از یک شماره توالی که فقط در زمان راه اندازی مجدد تنظیم می‌شود، استفاده می‌کند.
پاسخ اکو یک پیام ICMP است که در پاسخ به درخواست اکو تولید می‌شود. این برای همه میزبانها اجباری است و باید شامل محموله دقیق دریافت شده در درخواست باشد.میزان بار بسته به‌طور کلی با کارکترهای ASCII پر می‌شود، همان‌طور که خروجی ابزار tcpdump در ۳۲ بایت آخر مثال زیر نشان می‌دهد (پس از هدر هشت بایت ICMP با شروع ):محموله می‌تواند شامل یک مهر زمان باشد که زمان انتقال و یک شماره توالی را نشان می‌دهد، که در این مثال یافت نمی‌شود.
محموله ممکن است شامل یک بسته جادویی برای پروتکل Wake-on-LAN باشد، اما کم‌ترین حالت محموله بیش از آن است که نشان داده شود. اگر میزبان به حالت "خواب زمستانی یا hibernation" رفته باشد، اکو معمولاً هیچ پاسخی دریافت نمی‌کند، اما اگر رابط آن برای پذیرش درخواست‌های بیدارسازی پیکربندی شود، میزبان از حالت خواب بیدار می‌شود. اگر میزبان قبلاً فعال و پیکربندی شده باشد تا بتواند به بسته‌های ورودی "ICMP درخواست اکو" پاسخ دهد، پاسخ برگردانده شده باید شامل همان محموله باشد. با تکرار یک درخواست جدید، پس از مدتی تأخیر، برای اینکه میزبان بتواند خدمات شبکه خود را از سر بگیرد، و همین‌طور برای تشخیص اینکه میزبان از راه دور بیدار شده‌است یا خیر، استفاده شود.
برای انجام یک حمله منع سرویس، یک مهاجم درخواست‌های پینگ را در سریع‌ترین زمان ممکن ارسال می‌کند، تا قربانیان را با درخواست‌های اکو ICMP غافلگیر کند. به این روش "سیل پینگ یا ping flood" گفته می‌شود.
از درخواست‌های پینگ به چندین آدرس و همین‌طور رفت و برگشت پینگ، می‌توان برای به دست آوردن لیستی از همه میزبانهای شبکه استفاده کرد.