پینگ یک نرمافزار مدیریت شبکه رایانه ای است که برای آزمایش دسترسی به یک میزبان در شبکه پروتکل اینترنت (IP) استفاده میشود. این برنامه تقریباً برای همه سیستم عاملهایی که دارای قابلیت شبکه هستند، از جمله بیشتر نرمافزارهای مدیریت شبکه تعبیه شده، در دسترس است . بهترین پینگ بین ۱ میلی ثانیه تا ۱۵۰ میلی ثانیه می باشد . اگر بیشتر از این حد بیشتر شود آزار دهنده می باشد . بیشترین پینگ رویت شده در بازی ۹۹۰ میباشد.
پینگ مدت زمان رفت و برگشت پیامهای ارسالی از میزبان به رایانه مقصد که به منبع برمیگردند را اندازهگیری میکند.
این نام از "اصطلاحات سونار" است که نبض صدا را میفرستد و برای بازگشت گوش میدهد تا اشیا را در زیر آب تشخیص دهد.[۱]
پینگ با ارسال بستههای درخواست اکو "پروتکل پیام کنترل اینترنت (ICMP)" به میزبان هدف و انتظار برای پاسخ اکو ICMP کار میکند. این برنامه خطاها، اتلاف بستهها و خلاصه آماری نتایج را گزارش میدهد، و بهطور معمول شامل حداقل، حداکثر، میانگین زمان رفت و برگشت و انحراف معیار میانگین میباشد.
گزینههای خط فرمان ابزار پینگ و خروجی آن بین پیادهسازیهای متعدد متفاوت است. گزینهها ممکن است شامل اندازه بار حمل، تعداد آزمایشها، محدودیتهایی برای تعداد هاپهای شبکه (TTL) که کاوشگرها عبور میکنند، فاصله بین درخواستها و زمان انتظار برای پاسخ باشد. بسیاری از سیستمها برای تست در شبکههای پروتکل اینترنت نسخه 6 (IPv6) که ICMPv6 را پیادهسازی میکنند، یک برنامه همراه ping6 ارائه میدهند.
تاریخچه
این ابزار پینگ توسط مایک مووس در دسامبر ۱۹۸۳ در آزمایشگاه تحقیقات بالستیک، آزمایشگاه تحقیقات ارتش ایالات متحده، نوشته شدهاست. اظهارات دیوید میلز در مورد استفاده از بستههای echo ICMP برای تشخیص و اندازهگیری شبکه IP , Muuss را وادار به ایجاد یک ابزار برای عیبیابی مشکلات شبکه میکرد. نویسنده آن را به دلیل صدایی که سونار میسازد، اینگونه نامگذاری کردهاست، زیرا روش آن مشابه با اکو محل سونار است.[۱] بسته اینترنت Groper که مخفف آن PING نامیده میشود و بیش از ۳۰ سال است که استفاده میشود.
اولین نسخه منتشر شده نرمافزار دامنه عمومی بود. تمام نسخههای بعدی تحت مجوز BSD مجوز گرفتهاند.
RFC 1122 باعث میشود که هر میزبان باید درخواستهای پژواک ICMP را پردازش کند و در ازای آن پاسخهای اکو را صادر کند.[۵]
مثال استعلام
در زیر خروجی اجرای پینگ در Linux برای ارسال پنج کاوشگر (فاصله ۱ ثانیه بهطور پیش فرض، تنظیم از طریق -i گزینه) به میزبان هدف "www.example.com" وجود دارد:
$ ping-c5www.example.com
PING www.example.com (93.184.216.34): 56 data bytes64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=9.674 ms64 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 lossround-trip min/avg/max/stddev = 9.674/10.968/11.726/0.748 ms
در خروجی هر پیام کاوشگر و نتایج بدست آمده لیست میشود. در آخر، آمار کل آزمون را لیست میکند.
در این مثال، کوتاهترین زمان رفت و برگشت ۹٫۶۷۴ میلی ثانیه، متوسط ۱۰٫۹۶۸ میلی ثانیه و حداکثر مقدار آن ۷٫۷۲۶ میلی ثانیه بودهاست. اندازهگیری دارای انحراف استاندارد ۰٫۷۴۸ میلی ثانیه بود.
نشانههای خطا
در موارد عدم پاسخ از میزبان هدف، بیشتر پیادهسازیها هیچ چیزی را نشان نمیدهند یا به صورت دوره ای اعلانها را دربارهٔ زمان پایان چاپ میکنند.
نتایج احتمالی پینگ نشان دهنده یک مشکل شامل موارد زیر است:
H,!N or !P – میزبان، شبکه یا پروتکل غیرقابل دسترسی است
در صورت بروز خطا، میزبان هدف یا روتر میانی یک پیام خطای ICMP را برمیگرداند، به عنوان مثال «میزبان غیرقابل دسترسی» یا «TTL در انتقال بیش از حد است».
علاوه بر این، این پیامها شامل هشت بایت پیام اصلی (در این مورد هدر درخواست اکو 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) رخ دهد.
مشتری میتواند از شناسه و شماره توالی برای مطابقت دادن پاسخ با درخواستی که باعث پاسخ شدهاست استفاده کند. در عمل، اکثر سیستمهای لینوکس از یک شناسه منحصر به فرد برای هر فرایند پینگ استفاده میکنند. ویندوز از یک شناسه ثابت که بین نسخههای ویندوز متفاوت است و از یک شماره توالی که فقط در زمان راه اندازی مجدد تنظیم میشود، استفاده میکند.
پاسخ اکو
پاسخ اکو یک پیام ICMP است که در پاسخ به درخواست اکو تولید میشود. این برای همه میزبانها اجباری است و باید شامل محموله دقیق دریافت شده در درخواست باشد.
۰۰
۰۱
۰۲
۰۳
۰۴
۰۵
۰۶
۰۷
۰۸
۰۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
۲۵
۲۶
۲۷
۲۸
۲۹
۳۰
۳۱
نوع = 0 (IPv4، ICMP) 129 (IPv6، ICMP6)
کد = ۰
مجموع ارقام
مشخص کننده
شماره ترتیب
ظرفیت ترابری
"شناسه و شماره توالی" میتواند توسط مشتری استفاده شود تا هر درخواست اکو را با پاسخ خود مرتبط کند.
ظرفیت ترابری
میزان بار بسته بهطور کلی با کارکترهای ASCII پر میشود، همانطور که خروجی ابزار tcpdump در ۳۲ بایت آخر مثال زیر نشان میدهد (پس از هدر هشت بایت ICMP با شروع 0x0800):
محموله میتواند شامل یک مهر زمان باشد که زمان انتقال و یک شماره توالی را نشان میدهد، که در این مثال یافت نمیشود.
محموله ممکن است شامل یک بسته جادویی برای پروتکل Wake-on-LAN باشد، اما کمترین حالت محموله بیش از آن است که نشان داده شود. اگر میزبان به حالت "خواب زمستانی یا hibernation" رفته باشد، اکو معمولاً هیچ پاسخی دریافت نمیکند، اما اگر رابط آن برای پذیرش درخواستهای بیدارسازی پیکربندی شود، میزبان از حالت خواب بیدار میشود. اگر میزبان قبلاً فعال و پیکربندی شده باشد تا بتواند به بستههای ورودی "ICMP درخواست اکو" پاسخ دهد، پاسخ برگردانده شده باید شامل همان محموله باشد. با تکرار یک درخواست جدید، پس از مدتی تأخیر، برای اینکه میزبان بتواند خدمات شبکه خود را از سر بگیرد، و همینطور برای تشخیص اینکه میزبان از راه دور بیدار شدهاست یا خیر، استفاده شود.
ملاحظات امنیتی
برای انجام یک حمله منع سرویس، یک مهاجم درخواستهای پینگ را در سریعترین زمان ممکن ارسال میکند، تا قربانیان را با درخواستهای اکو ICMP غافلگیر کند. به این روش "سیل پینگ یا ping flood" گفته میشود.
از درخواستهای پینگ به چندین آدرس و همینطور رفت و برگشت پینگ، میتوان برای به دست آوردن لیستی از همه میزبانهای شبکه استفاده کرد.
↑ ۱٫۰۱٫۱Mike Muuss. "The Story of the PING Program". U.S. Army Research Laboratory. Archived from the original on 25 October 2019. Retrieved 8 September 2010. My original impetus for writing PING for 4.2a BSD UNIX came from an offhand remark in July 1983 by Dr. Dave Mills … I named it after the sound that a sonar makes, inspired by the whole principle of echo-location … From my point of view PING is not an acronym standing for Packet InterNet Grouper, it's a sonar analogy. However, I've heard second-hand that Dave Mills offered this expansion of the name, so perhaps we're both right.