ابزار شبکهای که برای آزمودن قابلیت دستیابی به میزبان استفاده میشود From Wikipedia, the free encyclopedia
پینگ یک نرمافزار مدیریت شبکه رایانه ای است که برای آزمایش دسترسی به یک میزبان در شبکه پروتکل اینترنت (IP) استفاده میشود. این برنامه تقریباً برای همه سیستم عاملهایی که دارای قابلیت شبکه هستند، از جمله بیشتر نرمافزارهای مدیریت شبکه تعبیه شده، در دسترس است . بهترین پینگ بین ۱ میلی ثانیه تا ۱۵۰ میلی ثانیه می باشد . اگر بیشتر از این حد بیشتر شود آزار دهنده می باشد . بیشترین پینگ رویت شده در بازی ۹۹۰ میباشد.
نویسنده(های) اصلی | Mike Muuss |
---|---|
توسعهدهنده(ها) | جامعه کاربری |
انتشار اولیه | ۱۹۸۳ |
پلتفرم | چند دستگاهی |
نوع | فرمان |
مجوز | بی اس دی، پروانه عمومی همگانی گنو، ام آی تی |
پینگ مدت زمان رفت و برگشت پیامهای ارسالی از میزبان به رایانه مقصد که به منبع برمیگردند را اندازهگیری میکند.
این نام از "اصطلاحات سونار" است که نبض صدا را میفرستد و برای بازگشت گوش میدهد تا اشیا را در زیر آب تشخیص دهد.[1]
پینگ با ارسال بستههای درخواست اکو "پروتکل پیام کنترل اینترنت (ICMP)" به میزبان هدف و انتظار برای پاسخ اکو ICMP کار میکند. این برنامه خطاها، اتلاف بستهها و خلاصه آماری نتایج را گزارش میدهد، و بهطور معمول شامل حداقل، حداکثر، میانگین زمان رفت و برگشت و انحراف معیار میانگین میباشد.
گزینههای خط فرمان ابزار پینگ و خروجی آن بین پیادهسازیهای متعدد متفاوت است. گزینهها ممکن است شامل اندازه بار حمل، تعداد آزمایشها، محدودیتهایی برای تعداد هاپهای شبکه (TTL) که کاوشگرها عبور میکنند، فاصله بین درخواستها و زمان انتظار برای پاسخ باشد. بسیاری از سیستمها برای تست در شبکههای پروتکل اینترنت نسخه 6 (IPv6) که ICMPv6 را پیادهسازی میکنند، یک برنامه همراه ping6 ارائه میدهند.
این ابزار پینگ توسط مایک مووس در دسامبر ۱۹۸۳ در آزمایشگاه تحقیقات بالستیک، آزمایشگاه تحقیقات ارتش ایالات متحده، نوشته شدهاست. اظهارات دیوید میلز در مورد استفاده از بستههای echo ICMP برای تشخیص و اندازهگیری شبکه IP , Muuss را وادار به ایجاد یک ابزار برای عیبیابی مشکلات شبکه میکرد. نویسنده آن را به دلیل صدایی که سونار میسازد، اینگونه نامگذاری کردهاست، زیرا روش آن مشابه با اکو محل سونار است.[1] بسته اینترنت Groper که مخفف آن PING نامیده میشود و بیش از ۳۰ سال است که استفاده میشود.
اولین نسخه منتشر شده نرمافزار دامنه عمومی بود. تمام نسخههای بعدی تحت مجوز BSD مجوز گرفتهاند.
پینگ اولین بار در 4.3BSD قرار گرفت.[2]
نسخه "FreeDOS" توسط Erick Engelke ساخته شده و تحت GPL مجوز دارد.[3]
تیم کرافورد نسخه "ReactOS" را توسعه داد. تحت مجوز MIT مجوز دارد.[4]
RFC 1122 باعث میشود که هر میزبان باید درخواستهای پژواک ICMP را پردازش کند و در ازای آن پاسخهای اکو را صادر کند.[5]
در زیر خروجی اجرای پینگ در 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، از جمله مقدار خاموش کننده) است، بنابراین برنامه پینگ میتواند پاسخها را با درخواستهای اصلی مطابقت دهد.[6]
بیت 0 – ۷ | بیت 8 – ۱۵ | بیت 16 – ۲۳ | بیت 24 – ۳۱ | |
---|---|---|---|---|
سرتیتر {{سخ}} (20 بایت) |
نسخه / IHL | نوع خدمات (ToS) | طول | |
شناسایی | پرچمها و جبرانها | |||
زمان زندگی (TTL) | پروتکل | سربرگ چک کردن سربرگ | ||
آدرس IP منبع | ||||
نشانی آی پی مقصد | ||||
سربرگ ICMP {{سخ}} (8 بایت) |
نوع پیام | کد | مجموع ارقام | |
دادههای سرصفحه | ||||
محموله ICMP {{سخ}} (اختیاری) |
دادههای محموله |
بیت 0 – ۳ | بیت 4 – ۷ | بیتهای 8 – ۱۱ | بیت 12 – ۱۵ | بیت 16 – ۲۳ | بیت 24 – ۳۱ | |
---|---|---|---|---|---|---|
سرتیتر {{سخ}} (40 بایت) |
نسخه | کلاس ترافیک | برچسب جریان | |||
طول محموله | سربرگ بعدی | حد هاپ | ||||
آدرس منبع | ||||||
آدرس مقصد | ||||||
سربرگ ICMP6 {{سخ}} (8 بایت) |
نوع پیام | کد | مجموع ارقام | |||
دادههای سرصفحه | ||||||
محموله ICMP6 {{سخ}} (اختیاری) |
دادههای محموله |
ترکیب عمومی بسته ICMP:[7]
درخواست echo ("پینگ") یک پیام ICMP / ICMP6 است.
۰۰ | ۰۱ | ۰۲ | ۰۳ | ۰۴ | ۰۵ | ۰۶ | ۰۷ | ۰۸ | ۰۹ | ۱۰ | ۱۱ | ۱۲ | ۱۳ | ۱۴ | ۱۵ | ۱۶ | ۱۷ | ۱۸ | ۱۹ | ۲۰ | ۲۱ | ۲۲ | ۲۳ | ۲۴ | ۲۵ | ۲۶ | ۲۷ | ۲۸ | ۲۹ | ۳۰ | ۳۱ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
نوع = 8 (IPv4، ICMP) 128 (IPv6، ICMP6) | کد = ۰ | مجموع ارقام | |||||||||||||||||||||||||||||
مشخص کننده | شماره ترتیب | ||||||||||||||||||||||||||||||
ظرفیت ترابری |
مشتری میتواند از شناسه و شماره توالی برای مطابقت دادن پاسخ با درخواستی که باعث پاسخ شدهاست استفاده کند. در عمل، اکثر سیستمهای لینوکس از یک شناسه منحصر به فرد برای هر فرایند پینگ استفاده میکنند. ویندوز از یک شناسه ثابت که بین نسخههای ویندوز متفاوت است و از یک شماره توالی که فقط در زمان راه اندازی مجدد تنظیم میشود، استفاده میکند.
پاسخ اکو یک پیام ICMP است که در پاسخ به درخواست اکو تولید میشود. این برای همه میزبانها اجباری است و باید شامل محموله دقیق دریافت شده در درخواست باشد.
۰۰ | ۰۱ | ۰۲ | ۰۳ | ۰۴ | ۰۵ | ۰۶ | ۰۷ | ۰۸ | ۰۹ | ۱۰ | ۱۱ | ۱۲ | ۱۳ | ۱۴ | ۱۵ | ۱۶ | ۱۷ | ۱۸ | ۱۹ | ۲۰ | ۲۱ | ۲۲ | ۲۳ | ۲۴ | ۲۵ | ۲۶ | ۲۷ | ۲۸ | ۲۹ | ۳۰ | ۳۱ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
نوع = 0 (IPv4، ICMP) 129 (IPv6، ICMP6) | کد = ۰ | مجموع ارقام | |||||||||||||||||||||||||||||
مشخص کننده | شماره ترتیب | ||||||||||||||||||||||||||||||
ظرفیت ترابری |
میزان بار بسته بهطور کلی با کارکترهای ASCII پر میشود، همانطور که خروجی ابزار tcpdump در ۳۲ بایت آخر مثال زیر نشان میدهد (پس از هدر هشت بایت ICMP با شروع 0x0800):
16:24:47.966461 IP (tos 0x0, ttl 128, id 15103, offset 0, flags [none], proto: ICMP (1), length: 60) 192.168.146.22 > 192.168.144.5: ICMP echo request, id 1, seq 38, length 40 0x0000: 4500 003c 3aff 0000 8001 5c55 c0a8 9216 E..<:..... \U.... 0x0010: c0a8 9005 0800 4d35 0001 0026 6162 6364 ......M5... &abcd 0x0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst 0x0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi
محموله میتواند شامل یک مهر زمان باشد که زمان انتقال و یک شماره توالی را نشان میدهد، که در این مثال یافت نمیشود.
محموله ممکن است شامل یک بسته جادویی برای پروتکل Wake-on-LAN باشد، اما کمترین حالت محموله بیش از آن است که نشان داده شود. اگر میزبان به حالت "خواب زمستانی یا hibernation" رفته باشد، اکو معمولاً هیچ پاسخی دریافت نمیکند، اما اگر رابط آن برای پذیرش درخواستهای بیدارسازی پیکربندی شود، میزبان از حالت خواب بیدار میشود. اگر میزبان قبلاً فعال و پیکربندی شده باشد تا بتواند به بستههای ورودی "ICMP درخواست اکو" پاسخ دهد، پاسخ برگردانده شده باید شامل همان محموله باشد. با تکرار یک درخواست جدید، پس از مدتی تأخیر، برای اینکه میزبان بتواند خدمات شبکه خود را از سر بگیرد، و همینطور برای تشخیص اینکه میزبان از راه دور بیدار شدهاست یا خیر، استفاده شود.
برای انجام یک حمله منع سرویس، یک مهاجم درخواستهای پینگ را در سریعترین زمان ممکن ارسال میکند، تا قربانیان را با درخواستهای اکو ICMP غافلگیر کند. به این روش "سیل پینگ یا ping flood" گفته میشود.
از درخواستهای پینگ به چندین آدرس و همینطور رفت و برگشت پینگ، میتوان برای به دست آوردن لیستی از همه میزبانهای شبکه استفاده کرد.