الرئيسية » Network » كيف يعمل الـ Ping ؟

كيف يعمل الـ Ping ؟

موضوعنا اليوم قد يكون بالمسمى بسيط لكن فهمه مهم لكل شخص محترف يعمل في مجال الشبكات لانه يعد من أهم الأدوات التى تساعدك في تشخيص الكثير من المشاكل التى تتعرضها أثناء العمل وأنا أتوقع أن كل واحد فينا سأل نفسه هذا السؤال

مقدمة
بداية محور حديثا لن يكون عن برمجة الـ Ping بل عن كيفية عمله في الشبكة
لفهم الـ Ping بشكل أحترافي أكثر يجب أن نتعرف على ماضيه أولا الـ Ping تم كتابته لأول مرة عام 1983 من قبل Mike Muuss بهدف تحديد مواقع الغواصات عن طريق ارسال نبضات صوتية ولندخل أكثر في التفاصيل يجب علينا أن تكون عندنا خلفية بسيطة في مفهوم الطبقات وال TCP/IP

كيف يعمل الـ Ping

كما نعلم جميعا اننا عندما نريد ان نقوم بعمل Ping نبدأ اولا بكتابة كلمة Ping وبعدها نضيف اسم الموقع أو الايبي المراد عمل التجربة عليه وتكون النتيجة على الشكل التالي

تدلنا الصورة السابقة على نجاح العملية  بينما تدلنا الصورة القادمة على فشل العملية

Ping  بشكل عام هو عبارة عن أداة تستخدم  بروتوكول الـ ICMP  أو Internet Control Message Protocol وللذين يجهلون عمل هذا البروتوكول أقول لهم هو عبارة عن بروتوكول يعمل في الطبقة الثالثة Network Layer وهو المسؤول عن إرسال رسائل الأخطاء في الشبكة بشكل عام

ماذا يحدث عندما أقوم بأرسال Ping إلى أحد الايبيات ؟

في الارسال يقوم الـ ICMP بارسال Echo Requests الى الهدف متبوع بي Type 8 , Code 0 طيب ماهي معاني هذه الاشياء ولفهمها سوف نطلع أولا على الجدول التالي وبعدها نكمل

ICMP Message Types

Description

Code

Type

Echo reply (تستخدم للرد على الطلب)

0

0

Destination network unreachable

0

3

Destination host unreachable1
Destination protocol unreachable2
Destination port unreachable3
Fragmentation required, and DF flag set4
Source route failed5
Destination network unknown6
Source host isolated7
موجودة لكن غير مهمة جدا13-8
Source quench04
Redirect Datagram for the Network05
Redirect Datagram for the TOS & network1
Redirect Datagram for the TOS & network2
Redirect Datagram for the TOS & host3
Alternate Host Address06
Echo request (تستخدم الطلب)08
Router Advertisement0

9

Router discovery/selection/solicitation010
TTL expired in transit011
Fragment reassembly time exceeded1
Pointer indicates the error012
Fragment reassembly time exceeded1
Bad length2
Timestamp013
Timestamp reply014
Information Request015
Information Reply016
Address Mask Request017
Address Mask Reply018

طيب بعد أطلاعنا على هذا الجدول المعقد ماذا نستطيع ان نفهم ؟

لكي نفهم العملية بشكل صحيح يجب علينا ان نضع الـ Header امامنا ونتخيل ماهي محتوياته عند ارسال الطلب وهي بالشكل التالي سوف تكون

ICMP Echo Request

Header ChecksumCode = 0Type = 8
Sequence NumberIdentifier

Data

عند ارسالنا للطلب أو التحقق من الايبي المطلوب يقوم الـ ICMP بتحديد الـ Type ثمانية وهي يدل على ان هذه الباكيت هي للطلب أما بالنسبة للكود فهو صفر حسب الجدول السابق الذي يوضح وبشكل منطقي طبعا انه لايوجد خيارات عند الطلب

بعكس رقم الـ Type   3 وهو المسؤول عن عدم إكتمال الـ Ping ونجد في خانة الـ Code هناك عدة خيارات تدل على الخطأ بالضبط

