افهم من يطلب ماذا وممّن عندما تظهر صفحة ويب على شاشتك.
افتح هذا الدرس في Kodokonتخيّل مطعمًا. تجلس، وتنادي النادل، وتطلب طبقًا، فيُحضره لك. الويب يعمل بالطريقة نفسها تمامًا. أنت، ومعك متصفحك، العميل: أنت من يطلب. وفي الجهة المقابلة يوجد خادم: حاسوب يعمل ليل نهار، في مكان ما داخل مبنى مكيَّف، مهمته الوحيدة انتظار الطلبات والردّ عليها. لا شيء سحريّ في الخادم: إنه جهاز مثل جهازك، غير أنه لا ينام أبدًا وليست له شاشة.
أهمّ نقطة يجب تذكّرها: الخادم لا يبادر أبدًا. فهو لا يرسل إليك شيئًا ما لم تطلب أنت شيئًا. وفي كل مرة تكتب فيها عنوانًا أو تنقر رابطًا، يرسل متصفحك طلبًا، ويعيد الخادم استجابة. طلب، استجابة. طلب، استجابة. الويب كله يختصر في هذا الأخذ والردّ.
ولكي يصل الطلب إلى وجهته، يملك كل جهاز متصل عنوان IP: سلسلة من الأرقام تلعب دور العنوان البريدي، مثل 93.184.215.14. ورسالتك لا تُرسل دفعة واحدة: بل تُقطَّع إلى أجزاء صغيرة تُسمّى الحِزَم، يسافر كلٌّ منها في طريقه الخاص عبر عشرات الأجهزة الوسيطة، ثم يُعاد تجميعها بالترتيب الصحيح عند الوصول. ويمكنك التحقق من أن جهازًا ما يستجيب باستخدام الأمر ping.
ping -c 2 example.com
PING example.com (23.215.0.136): 56 data bytes
64 bytes from 23.215.0.136: icmp_seq=0 ttl=54 time=17.3 ms
64 bytes from 23.215.0.136: icmp_seq=1 ttl=54 time=16.9 ms
--- example.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet lossوماذا يعيد الخادم بالضبط؟ نصًّا. فصفحة الويب ليست سوى ملف نصي مكتوب بلغة HTML يرسله إليك الخادم ويتولّى متصفحك تنسيقه. ويمكنك رؤية ذلك بعينيك من دون متصفح، باستخدام الأداة curl، التي ترسل طلبًا وتعرض الاستجابة الخام في الطرفية.
curl -s https://example.com | head -n 5
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />