1. المستخدم يكتب URL أو يضغط على لينك

مثال: https://example.com/about

2. المتصفح يحلل الـ URL

  • يحدد:
    • البروتوكول: https
    • اسم المضيف (host): example.com
    • البورت: 443 (افتراضي لـ HTTPS)
    • المسار: /about

3. فحص DNS Cache أو إرسال DNS Request

  • يبحث المتصفح عن IP الخاص بـ example.com
  • لو مش موجود في الكاش:
    • يسأل الـ DNS Resolver
    • يمر بالـ Root → TLD → Authoritative DNS
    • يحصل على IP (مثلاً: 93.184.216.34)

4. إنشاء اتصال TCP

  • المتصفح يبدأ 3-way handshake مع السيرفر (TCP Handshake):
    • SYN → SYN-ACK → ACK

5. بدء TLS Handshake (لو HTTPS)

  • يتم الاتفاق على مفاتيح التشفير.
  • التحقق من شهادة السيرفر (SSL/TLS).
  • إنشاء Session Key مشترك.

6. إرسال طلب HTTP

GET /about HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html

7. السيرفر يستلم الطلب

  • يمرر الطلب على:

    • Web server (مثل Apache/Nginx)
    • Application backend (مثل PHP, Node.js…)
    • يتحقق من الصلاحيات – قواعد البيانات – المنطق الداخلي

8. إنشاء Response

  • يتم بناء الرد مثلاً:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024

<html>...</html>

9. إرسال الـ Response إلى المتصفح

  • يرجع عبر نفس الاتصال (TCP).
  • المتصفح يستلم البيانات.

ء10. Rendering الصفحة

  • المتصفح يبدأ:
    • تحليل HTML
    • طلب ملفات CSS, JS, صور
    • تنفيذ JavaScript
    • عرض الصفحة للمستخدم

🔁 الطلبات الثانوية:

بعد تحميل الصفحة الرئيسية، المتصفح يعمل Requests إضافية:

  • تحميل الصور
  • تحميل ملفات JS/CSS
  • اتصالات AJAX / API