Step 1 (S-102143)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/24471/step/1

Step 1 (S-102143) 1.png

[00:00 - 00:17] Когда мы говорим о поиске информации в каком либо тексте, то мне прежде всего приходит в голову интернет, потому что это первое место, куда я иду, когда мне нужно найти какую-либо информацию. На этом уроке мы с вами поговорим о том, как устроен интернет, о HTTP запросах и о HTML страницах. Вообще в интернете существует различное множество


[00:17 - 00:37] протоколов для обмена различной информации: у нас есть протокол для обмена файлами, протокол для обмена, например, почтой. Но мы с вами будем говорить про HTTP, то есть протокол обмена гипертекстом. Гипертекст название достаточно старое, которое идёт к нам с самой зари развития интернета, когда люди только начали придумывать то, как в дальнейшем будет выглядеть веб страница.


[00:37 - 00:54] Базовая концепция, которая легла в основу гипертекста, это гиперссылки. По сути гипертекст это текстовый документ, который содержит в себе так же ссылки на другие текстовые документы. Например, если вы откроете какую-нибудь статью на википедии, то вы наверняка можете быть любопытны и перейдете на пару статей, которые связаны с той которую вы уже читаете.


[00:54 - 01:10] И именно эта очень старая концепция сделала интернет таким, каким мы сейчас его с вами знаем. Очень сложно представить себе работу в браузере без перехода по ссылкам, будь то ссылки на новостные ресурсы или ссылки на профили людей, которые вас заинтересовали вконтакте. Что же такое HTTP протокол?


[01:10 - 01:28] Прежде всего у нас будет две стороны, которые участвуют в общении. Первая сторона, это клиент, это на самом деле мы с вами - пользователи интернета. А вторая сторона - это серверы, на которые мы делаем запрос, то есть мы будем запрашивать у сервера какой-нибудь ресурс. Что же может быть ресурсом? Ресурс - это прежде всего веб страница или какие нибудь файлы.


[01:28 - 01:43] Таким образом, если мы схематически изобразим клиент-сервер именно таким образом, то все наши запросы можно описать достаточно просто. У нас есть запрос. Мы объясним какие именно запросы бывают. И у нас есть какой-то ответ на данный запрос.


Step 1 (S-102143) 2.png

[01:43 - 02:02] Как я и сказал, мы будем запрашивать у нашего сервера ресурсы, будь то веб страница или какие-то другие файлы. И ресурсы мы описываем в интернете используя URL. URL - это Uniform Resource Locator или, если по русски, единообразный локатор ресурса. Перевод, конечно, кривенький, но это о том


[02:02 - 02:18] как и где мы можем достать данный ресурс. Главная страница данного курса на Stepik'е так же очевидно является ресурсом, потому что этого в общем-то веб страница и у нее есть свой URL, по которому мы можем ее достать. URL у нас выглядит следующим образом, в общем-то это на самом деле обычная ссылка в нашем понимании.


[02:18 - 02:33] Мы сначала записываем протокол, который мы можем достать данный ресурс, затем описываем сайт Stepik.org, это можно назвать доменом или хостом. А затем указываем путь до ресурса уже внутри данного домена.


Step 1 (S-102143) 3.png

[02:33 - 02:52] Мы сейчас с вами описали URL, используя три основных компоненты, однако важно помнить, что бывают еще и другие. Первая компонента это протокол - нужно явно указывать протокол, по которому мы получаем данный ресурс, потому что протоколы обмена информации в интернете отличаются друг от друга. Например протокол обмена гипертекстом сильно отличается от протокола обмена файлами FTP.


[02:52 - 03:09] Вторая компонента URL не менее важна. Это домен. Важно понимать, что в сети интернет на самом деле очень много серверов. Допустим у Stepik'а это один сервер, у википедии - другой. И домен нужен прежде всего для того, чтобы распознать на какой из этих компьютеров-серверов нам необходимо отправить наш запрос.


[03:09 - 03:25] Третья компонента еще более простая. Может оказаться что на нашем сервере очень много ресурсов, и нам необходимо показать, какой именно из всех ресурсов на сервере нам нужен. Для этого мы используем путь. Давайте вернёмся к HTTP. Как у нас клиент и сервер обмениваются сообщениями.


