دليلك لفهم أمر ping واستخدامه


محمد أحمد العيل

يحظى أمر ping بشعبية كبيرة لدى مديري الشبكات وممتهني التقنية لما يقدمه من خدمات في سبيل فحص الاتصال بين مضيفين Host. يقدّم هذا المقال تفاصيل أكثر عن هذا الأمر شائع الاستخدام.

ping-command.png

ماهو أمر ping وكيف يعمل؟

يعمل أمر ping على فحص إمكانية الوصول إلى عنوان IP، مضيف أو خادوم انطلاقا من شبكتك. يكثُر استخدام الأمر للتدقيق في أخطاء الشبكة وتحديد مشاكلها. يقوم الأمر على مبدأ عمل سهل ولكنه مفيد؛ إذ يُرسِل حزم بيانات تحوي الرسالة PING إلى عنوان IP (أو المضيف) وينتظر الرد ثم يحسب الفترة الزمنية اللازمة لورود الجواب؛ يُشار لهذه المدّة بـRTT، وهي اختصار Round Trip Time أي زمن الذهاب والإياب؛ تُعرَف هذه المدة أيضا بزمن الوصول Latency.

يعني هذا أن بإمكانك معرفة ما إذا كان يمكن الوصول إلى مضيف من شبكتك وسرعة تلقي الرد منه باستخدام ping. يشير العمل السريع لأمر ping (زمن وصول قصير) إلى أن الاتصال متجاوب أكثر وهي مسألة مهمة في تطبيقات مثل الألعاب على الشبكة. يُقاس زمن الوصول عادة بجزء على ألف من الثانية (ثانية = 1000ms)؛ أزمان وصول أعلى تعني وجود مشاكل في الشبكة.

يتغيّر زمن الوصول حسب عوامل من بينها التوجيه Routing والموقع الجغرافي. ينتج عن تنفيذ أمر ping لتجربة الوصول إلى مضيف في نفس البلد زمن أدنى من مضيف في بلد بقارة أخرى نظرا للموقع الجغرافي والقفزات Hops التي يتضمنها التوجيه.

تأتي أداة ping مثبتة مسبقا على جميع أنظمة التشغيل الحديثة تقريبا ويمكن تنفيذها من سطر الأوامر (الطرفية على الأنظمة الشبيهة بيونكس أو محثّ وندوز Windows prompt).

ملحوظة: يمكن إعداد الخواديم أو المضيفات على حظر (عدم الرد) طلبات ping لأسباب أمنية.

خيارات ping الأساسية

معرفة إصدار ping

يتيح الخيار V- معرفة إصدار ping المثبَّت في النظام:

ping -V

مثال على المخرجات:

ping utility, iputils-s20121221

استخدام أمر ping

المعطى الضروري الوحيد لأمر ping هو اسم المضيف أو عنوان IP المراد فحصُه.

ping example.com

اسم المضيف في المثال أعلاه هو example.com. في ما يلي مثال على مخرجات الأمر:

PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from example.com (93.184.216.34): icmp_seq=1 ttl=42 time=116 ms
64 bytes from example.com (93.184.216.34): icmp_seq=2 ttl=42 time=154 ms
64 bytes from example.com (93.184.216.34): icmp_seq=3 ttl=42 time=163 ms
64 bytes from example.com (93.184.216.34): icmp_seq=4 ttl=42 time=1028 ms
64 bytes from example.com (93.184.216.34): icmp_seq=5 ttl=42 time=768 ms
64 bytes from example.com (93.184.216.34): icmp_seq=6 ttl=42 time=128 ms

ستحتاج لتوقيف تنفيذ الأمر بالضغط على الزرين CTRL و C وإلا فإن الأمر سيستمر في إرسال الحزم.

ملحوظة: توجد اختلافات يسيرة في الأمر بين لينكس ووندوز، يتوقف تنفيذ الأمر في وندوز بعد إرسال أربع حزم مبدئيا.

يظهر ملخّص بالإحصاءات بعد توقف الأمر:

^X^C
--- example.com ping statistics ---
24 packets transmitted, 23 received, 4% packet loss, time 23041ms
rtt min/avg/max/mdev = 114.323/307.465/1057.499/296.627 ms, pipe 2

يتضمن الملخّص:

  • عدد الحزم المُرسَلة Transmitted
  • عدد الحزم المستلمة Received
  • نسبة فقدان الحزم Packet loss
  • الحد الأدنى للمدة الزمنية لوصول الإجابة min.
  • متوسط وصول الإجابة avg.
  • الحد الأقصى للمدة الزمنية لوصول الإجابة max.

تظهر في كل سطر مدة الإجابة وقيمة أخرى باسم ttl. تحدّد القيمة الأخيرة عمر الحزمة (Time To Live). إن انقضت هذه القيمة دون أن يتمكن ping من الاتصال بالوجهة فسيقرّر أنه لا يمكن الوصول إليها. لا يقتصر استخدام هذا المعطى على ping بل مجالات أخرى مثل بروتوكول HTTP و نظام أسماء النطاقات.

لا يختلف فحص الاتصال بجهاز على الشبكة الداخلية عن فعل نفس الشيء بالنسبة لمضيف على الإنترنت. الأمر التالي مثلا يفحص الاتصال بجهاز على الشبكة الداخلية عبر عنوان IP الخاص به:

 
ping 192.168.1.5 

عدد مرات تنفيذ الأمر

السلوك المبدئي لأمر ping إن استخدم بدون خيارات هو الاستمرار في إرسال الحزم إلى أن يتدخل أحد لإيقافه؛ إلا أنه توجد طريقة لتحديد عدد مرات إرسال الحزم.

استخدم الخيار c- متبوعا بعدد على النحو التالي:

ping -c 10 example.com

تظهر المخرجات كالتالي:

PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from example.com (93.184.216.34): icmp_seq=1 ttl=43 time=129 ms
64 bytes from example.com (93.184.216.34): icmp_seq=2 ttl=43 time=127 ms
64 bytes from example.com (93.184.216.34): icmp_seq=3 ttl=43 time=126 ms
64 bytes from example.com (93.184.216.34): icmp_seq=4 ttl=43 time=125 ms
64 bytes from example.com (93.184.216.34): icmp_seq=5 ttl=43 time=284 ms
64 bytes from example.com (93.184.216.34): icmp_seq=6 ttl=43 time=132 ms
64 bytes from example.com (93.184.216.34): icmp_seq=7 ttl=43 time=131 ms
64 bytes from example.com (93.184.216.34): icmp_seq=8 ttl=43 time=130 ms
64 bytes from example.com (93.184.216.34): icmp_seq=9 ttl=43 time=178 ms
64 bytes from example.com (93.184.216.34): icmp_seq=10 ttl=43 time=128 ms

--- example.com ping statistics ---
10 packets transmitted, 10 received, % packet loss, time 9011ms
rtt min/avg/max/mdev = 125.003/149.335/284.433/47.508 ms

ينفَّذ الأمر - كما يظهر - عشر مرات ثم يتوقف ويعطي إحصائيات.

لفعل نفس الشيء على وندوز نضيف الخيار n- بدلا من c-:

ping -n 10 example.com

تعديل حجم حزمة البيانات

يُرسِل أمر ping مبدئيا حزمة بحجم 64 بايت على لينكس، و32 بايت على وندوز. إن أردت تغيير الحجم المبدئي للحزمة على لينكس فيمكنك ذلك باستخدام الخيار s- :

ping -s 100 -c 6 example.com

النتيجة:

PING example.com (93.184.216.34) 100(128) bytes of data.
108 bytes from example.com (93.184.216.34): icmp_seq=2 ttl=51 time=1113 ms
108 bytes from example.com (93.184.216.34): icmp_seq=3 ttl=51 time=253 ms
108 bytes from example.com (93.184.216.34): icmp_seq=4 ttl=51 time=263 ms
108 bytes from example.com (93.184.216.34): icmp_seq=5 ttl=51 time=253 ms
108 bytes from example.com (93.184.216.34): icmp_seq=6 ttl=51 time=1068 ms

--- example.com ping statistics ---
6 packets transmitted, 5 received, 16% packet loss, time 4999ms
rtt min/avg/max/mdev = 253.093/590.201/1113.044/408.995 ms, pipe 2

بالنسبة لوندوز فالخيار المستخدم هو l-:

ping -l 100 -n 6 example.com

زيادة المدة الزمنية أو تقليصها

