الشبكات والاتصال

كيف يعمل الإنترنت (من منظور تصميم الأنظمة)

18 دقيقة الدرس 1 من 10

كيف يعمل الإنترنت (من منظور تصميم الأنظمة)

قبل أن تتمكن من تصميم نظام موزّع يخدم ملايين المستخدمين، تحتاج إلى نموذج ذهني راسخ حول كيفية انتقال البيانات فعلياً عبر الإنترنت. هذا الدرس يزيل طبقة التجريد ويشرح الآليات الملموسة: عناوين IP، والحزم، والتوجيه، والرحلة الكاملة التي يقطعها الطلب من متصفح في لندن إلى مركز بيانات في فيرجينيا.

عناوين IP: مخطط العنونة في الإنترنت

كل جهاز متصل بالإنترنت يُعرَّف بـعنوان IP. النسختان المستخدمتان اليوم هما:

  • IPv4 — 32 بتاً، يُكتب على شكل أربعة أرقام عشرية: 93.184.216.34. يوفر نحو 4.3 مليار عنوان فريد — وهو عدد استُنفد عام 2011.
  • IPv6 — 128 بتاً، يُكتب بمجموعات سداسية عشرية: 2606:2800:220:1:248:1893:25c8:1946. يوفر 3.4 × 1038 عنواناً — لا ينضب فعلياً.

داخل الشبكات الخاصة (شبكتك المنزلية، أو VPC في AWS، أو الشبكة المحلية للمكتب) تستخدم الأجهزة نطاقات IP خاصة مثل 10.0.0.0/8 و172.16.0.0/12 و192.168.0.0/16. تترجم بوابة NAT (ترجمة عناوين الشبكة) بين IPs الخاصة والعامة على الحدود — وهذا هو السبب في أن آلاف الأجهزة المنزلية تتشارك عنوان IP عاماً واحداً.

لماذا يهم هذا في تصميم الأنظمة: حين تنشر خدمات داخل VPC (مثل AWS أو GCP أو Azure)، لا تحتاج خوادم تطبيقاتك إلى عناوين IP عامة. فقط موازن التحميل أو بوابة API تكشف عنواناً عاماً. هذا يعزل الواجهة الخلفية عن التعرض المباشر للإنترنت.

الحزم: كيف تنتقل البيانات

لا يرسل الإنترنت البيانات كتدفق متواصل. بل يقسّمها إلى قطع ذات حجم ثابت تُسمى حزماً (عادةً حتى 1500 بايت على شبكة إيثرنت — وهو الحد الأقصى لوحدة الإرسال MTU). تحمل كل حزمة:

  • IP المصدر وIP الوجهة
  • منفذ المصدر ومنفذ الوجهة (مثلاً 443 لـ HTTPS)
  • رقم التسلسل (لإعادة التجميع بالترتيب)
  • الحمولة — جزء البيانات الفعلي
  • المجموع الاختباري — للكشف عن الأخطاء

صورة بحجم 1 ميغابايت تتحول إلى نحو 700 حزمة. قد تسلك كل حزمة مساراً فيزيائياً مختلفاً عبر الشبكة وتصل بصورة مستقلة — ثم تُعيد الوجهة تجميعها. يُسمى هذا شبكة تبديل الحزم، وهو ما يجعل الإنترنت متيناً: إذا فشل مسار ما، يُعيد الموجّه توجيه الحزم عبر مسار آخر.

رحلة الطلب: خطوة بخطوة

لنتتبع طلب GET https://api.example.com/users/42 من البداية حتى النهاية. يمر المسار بست نقاط متميزة على الأقل حتى لطلب API "بسيط".

Journey of an HTTP request from client to server Browser (Client) Home Router (NAT) ISP Router (Backbone) Internet (many routers) Load Balancer (TLS termination) App Server (your code) ① DNS lookup priv→pub IP ② routing ③ TLS ④ forward response
يسير الطلب عبر: المتصفح ← موجّه NAT ← مزوّد الإنترنت ← العمود الفقري للإنترنت ← موازن التحميل ← خادم التطبيق، ثم تعود الاستجابة بالمسار ذاته.

