پینگ

از ویکی‌پدیا، دانشنامهٔ آزاد


پینگ
ورژن دی.او.اس (داس) پینگ
ورژن دی.او.اس (داس) پینگ
نویسنده(های) اصلیMike Muuss
توسعه‌دهنده(ها)نرم‌افزارهای متن‌باز و توسعه دهندگان تجاری
انتشار ابتدایی۱۹۸۳؛ ۳۸ سال پیش (۱۹۸۳)
بن‌سازه رایانشچند دستگاهی
گونهفرمانش
پروانهدامنه عمومی, بی اس دی, جی پی ال, ام آی تی

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

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

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

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

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

تاریخچه[ویرایش]

این ابزار پینگ توسط مایک مووس در دسامبر 1983 در آزمایشگاه تحقیقات بالستیک ، آزمایشگاه تحقیقات ارتش ایالات متحده ، نوشته شده است. اظهارات دیوید میلز در مورد استفاده از بسته های echo ICMP برای تشخیص و اندازه گیری شبکه IP ، Muuss را وادار به ایجاد یک ابزار برای عیب یابی مشکلات شبکه میکرد. نویسنده آن را به دلیل صدایی که سونار می سازد ، اینگونه نامگذاری کرده است ، زیرا روش آن مشابه با اکو محل سونار است. [۱] بسته اینترنت Groper که مخفف آن PING نامیده میشود و بیش از 30 سال است که استفاده می شود.

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

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

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

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

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

مثال استعلام[ویرایش]