[03:25 - 03:42] HTTP является текстовым протоколом, поэтому сначала клиент посылает запрос в текстовом формате достаточно определенного вида, а затем к нему приходит ответ также в текстовом формате. Предположим мы бы ввели в нашем браузере в адресной строке адрес страницы языка Python на русской википедии.


[03:42 - 03:57] Тогда каким бы образом у нас сформировался запрос? Запрос является обычным текстом поэтому у нас в первой строке следуют три важных вещи, следующих через пробел. Первое - это метод, который мы хотим применить к нашему ресурсу.


[03:57 - 04:16] Метод GET означает что мы хотим получить данный ресурс. Мы хотим получить страницу wiki "Python", которая находится на домене ru.wikipedia.org. Собственно вторая вещь - это тот ресурс который мы хотим получить внутри википедии. И третья часть нашей первой строки - это версия нашего HTTP протокола.


[04:16 - 04:33] В данный момент HTTP протокол используется не только для обмена гипертекстом. С помощью HTTP протокола вы можете загружать картинки, музыку и даже видеозаписи. В HTTP протоколе объявлено несколько методов и самый популярный используемый метод - это конечно же GET. GET используется для того, чтобы мы получили данный ресурс.


[04:33 - 04:49] Если ресурс является, например, веб страницей, то мы получим с помощью метода GET HTML код данной страницы. Про HTML мы поговорим чуточку далee. Если мы запрашиваем, например, картинку, то мы получим бинарные данные данной картинки. Чаще всего метод GET никаким образом не изменяет сами данные, которые хранятся на сервере.


[04:49 - 05:06] А вот метод POST ровно для этого и предназначен. Чаще всего, когда мы используем POST, мы в действительности изменим те или иные данные, которые связаны с теми ресурсами, которые мы запрашиваем, например формы смены пароля, когда вы их заполняете и когда вы нажимаете кнопку Enter, чаще всего будет использоваться метод POST.


[05:06 - 05:21] Так же метод POST будет использоваться, например, для банковских транзакций, связанных с вашей картой. В HTTP есть также и другие методы, однако эти два самые используемые и в течение курса мы будем рассматривать только их. Так же в запросе может быть некоторое число заголовков, которые разделены


[05:21 - 05:40] точкой. То есть это вот имя заголовка хост, и собственно мы указываем здесь домен на ru.wikipedia.org. Там их может быть еще некоторое большое количество служебных... И вот вся вот эта вот весь текст строка составляет наш запрос. Ответ на данный запрос или наш response возвращается нам в похожем формате.


[05:40 - 05:57] Сначала следует также версия HTTP протокола, с которым был составлен ответ, затем у нас следует статус код, в нашем случае 200, то есть у нас все прошло хорошо, демонстрирует сообщение. Статусные коды бывают разные. Статус код 200 вы, например, получаете, когда вы смогли успешно загрузить данную страницу.


[05:57 - 06:13] А вот если вы получили легендарную ошибку 404, это значит что данный ресурс не был найден на сервере. А если произошла серверная ошибка при обработке вашего запроса, вы вероятнее всего получите 500. После первой строки также следует некоторое число заголовков, например, здесь мы видим


[06:13 - 06:30] дату, когда к нам пришел ответ. Здесь мы также можем увидеть Content-type, то есть что за содержимое мы запрашивали, потому что HTTP на самом деле уже не только для обмена гипертекстом, также можно уже картинки загружать с помощью HTTP. Здесь мы явно указываем что у нас есть текстовый формат HTML,


[06:30 - 06:48] про который мы сейчас поговорим. А затем, когда у нас кончатся эти заголовки, следует пустая строка, после которой и следует запрашиваемый ресурс. Таким образом, HTTP протокол достаточно простой. Мы в текстовом формате указываем информацию о ресурсе, которая нам нужна


[06:48 - 07:03] и затем сервер нам отвечает на наш запрос. Он сначала оказывает статус код, всё ли у него прошло гладко. Если допустим 404, то ресурс не найден на сервере, а если 200 то все OK. Затем идёт немножко служебной информации, после чего следует сам ресурс, которые мы запрашивали.