STACK://UP الأقاليم 0/9RTL · AR / قفز · ? اختصارات UP

الإقليم ٨ — الرحلة الكاملة: ماذا يحدث حين تكتب google.com

النبذة

كل قطعةٍ صار اسمها معروفاً لديك. هذا الإقليم لا يضيف مفهوماً — يجمع كل شيءٍ في سردٍ واحدٍ متّصل، من ضغطة Enter إلى ظهور الصفحة. وهو حرفياً مشروع Holberton الثاني: «What happens when you type https://www.google.com and press Enter». المطلوب أن تغطّي: DNS request, TCP/IP, Firewall, HTTPS/SSL, Load-balancer, Web server, Application server, Database — وكلها بنيتَها. هنا تربطها بخيطٍ واحد.

اللغز المستفزّ

بلا أن تنظر لأي إقليمٍ سابق: خذ ورقةً وارسم/اكتب الرحلة الكاملة لطلب https://www.google.com، من لحظة Enter إلى وصول الصفحة، مارّاً بكل الكلمات الثماني أعلاه بالترتيب الصحيح، وكل سهمٍ مسمّى ببروتوكوله ومُعلَّمٌ إن كان مشفّراً. هذا هو الامتحان الحقيقي: إن استطعتَ سردها من رأسك، فقد أتقنتَ المنهجين معاً (الشبكات + البنية). حاول، ثم قارن.

الدرس — الرحلة، محطّةً محطّة

كل محطّةٍ هنا تشير إلى الإقليم الذي بنيتها فيه. لاحظ كيف يلتحم منهج الشبكات (المحطّات ١–٣) مع هذا المنهج (٤–٨) في تيّارٍ واحد — هذا هو التحام الشجرتين.

١) الاسم → عنوان (DNS request). [إقليم ٠ + بذرة الشبكات] المتصفّح يحلّ www.google.com إلى IP: يسأل الـ resolver، الذي يمشي شجرة DNS (إن لم يكن الجواب مخزَّناً بالـ cache ضمن TTL)، فيعيد سجلّ A/AAAA. الآن بيد المتصفّح عنوان.

٢) فتح القناة (TCP/IP). [منهج الشبكات] المتصفّح يفتح اتصال TCP إلى ذلك IP على port 443 (لأنها https)، عبر المصافحة الثلاثية. الحِزم تُسيَّر عبر الإنترنت بـ IP (تغليفٌ طبقةً طبقة — كما تعلّمت). لا نعيد شرح هذا؛ نستعمله.

٣) المرور بالحارس (Firewall). [إقليم ٥] قبل أن يصل الاتصال للخدمة، يمرّ عبر جدارٍ ناري يسمح بـ ٤٤٣ ويمنع ما عداه. لو كان الطلب على portٍ ممنوع، يُسقَط هنا.

٤) الخَتم (HTTPS/SSL). [إقليم ٥] فوق TCP تبدأ مصافحة TLS: الخادم يقدّم شهادته (تثبت أنه فعلاً google، موقّعةٌ من CA يثق بها المتصفّح)، ويتّفقان على مفتاح جلسة. من الآن كل HTTP مشفّر (سرّية + تكامل + مصادقة).

٥) التوزيع (Load-balancer). [إقليم ٣ + ٧] العنوان العام في الحقيقة يخصّ موزِّعاً (HAProxy)، لا خادماً مفرداً. الموزّع يختار خادماً خلفياً حيّاً (round robin مثلاً، بعد health check) ويمرّر الطلب إليه. المستخدم لا يعلم بوجود عشرات الخوادم — يرى عنواناً واحداً.

٦) الاستقبال (Web server). [إقليم ١] الخادم المختار يشغّل web server (Nginx): يتعامل مع HTTP، يخدم أي محتوى ثابت مباشرةً، ويمرّر الطلبات الديناميكية إلى ما خلفه (reverse proxy).

٧) التوليد (Application server). [إقليم ١] الـ application server يشغّل كود google (الـ codebase): ينفّذ منطق العمل ليبني الصفحة المطلوبة لحظتها.

٨) البيانات (Database). [إقليم ١ + ٤] لبناء الصفحة، الـ app server يستعلم من قاعدة البيانات (SQL): قراءاتٌ من replica، وأي كتابةٍ إلى primary. تعود الصفوف، فيكمل الـ app بناء الصفحة.

ثم الرجوع: الصفحة المولَّدة تعود للـ web server ⟵ تُشفَّر بمفتاح الجلسة ⟵ تمرّ عبر الموزّع والجدار ⟵ تسير حِزم TCP عائدةً ⟵ يفكّ المتصفّح التشفير ويعرض الصفحة. دائرةٌ مكتملة.

التمرين الختامي (سبورة — هذا هو المشروع)

أ) المقالة (Task 0 من المشروع الثاني): اكتب تدوينةً بالإنجليزية تروي المحطّات الثماني أعلاه بأسلوبك. ابدأ بالتنبيه الذهبي الذي يذكره المشروع: اسأل المُقابِل هل يريد التركيز على منطقةٍ بعينها (front-end؟ DOM؛ SRE؟ load balancing) قبل أن تغوص. ثم اسرد بعمقٍ متوازن.

ب) المخطّط (Task 1 من المشروع الثاني): ارسم مخطّطاً يُظهر صراحةً: DNS resolution؛ الطلب يصيب IP الخادم على الـ port الصحيح؛ الحركة مشفّرة؛ المرور عبر جدارٍ ناري؛ التوزيع عبر load balancer؛ الـ web server يجيب؛ الـ application server يولّد؛ الـ app يطلب من database. كل سهمٍ مسمّى.

ج) اختبار الإتقان: سلّم الورقة لشخصٍ لا يعرف الموضوع، واشرحها له شفهياً في أقل من ٣ دقائق دون النظر. إن استطعت، فأنت جاهزٌ للسبورة وللمقابلة.

الخلاصة — والتحام الشجرتين

الشجرة اكتملت. ما تبقّى ملاحقُ تُثبّت وتختصر: appendix/acronyms.md، appendix/whiteboard-drills.md، appendix/what-to-say-in-english.md، appendix/mental-models.md، appendix/skill-tree.md. افتحها الآن — استحققتها.


على السبورة (إنجليزي، السرد الكامل المكثّف)

I type https://www.google.com and hit Enter:

  1. DNS resolves the name to an IP (A/AAAA, cached by TTL).
  2. The browser opens TCP to that IP on port 443 (3-way handshake), routed

over IP.

  1. The connection passes a firewall that only allows the needed ports.
  2. TLS/HTTPS handshake: the server's SSL certificate proves its identity

(CA-signed) and a session key is negotiated — traffic is now encrypted.

  1. The public IP is a load balancer (HAProxy), which health-checks and

forwards the request to a live backend.

  1. The web server (Nginx) handles HTTP, serves static content, and proxies

dynamic requests.

  1. The application server runs the code to generate the page.
  2. It queries the database (reads from a replica, writes to the primary).

The response flows back, encrypted, to the browser, which renders it.

وقفة الانضباط: ابدأ دائماً بـ "Would you like me to focus on a specific area?" ثم غُص في المنطقة المطلوبة فقط. هذا أهمّ سطرٍ في المقابلة كلها.