خريطة التغطية — الإثبات
لاحظ
وعدتُك: لا شيء في المشروعين بلا تفسيرٍ مشتقٍّ في المنهج. هذا الملف هو الإثبات. كل مفهومٍ ومتطلَّبٍ وكلمةٍ في Networking basics #0 و #1، وأين اشتُقّ (لا حُفِظ) في المنهج. اقرأه في النهاية كجردٍ، لا في البداية كفهرس.
المحتوى
Networking basics #0 — أهداف التعلّم
| ما يطلبه هولبرتون | أين اشتُقّ | ليش (سطرٌ واحد) |
|---|---|---|
| OSI: ما هو؟ كم طبقة؟ كيف يُنظَّم؟ | 04 | إطارٌ مفاهيميٌّ بنيتَه طبقةً طبقة؛ من المادة للمعنى |
| LAN: الاستخدام والحجم | 01 | مجموعة تبلغها بالـ MAC مباشرة؛ الحجم نتيجةٌ لمدى L1 |
| WAN: الاستخدام والحجم | 02 | ربط LANات متباعدة عبر روابط المشغّلين |
| الإنترنت | 02 | شبكة الشبكات العامّة التي تتكلّم IP |
| IP address | 02 | عنوانٌ هرميٌّ يتيح التوجيه دون معرفةٍ عالمية |
| نوعا الـ IP (عام/خاص) | 02 | الخاص وُلد من ندرة IPv4 + NAT |
| localhost | 05 | 127.0.0.0/8 loopback لا يغادر الجهاز |
| subnet | 02 | حدٌّ يفصل بِتّات الشبكة عن الجهاز ويعرّف «المحلّي» |
| لماذا IPv6 | 02 | IPv4 (32-bit) نفد 2011؛ IPv6 (128-bit) يحلّها جذرياً |
| البروتوكولان الرئيسان (طبقة النقل) | 03 | TCP و UDP فوق IP |
| الفرق الجوهري TCP/UDP | 03 | TCP = طبقة ثقة (تسلسل+ACK+إعادة)؛ UDP = IP عارٍ |
| ما الـ port | 03 | رقمٌ يفرز البيانات داخل الجهاز بين البرامج |
| SSH/HTTP/HTTPS (22/80/443) | 03 | منافذ «معروفة» ليطرقها العميل دون دليل |
| أداة فحص الاتصال | 05 | ICMP عبر ping |
Networking basics #0 — المهام
| المهمة | النوع | أين | ليش |
|---|---|---|---|
| 0-OSI_model | اختياري | 04 | تُحاجِج لا تحفظ (القبو: 2, 2) |
| 1-types_of_network | اختياري | 01, 02 | LAN/WAN/Internet مشتقّة (القبو: 3, 2, 1) |
| 2-MAC_and_IP_address | اختياري | 01, 02 | MAC=اسم، IP=عنوان (القبو: 2, 1) |
| 3-UDP_and_TCP | اختياري | 03 | الثقة مقابل السرعة (القبو: 1, 2, 1) |
| 4-TCP_and_UDP_ports | سكربت | 03, 07 | netstat -lp؛ رايات مستنتَجةٌ من المخرَج |
| 5-is_the_host_on_the_network | سكربت | 05, 07 | ping -c 5 "$1" + فحص الوسيط |
Networking basics #1 — أهداف التعلّم
| ما يطلبه هولبرتون | أين | ليش |
|---|---|---|
| localhost / 127.0.0.1 | 05 | loopback؛ النواة تعكسه برمجياً |
| 0.0.0.0 | 05 | bind=كل الواجهات / route=الافتراضي |
| /etc/hosts | 06 | أقدم مترجمٍ للأسماء، يُستشار قبل DNS |
| عرض الواجهات النشطة | 07 | ip/ifconfig كمنظار L2/L3 |
Networking basics #1 — المهام
| المهمة | النوع | أين | ليش |
|---|---|---|---|
| 0-change_your_home_IP | سكربت | 05, 06, 07 | تعديل /etc/hosts (استبدل لا تكدّس) |
| 1-show_attached_IPs | سكربت | 07 | تصفية inet من منظار L2/L3 |
| 2-port_listening_on_localhost | سكربت | 03, 07 | nc -l 98؛ sudo لمنفذٍ <1024 |
المتطلّبات التقنية (Requirements) — كلها مُفسَّرة
| المتطلَّب | أين فُسِّر |
|---|---|
#!/usr/bin/env bash (السطر 1) | 07 (لماذا env: يجد bash في PATH) |
| تعليق السطر الثاني | 07 |
ملفات قابلة للتنفيذ (chmod +x) | 07 |
اجتياز shellcheck (0.7.0) | 07 (SC2086: اقتبس متغيّراتك) |
| المعاملات الموضعية | 05 (بذرة)، 07 (تفصيل) |
netstat, ping, nc, telnet, ifconfig, cut | 07 (كلٌّ كمنظارٍ على طبقته) |
أدواتٌ ومفاهيم زائدة (لم يطلبها هولبرتون — لكنها تجعل التاسكات تافهة)
هذه ليست في المشروعين، لكنها تحوّل فهمك من «أحلّ التاسك» إلى «أرى المشهد كله»:
- ARP (02): الجسر IP↔MAC — يفسّر لماذا MAC يتغيّر كل قفزة.
- التغليف/فكّ التغليف (04): النموذج الموحّد لكل شيء.
- المصافحة الثلاثية (03): لماذا ثلاث رسائل.
- TTL و traceroute (05): سرّ رؤية كل راوترٍ في الطريق.
- NAT (02): لماذا IP-ك الداخلي يختلف عن العام.
- netlink ولماذا
ssورثnetstat(07). - التكلّم HTTP بـ telnet بيدك (07): إثبات أن L7 مجرّد نصٍّ فوق L4.
getentو nsswitch (06): كيف يحلّ النظام الأسماء فعلاً.
الخلاصة
إن أنهيتَ المراحل 00→07 وكافحتَ ألغازها، فأنت لا «تستعدّ» للتاسكات — أنت تجاوزتها. كل سؤالٍ فيها صار نتيجةً لشيءٍ بنيتَه بيدك من الإلكترون صعوداً. افتح التاسكات الآن: ستراها، كما أردتَ، لعب أطفال.