Kodokon kodokon.com

localhost والمنافذ و"إنها تعمل على جهازي"

شغّل خادمًا على حاسوبك أنت وافهم لماذا لا يستطيع أحد غيرك رؤيته.

7 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

عندما تبني موقعًا، لن تنشره على الإنترنت بعد كل تعديل. بل تشغّل خادمًا على حاسوبك أنت، وتزوره بمتصفحك. ولهذا الجهاز، جهازك، اسم محجوز: localhost، أي حرفيًا "المضيف المحلي". وله أيضًا عنوان IP محجوز، 127.0.0.1، يعني دائمًا "أنا نفسي"، على أي جهاز في العالم.

لكن الحاسوب الواحد يستطيع تشغيل عدة خوادم في الوقت نفسه. فكيف تعرف إلى أيّها تتحدّث؟ عبر المنافذ. فإذا كان عنوان IP هو عنوان المبنى، فالمنفذ هو رقم الشقة: رقم بين 1 و65535 يحدّد البرنامج المفترض أن يردّ. وبعضها اصطلاحي: المنفذ 80 لبروتوكول http، والمنفذ 443 لـ https. وفي التطوير، كثيرًا ما نستخدم 3000 أو 5173 أو 8000. ويُكتب المنفذ بعد الاسم، مفصولًا بنقطتين رأسيتين: http://localhost:8000.

BASH
cd my-site
python3 -m http.server 8000

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
خادم ويب حقيقي بأمر واحد. على Windows، اكتب py -m http.server 8000.

اترك نافذة الطرفية هذه مفتوحة: فما دام الأمر يعمل، يبقى الخادم يردّ. افتح الآن http://localhost:8000 في متصفحك، وسترى ملفات مجلد my-site. ولإيقاف الخادم، عُد إلى الطرفية واضغط Ctrl + C.

ولماذا كل هذا العناء، ما دام النقر المزدوج على index.html يفتح الصفحة أيضًا؟ لأن النقر المزدوج يفتح الملف على العنوان file:///C:/Users/...، لا على http://. وعدة ميزات في الويب ترفض رفضًا قاطعًا أن تعمل خارج بروتوكول http: الطلبات الموجّهة إلى خادم، ووحدات JavaScript، وبعض الخطوط. وستحصل على أخطاء محيّرة تختفي كأنها سحر بمجرّد أن تمرّ عبر localhost.

BASH
lsof -i :8000

COMMAND   PID   USER   FD   TYPE  NODE NAME
python3  4821  sarah    3u  IPv4   TCP *:8000 (LISTEN)
من يشغل المنفذ 8000؟ على Windows: netstat -ano | findstr :8000

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. إلامَ يشير الاسم localhost؟
    • إلى خادم مزوّد الاستضافة الخاص بك
    • إلى حاسوبك أنت
    • إلى شبكة الواي فاي التي تتصل بها
  2. لماذا لا يرى زميلك موقعك عندما يفتح http://localhost:3000؟
    • لأن رقم المنفذ خاطئ على جهازه
    • لأن localhost يشير إلى جهازه هو، لا إلى جهازك
    • لأن عليه استخدام https
  3. ما فائدة رقم المنفذ في http://localhost:8000؟
    • تحديد أي برنامج على الجهاز يجب أن يردّ
    • تشفير الاتصال
    • ترقيم صفحات الموقع