در زیر خروجی اجرای پینگ در Linux برای ارسال پنج کاوشگر (فاصله 1 ثانیه به طور پیش فرض ، تنظیم از طریق -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

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

در این مثال ، کوتاهترین زمان رفت و برگشت 9.674 میلی ثانیه ، متوسط 10.968 میلی ثانیه و حداکثر مقدار آن 7.726 میلی ثانیه بوده است. اندازه گیری دارای انحراف استاندارد 0.748 میلی ثانیه بود.

نشانه های خطا[ویرایش]

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

نتایج احتمالی پینگ نشان دهنده یک مشکل شامل موارد زیر است:

  • H, !N or !P – میزبان ، شبکه یا پروتکل غیرقابل دسترسی است
  • S – مسیر منبع ناموفق بود
  • F – تکه تکه شدن لازم است
  • U or !W – شبکه / میزبان مقصد ناشناخته است
  • I – میزبان منبع جدا شده است
  • A – ارتباط با شبکه مقصد از نظر مدیریت ممنوع است
  • Z – ارتباط با میزبان مقصد از نظر مدیریت ممنوع است
  • Q – برای این ToS شبکه مقصد غیرقابل دسترسی است
  • T – برای این ToS میزبان مقصد غیرقابل دسترسی است
  • X – ارتباطات از نظر اداری ممنوع است
  • V – نقض اولویت میزبان
  • C – قطع اولویت در اثر

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

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

قالب پیام[ویرایش]

بسته ICMP[ویرایش]

دیتاگرام IPv4
بیت 0 – 7 بیت 8 – 15 بیت 16 – 23 بیت 24 – 31
سرتیتر



</br> (20 بایت)
نسخه / IHL نوع خدمات (ToS) طول
شناسایی پرچم ها و جبران ها
زمان زندگی (TTL) پروتکل سربرگ چک کردن سربرگ
آدرس IP منبع
نشانی آی پی مقصد
سربرگ ICMP



</br> (8 بایت)
نوع پیام کد مجموع ارقام
داده های سرصفحه
محموله ICMP



</br> ( اختیاری )
داده های محموله
دیتاگرام IPv6
بیت 0 – 3 بیت 4 – 7 بیت های 8 – 11 بیت 12 – 15 بیت 16 – 23 بیت 24 – 31
سرتیتر



</br> (40 بایت)
نسخه کلاس ترافیک برچسب جریان
طول محموله سربرگ بعدی حد هاپ
آدرس منبع
آدرس مقصد
سربرگ ICMP6



</br> (8 بایت)
نوع پیام کد مجموع ارقام
داده های سرصفحه
محموله ICMP6



</br> ( اختیاری )
داده های محموله

ترکیب عمومی بسته ICMP: [۷]

  • سربرگ IPv4 (به رنگ آبی): پروتکل روی 1 (ICMP) و نوع سرویس روی 0 تنظیم شده است.
  • سربرگ IPv6 (به رنگ آبی): عنوان بعدی روی 58 تنظیم شده است (ICMP6)
  • سربرگ ICMP (با رنگ قرمز):
    • نوع پیام ICMP (8 بیت)
    • کد (8 بیت)
    • Checksum (16 بیت) ، 16 بیتی مکمل یک مجموعه مکمل بسته است. برای IPv4 ، این از پیام ICMP با شروع با قسمت Type [۸] ( سربرگ IP موجود نیست). برای IPv6 این از پیام ICMP محاسبه می شود که با یک "عنوان شبه" IPv6 اضافه می شود. [۹]
    • قسمت Header Data (32 بیت) که در این حالت (درخواست و پاسخ ICMP) ، از شناسه (16 بیت) و شماره توالی (16 بیت) تشکیل خواهد شد.
  • محموله ICMP: محموله برای انواع مختلف پاسخ ها ، می تواند یک طول دلخواه باشد.
  • با این حال ، بسته های شامل "IP و ICMP" باید کمتر از حداکثر واحد انتقال شبکه باشد در غیر اینصورت ممکن است خطر تکه تکه شدن (تقسیم ip) رخ دهد.

درخواست اکو[ویرایش]

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

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
نوع = 8 (IPv4 ، ICMP) 128 (IPv6 ، ICMP6) کد = 0 مجموع ارقام
مشخص کننده شماره ترتیب
ظرفیت ترابری

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

پاسخ اکو[ویرایش]

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

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
نوع = 0 (IPv4 ، ICMP) 129 (IPv6 ، ICMP6) کد = 0 مجموع ارقام
مشخص کننده شماره ترتیب
ظرفیت ترابری
  • "شناسه و شماره توالی" می تواند توسط مشتری استفاده شود تا هر درخواست اکو را با پاسخ خود مرتبط کند.

ظرفیت ترابری[ویرایش]

میزان بار بسته به طور کلی با کارکتر های ASCII پر می شود ، همانطور که خروجی ابزار tcpdump در 32 بایت آخر مثال زیر نشان می دهد ( پس از هدر هشت بایت 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" گفته می شود.

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

لینک های خارجی[ویرایش]

  1. ۱٫۰ ۱٫۱ 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. خطای یادکرد: برچسب <ref> نامعتبر؛ نام «ping» چندین بار با محتوای متفاوت تعریف شده‌است. (صفحهٔ راهنما را مطالعه کنید.).
  2. "man page ping section 8". www.manpagez.com.
  3. "ibiblio.org FreeDOS Package -- ping (Networking)". www.ibiblio.org.
  4. "GitHub - reactos/reactos: A free Windows-compatible Operating System". 8 August 2019.
  5. "RFC 1122 - Requirements for Internet Hosts -- Communication Layers". p. 42. Retrieved 2012-03-19. Every host MUST implement an ICMP Echo server function that receives Echo Requests and sends corresponding Echo Replies.
  6. "ICMP: Internet Control Message Protocol". repo.hackerzvoice.net. 13 January 2000. Archived from the original on 4 August 2016. Retrieved 4 December 2014.
  7. "RFC 792 - Internet Control Message Protocol". Tools.ietf.org. Retrieved 2014-02-02.
  8. "RFC Sourcebook's page on ICMP". Retrieved 20 December 2010.
  9. "RFC 4443 - Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification". Retrieved 10 April 2020.