ينتظر أمر ping مبدئيا ثانية واحدة قبل إرسال الحزمة الموالية إلى الوِجهة. يمكِّن استخدام الخيار i- من زيادة هذا المجال أو تقليصه.

يحدّد الأمر التالي 3 ثوان مجالا بين إرسال حزمتين:

ping -i 3 example.com

يمكننا بنفس الطريقة التسريع من إرسال الحزم بدل انتظار ثانية في كل مرة:

ping -i 0.2 example.com

إغراق الوجهة بحزم ping

تُستخدم هذه الطريقة لاختبار أداء الشبكة. لا ينتظر أمر ping بين إرسال حزمتين إن استخدم الخيار f- بشرط تنفيذه بصلاحيات إدارية:

sudo ping -f example.com

ستلاحظ - حسب جودة الشبكة لديك - نقاطا تتحرك بسرعة. يطبع الأمر نقطة في الطرفية في كل مرة تُرسَل حزمة، وفي كل مرة يرد فيها جواب يُطبع رجوع إلى الخلف (تُحذَف نقطة) وهو ما يعطي فكرة عن عدد الحزم التي لم ترد عنها إجابات؛ وهو ما تمثله النقاط المتبقية.

اضغط زرّي CTRL و C لإيقاف الأمر.

عرض إحصاءات ping فقط

يمكن باستخدام الخيار q- الإبقاء على إحصاءات الأمر فقط دون إظهار معلومات الحزم:

ping -c 5 -q example.com

النتيجة:

PING example.com (93.184.216.34) 56(84) bytes of data.

--- example.com ping statistics ---
5 packets transmitted, 4 received, 20% packet loss, time 6221ms
rtt min/avg/max/mdev = 259.175/723.504/1219.311/460.540 ms, pipe 2

يظهر التقرير فقط في مخرجات الأمر أعلاه.

تحديد مهلة لتنفيذ ping

إذا أردت تحديد مهلة زمنية تظهر بانقضائها إحصاءات أمر ping فيمكنك ذلك بإضافة الخيار w-:

ping -w 6 example.com

يعيّن الخيار w-المدة الزمنية التي يقضيها الأمر في إرسال الحزم. حددنا في المثال أعلاه 6 ثوان سيتوقف بعدها تنفيذ الأمر وتظهر الإحصاءات.

رسائل الخطأ في أمر ping

تظهر عدة رسائل - حسب الحالة - في مخرجات ping، في ما يلي شرح مدلولاتها.

Destination Host Unreachable

تشير الرسالة Destination Host Unreachable (لا يمكن الوصول إلى المضيف الوِجهة) إلى أنه لا توجد طريق من الشبكة المحلية إلى المضيف الذي أرسلت إليه الحزم. يعني هذا عادة أنه يوجد خطأ في الاتصال. إن نفذت أمر ping دون أن تكون متصلا فستظهر هذه الرسالة.

Request timed out

تعني هذه الرسالة Request timed oud (انتهاء مهلة انتظار الرد) أن الأداة لم تحصُل على أجوبة على الحزم التي أرسلتها ضمن المهلة المحدّدة (1 ثانية مبدئيا). توجد عدّة أسباب ممكنة من أبرزها احتقان Congestion في الشبكة، حجب بعض الحزم في الجدار الناري firewall، مشكل في الموجِّه Router وغيرها.

Unknown host / Ping Request Could Not Find Host

تدلّ رسالة الخطأ Unknown host (مضيف غير معروف) أو شبيهتها Ping Request Could Not Find Host (لم يستطع طلب Ping العثور على مضيف) إلى خطأ في اسم المضيف؛ إما لكون اسم المضيف غير موجود أو أنه غير متاح لديك في الشبكة. عند تنفيذ الأمر التالي مثلا (لاحظ الخطأ في كتابة hsoubs):

ping hsoubs.com

تظهر الرسالة: 

ping: unknown host hsoubs.com

خاتمة

يختلف زمن الوصول باختلاف نوعية الشبكة وطريقة الاتصال (ألياف ضوئية، شبكة لا سلكية، … إلخ). إذا كانت الشبكة لديك جيدة فستكون نسبة الحزم المفقودة %0 وستحصُل على زمن وصول ببضعة أجزاء من الثانية.

ترجمة -وبتصرّف- لمقال All About PING Command لصاحبه Mohammad Forhad Iftekher.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن