انتقل إلى محتوى الدرس
الدرس 34
دورة تكنولوجيا الويب

أدوات تشخيص الشبكة وبروتوكول ICMPNetwork Diagnostic Tools and ICMP

تعرّف في هذا الدرس على بروتوكول التحكم ICMP في الطبقة الثالثة، وكيفية فحص الاتصال وزمن الاستجابة بالأمر ping، وتتبع مسار القفزات بالأمر tracert، وفصل أعطال DNS بالأمر nslookup وفق منهجية التشخيص التدريجية.
أقسام الدرس
8
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
3
محتوى الدرس
في هذا الدرس 8تصفّح المواضيع

تخيّل أنك أرسلت طرداً بريدياً عبر سلسلة من مكاتب التوزيع الإقليمية؛ فإذا كان الجسر المؤدي إلى المدينة مغلقاً أو كان عنوان المستلم غير موجود، يُحرر مكتب البريد «إشعار حالة رسمياً» يعيده إليك ليخبرك بسبب تعذر التسليم. في شبكات الكمبيوتر، يعمل بروتوكول الإنترنت (IP) بمبدأ «أفضل جهد» دون آلية مدمجة للإبلاغ عن الأخطاء؛ ولسد هذه الفجوة، تعتمد الشبكات على بروتوكول رسائل التحكم في الإنترنت (Internet Control Message Protocol — ICMP) بوصفه المراقب التشخيصي وساعي تقارير الحالة في طبقة الشبكة ().

وعلى خلاف بروتوكولَي النقل TCP وUDP، فإن بروتوكول ICMP لا ينقل بيانات تطبيقات المستخدم ولا يستخدم أرقام منافذ () مطلقاً؛ بل تُغلَّف رسالته مباشرةً داخل حزمة IPv4 برقم بروتوكول 1 (أو ICMPv6 برقم 58 في شبكات IPv6) لأداء مهمتين رئيسيتين:

  • 1. رسائل الاستعلام والفحص التشخيصي: اختبار جاهزية جهاز بعيد وقياس زمن الاستجابة عبر أدوات مثل أمر ping.
  • 2. رسائل الإبلاغ التلقائي عن الأخطاء: إخطار الجهاز المرسل عندما يعجز موجه () أو خادم عن تسليم حزمة IP بسبب انقطاع المسار أو إغلاق المنفذ أو نفاد عداد القفزات.
مخطط يوضح تغليف بروتوكول ICMP في الطبقة الثالثة وآلية تبادل طلب الصدى (Type 8) ورد الصدى (Type 0) في أمر الفحص ping

تُعد أداة ping (المستوحاة تسميتها من نبضات السونار الصوتية في الغواصات) الأمر الأول الذي يشغّله كل مطور ويب ومدير أنظمة ومحلل أمن سيبراني للتحقق من الاتصال الشبكي. وكما ترسل الغواصة نبضة صوتية وتنتظر ارتداد الصدى لتحديد وجود الهدف وبعده، يرسل أمر ping رسالة طلب صدى (ICMP Echo Request — Type 8, Code 0) إلى عنوان IP أو اسم نطاق محدد، وينتظر من الجهاز المقابل إرجاع رسالة رد الصدى (ICMP Echo Reply — Type 0, Code 0).

ورغم تطابق الآلية الشبكية في جميع الأنظمة، يختلف السلوك الافتراضي للأمر بين نظام ويندوز وأنظمة لينكس وماك كما يتضح في المثال العملي الآتي:

  • في نظام Windows: كتابة الأمر ping example.com ترسل افتراضياً 4 حزم متتالية بحجم ثم تتوقف تلقائياً وتعرض ملخص الإحصائيات. ولتحديد العدد يدوياً نستخدم المعامل -n، وللفحص المستمر حتى الضغط على Ctrl + C نستخدم المعامل -t.
  • في نظامَي Linux وmacOS: يستمر أمر ping في إرسال الحزم بلا توقف حتى تضغط Ctrl + C؛ ولإرسال 4 حزم فقط نمرر معامل العدد ping -c 4 example.com.
نص
# Windows: sends 4 ICMP Echo Requests (32 bytes) by default
C:\> ping -n 4 93.184.216.34
Reply from 93.184.216.34: bytes=32 time=18ms TTL=56
Reply from 93.184.216.34: bytes=32 time=17ms TTL=56
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)

# Linux / macOS: use -c 4 to send 4 probes and stop
$ ping -c 4 93.184.216.34
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=18.2 ms
4 packets transmitted, 4 received, 0% packet loss