ونستنتج ان خانة الـ Type تحدد نوع الرسالة في بروتوكول ICMP بينما خانة الـ Code تستخدم اذا كان هناك خيارات متاحة في هذا النوع من الرسائل

اما بالنسبة لباقي الخانات في الـ Header فهي تقريبا معروفة عند الجميع مثل

Header Checksum المسؤولة عن error detection

Identifier وهي في الاغلب تكون 256 وهي تحوي على process ID

Sequence Number تبدأ بصفر وتزيد مع مرات الطلب Echo

طيب السؤال الان كيف تتم عمية الرد

الجواب ابسط بكثير بعد مافهمنا كيفية الطلب لان الموضوع ببساطة سوف يكون نفس الشيء مع تغيير الـ Type  والـ Code في حال كان هناك مشكلة في الوصول ولو نظرنا الى هذا الـ Header

ICMP Echo Request

Header Checksum

Code = 0

Type = 0

Sequence Number

Identifier

Data

سوف نلاحظ ان العملية ناجحة والطلب قد تم  لاننا نرى ان الـ Type  يحمل الرقم 0 وبمراجعة الجدول سوف نجد انه يدل على ان العملية تمت والهدف قام بالرد على الطلب

لكن لو عرضت عليك هذا الجدول ماذا برئيك سوف يحدث ؟

ICMP Echo Request

Header Checksum

Code = 1

Type = 3

Sequence Number

Identifier

Data

الجواب طبعا سوف يكون ان عملية الطلب لم تتم والسبب عدم القدرة على الوصول للهدف (راجع الجدول)

النقطة الاخيرة وهي الـ TTL

أكثر معضلة واجهتها في هذا الموضوع والاجابات تعددت في الانترنت وفي غوغل فمنهم من يقول هي عدد الهوب للوصول للهدف وهناك من يقول هي الوقت الذي يستغرقه الطلب للوصول للهدف وبعد البحث والتجربة توصلت الى انها قيمة تحدد من قبل كل روتر أو جهاز وهي تزيد او تنقص حسب مسار الباكيت الى الهدف

وكمثال على ذلك قم بعمل Ping 127.0.0.1  اي لووباك على الجهاز لوجدتها 128 وهذا يعني أن قيمة الـ TTL في ويندوز تساوي 128ينما القيمة في لينوكس تساوي 64

وللتأكد من هذا الموضوع قمت بهذه التجربة الصغيرة

Ping –i 5 networkset.wordpress.com

وكما هو موضح انا قمت بتحديد ال TTL بي 5

والنتيجة كانت على الشكل التالي

لم يستطيع الوصول للهدف لان قيمة الTTL  كانت قليلة ولم يستطع الطلب الوصول للهدف ولكي تستطيع ان تعرف مدى فهمك للموضوع حدد ماهو الـ Type  و الـ Code الذين يتطابقان مع آخر مثال ؟

تم بحمد الله ودمتم بود

Print Friendly, PDF & Email

عن Ayman Alnaimi أيمن النعيمي

مهندس كمبيوتر سوري ومقيم حاليا في قطر , باحث ومطور للمحتوى العربي على الأنترنت, أهدف إلى رفع مستوى الأمة العربية ومساعدتها في النهضة العلمية, أغلب أهتماماتي في الشبكات وتحديدا الهاردوير منها وأقضى معظم وقتي في القراءة والدراسة والعمل وأؤمن بأن الثورة لو كانت لتكون فهي تبدأ بالقراءة ويليها الكتابة وبدون الآخيرة لن يكون هناك ثورة. للتواصل admin@networkset.net & networkset@hotmail.com

