@אהרן אמר במושגים בסיים בניתבים ל\בתוך שרת:
אני מריץ נוד שמקים שרת
var http = require('http');
server.listen(8080, "0.0.0.0", function(){})
זה אומר שנוד נרשם במע' ההפעלה שכל קריאה שנכנסת מבחוץ (כרטיס הרשת) שיעודה פורט 8080 (ע"י כתיבה מפורשת, או ניחוש לפי הפרוטוקול) תשודר לתהליך הנוד.
עד לכאן הבנתי נכון?
אכן נרשם במערכת ההפעלה שהאפליקציה הזו צריכה לקבל כל בקשה, לאו דוקא חיצונית, שמופנית לפורט זה. אם היית כותב IP מסויים זה היה מגביל את האזנה לIP מקור מסויים, אבל ארבעה אפסים משמעותם any - לא משנה איזה מקור.
משמע שהניתוב הפנימי מבוצע רק ע"י הפורט, אז למה משמש כתובת ה-IP?
הכתובת של נמען דואר מורכבת מארץ עיר רחוב מספר ודירה. מי ששולח לשכן שלו באותו בניין נדרש לציין הכל כרגיל. מספר הדירה משמש לזהות בתוך אותו בניין איזה דייר. זה בדיוק תפקיד הפורט. שר הפרטים עשויים לזהות את הבניין מבין כל בנייני תבל וזה תפקיד הIP החיצוני.
אבל בניגוד למודל של הדואר, באינטרנט יש אופציה לשלוח לשכן (פורט) באותו המחשב בלי להכיר את כתובתו החיצונית של המחשב, וזה ע"י כתובות loopback - המחשב מנתב אותם חזרה לעצמו. הכתובות האלה הם המרחב של 127.0.0.0/8.
המילה localhost היא דומיין בדיוק כמו google.com שמתורגמת לכתובת אייפי. רק שבניגוד אליה המחשב לא שואל שירות DNS מה כתובתה הפיזית אלא מתרגם אותה על דעת עצמו ל127.0.0.1.
לעניין הנוגע איליך, מבחינת אבטחה מקובל ששירותים פנימיים חסומים החוצה בשתי שכבות: א. האזנה מאוגדת לכתובת פנימית (במקום ארבעה אפסים שים 127.0.0.1), ב. הפרוט סגור בחומת אש של מערכת ההפעלה.