Bugsy يشرح
ماذا يحدث حين تكتب عنوان URL؟
ربع الثانية بين ضغط Enter وظهور الصفحة: DNS وTCP وTLS وHTTP والعرض، والذاكرة المؤقتة التي تجعل المتصفح يتخطى معظم ذلك في المرة التالية.
7 دقائق لعبة واحدة
- الويب
- الأمان
تكتب example.com/learn وتضغط Enter، فتظهر الصفحة في نحو ربع ثانية. وفي تلك اللمحة أنجز متصفحك خمس مهام منفصلة، وتحدّث مع حاسوبين آخرين على الأقل.
معظم هذه المهام يبني على ما في عالم الويب: الحزم، وعناوين IP وDNS، وHTTP وHTTPS. وهذه الصفحة ترتّبها وتبيّن لماذا لا يمكن أن يتغيّر ترتيبها.
خمس مهام، كلٌّ منها تحتاج التي قبلها
يحوّل DNS الاسم example.com إلى عنوان IP، لأن الحزم تُرسَل إلى أرقام لا إلى أسماء. ثم يفتح TCP اتصالًا بذلك العنوان: مصافحة (handshake) قصيرة تتأكد أن الطرفين يستمعان.
ويعمل TLS فوق ذلك الاتصال. يتحقق من شهادة (certificate) الخادم، فتعرف أنك وصلت إلى example.com الحقيقي، ويتفق الطرفان على مفاتيح تشفّر كل ما يأتي بعدها. وهذا هو حرف S في HTTPS.
الآن فقط يستطيع HTTP أن ينفّذ ما طلبته: يرسل GET /learn ويستلم HTML. وأخيرًا يأتي العرض (rendering): يقرأ المتصفح HTML، ويجلب ما يذكره من CSS وJavaScript، ويحسب مكان كل عنصر، ثم يرسم البكسلات. تنقّل بين المراحل.
جرّب
اختبار سريع
ما يخفيه HTTPS، وما لا يستطيع إخفاءه
كل ما يأتي بعد مصافحة TLS مشفّر: المسار /learn، والترويسات (headers)، وملفات تعريف الارتباط (cookies)، وكلمات المرور، والصفحة نفسها. ومن يشاركك شبكة Wi-Fi في المقهى لا يرى إلا بايتات مبعثرة.
لكن بعض الأشياء تسافر قبل التشفير أو خارجه. فالحزم تحتاج عنوان IP للخادم مكتوبًا عليها من الخارج، كما يحتاج الظرف إلى عنوان. وطلب DNS والجزء sni=example.com في أول رسالة TLS يُرسَلان عادة بلا تشفير، فيظهر اسم الموقع أيضًا.
اختبار سريع
الذاكرة المؤقتة: أسرع عمل هو العمل الذي تتخطاه
يأتي جواب DNS ومعه مدة صلاحية (TTL)، وهي هنا 300 ثانية. ويحتفظ متصفحك ونظام التشغيل والمحلّل بالجواب مدة أقصاها ذلك، فيستغرق البحث التالي 0 ms.
ويُبقي المتصفح الاتصال مفتوحًا مدةً بعد تحميل الصفحة (فالخوادم تغلق الاتصالات الخاملة بعد ثوانٍ أو دقائق). فملفات CSS وJavaScript والصفحة التالية من الخادم نفسه تعيد استخدامه، وتتخطى مصافحتَي TCP وTLS تمامًا.
وتحتفظ ذاكرة المتصفح المؤقتة (browser cache) بالملفات التي نزّلها من قبل. ويحدد الخادم مدة بقاء كل ملف صالحًا بالترويسة Cache-Control. والملف الصالح يُحمَّل من القرص مباشرة، بلا أي طلب.
HTTP/1.1 200 OKContent-Type: text/cssCache-Control: max-age=31536000ETag: "a1b2c3"
max-age=31536000 تعني أن هذا الملف يبقى صالحًا سنة كاملة (هذا عدد ثوانيها). وحين تنتهي صلاحيته يسأل المتصفح من جديد ومعه قيمة ETag، فإن لم يتغيّر شيء أجاب الخادم 304 Not Modified بلا محتوى، واحتفظ المتصفح بنسخته.
سؤال الزعيم
اجمع كل ما تعلمته.
اختبار سريع
انتهيت من القراءة؟
حلّ 3 اختبارات سريعة بعد لتنهي.