20 تعليق

  1. موضوع أشكرك عليه أستاذ أيمن
    الصراحة اول مرة اعرف كيف يعمل الــping بالشكل المفصل
    جزاك الله خير على هذا الشرح
    بانتظار المزيد

  2. جميل موضوعك أخ أيمن بارك الله فيك
    ممكن الموضوع دا يكون مقدمه سريعه بردو للامر ping
    http://forum.mans-fci.info/viewtopic.php?f=12&t=15779
    تحياتى 🙂

  3. أخي الموضوع الذي وضعته يشرح كيف نستخدم الـ Ping
    وأعتقد ان الفكرة مختلفة تماما فأنا أشرح كيفي يعمل على كل حال شكرا لك
    أخي عثمان شكرا على المرور

  4. @ Networkset
    تمام كلامك يا فندم وأنا لم أقل غير ذلك 🙂

  5. موضوع جميل و لو كان التطبيق على لينيكس لكان أفضل
    لينيكس هو الشبكة و الشبكة هي لينيكس

    • اخي العزيز أرجو منك ان تعيد قراءة الموضوع وعنوانه مرة ثانية
      لان لم أشرح كيفية تطبيق الـ Ping
      فكرة موضوعي هي كيف يعمل الـ Ping في الشبكة
      وهو واحد في كل أنطمة التشغيل والروترات الخ…

  6. ايهاب النشاوي

    شرح كويس قووي وشكرا ليك بس الموضوع لسه فيه كتير
    في امر ping ممكن نتحكم في عد الباكت اللي بتتبعت لل destination

    لما نشوووف الردود

  7. والله أنا مستغرب من الردود على هذا الموضوع
    لاني للمرة الثالثة أكتب أن هذا الموضوع ليس شرح أستخدام أمر الـ Ping
    انا أشرح كيف يعمل الـ Ping في الشبكة !!!!!!!!!!!!!
    أرجو أن تكون الصورة قد وضحت

  8. جزاك الله خيرا

  9. أشكرك أخي على المقالة الجميلة

    لكنّ أودّ أن أسألك سؤال عن الـicmp. قرأت أنّ حجم حُزمة الـecho request محدود
    بـ32 بايت. مالذي سيحدث لو أرسلنا حُزمة أعلى من هذا الرقم ؟

  10. مقالة جيدة يابشمهندس ايمن ولكن اظن تحتاج تبسيط اكثر
    فمثلا جزء ال type وال code
    هو طبعا من خصائص بروتوكول icmp
    انا كفنى شبكات ممكن استفاد من الكلام ده ازاى
    حيث اننى عند عمل بينج لايظهر اى من الكلام هذا امامى

    • لو وضعنا ميزان ماذا سوف أستفيد من المقالة فهذا معناه ان 70 % من مقالات المدونة غير مفيد أخي محمد , هذه مقالة تتكلم عن العملية التى تجري في عملية البينغ وآلية عملها , بالنسبة للتبسيط فالموضوع بسيط جدا لديك الجدول ومن خلاله تستطيع ان تعلم ماذا سوف يختار البروتوكول في كل عملية يتم تنفيذها .

  11. تسلم ايدك بشمهندس ا ايمن

  12. thanks for Interest in the commentary

  13. جزاك الله م/ ايمكن كل خير ….واتمني منكم المزيد فكم تعلمنا منكم ولم نركم وكم دعونا لكم ولم ترونا ….!

  14. السلام عليكم
    اني من اشد المعجبين بما تكتبون من مواضيع قيمة ومفيدة ومن المتابعين لمجلتكم القيمة ونشكر جهودكم في تقديم كل ماهو جديد في عالم الشبكات

  15. جزاك الله خيرا

  16. TTL expirée lors du transit
    type =11
    code =0

  17. المزيد

اضف رد

لن يتم نشر البريد الإلكتروني . الحقول المطلوبة مشار لها بـ *

*

x

‎قد يُعجبك أيضاً

VPNمجاني باستخدام برنامج الـ Team Viewer

أصبح برنامج team Viewer عصب عمل أغلب مهندسي الكمبيوتر وأصبح الاعتماد عليه كبير في عمليات ...

هل لدي Loop في الشبكة ؟

اليوم قصدت أحد الشركات التى أتصلت بي بسبب مشكلة في أجهزة الشركة جميعها وهي تقريبا ...

الجيل الخامس من تقنية البلوتوث Bluetooth 5.0

تعتبر الـ IoT أو الـ Internet of Things أحد التراندات العالمية والتى سوف تشهد طلب ...