כאשר אתה מתחיל ללמוד כיצד שמות דומיינים, כתובות IP, שרתי אינטרנט ואתרי אינטרנט כולם מתאימים ועובדים יחד, זה יכול להיות מעט מבלבל או מכריע לפעמים. איך הכל מוגדר לעבוד בצורה חלקה כל כך? בפוסט שאלות ותשובות של SuperUser של היום יש את התשובות לשאלות קורא סקרן.
מושב השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה של Stack Exchange, קיבוץ מונחה קהילה של אתרי שאלות ותשובות.
תמונה באדיבות Rosmarie Voegtli (פליקר) .
השאלה
משתמש קורא SuperUser3407319 רוצה לדעת אם שרתי אינטרנט מכילים רק אתר אחד כל אחד:
בהתבסס על מה שאני מבין לגבי DNS וקישור שם דומיין לכתובת ה- IP של שרת האינטרנט בו מאוחסן אתר, האם זה אומר שכל שרת אינטרנט יכול להחזיק רק אתר אחד? אם שרתי אינטרנט אכן מחזיקים יותר מאתר אחד, אז איך כל זה נפתר כדי שאוכל לגשת לאתר הרצוי בלי בעיות או ערבובים?
האם שרתי האינטרנט מחזיקים אתר אחד בלבד, או שהם מחזיקים יותר?
התשובה
לתורם SuperUser בוב יש את התשובה עבורנו:
בעיקרון, הדפדפן כולל את שם הדומיין בבקשת HTTP כך ששרת האינטרנט יודע איזה דומיין התבקש ויכול להגיב בהתאם.
בקשות HTTP
כך מתרחשת בקשת ה- HTTP האופיינית שלך:
1. המשתמש מספק כתובת URL, בצורה http: // host: port / path.
2. הדפדפן מחלץ את החלק המארח (דומיין) של כתובת האתר ומתרגם אותו לכתובת IP (במידת הצורך) בתהליך המכונה רזולוציית שם. תרגום זה יכול להתרחש באמצעות DNS, אך הוא אינו חייב (למשל, קובץ המארחים המקומי במערכות הפעלה נפוצות עוקף DNS).
3. הדפדפן פותח חיבור TCP ליציאה שצוינה, או ברירת מחדל ליציאה 80 באותה כתובת IP.
4. הדפדפן שולח בקשת HTTP. עבור HTTP / 1.1, זה נראה כך:
![]()
כותרת המארח היא סטנדרטית ונדרשת ב- HTTP / 1.1. זה לא צוין במפרט HTTP / 1.0, אך בכל זאת שרתים מסוימים תומכים בו.
מכאן, לשרת האינטרנט יש כמה פיסות מידע בהן הוא יכול להשתמש כדי להחליט מה צריכה להיות התגובה. שים לב כי ייתכן ששרת אינטרנט יחיד יהיה קשור למספר כתובות IP.
- כתובת ה- IP המבוקשת, משקע ה- TCP (כתובת ה- IP של הלקוח זמינה גם כן, אך לעתים רחוקות משתמשים בה ולפעמים לחסימה / סינון)
- היציאה המבוקשת, משקע ה- TCP
- שם המארח המבוקש, כפי שצוין בכותרת המארח על ידי הדפדפן בבקשת HTTP
- הנתיב המבוקש
- כותרות אחרות (עוגיות וכו ')
כפי שנראה ששמתם לב, הגדרת האירוח המשותפת הנפוצה ביותר בימינו מציבה אתרים מרובים בכתובת IP אחת: שילוב יציאות, ומשאיר רק את המארח להבדיל בין אתרים.
זה ידוע בשם א מארח וירטואלי מבוסס שמות בארץ אפאצ'י, בעוד שנג'ינקס מכנה אותם שמות שרתים בחסימת שרתים , ו- IIS מעדיף שרת וירטואלי .
מה לגבי HTTPS?
HTTPS הוא קצת שונה. הכל זהה עד להקמת חיבור TCP, אך לאחר מכן יש להקים מנהרת TLS מוצפנת. המטרה היא לא לדלוף שום מידע על הבקשה.
על מנת לוודא ששרת האינטרנט מחזיק בפועל בתחום זה, על שרת האינטרנט לשלוח אישור חתום על ידי צד שלישי מהימן. הדפדפן ישווה את האישור הזה לדומיין שביקש.
זה מהווה בעיה. כיצד שרת האינטרנט יודע איזה אישור מארח / אתר לשלוח אם עליו לעשות זאת לפני שתתקבל בקשת HTTP?
באופן מסורתי, זה נפתר באמצעות כתובת IP ייעודית (או יציאה) לכל אתר שדורש HTTPS. ברור שהדבר הפך לבעייתי מכיוון שנגמר לנו כתובות IPv4.
להיכנס SNI (ציון שם שרת). הדפדפן מעביר כעת את שם המארח במהלך משא ומתן TLS, כך שלשרת האינטרנט יש מידע זה מוקדם מספיק כדי לשלוח את האישור הנכון. בצד שרת האינטרנט, התצורה דומה מאוד לאופן שבו מוגדרים מארחי HTTP וירטואליים.
החיסרון הוא ששם המארח מועבר כעת כטקסט רגיל לפני ההצפנה, והוא למעשה מידע שהודלף. בדרך כלל זה נחשב כקיזוז מקובל, אם כי אם לוקחים בחשבון את שם המארח בדרך כלל חשוף בשאילתת DNS בכל מקרה.
מה אם אתה מבקש אתר לפי כתובת IP בלבד?
מה שרת האינטרנט עושה כאשר הוא לא יודע איזה מארח ספציפי ביקשת תלוי ביישום ובתצורה של שרת האינטרנט. בדרך כלל מצוין אתר "ברירת מחדל", "תפוס הכל" או "נסיגה אחורה" שיספק תשובות לכל הבקשות שאינן מציינות מארח במפורש.
אתר ברירת מחדל זה יכול להיות אתר עצמאי משלו (לעיתים קרובות מציג הודעת שגיאה), או שזה יכול להיות כל אחד מאתרי האינטרנט האחרים בשרת האינטרנט, בהתאם להעדפותיו של מנהל שרת האינטרנט.
יש לך מה להוסיף להסבר? נשמע בתגובות. רוצה לקרוא תשובות נוספות ממשתמשי Stack Exchange אחרים המתמצאים בטכנולוגיה? עיין כאן בשרשור הדיון המלא .