إليك ما يحدث في كل مرحلة:

  1. حل DNS — يمتلك المتصفح اسم مضيف (api.example.com) لكنه يحتاج إلى عنوان IP. يستعلم من محلّل DNS (يُغطى في الدرس الثاني). يُعيد المحلّل 104.21.80.5. يضيف هذا عادةً 20–120 مللي ثانية عند التخزين المؤقت الفارغ.
  2. اتصال TCP — يفتح نظام التشغيل اتصال TCP على المنفذ 443. بالنسبة لـ HTTPS يستلزم هذا مصافحة TLS (1–2 رحلات ذهاب وإياب، ~50–100 مللي ثانية على رابط عابر للمحيط الأطلسي).
  3. توجيه الحزم — تغادر حزمة TCP SYN الموجّه المنزلي. تُعيد بوابة NAT كتابة عنوان IP المصدر من الخاص (مثلاً 192.168.1.5) إلى عنوان IP العائلة العام. ثم تقفز الحزمة عبر نحو 10–20 موجّهاً، يستشير كل منها جدول توجيهه لتحديد القفزة التالية. يعتمد الوقت الكلي على المسافة الفيزيائية — يسير الضوء في الألياف بسرعة ~200,000 كم/ثانية، مما يضيف ~37 مللي ثانية تأخير حتمي بسبب سرعة الضوء وحده بين لندن وفيرجينيا.
  4. موازن التحميل — تصل الحزمة إلى حافة مركز البيانات. يُنهي موازن التحميل اتصال TLS (يفك التشفير)، يقرأ طلب HTTP، ويُحيله إلى خادم تطبيق سليم عبر الشبكة الداخلية.
  5. خادم التطبيق — يعمل كودك، يستعلم من قاعدة البيانات، ويبني الاستجابة.
  6. الاستجابة — تعود الإجابة عبر المكدّس نفسه، مشفرةً من جديد، مُقسّمةً إلى حزم، وتُسلَّم إلى المتصفح.

التأخير والعرض الترددي والإنتاجية

ثلاثة أرقام يجب على كل مصمم أنظمة استيعابها:

  • التأخير (Latency) — الوقت اللازم لحزمة واحدة للانتقال من المصدر إلى الوجهة. تهيمن عليه المسافة الفيزيائية (سرعة الضوء) والانتظار في كل قفزة. قيم نموذجية: نفس مركز البيانات <1 مللي ثانية، عبر البلاد 20–40 مللي ثانية، عابر للمحيط الأطلسي 70–100 مللي ثانية.
  • العرض الترددي (Bandwidth) — الحجم الأقصى للبيانات في الوحدة الزمنية على رابط ما (مثلاً 10 جيجابت/ثانية للعمود الفقري، 100 ميجابت/ثانية للإنترنت المنزلي).
  • الإنتاجية (Throughput) — حجم البيانات الفعلي المُسلَّم في الثانية، وهو دائماً ≤ العرض الترددي، ومحدود بـأبطأ رابط في السلسلة (قانون عنق الزجاجة) وخوارزمية التحكم في الازدحام في TCP.
قاعدة إبهام — أرقام التأخير التي يجب حفظها:
L1 cache hit: ~1 نانو ثانية | RAM: ~100 نانو ثانية | قراءة SSD عشوائية: ~100 ميكرو ثانية | شبكة نفس مركز البيانات: ~0.5 مللي ثانية | عبر البلاد: ~30 مللي ثانية | عابر للمحيط الأطلسي: ~80 مللي ثانية | بحث HDD: ~10 مللي ثانية.
هذه الأرقام تُقرّر كل قرار تخزين مؤقت وتوزيع بيانات في تصميم الأنظمة.

نموذج OSI — لماذا يهم عملياً

ينظّم نموذج OSI (الترابط البيني للأنظمة المفتوحة) الشبكات في 7 طبقات. كمصمم أنظمة، تعمل أساساً مع الطبقات 3–7:

OSI model layers relevant to system design L7 — Application HTTP, HTTPS, WebSockets, gRPC your API logic lives here L6 — Presentation TLS/SSL encryption, JSON/gzip encoding serialisation & compression L5 — Session TCP sessions, auth sessions connection lifecycle L4 — Transport TCP, UDP — ports, reliability, flow control load balancers often work here L3 — Network IP — addressing & routing routers, VPCs, subnets L2 / L1 — Link & Physical Ethernet, Wi-Fi, fibre optics usually managed by cloud provider System designers focus here
طبقات OSI الأكثر صلة بتصميم الأنظمة — L3 (توجيه IP) وL4 (TCP/UDP) وL6 (TLS) وL7 (HTTP/gRPC).

فهم الطبقة التي يعمل عندها مكوّن معيّن يُخبرك الكثير عن سلوكه. موازن تحميل الطبقة 4 يُوجّه بناءً على IP/المنفذ ولا يستطيع فحص ترويسات HTTP؛ أما موازن تحميل الطبقة 7 فيستطيع التوجيه بناءً على مسار URL أو ترويسة المضيف أو ملفات تعريف الارتباط — مما يُمكّن من نشر canary وتوجيه A/B والتخزين المؤقت المدرك للمحتوى.

CIDR والشبكات الفرعية وتصميم VPC

في بيئات السحابة تصمم مساحة عناوين IP الخاصة بك باستخدام تدوين CIDR (التوجيه بين النطاقات عديم الفئات). 10.0.0.0/16 يعني: الـ16 بتاً الأولى هي بادئة الشبكة، مما يمنحك 216 = 65,536 عنواناً. الشبكة الفرعية /24 تحمل 256 عنواناً (254 قابلة للاستخدام — عنوانا الشبكة والإذاعة محجوزان).

يفصل تصميم VPC الإنتاجي النموذجي المهام إلى شبكات فرعية:

  • الشبكات الفرعية العامة (10.0.1.0/24، 10.0.2.0/24) — موازنات التحميل وبوابات NAT والمضيفون الحصن. تمتلك مسارات إلى بوابة الإنترنت.
  • الشبكات الفرعية الخاصة (10.0.10.0/24، 10.0.11.0/24) — خوادم التطبيقات وقواعد البيانات. حركة صادرة فقط عبر بوابة NAT؛ لا دخول من الإنترنت.
خطأ شائع: وضع خوادم قواعد البيانات في شبكات فرعية عامة "للراحة" أثناء التطوير، ثم نسيان نقلها قبل الإنتاج. قاعدة بيانات ذات IP عام وكلمة مرور ضعيفة هي خرق أمني حرج ينتظر الحدوث. ضع دائماً مخازن البيانات في شبكات فرعية خاصة مع قواعد مجموعة الأمان التي تسمح فقط بحركة المرور من خوادم تطبيقاتك.

الخلاصة

  • يعبر الطلب إلى خادم بعيد 10–20 قفزة توجيه ويشمل DNS ومصافحة TCP ومفاوضة TLS ومعالجة على مستوى التطبيق — كل مكوّن يُضيف تأخيراً.
  • تنتقل البيانات كـحزم قد تسلك مسارات مختلفة؛ يُعيد TCP تجميعها بالترتيب.
  • تفرض المسافة الفيزيائية حداً أدنى حتمياً لسرعة الضوء على التأخير — وهذا هو سبب وجود CDN والتخزين المؤقت على الحافة والنشر متعدد المناطق.
  • العمل على الطبقة الصحيحة من OSI يُمكّنك من بناء بنية تحتية أذكى: موازنات تحميل الطبقة 7 تُمكّن التوجيه وإلغاء تحميل المصادقة والتخزين المؤقت بما لا تستطيعه موازنات الطبقة 4.
  • في VPC السحابية، احتفظ دائماً بخدمات الواجهة الخلفية في شبكات فرعية خاصة واعرض الحافة فقط (موازنات التحميل، CDN) للعموم.