دروس في علوم الحاسوب لعلماء البيانات: كيف يعمل الويب
يترجم هذا المنشور مفاهيم علوم الحاسوب الأساسية المتعلقة بالويب إلى نماذج ذهنية عملية ستساعدك على بناء مسارات بيانات أكثر قوة وكفاءة.
هل تواجه صعوبة في تصحيح أخطاء استدعاء واجهة برمجة التطبيقات (API) الفاشلة، أو تُحيرك بطء نقل البيانات من خدمة التخزين السحابي، أو تحاول فهم بنية موقع ويب لغرض استخراج البيانات؟ غالبًا ما تنبع هذه الإحباطات الشائعة في مجال علم البيانات من قصور في فهم الآليات الأساسية للإنترنت. ورغم أن هذه المواضيع قد تبدو من اختصاص مطوري الويب، إلا أن الفهم العميق لكيفية انتقال البيانات من نقطة إلى أخرى يُعد أداةً قيّمة لأي متخصص في مجال البيانات. ولتعزيز هذا الفهم، تُقدم هذه المقالة ملخصًا لأهم مفاهيم الشبكات من محاضرة CS50x 2025 التي ألقتها جامعة هارفارد حول برمجة الويب.

1. الإنترنت ليس خطًا مستقيمًا
عندما يطلب برنامجك بيانات من خادم بعيد، يسهل عليك تخيل أن هذه المعلومات تنتقل في خط مستقيم. لكن الواقع أكثر تعقيدًا. الإنترنت عبارة عن شبكة واسعة من أجهزة الكمبيوتر المتصلة ببعضها، أو ما يُسمى بـ"أجهزة التوجيه"، والتي يقتصر دورها على نقل المعلومات.
تخيل طلب بياناتك كـ"مغلف افتراضي". يُسلمه حاسوبك إلى أقرب جهاز توجيه، والذي بدوره يُحدد جهاز التوجيه التالي الذي سيمرره إليه. تتكرر هذه العملية، حيث "يقفز" المغلف بين الخوادم حتى يصل إلى وجهته. المسار المُختار ليس بالضرورة أقصر مسافة جغرافية. تستخدم أجهزة التوجيه برامج لتحسين المسار من حيث السرعة، وحمل الخادم، وحتى لأسباب مالية، مثل إبقاء حركة البيانات على شبكة مزود خدمة معين لتجنب الرسوم. إذا استغرقت عملية النقل أكثر من 30 قفزة، فمن المحتمل أنها عالقة في حلقة مفرغة.
اتصال علم البيانات: بالنسبة لعالم البيانات، يُقدّم هذا المفهوم نموذجًا ذهنيًا قويًا لزمن استجابة الشبكة. فعند سحب البيانات من خدمة سحابية مثل AWS S3 أو الاستعلام عن قاعدة بيانات بعيدة، يُعدّ الوقت الذي تستغرقه البيانات للانتقال عبر الإنترنت عاملًا حقيقيًا في أداء مسار البيانات. هذا ليس مفهومًا نظريًا، بل هو واقع ملموس قد يُسبّب تأخيرات يجب أخذها في الحسبان.
2. يتم تقطيع بياناتك وإعادة تجميعها
لا يتم إرسال ملف كبير واحد، كصورة عالية الدقة أو مجموعة بيانات متعددة الجيجابايت، عبر الإنترنت كوحدة واحدة. يقوم بروتوكول الإنترنت الأساسي، TCP/IP، بتقسيم المعلومات الكبيرة إلى أجزاء أصغر. وكما توضح محاضرة CS50، فإن صورة "قطة سعيدة" تُقسّم مجازيًا إلى أربعة أجزاء.
تُوضع كل قطعة بيانات في غلاف افتراضي خاص بها، يُسمى حزمة. ولضمان قدرة المُستقبِل على إعادة تجميع البيانات بشكل صحيح، يُضيف بروتوكول التحكم بالنقل (TCP) رقم تسلسلي لكل حزمة (مثلاً: "1 من 4"، "2 من 4"، "3 من 4"). يسمح هذا للحاسوب المُستقبِل بإعادة تجميع القطع بالترتيب الصحيح، والأهم من ذلك، اكتشاف ما إذا كانت أي حزم قد فُقدت أثناء النقل.
اتصال علم البيانات: تكمن قوة بروتوكول TCP/IP في قدرته على تمكين مفاهيم هندسة البيانات المتقدمة، مثل تجزئة البيانات ومعالجتها الموزعة، من العمل بكفاءة عالية. فعند معالجة الملفات الكبيرة على دفعات، أو استخدام إطار عمل مثل MapReduce لتقسيم مهمة كبيرة إلى أجزاء أصغر، فإنك تعمل على مستوى أعلى من التجريد، لكن المبدأ الأساسي يبقى نفسه. ويُعد ضمان سلامة البيانات في هذا البروتوكول هاجسًا أساسيًا لأي مسار بيانات.
3. خادم واحد، أدوار متعددة: دور المنافذ
يُوصل عنوان IP حزمة البيانات إلى الحاسوب الصحيح، لكنه لا يُحدد التطبيق الذي يجب أن يستقبلها على ذلك الحاسوب. قد يُشغّل خادم واحد خادم ويب، وخادم بريد إلكتروني، وخادم قاعدة بيانات في آنٍ واحد. وهنا تبرز أهمية المنافذ.
المنفذ هو مُعرِّف رقمي فريد لخدمة مُحدَّدة تعمل على خادم. وقد تمَّ تحديد مجموعة من المنافذ القياسية بمرور الوقت: يُستخدم المنفذ 80 عادةً لحركة مرور الويب العادية (HTTP)، والمنفذ 443 لحركة مرور الويب الآمنة (HTTPS)، والمنفذ 25 للبريد الإلكتروني. تُمكِّن المنافذ خادمًا واحدًا بعنوان IP واحد من "تعدد الإرسال" لخدماته، مما يضمن وصول طلب صفحة ويب إلى خادم الويب وليس إلى خادم البريد الإلكتروني. وبالتالي، يُوجِّه عنوان IP الحزمة إلى الجهاز الصحيح، ويُوجِّه رقم المنفذ الحزمة إلى التطبيق الصحيح على ذلك الجهاز - وهو نظام عنونة ثنائي المستوى ضروري للويب الحديث متعدد المهام.
اتصال علم البيانات: هذا الأمر عملي للغاية في عملنا اليومي. عند الاتصال بقاعدة بيانات PostgreSQL، يكون المعيار :5432 you append to the IP address is precisely this concept in action, directing your request to the database application. When you deploy a model via an API or run a Jupyter server on your local machine, you are using ports (like localhost:8888) to expose that specific service to network requests.
4. نظام أسماء النطاقات (DNS): قاموس الإنترنت العملاق والمخزن مؤقتًا
لا يتصفح البشر الإنترنت عن طريق كتابة سلاسل من الأرقام مثل 142.250.191.78. We use human-friendly domain names like google.com. The system that translates these names into machine-readable IP addresses is the Domain Name System (DNS).
من الناحية الوظيفية، يُعد نظام أسماء النطاقات (DNS) تطبيقًا ضخمًا وموزعًا لنوع البيانات المجردة "القاموس". فهو يربط المفاتيح (أسماء النطاقات) بالقيم (عناوين IP). ولمعالجة الحجم الهائل للإنترنت وتوفير استجابات سريعة، يعتمد نظام أسماء النطاقات بشكل هرمي وعلى التخزين المؤقت بشكل كبير. يقوم جهاز الكمبيوتر الخاص بك، وشبكتك المحلية، ومزود خدمة الإنترنت (ISP) بتخزين عمليات البحث الأخيرة في نظام أسماء النطاقات مؤقتًا، حتى لا يضطروا إلى الاستعلام من خوادم الجذر عن نفس العنوان مرارًا وتكرارًا.
اتصال علم البيانات: يُعدّ مبدأ التخزين المؤقت الموزّع واسع النطاق نمطًا أساسيًا نستخدمه باستمرار في علم البيانات. وهو بمثابة تشبيه واقعي قوي لتقنيات مثل التخزين المؤقت في دالة بايثون، وتخزين نتائج استعلام قاعدة بيانات بطيء، أو تخزين إطارات البيانات الوسيطة على القرص. ويُعدّ نظام أسماء النطاقات (DNS) مثالًا عالميًا على ذاكرة تخزين مؤقت موزّعة للقيم الرئيسية، وهو ما يجعل الويب الحديث سهل الاستخدام.
5. رموز حالة HTTP: بوصلة تصحيح الأخطاء
عندما يطلب متصفحك (العميل) صفحةً من خادم، تبدأ استجابة الخادم برمز حالة HTTP مكون من ثلاثة أرقام. يقدم هذا الرمز ملخصًا موجزًا لما إذا كان الطلب ناجحًا أم لا، أو نوع الخطأ الذي حدث.
يتم تجميع الرموز في فئات:
- 200 ثانية (
200 OK): تم الطلب بنجاح. - 300 ثانية (
301 Moved Permanently): تمت إعادة توجيهك. تُقدّم المحاضرة مثالاً علىsafetyschool.orgwhich returns a301code to redirect the browser to Yale’s website. - 400 ثانية (
404 Not Found): حدث خطأ من جانب العميل. هذا يعني أن الخطأ من جانبك - لقد طلبت موردًا غير موجود أو ليس لديك صلاحية الوصول إليه. - 500 ثانية (
500 Internal Server Error): حدث خطأ من جانب الخادم. واجه الخادم مشكلة أثناء محاولته تلبية طلبك الصحيح.
اتصال علم البيانات: بالنسبة لأي شخص يعمل مع واجهات برمجة التطبيقات أو استخراج البيانات من مواقع الويب، فإن فهم هذه الرموز هو الفرق بين خطأ غامض مثل "فشل الطلب" ومعلومات تشخيصية قابلة للتنفيذ. 404 error tells you to check your URL endpoint, while a 403 Forbidden error tells you to check your API key. A 500 error means the problem is likely with the service itself.
«...في كل مرة ترى فيها خطأ 500، فأنت مسؤول عنه أيضًا، لذا فأنت المستخدم والخادم في آن واحد...» — محاضرة هارفارد CS50x 2025 (يوتيوب) — محاضرة: HTML، CSS، جافا سكريبت
6. لغة HTML مخصصة للهيكلة، وليست للتصميم.
لغة ترميز النص التشعبي (HTML) هي اللغة القياسية لإنشاء صفحات الويب. وهي لغة ترميز، وليست لغة برمجة؛ فغرضها وصف المحتوى وهيكلته، وليس تنفيذ العمليات المنطقية. تستخدم لغة HTML "الوسوم" (مثل <p> for a paragraph or <div> for a division) and “attributes” (like class أو id) to define elements.
عندما يستقبل المتصفح ملف HTML، يقوم بتحليل النص لبناء بنية بيانات شجرية في الذاكرة تُسمى نموذج كائن المستند (DOM). تمثل هذه الشجرة بنية الصفحة. ويؤكد HTML الحديث على استخدام الوسوم الدلالية مثل <header>, <main>, و <footer>. These tags don’t just create boxes on a page; they give meaning to the structure, helping search engines, accessibility tools, and AI models understand the relative importance of different content sections.
اتصال علم البيانات: في علم البيانات، يُعدّ الفهم العميق لنموذج كائن المستند (DOM) أساسًا جوهريًا لاستخراج البيانات من مواقع الويب. لاستخراج بيانات محددة من صفحة ما، يجب على برنامج الاستخراج تصفح شجرة DOM هذه، واختيار العناصر بناءً على وسومها أو فئاتها أو معرّفاتها. يتشابه مبدأ "فصل الاهتمامات" هذا - استخدام لغة HTML للهيكلة ولغة منفصلة (CSS) للتنسيق - مع مبدأ "البيانات المنظمة"، حيث يجب أن يكون الهيكل المنطقي لمجموعة البيانات مستقلًا عن طريقة عرضها النهائية.
ما يجب تقديمه اليوم
- عند فشل استدعاء واجهة برمجة التطبيقات (API)، تحقق من رمز حالة HTTP (على سبيل المثال، 404 مقابل 500) لتشخيص ما إذا كان الخطأ من جانبك أو من جانب الخادم.
- استخدم "أدوات المطور" في متصفحك (انقر بزر الماوس الأيمن -> فحص) لعرض علامة التبويب "الشبكة" والاطلاع على الطلبات والاستجابات الفعلية التي يقوم بها متصفحك.
- قبل استخراج البيانات من موقع ما، افحص بنية HTML الخاصة به لتحديد العلامات أو الفئات أو المعرفات المحددة التي تحتوي على البيانات التي تحتاجها.
- عند الاتصال بقاعدة بيانات أو واجهة برمجة تطبيقات، انتبه إلى رقم المنفذ وتأكد من أنه يوجه طلبك إلى التطبيق الصحيح على الخادم.
- فكّر في التخزين المؤقت لنظام أسماء النطاقات (DNS) في المرة القادمة التي تواجه فيها تأخيرًا في مسار البيانات؛ فقد يكون البحث البطيء أو ذاكرة التخزين المؤقت القديمة أحد العوامل.
إغلاق
لا تقتصر هذه المفاهيم على كونها تفاصيل أكاديمية للمطورين. فمن التوجيه المادي للحزم (TCP/IP) إلى العنونة المنطقية للخدمات (DNS، المنافذ) ولغة الطلبات (HTTP)، تُشكّل هذه البروتوكولات متعددة الطبقات النظام الخفي الذي تعتمد عليه مسارات بياناتنا. إن فهم كيف انتقال البيانات وبنيتها يُتيح فهمًا أكثر سهولة لاختناقات الأداء، وتشخيص الأخطاء، واستخراج البيانات. وتتمثل الخطوة التالية في سلسلة المحاضرات في جعل محتوى الويب ديناميكيًا باستخدام جافا سكريبت، المحرك الذي يقف وراء تصورات البيانات التفاعلية التي نستخدمها يوميًا.
كيف يمكن لفهم أفضل لهذه البروتوكولات أن يغير طريقة تصميمك لبرنامج جمع البيانات التالي؟
Base: Harvard CS50x 2025 (YouTube).

