
شبكاتBackendDNS
ماذا يحدث عندما تكتب syreus.sy وتضغط Enter؟
تكتب syreus.sy، وتضغط Enter، وبعد لحظة تظهر المنصة. يبدو الأمر بسيطاً، لكن طلبك يمرّ في تلك اللحظة بمحطات كثيرة: يبحث عن عنوان، ويصافح خادماً قد يكون في قارة أخرى، ويتفق معه على مفتاح سري، ثم يعود ومعه الصفحة.
هذا من أشهر أسئلة مقابلات العمل، وأفضل طريقة لفهمه أن نتتبّع طلباً حقيقياً. فلنتتبّع طلبك أنت، على منصتنا نحن.
١. البحث عن العنوان: DNS
الأجهزة على الإنترنت لا تتعامل بالأسماء بل بالأرقام، فلكل خادم عنوان IP مثل 172.67.198.29. ونظام DNS هو دليل الهاتف للإنترنت: تعطيه الاسم فيعطيك الرقم.
يبحث متصفحك أولاً في ذاكرته ثم في ذاكرة نظام التشغيل. فإن لم يجد الجواب، أرسل السؤال إلى خادم DNS يسمّى resolver، تابع لمزوّد الإنترنت أو لخدمة مثل 1.1.1.1. وهذا الخادم يسأل بالترتيب:
خوادم الجذر (root): «لا أعرف syreus.sy، لكن اسأل المسؤول عن .sy».
خادم .sy: «النطاق syreus.sy تديره Cloudflare، فاسأل خوادمها».
خوادم Cloudflare: «هذا هو العنوان».
بعدها يحفظ الجميع الجواب مدة محددة اسمها TTL، لذلك تكون زيارتك التالية أسرع بكثير.
٢. المصافحة: TCP
عرف المتصفح العنوان، وصار عليه أن يفتح اتصالاً معه. بروتوكول TCP يبدأ بمصافحة من ثلاث رسائل، تشبه بداية مكالمة هاتفية:
SYN: «مرحباً، هل تسمعني؟»
SYN-ACK: «أسمعك، وهل تسمعني أنت؟»
ACK: «أسمعك. لنبدأ».
يتم الاتصال عبر المنفذ 443، وهو الباب المخصص لـ HTTPS في أي خادم.
٣. القفل: HTTPS وTLS
قبل أن يرسل المتصفح أي شيء، عليه أن يتأكد من أمرين: أنه يكلّم syreus.sy فعلاً لا محتالاً ينتحل اسمها، وأن أحداً في الطريق لا يستطيع قراءة الكلام. هذه مهمة TLS:
يرسل الخادم شهادة موقّعة من جهة موثوقة تثبت أنه syreus.sy.
يتحقق المتصفح من الشهادة، ثم يتفق الطرفان على مفتاح سري جديد لهذه الجلسة وحدها.
من هذه اللحظة يصبح كل ما يمرّ بينهما مشفّراً. وهذا هو القفل الذي تراه بجانب الرابط.
٤. أول طلب، وأول تحويلة
أخيراً يرسل المتصفح طلب HTTP: GET /. والطريف أن الرد الأول ليس صفحة بل تحويلة: يردّ الخادم بالرمز 308 ومعناه «العنوان الصحيح هو www.syreus.sy»، ثم تأتي تحويلة ثانية إلى صفحة اللغة. يتبعهما المتصفح تلقائياً دون أن تلاحظ.
ومن يجيب على هذه الطلبات؟ ليس خادماً واحداً. يصل طلبك أولاً إلى Cloudflare، وهي شبكة لها مراكز بيانات في مدن كثيرة حول العالم، فيذهب طلبك إلى أقربها إليك. تحمي Cloudflare الموقع وتسرّعه، ثم تمرّر الطلب إلى Vercel، المنصة التي تستضيف واجهة SYREUS المبنية بـ Next.js، فتعود إليك الصفحة: HTML وCSS وJavaScript.
٥. رحلة ثانية: بياناتك
الصفحة التي وصلت إطار جميل، لكنه لا يعرف شيئاً عنك: لا مساراتك ولا تقدّمك ولا نقاطك. عندما تدخل التطبيق app.syreus.sy، يرسل كود JavaScript طلبات جديدة إلى خادمنا api.syreus.sy، مثل:
GET https://api.syreus.sy/api/v1/roadmaps/
هذا اسم جديد، فتتكرر الرحلة: DNS ثم TCP ثم TLS. لكن الطلب هذه المرة يصل بعد Cloudflare إلى خادمنا نحن، ويمرّ هناك بالخدمات التي تحدثنا عنها في مقال Docker:
Caddy: البوّابة التي تستقبل الطلب وتمرّره إلى الداخل.
Django: يقرأ الطلب، ويتحقق من هويتك، ويقرر ما يجب أن يعود.
PostgreSQL: قاعدة البيانات التي تحفظ المسارات والدروس وتقدّمك فيها.
يرتّب Django الجواب بصيغة JSON، ويعود به على الطريق نفسه حتى يصل إلى متصفحك.
٦. الرسم على الشاشة
صار لدى المتصفح كل القطع: HTML يحدد محتوى الصفحة، وCSS يحدد شكلها، وJavaScript يضع بياناتك في أماكنها. يبني المتصفح الصفحة ويرسمها، فتظهر لك المنصة. وكل هذا حدث في لحظة.
جرّبه بنفسك
افتح الطرفية واسأل DNS عن عنواننا:
nslookup syreus.sy
ثم شاهد التحويلة الأولى بعينك، وستجد في الرد السطر location: https://www.syreus.sy/:
curl -I https://syreus.sy
ولتعرف كم تستغرق كل محطة من جهازك أنت:
curl -o /dev/null -s -w "dns: %{time_namelookup}\ntcp: %{time_connect}\ntls: %{time_appconnect}\ntotal: %{time_total}\n" https://api.syreus.sy/api/v1/health/
على Windows اكتب curl.exe بدل curl. وأخيراً، افتح التطبيق واضغط F12، واختر تبويب Network، ثم أعد تحميل الصفحة: سترى كل طلب يذهب إلى api.syreus.sy والوقت الذي استغرقه.
كل محطة في هذه الرحلة عالم كامل. وإذا أردت أن تفهمها بعمق، فابدأ مسار Computer Networking على المنصة، حيث تبني شبكة كاملة خطوة بخطوة، من أول جهاز حتى السحابة.
لا تعليقات