>> СЛУХАЛИ: Давайте поговоримо про інше protocol-- на передачі гіпертексту
Протокол, або HTTP.
Таким чином, ми вже говорили про IP і TCP в попередніх відео.
І ті протоколи що диктувати, яким чином інформація
рухається від машини до машини і від програми до програми або службі
обслуговувати через Інтернет, за допомогою ця мережа маршрутизаторів і машин.
>> Але це, як правило, не вся картина, чи не так?
Зазвичай, коли ми відправляємо Інформація, програма
в тому: коли дані отримані, наприклад, наприклад,
по електронній пошті через TCP-порт 25 або його запит сторінки веб через порт 80,
зазвичай є система правил є обробляти те, що я тільки що отримав.
І HTTP є прикладом саме такий протокол.
>> HTTP є єдиним протокол прикладного рівня,
що ми збираємося поговорити.
Але це інший набір диктують правил, як
Інформація повинна бути передана і обробляються за допомогою мережі Інтернет.
Зокрема, HTTP визначає, як саме
потрібно зробити запит для веб-сторінки і як саме
сервер, машина що приймає веб-сторінок,
поставляє цю інформацію повернутися до клієнтів.
>> Так цей протоколу не насправді є що-небудь
з тим, як інформація переміщається з точки А
в точку B. Це дійсно система правил
for-- це в основному правила Участь для роботи з веб-сторінки,
схоже на коли хтось хвилі свої сили в вас,
ви повинні махнути назад.
Це свого роду звичайна людина протокол.
Протокол HTTP просто каже, якщо Ви хочете, щоб попросити мережу
сторінка, переконайтеся, що ваші погляди формат як this-- ніби як форматування
діловий лист, наприклад.
І відповідь буде аналогічним прийшов у Відповідно до цього протоколу.
Є інший протоколи рівня додатків
що ми не збираємося поговорити у відео.
Але це відносяться речі, як Протокол передачі файлів,
Простий протокол передачі пошти для відправка електронної пошти, розподілу даних
Послуги віддаленого робочого столу Протокол, RDP, який
використовується, якщо ви хочете, щоб віддалений доступ комп'ютер з іншого комп'ютера,
XMPP, який часто відомий як Jabber або в чаті,
таким чином, це протокол для використання чата послуги.
І багато, багато, багато інших.
>> Таким чином, кожен раз, коли ви використовуєте служба, служба
очікує інформацію щоб бути received-- запит
бути received-- в дуже конкретний формат
і потрібно для повернутися назад інформацію
в дуже певному форматі, а також.
>> Отже, давайте повернемося до нашої ілюстрації з нас хоче, щоб поговорити з Інтернет.
Таким чином, ми раді, і ми хочемо, щоб перейти до cats.com, вірно?
Так що, якщо ми тільки що говорили, щоб cats.com, ми могли б сказати щось, як агов,
я можу побачити вашу домашню сторінку?
І, ймовірно, cats.com відповісти, так, звичайно.
Тут ви йдете.
Так що це свого роду людина АСК-відповідь.
>> Що це виглядає в HTTP?
Ну, це насправді вид переводить досить чисто, щоб щось на зразок цього.
Ми могли б сказати, GET / HTTP / 1.1 від господаря cats.com.
Тому в основному те, що я роблю тут просити веб-сторінки www.cats.com/~~pobj.
Ми зазвичай опускаємо рису в даний час, але, що б просто
значить домашню cats.com в.
>> О, і до речі, я збираюся щоб використовувати HTTP версії
1.1 для зв'язку з вами.
Це свого роду аналогом кажучи, як, до речі,
Я збираюся говорити по-французьки, або по шляху,
Я збираюся говорити англійською мовою.
Ось тільки формат протоколу.
Це також 1,0, який зазвичай не використовується більше.
Так що я говорю HTTP 1.1, і Я хотів би www.cats.com/~~dobj.
Ласка, одержуємо, що для мене.
>> А тут ще інша інформація, too-- точковий, крапка, крапка є,
яка представляє собою інформацію про які ви так cats.com
знатиме, де для його відправки.
Але це два Сортувати критичних частин
на самому початку з HTTP-request--
так само, як коли ви починаєте Лист скажеш, коханий, порожній.
Це дуже схоже за духом на це.
>> І якщо cats.com збирається кажуть, о, звичайно, тут ви йдете.
Вони могли б відповісти, як this-- Я також відповідати на запити.
Я також говорю HTTP 1.1.
Ваш запит буде схвалений, 200 OK.
Те, що ви збираєтеся отримуєте HTML, а потім
крапка, крапка, крапка деяку додаткову інформацію.
І в самому нижній частині Запит насправді HTML,
мова розмітки, то Зміст домашню сторінку cats.com в.
>> Так HTTP / 1.1-- я визнати свою Запит був прийнятий за допомогою HTTP 1.1.
Ваш запит був затверджений.
Я можу дати вам те, що ви хочете, 200 OK.
Ви збираєтеся отримати HTML.
А потім ось HTML, що ви просили.
>> Але іноді наші прохання не завжди йдуть зовсім за планом.
Чи можу я побачити свою сторінку cats.html?
Ну, що, якщо вони говорять, ми не їсти сторінка cats.html,
який, здається, свого роду нереально тому що вони cats.com.
Можна подумати, що вони будуть мати cats.html.
Але ОК.
Таким чином, це є свого роду звичайна людина взаємодія
зараз ми мали з cats.com.
Як це перекласти?
>> Це може бути щось вам знайоме.
Наше прохання виглядала точно так само, крім замість того, щоб слеш
ми тепер отримувати cats.html.
Так що тепер в основному вся ця запит кажу, будь ласка, дайте мені
www.cats.com/cats.html.
Так господаря і середині частина цієї верхньому рядку
є точно вказати на якій сторінці я прошу.
Але cats.com в цьому випадку не буде щоб бути в змозі відповісти позитивно.
Вони не знають, що ми говоримо про.
І так це те, що вам, можливо, доведеться бачив before-- HTTP 1.1 404 Not Found.
Я не міг знайти те, що ви просили.
До речі, я збираюся дати вам назад деякі HTML, і, як правило, що HTML-
є вміст якого-небудь 404 стр.
І у випадку cats.com, це, ймовірно,
деякі милі кішки в кошику з сумний 404 особа поряд з ними,
тому що ви будете сумно, коли ви не отримаєте сторінку
що ви шукаєте.
>> Це свого роду основам який протоколів, запити протоколу HTTP
виглядає як.
Вони дійсно схожі, як ми б подібний взаємодія
всього людини конвенцій з проханням щось
і отримати його назад або написання листи і чекаючи відповіді
буква в певному форматі.
Це досить багато, що HTTP тільки канонізації
для всіх пристроїв, які бажають отримати доступ веб-сторінки, гіпертекстові переклади.
>> Таким чином, лінія вигляді, цього метод запиту HTTP цільової версія,
називається HTTP-запиту лінії.
Це, як правило, перше, що передається як частину запиту HTTP
або якщо ви просите HTTP.
Це ніби як, як я вже сказав, кажучи дорога, порожній у верхній Ваш лист.
Вони знають, що ви писати їм лист.
Таким чином, це дуже схоже щоб говорити, я знаю,
що вони роблять запит HTTP в і це конкретний формат
вони просять.
>> HTTP версія, ймовірно, завжди буде HTTP / 1/1.
1.0 також існує, але це не дійсно використовується більше.
Для цілей CS50, GET, ймовірно, завжди
те, що ви будете використовуючи, коли ви насправді
роблячи прямі запити HTTP.
Але СТОВП інший варіант, що ми не говоритиму про прямо зараз.
А потім запиту мета те, що сторінка на сервері господаря
Ви хотіли б отримати.
Як я вже сказав, що ім'я хоста це окрема лінія, як правило,
друга лінія від загального запиту.
І так разом узяті, господар Назва та мета запиту
вказати конкретний ресурс в розшуку.
У нашому прикладі 404 секунду назад, я питав знову www.cats.com,
cats.com бути господар.
І в моїй рядку запиту, Я сказав /cats.html.
Це була моя мета запиту.
Так в цілому, я питав для зміст або ресурс, розташований
в www.cats.com/cats.html~~pobj.
>> І тоді в залежності від того існує ресурс
і чи буде сервер може доставити ресурс відповідно до клієнта
Запит, ви можете отримати різні коди статусу назад.
Деякі з цих кодів стану, ви бачили тому що вони є частиною відповіді.
Деякі з них, 200 ОК, є ймовірно, досить тихо.
Ви, напевно, не бачив ніколи сторінка реагувати 200 OK.
Ви просто отримуєте сторінку.
Це не те, помилка 404, які, як правило, досить ясно.
Ви зазвичай бачите, що він говорить, 404.
>> Отже, давайте поговоримо про те, що деякі з тих кодів стану може бути.
Знову ж таки, коли сервер реагує на нас, вони
реагуватиме HTTP статус версії.
Зазвичай HTTP / 1.1.
Які ці коди статусу буде?
Ну, ми могли б отримати успіх.
Таким чином, в категорії успіху, ми може отримати код 200 з текстом OK.
Що це значить?
Ну, все добре.
Ви зробили правильний запит.
Ось правильну відповідь.
Я був в змозі поставити саме те, що ви хотіли.
>> Іноді ви можете отримати інші речі що ви не помітите відразу
але кілька невдач.
Вони називаються перенаправлення.
Там дві поширені з них тут.
301 Moved Permanently-- те, що це в основному означає,
сторінка зараз знаходиться на новому місці.
Це буде жити там вічно.
І більшість браузерів автоматично перенаправить вас.
Таким чином, ви ніколи не будете дійсно бачити 301, або, якщо ви не
використовуючи дійсно поза дати браузера, ймовірно,
оскільки 301 відповіді є частиною крапка, крапка, крапка в 301 відповідь.
Це також говорить вам, де нова сторінка.
І так більшість браузерів просто перенаправити вас там,
за умови, що ви хочете, щоб піти туди.
>> Іноді ви також отримаєте 302 знайдено.
А це ви насправді може все ще бачити час від часу.
Іноді сторінки тимчасово переїхати.
Так що це не буде побудований в запит повідомляючи браузеру
постійно міняти в будь-який час він бачить, що вас запит
зробити, щоб змінити його на щось ще.
Таким чином, ви можете побачити 302 Знайдено, що в основному
каже, що це сторінка живе десь в іншому місці.
Але це не збирається жити там вічно.
Це, в кінцевому рахунку, ймовірно, піти туди, де ви думаєте, це так.
>> Тоді ви отримаєте речі як клієнтських помилок.
Таким чином, ці ті, які ви напевно, бачили, тепер.
Ви, напевно, не бачили в 200s або 300s, то
але ви, ймовірно, знайомі з 400s.
І це те, що ми будемо говорити про в секунду, 500s, а також.
>> Ви можете побачити 401 Несанкціоноване.
Зазвичай це означає, що ви намагаються отримати доступ до сторінки,
але ви не зайшли.
Таким чином, ви спробуйте, і піти на деякі профіль або щось на Facebook
або ви намагаєтеся і доступ some-- ви на роботі.
Ви намагаєтеся отримати доступ до де- в інтернеті вашого твору,
але ви не увійшли в.
Ви не можете бачити сторінку.
Ви можете отримати 401 несанкціоноване, що означає, ми, ймовірно,
буде в змозі задовольнити це прохання, але спочатку ви повинні увійти, щоб зробити так.
>> І навпаки, ви можете отримати 403 Заборонене, що це насправді не
має значення, якщо ви увійшли в систему чи ні.
Цей запит не допускається.
Існує ресурс на сервері.
Але ви не можете отримати до нього доступ.
Це, як правило внутрішні файли, які жити на сервері з різних причин
але не призначені, щоб бути доступ із зовнішнього світу,
і тому вони заборонені.
Вони живуть там.
Я не кажу, що я не можу її знайти.
Але я кажу, що я не можу дати його вам.
І це не має значення, якщо Ви увійшли в систему чи ні.
І тоді, звичайно, дуже поширеним 404.
Файл не існує на сервері.
Я хотів би, щоб задовольнити Ваш запит, але я не можу.
>> Ви також іноді бачу сервер Помилки, найбільш поширеним в цілому
будучи 500 Внутрішня помилка сервера, який насправді не що-небудь розповісти вам
взагалі про те, що пішло не так.
Але це насправді не ви робите помилка в запиті.
Це насправді сервер невдачу щоб доставити на прохання якимось чином.
Так 500 є загальний відповідь.
>> Ви також побачите щось як Служба недоступна,
який я вважаю, це код 503.
І шлюз Timeout-- якщо Ви коли-небудь були сторінку просто
сидіти там і завантаження завантаження і завантаження
і ви ніколи не знаєте, якщо це буде навантаження і потім в кінцевому рахунку це просто says--
просто здається.
Це 504 Шлюз очікування.
Сервер хотів виконати ваше прохання,
але щось пішло не так на сервері side--
не так на side-- до причиною того, що, щоб бути проблемою.
Тепер, ми могли б закінчити історію тут, але те, що я насправді збираєтесь робити тепер
є Я збираюся відкрити мій браузер і показати вам,
як ви могли б бути в змозі бачити деякі з цих кодів стану
навіть якщо ви взагалі не бачити їх.
І ми збираємося зробити, що, приймаючи Подивіться на деякі інструменти для розробників.
>> Всі права Так от я Тепер в моєму вікні браузера.
І я хочу, щоб дізнатися трохи Докладніше про ці HTTP-запитів.
Як знаю-- звичайно ми знаємо, якщо сторінка goes-- коли щось йде не так,
ми отримуємо 404.
Ми всі бачили, що.
Ми не повинні показати, що.
Але те, що деякі інші?
І як би ми побачили ці запити в дії?
>> Так перше, що я збираюся зробити, це відкрити Developer Tools.
Так Developer Tools вбудовані в більшості сучасних браузерів
і дозволяють нам бачити речі що ми робимо не інакше
see-- деяку додаткову інформацію на зразок передається під нашому сайті
запити.
Я використовую Google Chrome тут.
І, щоб відкрити Developer Tools в Chrome, ви просто натисніть F-12,
і він збирається відкрити це на стороні.
Після того, як я друкую запит, я буду наближати так що ми можемо побачити, що тут відбувається.
Але те, що я збираюся зробити у своєму браузері бар is-- і я масштабу в більш here--
Я зроблю запит на www.google.com.
Ми всі, ймовірно, зробив Цей запит раніше.
Я вдарю Enter.
>> Наразі, тут, в моїй Developer Інструменти, я вибрав вкладку Мережа.
І ви помітите багато речей тут.
Подивіться на these-- 200 OK, 200 OK, деякі з цих кодів стану вигадувати.
Я не знаю, чому я отримую 302 знайдено.
Я не розумію, що я побачу, що один.
Але в основному досить зауважити, що багато, з точки зору моєї Google request--
Я зробив дуже простий запит сторінці Google.
І в процесі забезпечуючи моє прохання,
Google мабуть, зробив багато інших запитів від мого імені.
>> Але я зробив запит GET для Google, сторінка, і я отримую багато 200 OKS.
Я не бачу 200 ОК мій екран, але я отримую
багато запитів, які були зроблені.
Ще один, що я досить впевнений, що буде працювати
is-- для тих, хто дійсно стара школа,
Ви знаєте, що Facebook був не завжди Facebook.com.
У своїх ранніх днів це було в wwww.thefacebook.com.
Вони, мабуть, не міг отримати доступ щоб Facebook.com досить довго.
>> І так, що я очікував тут, щоб отримати інформацію.
І ми побачимо, якщо це з каструлі.
Що я очікував тут щоб отримати інформацію
що Facebook вже переїхав на постійне проживання від thefacebook.com в facebook.com.
Так що я десь очікував у верхній частині моїх запитів
більше в моїх інструментів розробника щоб отримати повідомлення про 301
що Facebook вже переїхав на постійне проживання.
Знову ж таки, я не побачу 301 на екрані мого браузера.
І тому, що це 301, це постійний рух.
Мій браузер, в тому, що це сучасний браузер,
, Ймовірно, буде перенаправити мені все одно Facebook.com.
Але давайте подивимося, що станеться.
>> А тепер я збираюся перейти до thefacebook.com.
І так, там на самому верху.
Він пішов геть, але це було там.
Дозвольте мені прокручування вгору тут.
Прямо тут на самому верху.
Я зробив запит до thefacebook.com, і я отримую відповідь
що ця сторінка переїхала назавжди.
А потім тут 307 внутрішній редирект.
І так це те, що насправді має переїхав мене до набагато більш
www.facebook.com знайомі.
>> Таким чином, ці коди відповідей зробити ще відбудеться, навіть якщо ми не бачимо їх.
Я не збираюся ілюстрації 401, 403, 404,
тому що ви, напевно, бачили ті, в різних точках.
І 500, я б просто вид of-- ми пощастить
якщо є 500, тому що ми не знаємо, що сервери в даний час де завгодно.
Але ці коди зробити існує, і є спосіб
для доступу до них, навіть якщо ми не побачити їх на власні очі в наших системах.
Я Дуг Ллойд.
Це CS50.