في هذا الدرس 8تصفّح المواضيع
تخيّل أنك أرسلت طرداً بريدياً عبر سلسلة من مكاتب التوزيع الإقليمية؛ فإذا كان الجسر المؤدي إلى المدينة مغلقاً أو كان عنوان المستلم غير موجود، يُحرر مكتب البريد «إشعار حالة رسمياً» يعيده إليك ليخبرك بسبب تعذر التسليم. في شبكات الكمبيوتر، يعمل بروتوكول الإنترنت (IP) بمبدأ «أفضل جهد» دون آلية مدمجة للإبلاغ عن الأخطاء؛ ولسد هذه الفجوة، تعتمد الشبكات على بروتوكول رسائل التحكم في الإنترنت (Internet Control Message Protocol — ICMP) بوصفه المراقب التشخيصي وساعي تقارير الحالة في طبقة الشبكة ().
وعلى خلاف بروتوكولَي النقل TCP وUDP، فإن بروتوكول ICMP لا ينقل بيانات تطبيقات المستخدم ولا يستخدم أرقام منافذ () مطلقاً؛ بل تُغلَّف رسالته مباشرةً داخل حزمة IPv4 برقم بروتوكول 1 (أو ICMPv6 برقم 58 في شبكات IPv6) لأداء مهمتين رئيسيتين:
- 1. رسائل الاستعلام والفحص التشخيصي: اختبار جاهزية جهاز بعيد وقياس زمن الاستجابة عبر أدوات مثل أمر
ping. - 2. رسائل الإبلاغ التلقائي عن الأخطاء: إخطار الجهاز المرسل عندما يعجز موجه () أو خادم عن تسليم حزمة
IPبسبب انقطاع المسار أو إغلاق المنفذ أو نفاد عداد القفزات.
تُعد أداة 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بواحد في كل خطوة حتى تصل الحزمة إلى الخادم النهائي نفسه فيرد بنجاح ويكتمل رسم خريطة المسار.
# 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): التحقق من أن خادم التطبيق يعمل فعلياً ويستمع على المنفذ المخصص له.
جرّب الآن في المعمل التفاعلي لتشخيص الشبكة أدناه استكشاف أربعة سيناريوهات واقعية لأعطال الشبكة وكيف تكشف الأداة المناسبة السبب الجذري لكل عطل:
معمل تشخيص أعطال الشبكة وأوامر 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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
افتح موجه الأوامر أو الطرفية، وشغّل الأمر ping على العنوان 127.0.0.1 (لأربع حزم) ثم على عنوان الراوتر المحلي، وقارن بين زمن الاستجابة RTT وقيمة عداد TTL في الحالتين.
-
نفّذ الأمر nslookup example.com ثم nslookup example.com 1.1.1.1 لملاحظة عنوان خادم DNS المستجيب وعناوين IP الناتجة والتحقق من عمل DNS بمعزل عن المتصفح.
-
شغّل الأمر tracert -d 8.8.8.8 (أو traceroute -n 8.8.8.8) لمراقبة أول ثلاث قفزات، ثم شغّل netstat -ano (أو ss -tuln) لعرض المنافذ المفتوحة في حالة LISTEN على جهازك.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.