דובר: בואו נדבר על עוד protocol-- העברת Hypertext פרוטוקול, או HTTP. אז דברנו על IP וTCP בסרטונים קודמים. ואלו הם פרוטוקולים המכתיבים כיצד מידע מהלכים ממכונה למכונה ו מתכנית לתכנית או שירות שירות באמצעות האינטרנט, באמצעות רשת זו של נתבים ומכונות. אבל זה בדרך כלל לא את התמונה כולה, נכון? בדרך כלל כאשר אנו שולחים מידע, התכנית עצמו-- כאשר הנתונים הוא קיבל, נניח, למשל, בדוא"ל דרך יציאת TCP 25 או בקשת דף אינטרנט דרך יציאת 80, יש בדרך כלל מערכת של כללים שיש לעבד את מה שקבלתי זה עתה. וHTTP הוא דוגמא רק פרוטוקול כזה. HTTP הוא רק פרוטוקול שכבת יישום שאנחנו הולכים לדבר עליו. אבל זה עוד סט של כללים מכתיבים כיצד מידע הוא להיות משודר ומעובד באמצעות האינטרנט. בפרט, HTTP מציין בדיוק איך יש להגיש בקשה ל דף אינטרנט ואיך בדיוק שרת, מכונה שמארח דפי אינטרנט, מספק מידע ש לגבות ללקוחות. אז פרוטוקול זה לא למעשה יש משהו לעשות עם כמה מידע מהלכים מנקודה 'לנקודה זה באמת המערכת של כללים for-- זה בעצם את הכללים אירוסין לעבודה עם דף אינטרנט, דומה כאשר מישהו גלי ידם עליך, אתה אמור לנופף בחזרה. זה סוג של פרוטוקול אנושי קונבנציונלי. פרוטוקול HTTP רק אומר, אם אתה רוצה לבקש אינטרנט דף, לוודא מראה הפורמט שלך כמו זה-- סוג של עיצוב כמו מכתב עסקי, למשל. ובאופן דומה תהיה התגובה מגיע על פי פרוטוקול זה. יש אחרים פרוטוקולי שכבת יישום כי אנחנו לא הולכים ל לדבר על קטעי וידאו. אבל אלה כוללים דברים כמו פרוטוקול העברת קבצים, פרוטוקול העברת דואר האלקטרוני ל שליחת הודעות דוא"ל, הפצת נתונים שירות, שולחן עבודה מרוחק פרוטוקול, RDP, ש משמש אם אתה רוצה לגשת מרחוק המחשב ממחשב אחר, XMPP, אשר לעתים קרובות ידוע כג'אבר או צ'אט, אז זה הפרוטוקול לשימוש בשירותי צ'אט. ויש הרבה, הרבה, הרבה אחרים. אז בכל פעם שאתה משתמש ב שירות, השירות מצפה מידע להיות received-- בקשה להיות received-- ב פורמט מסוים מאוד ונדרש לחזור מידע בחזרה בפורמט מסוים מאוד גם כן. אז בואו נחזור לאיור שלנו שלנו רוצים לדבר לאינטרנט. אז אנחנו שמחים, ואנחנו רוצים ללכת לcats.com, נכון? אז אם אנחנו מדברים רק לcats.com, אפשר לומר משהו כמו היי, אני יכול לראות את דף הבית שלך? וcats.com כנראה יהיה להגיב, כן, בטח. הנה לך. אז זה סוג אדם של תשאל ותשובות. מה שנראה כמו בHTTP? ובכן, זה בעצם סוג של מתרגם די נקי למשהו כזה. אפשר לומר GET / HTTP / 1.1 מcats.com המארח. אז בעצם מה שאני עושה כאן הוא מבקש www.cats.com/ דף האינטרנט. אנחנו בדרך כלל להשמיט את הקו הנטוי בימינו, אבל זה היית רק אומר בדף הבית של cats.com. אה, ודרך אגב, אני הולך להיות באמצעות גרסת HTTP 1.1 לתקשר איתך. זה סוג של אנלוגי ל אומר, כמו, אגב, אני הולך להיות דוברי בצרפתית, או אגב, אני הולך להיות מדבר באנגלית. זה פשוט הפורמט של הפרוטוקול. זה גם 1.0, שהוא לא נפוץ יותר. אז אני מדבר HTTP 1.1, ו אני רוצה www.cats.com/. בבקשה לקבל את זה בשבילי. ואז יש מידע אחר, too-- הנקודה, הנקודה, נקודה שם, שהוא מידע על שאתה כל כך cats.com היה יודע לאן לשלוח אותו. אבל אלה הם שני סוג של חלקים קריטיים בהתחלה של HTTP request-- בדיוק כמו כשאתה מתחיל מכתב שאתה אומר, יקירים, ריק. זה דומה מאוד ברוחו לזה. ואם cats.com הולך אומר, אה, בטח, הנה לך. הם עלולים להגיב כמו זה-- אני גם להגיב. אני מדבר גם HTTP 1.1. בקשתך תאושר, 200 על אישור. מה אתה עומד מקבל הוא HTML ולאחר מכן נקודה, נקודה, נקודה קצת מידע נוסף. ובתחתית בקשה היא למעשה HTML, שפת הסימון, תוכן של דף הבית של cats.com. אז HTTP / 1.1-- אני מכיר הבקשה התקבלה דרך HTTP 1.1. בקשתך אושרה. אני יכול לתת לך את מה שאתה רוצה, 200 על אישור. אתה עומד לקבל HTML. ואז הנה HTML שביקשת. אבל לפעמים הבקשות שלנו לא תמיד הולכים די על פי תכנית. האם אני יכול לראות את דף cats.html שלך? ובכן, מה אם הם אומרים, אנחנו אין לי דף cats.html, שנראה קצת לא מציאותי בגלל שהם cats.com. אפשר היה לחשוב שיהיה להם cats.html. אבל בסדר. אז זה סוג של אינטראקציה אנושית קונבנציונלית עכשיו היו לנו עם cats.com. איך זה לתרגם? זה יכול להיות משהו מוכר לך. הבקשה שלנו נראתה בדיוק אותו הדבר, למעט במקום קו נטוי מקבל עכשיו אנחנו מקבלים cats.html. אז עכשיו מה בעצם כל זה בקשה אומרת שנותן לי בבקשה www.cats.com/cats.html. אז המארח והאמצע חלק מזה שורה העליונה יש לציין במדויק מה דף אני מבקש. אבל cats.com במקרה זה לא הולך כדי להיות מסוגל להגיב באופן חיובי. הם לא יודעים שאנחנו מדברים על. ואז זה משהו שאולי יש לך HTTP before-- ראה 1.1 404 לא נמצא. לא הצליח למצוא את מה ש אתה מבקש. אגב, אני הולך לתת לך בחזרה כמה HTML, ובדרך כלל שHTML הוא התוכן של חלק 404 דף. ובמקרה של cats.com, זה כנראה כמה חתולים חמודים בסל עם פנים 404 עצובים לידם, בגלל שאתה הולך להיות עצוב כשאתה לא מקבל דף שאתה מחפש. זה סוג של היסודות של מה פרוטוקול, בקשות פרוטוקול HTTP נראה כמו. הם באמת דומים לאופן בו אנו יגרום אינטראקציה דומה באמנות רק אנושיות לבקש משהו ומקבל אותו בחזרה או כתיבה מכתב ומצפה לתגובה מכתב בפורמט מסוים. זה פחות או יותר מה ש HTTP הוא רק canonicalizing לכל המכשירים שרוצים גישה דפי אינטרנט, העברות היפרטקסט. אז קו של הצורה, זה גרסת HTTP יעד בקשת שיטה, נקרא קו בקשת HTTP. זה בדרך כלל הדבר הראשון שהוא מועבר כחלק מבקשת HTTP או אם אתה שואל לHTTP. זה קצת כמו, כמו שאמרתי, אמר יקר, ריק בראש המכתב שלך. הם יודעים שאתה כתיבה להם מכתב. אז זה דומה מאוד לאומר, אני יודע שהם עושים בקשת HTTP וזה פורמט המסוים הם מבקשים. גרסת HTTP היא כנראה תמיד הולך להיות HTTP / 1/1. גם 1.0 קיים, אך הוא לא באמת השתמש יותר. לצורך CS50, מקבל הוא כנראה תמיד מה שאתה הולך להיות משתמש כאשר אתה בעצם מה שהופך את בקשות HTTP ישירות. אבל POST הוא עוד אפשרות שאנחנו לא הולך לדבר על עכשיו. ולאחר מכן בקשה-היעד הוא מה דף בשרת של המארח אתה הייתי רוצה לקבל. כפי שאמרתי, ששם מארח היא בשורה נפרדת, בדרך כלל הקו השני של הבקשה הכוללת. וכך יחדיו, המארח שם ויעד הבקשה לציין ספציפי חיפשו משאבים. בדוגמא שלנו 404 לפני שני, אני שאלתי שוב לwww.cats.com, cats.com להיות המארח. ובתור הבקשה שלי, אמרתי /cats.html. זה היה היעד לבקשתי. אז כולל אני מבקש תוכן או המשאב ממוקם בwww.cats.com/cats.html. ולאחר מכן על בסיס האם המשאבים קיימים ואם השרת יכול לספק המשאבים בהתאם ללקוח של בקשה, אתה יכול לקבל קודי מצב שונים בחזרה. חלק מקודי המצב אלה שראיתם בגלל שהם חלק מהתגובה. חלק מהם, 200 אישור, הם כנראה די שקט. אתה אף פעם לא ראית בוודאי דף להגיב 200 על אישור. אתה פשוט מקבל את הדף. זה לא כמו שגיאה 404, שהיא בדרך כלל די ברורה. אתה בדרך כלל רואה שזה אומר 404. אז בואו נדבר על מה שכמה של קודי מצב אלה עשויים להיות. שוב, כאשר השרת מגיבים אלינו, הם הולך להגיב מעמד גרסת HTTP. בדרך כלל HTTP / 1.1. מה הם קודי מצב אלה הולכים להיות? ובכן, אנחנו עלולים להגיע להצלחה. אז בקטגורית ההצלחה, אנחנו עשוי לקבל קוד 200 עם אישור הטקסט. מה זה אומר? ובכן, הכל טוב. אתה עשית בקשה בתוקף. הנה תגובה תקפה. אני היה מסוגל לספק בדיוק מה שרצית. לפעמים אתה עלול לקבל דברים אחרים שאתה לא שם לב מייד אבל הם מעט כישלונות. הם נקראים הפניות. יש שני אלה נפוצים כאן. Permanently-- הועבר 301 מה זה בעצם אומר הוא הדף הוא עכשיו במיקום חדש. הוא יחיה שם לנצח. ורוב הדפדפנים באופן אוטומטי להפנות אותך. אז אתה לעולם לא באמת רואה 301, או, אלא אם כן אתה באמצעות באמת-מחוץ לתאריך דפדפן, אולי, בגלל התגובה 301 היא חלק מ הנקודה, הנקודה, נקודה של התגובה 301. זה גם אומר לך שבו הדף החדש הוא. וכך רוב הדפדפנים רק להפנות אותך לשם, בהנחה שאתה רוצה ללכת לשם. לפעמים אתה גם תקבל 302 מצא. וזה אחד שאתה באמת אולי עדיין רואה מדי פעם. לפעמים דפים לעבור באופן זמני. אז זה לא הולך להיות מובנה בתוך הבקשה אומרת לי הדפדפן לשנות בכל עת באופן קבוע הוא רואה את הבקשה ש לעשות כדי לשנות את זה למשהו אחר. אז אולי אתה רואה 302 נמצא, שביסודו אומר דף זה גר במקום אחר. אבל זה לא הולך לחיות שם לנצח. זה יהיה כנראה סופו של דבר ללכת בחזרה למקום שבי אתה חושב שזה. ואז תקבל דברים כמו שגיאות הלקוח. אז אלה הם אלה שיש לך כנראה ראה, עכשיו. אתה כנראה לא ראית 200S או 300s, אבל אתה כנראה מכיר את 400s. וזה מה שנדברנו על בשני, 500s גם כן. ייתכן שתראה 401 לא מורשים. בדרך כלל זה אומר שאתה מנסה לגשת לדף, אבל אתה לא מחובר. אז אתה מנסה וללכת לכמה פרופיל או משהו בפייסבוק או שאתה מנסה וגישה some-- אתה בעבודה. אתה מנסה לגשת למשהו באינטרנט של העבודה שלך, אבל אתה לא מחובר. אתה לא יכול לראות את הדף. אתה עלול לקבל 401 לא מורשה, מה שאומר שאנחנו כנראה יהיה מסוגל לספק את הבקשה זו, אבל קודם אתה צריך להיכנס למערכת כדי לעשות זאת. לעומת זאת, אתה עשוי לקבל 403 אסור, שזה לא ממש משנה אם אתה מחובר או לא. בקשה זו אינה מותרת. המשאבים קיימים בשרת. אבל אסור לך לגשת אליו. זה בדרך כלל קבצים פנימיים ש לחיות בשרת מסיבות שונות אבל הם לא נועדו להיות נצפה מהעולם החיצוני, ולכן הם אסורים. הם חיים שם. אני לא אומר שאני לא יכול למצוא אותו. אבל אני אומר שאני לא יכול לתת לך את זה. וזה לא משנה אם אתה מחובר או לא. ואז כמובן, נפוץ מאוד 404 לא נמצא. הקובץ לא קיים בשרת. אני רוצה לספק את לא בקשתך, אבל אני יכול. אתה גם רואה לפעמים שרת שגיאות, הנפוץ ביותר, בדרך כלל, 500 להיות שגיאת שרת פנימית, ש לא ממש אומר לך משהו בכלל על מה השתבש. אבל זה לא באמת מה שהופך אותך טעות בבקשתך. זה בעצם השרת נכשל לספק על פי בקשה איכשהו. אז 500 היא התגובה הכללית. תראה גם משהו כמו שירות לא זמין, אני מאמין בו קוד 503. וTimeout-- Gateway אם אי פעם היה רק ​​דף לשבת שם וטעינה טעינה וטעינה ואתה לא יודע אם זה הולך עומס ואז סופו של דבר זה רק says-- רק מוותר. זה Gateway Timeout 504. השרת רצה לבצע את בקשתך, אבל משהו השתבש על האתרים-- השרת לא על האתרים-- ל לגרום לכך שיש בעיה. עכשיו, אנחנו יכולים לסיים את הסיפור כאן, אבל מה אני בעצם הולך לעשות עכשיו הוא אני הולך לפתוח הדפדפן שלי ולהראות לך איך ייתכן שתוכל לראות חלק מקודי המצב הבאים גם אם אתה בדרך כלל לא רואה אותם. ואנחנו הולכים לעשות את זה על ידי לקיחה יסתכל על כמה כלי פיתוח. בסדר אז הנה אני עכשיו בחלון הדפדפן שלי. ואני רוצה ללמוד קצת נוסף על בקשות HTTP אלה. איך אני יודע-- בהחלט אנחנו יודעים אם דף goes-- כאשר משהו משתבש, אנחנו מקבלים 404. כולנו ראינו את זה. אנחנו לא צריכים להמחיש ש. אבל מה הם כמה אלה אחרים? ואיך היינו רואה בקשות אלה בפעולה? דבר ראשון אז אני הולך לעשות הוא לפתוח את כלי פיתוח. אז כלי פיתוח בנויים למרבית הדפדפנים המודרניים ומאפשר לנו לראות את הדברים שאנחנו לא בדרך אחרת see-- איזה מידע נוסף של משודרים מתחת האינטרנט שלנו בקשות. אני משתמש ב- Google Chrome כאן. ולפתוח כלי פיתוח בכרום, אתה פשוט פגע F-12, וזה הולך לפתוח זה בצד. ברגע שאני מקליד את הבקשה, אני להתמקד ב כדי שנוכל לראות מה קורה כאן. אבל מה שאני הולך לעשות בדפדפן שלי בר הוא-- ואני להתקרב מעל כאן-- אני אעשה בקשה לwww.google.com. כולנו כנראה עשינו בקשה זו לפני. אני הולך על Enter. עכשיו, כאן במפתח שלי כלים, שבחרתי בכרטיסייה הרשת. ושמתם לב הרבה דברים כאן. תראה these-- 200 אישור, אישור 200, כמה של קודי המצב שיבוא. אני לא יודע למה אני מקבל 302 נמצאו. אני לא מבין הייתי רואה שאחד. אבל בעצם שם לב שדי הרבה, במונחים של request-- Google שלי אני עשיתי פשוט מאוד בקשה לדף של גוגל. ובתהליך של אספקת הבקשה שלי, גוגל כנראה עשתה הרבה בקשות אחרות בשם שלי. אבל אני כבר עשיתי בקשת גט לגוגל דף ואני מקבלים הרבה 200 OKs. אני לא רואה 200 על אישור ב המסך שלי, אבל אני מקבל הרבה בקשות שנעשו. אחד יותר כי אני די בטוח הולך לעבוד הוא-- לאלו מכם ש באמת האסכולה ישנה, ייתכן שאתה יודע שפייסבוק היה לא תמיד בFacebook.com. בימים הראשונים שלה זה היה בwwww.thefacebook.com. הם כנראה לא יכולים לקבל גישה לFacebook.com במשך דקות ארוכות. ואז מה אני מצפה כאן הוא כדי לקבל מידע. ונראה אם ​​זה יצליח. מה אני מצפה כאן הוא לקבל מידע שפייסבוק עבר באופן קבוע מthefacebook.com לFacebook.com. אז אני מצפה למקום בחלק העליון של הבקשות שלי מעל בכלי הפיתוח שלי כדי לקבל הודעה 301 שפייסבוק עבר באופן קבוע. שוב, אני לא רואה 301 על המסך בדפדפן שלי. ובגלל שזה 301, זה מהלך קבוע. הדפדפן שלי, להיות ש זה דפדפן מודרני, הוא כנראה הולך להפנות שלי Facebook.com בכל מקרה. אבל בואו נראה מה קורה. ועכשיו אני הולך ל ללכת לthefacebook.com. וכן, יש את זה נכון בחלקו העליון. זה הלך משם, אבל זה היה שם. תן לי לגלול מעלה כאן. ממש כאן בראש. אני עשיתי את בקשה לthefacebook.com, ואני מקבל תגובה שהדף הזה עבר באופן קבוע. ולאחר מכן 307 כאן הוא הפניה פנימית. ואז זה מה שיש בפועל העביר אותי להרבה יותר www.facebook.com המוכר. אז קודי תגובה אלה לעשות עדיין יקרה, גם אם אנחנו לא רואים אותם. אני לא הולך ל להמחיש 401, 403, 404, בגלל שאתה כנראה כבר ראית אלה בנקודות שונות. ו -500, הייתי רק עצם-- היינו מזל אם יש לי 500 כי אנחנו לא יודעים מה שרתים ירדו כרגע בכל מקום. אבל את הקודים הללו לעשות קיימות, ויש דרך כדי לגשת אליהם גם אם אנחנו לא לראות אותם ממקור ראשון על המערכות שלנו. אני דאג לויד. זה CS50.