
הטקסט המלא של הדקות הראשונות בהרצאה «מבנה של שרת Web / HTTP» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, אנחנו מגיעים לפרק של תקיפות, אתרי אינטרנט, שירותי וב, ולפני שנתחיל לפרוץ עליהם, בואו נבין איך הם עובדים, כי זה לא כזה פשוט.
קודם כל, יש לנו הרבה תוכנות, הרבה שירותי וב, אלו שמקבלים מאיתנו בקשת HTTP או HTTPS ועונים לנו.
השרת הזה שאליו אנחנו מתחברים זה לא רק חומרה של שרת, זאת גם תוכנת שרת. ויש הרבה תוכנות האלו שיודעות לקבל בקשת HTTP בפורט 80 או HTTPS ב-443 ולייצר לנו תשובה ולשלוח לנו אותה בחזרה.
אני מדבר עם השרת בשפת HTTP, אבל עדיין מישהו צריך להבין את השפה הזאת, לקבל את הקונקשן ולענות לי. וזאת התוכנה של השרת, ויש הרבה כאלו. שימו לב איזה רשימה יש לנו פה בוויקיפדיה של שרתי הווב.
יש כאלו שכבר מאוד ישנים ולא ממשיכים לפתח להם גרסאות חדשות, ויש כאלו שהם חדשים כמו הפאצ'י שכל הזמן מעדכנים אותם.
אז תראו כמה יש, שתבינו כמה יש. תסתכלו את הרשימה הזאת, וכל אחד מהשרתים האלו יש לו איזה שהם יכולות טובות, פחות טובות, שימו לב NGNX הוא מאוד פופולרי, ויש המון המון המון המון בלינוקס, ויש גם במיקרוסופט, כן? יש ה-S של מיקרוסופט.
בכל אחד מהתוכנות האלו יש כל מיני פיצ'רים שהם יודעים לעשות. לדוגמה, לאמת את המשתמש עם שם וסיסמה, ולעשות לו HTTPS, ולארח כמה אתרי אינטרנט על אותה כתובת IP.
ויש פה עוד כל מיני פיצ'רים, וכתוב פה איזה שרת יודע לעשות איזה פיצ'רים. לדוגמה, יש איזשהו שרת שלא יודע HTTPS, לדוגמה. לא כתבו לו את המודול הזה.
יכול להיות שזה שרת מאוד ישן. יש כאלו שרוצים תשלום על SSL. אז יש לנו פה רשימה של המון שרתים עם המון המון פיצ'רים. דרך אגב, מעניין אתכם מי הכי פופולרי מכל השרתים האלו?
תראו, מצאתי לכם פה סטטיסטיקה לפברואר 2021, שוב, זה הכל בוויקיפדיה, ואנחנו רואים ש-NGNX 34% מהשוק, ואפאצ'י 26% מהשוק. לרוב, למה הוא כזה פופולרי? כי משתמשים בו כפרוקסי, כשרת הראשון שדרכו נכנסים לארגון, אז כשסורקים מבחוץ את כל השרתים, רוגשים אותו ראשון אבל זה לא אומר שמאחורי הקלעים בתוך הארגון הוא פופולרי הוא כאילו מאוד פופולרי כי השער כניסה הראשון לארגון
הוא כפרוקסי כזה כרווירס פרוקסי בקיצור זה שרת מאוד מאוד פופולרי אפאצ'י הלינוקס מאוד פופולרי מייקרוסופט רק 6.5% IOS אבל לרוב זה יותר פנים ארגוני מאשר כלפי חוץ כלפי האינטרנט אנחנו מדברים איתכם על אינטרנט אז באינטרנט זה מה שקורה טוב בואו נדבר מה קורה בתוך השרת הזה ואיזה שרתים אנחנו
הולכים לראות תכלס אני הולך להראות לכם בקורס גם ה-S גם ה-Patchy גם Tomcat בקורס של לינוקס אנחנו רואים עוד שרתים אבל כרגע זה השרתים שאנחנו הולכים לראות אותם טוב בואו נדבר עכשיו מה קורה בתוך השרת איך הוא עובד אז תראו את זה יש לי פה ציור מה קורה בתוך השרת אז הלקוח הקליינט שיש לו מערכת ההפעלה ודפדפן בראוזר עושה בקשת HTTP לשרת דרך האינטרנט
מבקש איזושהי כתובת, איזשהו url, זה מגיע לשרת, זה השרת הראשון, זה ה-web server הראשון, שגם לו יש מערכת ההפעלה לינוקס או ווינדוס, יש לו תוכנת שרת מותקנת מעל מערכת ההפעלה, אם זה לינוקס זה יהיה אפאצ'י, אם זה ווינדוס זה לרוב יאי.אי.אס, והשרת הזה מקבל בקשה.
עכשיו, יש שתי אפשרויות, או שהקליינט מבקש עמוד סטטי, זה אומר סתם קובץ מתוך התיקייה בשרת, כמו תן לי איזשהו קובץ טקסט מתוך התיקייה בשרת.
סתם מבקש קובץ שנמצא בתיקייה והשרת מחזיר לו את הקובץ. אבל יכול להיות דבר יותר מתוחכם, השרת יכול להחזיר עמוד דינמי. מה זה אומר דינמי?
זה אומר שאת הקובץ הזה שהוא יחזיר לו הוא ירכיב לו אונליין. הוא ייקח את הבקשה שלו ובמקום לתת לו קובץ הוא ירכיב את התשובה מתוך מסד נתונים.
שימו לב פה, אתם רואים יש עוד שרת אחד שהוא דאטאבייס, שהוא מסד נתונים. זאת אומרת ששרת הווב יכול לפנות למסד נתונים, להביא מידע, להרכיב תשובה ולשלוח ללקוח.
זה לא דף סטטי כבר, זה הרבה יותר מתוחכם, זה דף דינמי. לדוגמה, באתר החדשות, זה מה שקורה. הכתבים מכניסים חדשות לתוך הדאטאבייס, לתוך מסד נתונים, והלקוחות שמגיעים לאתרי חדשות פונים לשרת, שרת פונה לדאטאבייס שולף את החדשות האחרונות ומרכיב אותן.
כדי לעשות את כל התחכום הזה יש לנו כבר שפה מיוחדת, שפת תכנות כמו PHP או .NET. זאת אומרת שרת ווב פונה למנוע מיוחד שמותקן בתוך השרת, מנוע PHP או מנוע .NET, המנוע הזה לוקח איזושהי שבלונה, איזשהו טמפלייט כזה של תשובה, מוסיף אליה מידע מתוך דאטאבייס, מתוך SQL, מרכיב שבלונה פלוס התשובה ושולח את זה חזרה לשרת הווב ושרת הווב מחזיר את זה ללקוח וזה
נקרא דף דינמי בצד שרת אפשר להסתדר גם בלי זה תסתכלו יש פה אפילו כתוב פה שאנחנו בוויקיפדיה בין dynamic webpages כתוב פה webpages העמוד הווב בצד הקליינט עוד מעט נדבר על זה יכול להיות דינמי זה אומר שאצל לקוח זה דינמי אבל בצד השרת זה יהיה סטטי כמו github לדוגמה האתר של גיטאב נותן לנו עמודים סטטיים מה
זה עמודים סטטיים פנית לשרת ביקשת דף קיבלת דף או אמזון s3 שזה גישה לקבצים אחסון של קבצים כמו ftp כזה אז השרת יכול להיות או סטטי או דינמי גם הלקוח יכול להיות או סטטי או דינמי מה זה אומר זה אומר שגם הסרבר סייד יכול להיות דינמי זה שמרכיב לנו את התשובה זה גם נקרא סרבר סייד סקריפטינג כאילו יש סקריפט שרץ בשרת ומרכיב לנו את התשובה ויכול להיות גם צעד דינמי בקליינט
קליינט צעד דינמי, מה זה אומר קליינט? זה אומר שאצל הלקוח משתנים כל מיני דברים על המסך כמו אנימציות, כמו פתאום הוא מטעין איזושהי פרסומת חדשה או שהוא מוסיף לנו למטה, אנחנו עושים גלילה מכירים את זה שאתם גוללים למטה, נניח באתר ynet בחדשות אתם גוללים למטה, פתאום אתם מגיעים לסוף, הוא מוסיף עוד קצת ועוד קצת
ויש לכם גלילה אינסופית כזאת כי הקליינט כל הזמן משתנה, זה נקרא קליינט דינמי. איך הקליינט הזה עובד? קליינט מקבל html מהשרת, הופך אותו בעזרת javascript למה שנקרא DOM, DOM זה אוסף של אובייקטים ככה, הופך את הטקסט לאובייקטים בזיכרון, וכל אובייקט מצייר על המסך, זה נקרא DOM.
עכשיו, מה javascript יודע לעשות? שפת javascript בתוך הדפדפן יודעת לשחק עם הדום הזה תוך כדי פעולה של האתר האתר שלי עובד וג'אווה סקריפט מגיע פתאום מחליף לנו איזשהו אובייקט בתוך דום בתוך העץ הזה שהוא מצייר וברגע שאנחנו מחליפים משהו בתוך דום זה גם משתנה לנו על המסך למעשה המסך של הדפדפן משקף את העץ האובייקטים הזה שהוא מאחורי הקלעים
של הדפדפן אז מגיע html הוא עובר תהליך של פרסינג לדום הופכים אותו לאובייקטים של דום אם יגיע משהו ב html שהוא לא מכיר אז הוא יתעלם ממנו אחרי שהוא עשה לו פרסינג והפך אותו לדום הדפדפן מתחיל להציג אותו ומאחורי הקלעים רצה כל הזמן שפת javascript שיכולה לעדכן את הדום הזה ואז התצוגה משתנה אז כמו שאמרנו יכול להיות
מצב שהclient side יהיה דינמי זה אומר שהוא ישתנה יטעין עוד חלקים יהיה לו קוד בשפת javascript שירוץ אצל הלקוח בדפדפן וישנה את המראה ויעשה כל מיני דברים אבל צד שרת יכול להיות בכלל סטאטי אין קשר יש צד לקוח שיכול להשתנות ויש צד שרת שיכול להיות סטאטי מה זה צד שרת סטאטי סתם צד שרת שנותן לך
דפי html או דפים קבועים הוא לא עושה שום פעולה על הבקשה שלך אתה מבקש משהו אתה מקבל דפים זה כמו שרת קבצים כמו ftp כמו שיתוף קבצים אז htp יכול להיות כמו השיתוף קבצים שאתה בא ולוקח קובץ והוא יכול להיות יותר מתוחכם הוא יכול להיות דינמי מה זה דינמי זה אומר שאנחנו בצד של השרת מטפלים בבקשה שלך באופן פרטני ומייצרים
עבורך תשובה ייחודית בשבילך עם החדשות שמעניינות אותך עם הסרטים שאתה כבר ראית באתר של פרקטיקיו אתה מקבל ויים ירוקים על הסרטים שראית ודברים כאלו זה יכול להיות גם משולב זה יכול להיות גם דינמי בצד הלקוח וגם דינמי בצד השרת גם השרת מטפל בבקשות שלך באופן ייחודי וגם צד לקוח משנה את התצוגה
הוא מכניס חלקים תוך כדי עבודה בלי להתאים מחדש את הדף. זה יכול להיות גם וגם. עכשיו, בשביל שצד שרת יהיה דינאמי, צריך שמה לתכנת באיזושהי שפה, כמו PHP, כמו .NET, אז יש לנו שפות תכנות בצד של השרת, ויש לנו גם שפות תכנות בצד הקליינט, כמו JavaScript, שזה למעשה השפה היחידה שהבראוזר מבין,
אבל עשו תוספות מעל ה-JavaScript, כמו Angular, כמו React, זה תוספות שמקלות לנו לכתוב קוד בשפת JavaScript.
זאת אומרת, אנחנו כמתכנתים יכולים להשתמש באנגולר או React בשביל לכתוב את ה-JavaScript בצורה יותר טובה. בסופו של יום ללקוח נשלח דף HTML, דף CSS עם העיצוב הזה של HTML, זה העיצוב שלו, JavaScript זאת שפת תכנות היחידה שהוא מבין, ויכול להיות כל מיני קבצי עם MP4 ו-MP3 וכל מיני מולטימדיה או זיפים,
קבצים נוספים. זה מה שקורה הדאטה בייס שהשרת פונה אליו מאחורי הקלעים זה יכול להיות או מייקרוסופט