يتضمن كل سطر يظهر في مخرجات أمر ping ثلاثة مؤشرات تشخيصية بالغة الأهمية تكشف لك حالة الاتصال وجودة المسار الشبكي بدقة:

  • 1. زمن الرحلة ذهاباً وإياباً (Round-Trip Time — RTT / time=18ms): يقيس الزمن بالمللي ثانية (ms) منذ لحظة خروج طلب الصدى من جهازك حتى عودة الرد من الخادم. داخل الشبكة المحلية (LAN) يكون الزمن عادةً بين 1ms و3ms، ومع الخوادم الإقليمية بين 15ms و60ms، بينما يشير ارتفاعه فوق 200ms إلى بطء ملحوظ يؤثر على سرعة استجابة تطبيقات الويب وجلسات الإدارة عن بُعد.
  • 2. عمر الحزمة أو عداد القفزات (Time To Live — TTL=56): هو رقم داخل رأس حزمة IP يمنع دوران الحزم إلى ما لا نهاية إذا حدثت حلقة توجيه مغلقة؛ إذ يبدأ المرسل بقيمة ابتدائية قياسية (غالباً 64 في أنظمة لينكس وماك أو 128 في ويندوز)، وينقص كل راوتر في الطريق هذا العداد بمقدار 1. فإذا وصلك الرد بقيمة TTL=56 من خادم لينكس، فهذا يعني أن الحزمة عبرت موجهات في طريقها!
  • 3. نسبة فقدان الحزم (Packet Loss — 0% loss): تعبر عن نسبة الرسائل التي أُرسلت ولم يعد لها رد. الاتصال السليم يسجل 0% loss، أما وجود فقد متقطع (مثل 25% أو 50%) فيدل على تشويش في إشارة Wi-Fi أو تلف في الكابل أو ازدحام شديد يبطئ تحميل صفحات الويب.

عندما يفشل أمر ping، فإن قراءة نص رسالة الخطأ بدقة تحدد لك موضع العطل فوراً بدلاً من التخمين العشوائي:

  • 1. انتهاء مهلة الطلب (Request timed out): تعني أن جهازك أرسل طلب الصدى وانتظر انتهاء المهلة الزمنية (عادةً ) دون استلام أي رد. أشهر أسبابها: إيقاف تشغيل الجهاز الهدف، أو وجود جدار ناري () يسقط حزم ICMP بصمت، أو انقطاع مسار العودة.
  • 2. تعذر الوصول إلى المضيف الوجهة (Destination host unreachable — ICMP Type 3, Code 1): تعني أن جهازك نفسه أو أحد الموجهات في الطريق أرسل تقرير خطأ صريحاً يفيد بعدم وجود مسار إلى الهدف. إذا ظهر السطر متبوعاً بعنوان جهازك المحلي، فهذا يعني أن الهدف في نفس الشبكة لم يرد على نداء ARP؛ وإذا جاء من عنوان راوتر، فالراوتر لا يملك مسار توجيه لتلك الشبكة.
  • 3. نفاد عمر الحزمة أثناء العبور (TTL expired in transit — ICMP Type 11, Code 0): تعني أن عداد القفزات TTL وصل إلى الصفر قبل بلوغ الهدف، وهو ما يكشف عن وجود حلقة توجيه مفرغة () بين الموجهات.
  • 4. تعذر العثور على اسم المضيف (Ping request could not find host): انتبه إلى أن هذه الرسالة تسبق إرسال أي حزمة ICMP أصلاً؛ فهي تعني أن نظام DNS فشل في ترجمة اسم الموقع إلى عنوان IP!

بينما يخبرك أمر ping بنجاح أو فشل الوصول إلى الوجهة النهائية، فإنه لا يكشف لك قائمة الموجهات الوسيطة — أي القفزات الشبكية (Network Hops) — التي تعبرها الحزمة، ولا يحدد لك أي راوتر في الطريق هو المتسبب في البطء أو القطع. وهنا يأتي دور أمر tracert في نظام ويندوز (وأمر traceroute في نظامَي لينكس وماك).

كيف يجبر أمر التتبع كل راوتر في الطريق على الإفصاح عن عنوان IP الخاص به؟ يعتمد على حيلة هندسية ذكية توظف عداد العمر TTL في رأس حزمة IP كما يوضح المخطط والمثال الآتيان:

  • الدفعة الأولى (TTL = 1): يرسل جهازك ثلاث حزم نحو الخادم الهدف بعداد عمر يساوي 1؛ وبمجرد وصولها إلى أول راوتر (البوابة المحلية — القفزة 1)، ينقص العداد إلى 0 فيسقط الحزمة ويعيد لجهازك رسالة ICMP Time Exceeded (Type 11, Code 0) تحمل عنوان IP الخاص بالراوتر الأول!
  • الدفعة الثانية (TTL = 2): يرسل جهازك ثلاث حزم جديدة بقيمة TTL=2؛ فتعبر الراوتر الأول وتنفد عند الراوتر الثاني (مقسم مزود الخدمة ISP)، فيرد بدوره كاشفاً عنوانه وزمن استجابته.
  • الزيادة المتدرجة حتى بلوغ الهدف: يستمر البرنامج في زيادة TTL بواحد في كل خطوة حتى تصل الحزمة إلى الخادم النهائي نفسه فيرد بنجاح ويكتمل رسم خريطة المسار.
مخطط يوضح كيف يزيد أمر tracert / traceroute قيمة TTL تدريجياً (1 ثم 2 ثم 3) لاستقبال ردود ICMP Time Exceeded من كل قفزة راوتر
نص
# Windows: tracert (-d skips slow reverse-DNS lookup per hop)
C:\> tracert -d 93.184.216.34
  1     1 ms     1 ms     1 ms  192.168.1.1
  2     9 ms     8 ms     9 ms  10.20.0.1
  3     *        *        *     Request timed out.
  4    18 ms    17 ms    18 ms  93.184.216.34
Trace complete.

من أكثر الأخطاء التشخيصية شيوعاً عندما يفشل المتصفح في فتح موقع ويب أن يظن المستخدم أن «الإنترنت مقطوع بالكامل»، بينما يكون خط الاتصال والراوتر سليمَين تماماً ويكمن العطل في توقف خادم نظام أسماء النطاقات (DNS) فقط! ولذلك تنص القاعدة الذهبية في تشخيص الشبكات على فصل فحص الاتصال الرقمي عن فحص ترجمة الأسماء:

  • إذا نجح الأمر ping 8.8.8.8 وفشل الأمر ping example.com، فإن اتصال الإنترنت والتوجيه يعملان بكفاءة، وتنحصر المشكلة في خدمة DNS.
  • يتيح لك أمر nslookup example.com (المتوفر في ويندوز ولينكس وماك) وأمر dig example.com الاستعلام المباشر من خادم النطاقات لعرض عنوان خادم DNS المستجيب وعناوين IP المقابلة لاسم الموقع.
  • ويمكنك تمرير عنوان خادم DNS خارجي كمعامل ثانٍ (مثل nslookup example.com 8.8.8.8 أو 1.1.1.1) لاختبار ما إذا كان خادم DNS التابع لمزود الخدمة المحلي هو المتعطل.
نص
# 1. Query default configured DNS server for example.com
C:\> nslookup example.com
Server:  dns.google
Address:  8.8.8.8
Non-authoritative answer:
Name:    example.com
Address:  93.184.216.34

# 2. Test resolution explicitly against Cloudflare DNS (1.1.1.1)
C:\> nslookup example.com 1.1.1.1

بدلاً من تجربة أوامر عشوائية أو إعادة تشغيل الخوادم بلا دليل، يتبع مهندسو الشبكات ومطورو الأنظمة منهجية السلم التشخيصي ذي الـ 5 خطوات (من الداخل إلى الخارج)، وهي منهجية تعزل موضع العطل بدقة خلال أقل من دقيقة:

  • الخطوة 1 — فحص برمجيات الشبكة الداخلية (ping 127.0.0.1): التأكد من سلامة حزمة بروتوكولات TCP/IP داخل نظام التشغيل نفسه عبر عنوان الاسترجاع الذاتي.
  • الخطوة 2 — فحص كارت الشبكة والبوابة المحلية (ipconfig / ip a ثم ping 192.168.1.1): التحقق من حصول جهازك على عنوان IP محلي صحيح والوصول إلى الراوتر داخل الشبكة المحلية.
  • الخطوة 3 — فحص الخروج للإنترنت عبر عنوان رقمي (ping 8.8.8.8 وtracert): التأكد من قدرة الراوتر ومزود الخدمة ISP على توجيه الحزم خارجياً بمعزل عن DNS.
  • الخطوة 4 — فحص ترجمة النطاقات (nslookup example.com): التأكد من نجاح تحويل اسم الموقع إلى عنوان IP.
  • الخطوة 5 — فحص منافذ التطبيق والمقابس النشطة (netstat -ano / ss -tulnp / curl -I): التحقق من أن خادم التطبيق يعمل فعلياً ويستمع على المنفذ المخصص له.
مخطط السلم التشخيصي ذي الـ 5 خطوات بدءاً من فحص 127.0.0.1 ثم البوابة المحلية فالعنوان الخارجي ثم DNS وأخيراً منفذ التطبيق

جرّب الآن في المعمل التفاعلي لتشخيص الشبكة أدناه استكشاف أربعة سيناريوهات واقعية لأعطال الشبكة وكيف تكشف الأداة المناسبة السبب الجذري لكل عطل:

معمل تشخيص أعطال الشبكة وأوامر ICMP التفاعلي

لماذا ترفض كثير من الخوادم السحابية والمنصات الإنتاجية الرد على أمر ping رغم أن مواقعها تفتح في المتصفح بسرعة وكفاءة؟ من منظور الأمن السيبراني، يمكن إساءة استغلال رسائل ICMP غير المقيدة في عدة هجمات:

  • 1. الاستطلاع الشبكي (Ping Sweep): إرسال طلبات صدى آلية على نطاق كامل من عناوين IP لاكتشاف الأجهزة النشطة على الشبكة تمهيداً لفحص منافذها.
  • 2. هجمات إغراق الخدمة (ICMP Flood وSmurf Attack): إغراق الخادم بسيل ضخم من رسائل ICMP لاستنزاف سعة النطاق الترددي () أو معالج الجهاز.
  • 3. التهريب الخفي للبيانات (ICMP Tunneling): إخفاء أوامر التحكم أو البيانات المسروقة داخل حقل الحمولة في رسائل Echo Request/Reply في الشبكات التي لا تراقب حركة ICMP.

ولذلك يضبط مهندسو الأمن الجدران النارية على تحديد معدل رسائل ICMP () أو حجب طلبات Echo Request (Type 8) القادمة من الإنترنت العام مع الإبقاء على رسائل التجزئة الضرورية (Type 3 Code 4)، ويعتمدون داخل الخادم على أوامر فحص المقابس النشطة ss -tulnp وnetstat -ano كما في المثال الآتي:

نص
# Inspect active listening TCP/UDP sockets & owning process IDs
$ ss -tulnp
Netid  State   Local Address:Port   Process
tcp    LISTEN  0.0.0.0:443          users:(("nginx",pid=1042))
tcp    LISTEN  127.0.0.1:5432       users:(("postgres",pid=884))

# Windows equivalent to list ports, states, and PIDs
C:\> netstat -ano | findstr :443
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

في ملخص الدرس، تعرفنا على دور بروتوكول التحكم ICMP في الطبقة الثالثة، وآلية عمل أمر ping عبر رسالتَي طلب الصدى ورد الصدى (Type 8 / Type 0) وقراءة مؤشرات RTT وTTL ونسبة الفقد، وكيف يرسم أمر tracert خريطة القفزات عبر رسائل Time Exceeded (Type 11)، وكيف يعزل أمر nslookup أعطال DNS ضمن منهجية التشخيص ذات الـ 5 خطوات. الخطوة التالية: انتقل الآن إلى الدرس السادس والعشرين مشاركة الملفات عبر شبكات الكمبيوتر (File Sharing over Computer Networks) لتتعرف على بروتوكولات SMB وNFS ومسارات الشبكة القياسية وصلاحيات المشاركة.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات8

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 8 مفهومةأول بطاقة، أول خطوة
01 Internet Control Message Protocol (ICMP) بروتوكول رسائل التحكم في الإنترنت (ICMP)
بروتوكول يعمل في طبقة الشبكة الثالثة (برقم بروتوكول 1 داخل IP) للإبلاغ عن أخطاء التسليم وإجراء الفحوصات التشخيصية دون استخدام أرقام منافذ.
للمراجعة
02 Echo Request & Echo Reply طلب الصدى ورد الصدى (Echo Request / Reply)
زوج من رسائل الاستعلام في بروتوكول ICMP (النوع 8 والنوع 0) تستخدمهما أداة ping للتحقق من إمكانية الوصول وقياس زمن الذهاب والإياب.
للمراجعة
03 Round-Trip Time (RTT) زمن الرحلة ذهاباً وإياباً (RTT)
المدة الزمنية بالمللي ثانية (ms) التي تستغرقها الحزمة للانتقال من الجهاز المرسل إلى الخادم الوجهة مضافاً إليها زمن عودة الرد.
للمراجعة
04 Time To Live (TTL) عداد عمر الحزمة (TTL)
عداد رقمي في رأس حزمة IP ينقص بمقدار 1 عند عبور كل راوتر؛ وإذا وصل إلى الصفر يسقط الراوتر الحزمة لمنع الدوران اللانهائي.
للمراجعة
05 Destination Unreachable (ICMP Type 3) تعذر الوصول إلى الوجهة (ICMP Type 3)
رسالة خطأ في بروتوكول ICMP تُرسل عندما يتعذر تسليم الحزمة بسبب عدم توفر مسار للشبكة أو غياب المضيف أو إغلاق المنفذ.
للمراجعة
06 Time Exceeded (ICMP Type 11) تجاوز الوقت / نفاد القفزات (ICMP Type 11)
رسالة خطأ يرسلها الموجه عندما يصل عداد TTL للحزمة إلى الصفر أثناء العبور، وهي الآلية الأساسية التي يعمل بها أمر tracert.
للمراجعة
07 Traceroute / tracert أداة تتبع مسار القفزات (tracert / traceroute)
أداة تشخيصية تكشف جميع الموجهات الوسيطة بين المرسل والهدف عبر إرسال حزم فحص بقيم TTL متزايدة تدريجياً.
للمراجعة
08 nslookup أداة فحص أسماء النطاقات (nslookup)
أداة سطر أوامر للاستعلام المباشر من خوادم DNS للتحقق من ترجمة أسماء النطاقات إلى عناوين IP وفصل أعطال DNS عن أعطال الشبكة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات6

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 6 مفهومةأول بطاقة، أول خطوة
01 ICMP ICMP
Internet Control Message Protocol
بروتوكول رسائل التحكم في الإنترنت للإبلاغ عن الأخطاء والتشخيص في الطبقة الثالثة.
للمراجعة
02 RTT RTT
Round-Trip Time
زمن الذهاب والإياب بالمللي ثانية بين المرسل والوجهة.
للمراجعة
03 TTL TTL
Time To Live
عداد الحد الأقصى للقفزات في رأس حزمة IP.
للمراجعة
04 PMTUD PMTUD
Path MTU Discovery
آلية اكتشاف الحجم الأقصى لوحدة النقل عبر المسار باستخدام رسائل ICMP.
للمراجعة
05 DNS DNS
Domain Name System
نظام أسماء النطاقات المسؤول عن ترجمة أسماء المواقع إلى عناوين IP.
للمراجعة
06 PID PID
Process Identifier
معرّف العملية الرقمي للبرنامج الذي يحجز المنفذ في مخرجات netstat وss.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/3مهام منجزة
  1. افتح موجه الأوامر أو الطرفية، وشغّل الأمر ping على العنوان 127.0.0.1 (لأربع حزم) ثم على عنوان الراوتر المحلي، وقارن بين زمن الاستجابة RTT وقيمة عداد TTL في الحالتين.

  2. نفّذ الأمر nslookup example.com ثم nslookup example.com 1.1.1.1 لملاحظة عنوان خادم DNS المستجيب وعناوين IP الناتجة والتحقق من عمل DNS بمعزل عن المتصفح.

  3. شغّل الأمر tracert -d 8.8.8.8 (أو traceroute -n 8.8.8.8) لمراقبة أول ثلاث قفزات، ثم شغّل netstat -ano (أو ss -tuln) لعرض المنافذ المفتوحة في حالة LISTEN على جهازك.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

في أي طبقة من نموذج الشبكة يعمل بروتوكول ICMP، وكيف تُنقل رسائله؟

02

ما نوعا رسائل ICMP اللذان يتم تبادلهما عند نجاح أمر الفحص ping؟

03

في سطر مخرجات ping الآتي: «Reply from 93.184.216.34: bytes=32 time=18ms TTL=56»، علامَ تدل القيمة time=18ms؟

04

ما السبب التقني لظهور رسالة الخطأ «Ping request could not find host» قبل إرسال أي حزمة ICMP؟

05

كيف يكتشف أمر tracert / traceroute عنوان IP لكل راوتر وسيط في الطريق إلى الخادم الهدف؟

06

إذا نجح الأمر «ping 8.8.8.8» بنسبة فقد 0%، بينما فشل الأمر «ping example.com»، فأين يكمن العطل؟

07

في منهجية التشخيص التدريجي ذات الـ 5 خطوات، ما الهدف من بدء الفحص بالأمر «ping 127.0.0.1»؟

08

صواب أم خطأ: إذا لم يرد خادم ويب على أمر ping (وظهرت رسالة Request timed out)، فهذا يعني دائماً وبشكل قاطع أن الموقع متوقف عن العمل تماماً.