HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>30 сен 2022</li>
2 <ul><li>30 сен 2022</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Рассказываем об одном из самых популярных интернет-протоколов, на котором работает весь современный веб - HTTP.</p>
4 </ul><p>Рассказываем об одном из самых популярных интернет-протоколов, на котором работает весь современный веб - HTTP.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
6 <p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
7 <p>Каждый раз, когда вы включаете компьютер и заходите почитать статьи о программировании, браузер посылает куда-то какие-то запросы. Он делает это беспрерывно, пока вы сидите в интернете. Что это за запросы и зачем они нужны? Давайте разбираться.</p>
7 <p>Каждый раз, когда вы включаете компьютер и заходите почитать статьи о программировании, браузер посылает куда-то какие-то запросы. Он делает это беспрерывно, пока вы сидите в интернете. Что это за запросы и зачем они нужны? Давайте разбираться.</p>
8 <p>HTTP означает "протокол передачи гипертекста" (или HyperText Transfer Protocol). Он представляет собой список правил, по которым компьютеры обмениваются данными в интернете. HTTP умеет передавать все возможные форматы файлов - например, видео, аудио, текст. Но при этом состоит только из текста.</p>
8 <p>HTTP означает "протокол передачи гипертекста" (или HyperText Transfer Protocol). Он представляет собой список правил, по которым компьютеры обмениваются данными в интернете. HTTP умеет передавать все возможные форматы файлов - например, видео, аудио, текст. Но при этом состоит только из текста.</p>
9 <p>Например, когда вы вписываете в строке браузера<a>www.skillbox.ru</a>, он составляет запрос и отправляет его на сервер, чтобы получить HTML-страницу сайта. Когда сервер обрабатывает запрос, то он отправляет ответ, в котором написано, что всё "ок" и вот вам сайт.</p>
9 <p>Например, когда вы вписываете в строке браузера<a>www.skillbox.ru</a>, он составляет запрос и отправляет его на сервер, чтобы получить HTML-страницу сайта. Когда сервер обрабатывает запрос, то он отправляет ответ, в котором написано, что всё "ок" и вот вам сайт.</p>
10 Примерно так браузер просит нужную ему веб-страницу<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Протокол HTTP используют ещё с 1992 года. Он очень простой, но при этом довольно функциональный. А ещё HTTP находится на самой вершине<a>модели OSI</a>(на прикладном уровне), где приложения обмениваются друг с другом данными. А работает HTTP с помощью протоколов TCP/IP и использует их, чтобы передавать данные.</p>
10 Примерно так браузер просит нужную ему веб-страницу<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Протокол HTTP используют ещё с 1992 года. Он очень простой, но при этом довольно функциональный. А ещё HTTP находится на самой вершине<a>модели OSI</a>(на прикладном уровне), где приложения обмениваются друг с другом данными. А работает HTTP с помощью протоколов TCP/IP и использует их, чтобы передавать данные.</p>
11 <p>Кроме HTTP в интернете работает ещё протокол HTTPS. Аббревиатура расшифровывается как "защищённый протокол передачи гипертекста" (или HyperText Transfer Protocol Secure). Он нужен для безопасной передачи данных по Сети. Всё происходит по тем же принципам, как и у HTTP, правда, перед отправкой данные дополнительно<a>шифруются</a>, а затем расшифровываются на сервере.</p>
11 <p>Кроме HTTP в интернете работает ещё протокол HTTPS. Аббревиатура расшифровывается как "защищённый протокол передачи гипертекста" (или HyperText Transfer Protocol Secure). Он нужен для безопасной передачи данных по Сети. Всё происходит по тем же принципам, как и у HTTP, правда, перед отправкой данные дополнительно<a>шифруются</a>, а затем расшифровываются на сервере.</p>
12 <p>Например, HTTPS используют во время ввода данных банковской карты или паролей на сайтах - да и в целом большинство современных сайтов используют именно его.</p>
12 <p>Например, HTTPS используют во время ввода данных банковской карты или паролей на сайтах - да и в целом большинство современных сайтов используют именно его.</p>
13 Сначала данные шифруются, а потом отправляются на сервер, где проходят дешифровку<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>HTTP состоит из двух элементов: клиента и сервера. Клиент отправляет запросы и ждёт данные от сервера. А сервер ждёт, пока ему придёт очередной запрос, обрабатывает его и возвращает ответ клиенту.</p>
13 Сначала данные шифруются, а потом отправляются на сервер, где проходят дешифровку<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>HTTP состоит из двух элементов: клиента и сервера. Клиент отправляет запросы и ждёт данные от сервера. А сервер ждёт, пока ему придёт очередной запрос, обрабатывает его и возвращает ответ клиенту.</p>
14 Так взаимодействуют клиент и сервер<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Обычно эта связь между клиентом и сервером имеет посредников в виде прокси-серверов. Они нужны для разных операций - например, для безопасности и конфиденциальности, кэширования или распределения нагрузки на серверы.</p>
14 Так взаимодействуют клиент и сервер<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Обычно эта связь между клиентом и сервером имеет посредников в виде прокси-серверов. Они нужны для разных операций - например, для безопасности и конфиденциальности, кэширования или распределения нагрузки на серверы.</p>
15 <p>Поэтому типичная процедура отправки HTTP-запроса от клиента выглядит так:</p>
15 <p>Поэтому типичная процедура отправки HTTP-запроса от клиента выглядит так:</p>
16 В реальной жизни всё сложнее<em>Иллюстрация: Polina Vari для Skillbox Media</em><p><strong>Клиентом</strong>может быть любое устройство, через которое пользователь запрашивает данные. Часто в роли клиента выступает веб-браузер, программы для отладки приложений или даже командная строка. Главная особенность клиента - он всегда инициирует запрос.</p>
16 В реальной жизни всё сложнее<em>Иллюстрация: Polina Vari для Skillbox Media</em><p><strong>Клиентом</strong>может быть любое устройство, через которое пользователь запрашивает данные. Часто в роли клиента выступает веб-браузер, программы для отладки приложений или даже командная строка. Главная особенность клиента - он всегда инициирует запрос.</p>
17 <p><strong>Сервер</strong> - это устройство, которое обрабатывает запросы клиента. Он может состоять как из одного компьютера, так и из кластера. А ещё несколько виртуальных серверов могут находиться на одной физической машине.</p>
17 <p><strong>Сервер</strong> - это устройство, которое обрабатывает запросы клиента. Он может состоять как из одного компьютера, так и из кластера. А ещё несколько виртуальных серверов могут находиться на одной физической машине.</p>
18 <p><strong>Прокси-серверы</strong> - это второстепенные серверы, которые располагаются между клиентом и главным сервером. Они обрабатывают HTTP-запросы, а также ответы на них. Чаще всего прокси-серверы используют для кэширования и сжатия данных, обхода ограничений и анонимных запросов. И ещё - обычно между клиентом и основным сервером находится один или несколько таких прокси-серверов.</p>
18 <p><strong>Прокси-серверы</strong> - это второстепенные серверы, которые располагаются между клиентом и главным сервером. Они обрабатывают HTTP-запросы, а также ответы на них. Чаще всего прокси-серверы используют для кэширования и сжатия данных, обхода ограничений и анонимных запросов. И ещё - обычно между клиентом и основным сервером находится один или несколько таких прокси-серверов.</p>
19 Обычное клиент-серверное взаимодействие через прокси-сервер<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Весь процесс передачи HTTP-запроса можно разбить на пять шагов. Давайте разберём их подробнее.</p>
19 Обычное клиент-серверное взаимодействие через прокси-сервер<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Весь процесс передачи HTTP-запроса можно разбить на пять шагов. Давайте разберём их подробнее.</p>
20 <p>Чтобы отправить HTTP-запрос, нужно использовать URL-адрес - это "унифицированный указатель ресурса" (или Uniform Resource Locator). Он указывает браузеру, что нужно использовать HTTP-протокол, а затем получить файл с этого адреса обратно. Обычно URL-адреса начинаются с http:// или https:// (зависит от версии протокола).</p>
20 <p>Чтобы отправить HTTP-запрос, нужно использовать URL-адрес - это "унифицированный указатель ресурса" (или Uniform Resource Locator). Он указывает браузеру, что нужно использовать HTTP-протокол, а затем получить файл с этого адреса обратно. Обычно URL-адреса начинаются с http:// или https:// (зависит от версии протокола).</p>
21 <p>Например,<a>http://www.skillbox.ru</a> - это URL-адрес. Он представляет собой главную страницу Skillbox. Но также в URL-адресе могут быть и поддомены -<a>http://www.skillbox.ru/media</a>. Теперь мы запросили главную страницу Skillbox Media.</p>
21 <p>Например,<a>http://www.skillbox.ru</a> - это URL-адрес. Он представляет собой главную страницу Skillbox. Но также в URL-адресе могут быть и поддомены -<a>http://www.skillbox.ru/media</a>. Теперь мы запросили главную страницу Skillbox Media.</p>
22 Кажется, что это выглядит просто: ввели URL-страницы и зашли на сайт<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Для пользователей URL-адрес - это набор понятных слов: Skillbox, Yandex, Google. Но для компьютера эти понятные нам слова - набор непонятных символов.</p>
22 Кажется, что это выглядит просто: ввели URL-страницы и зашли на сайт<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Для пользователей URL-адрес - это набор понятных слов: Skillbox, Yandex, Google. Но для компьютера эти понятные нам слова - набор непонятных символов.</p>
23 <p>Поэтому браузер отправляет введённые вами слова в DNS, преобразователь URL-адресов в IP-адреса. DNS расшифровывается как "доменная система имён" (Domain Name System), и его можно представить как огромную таблицу со всеми зарегистрированными именами для сайтов и их IP-адресами.</p>
23 <p>Поэтому браузер отправляет введённые вами слова в DNS, преобразователь URL-адресов в IP-адреса. DNS расшифровывается как "доменная система имён" (Domain Name System), и его можно представить как огромную таблицу со всеми зарегистрированными именами для сайтов и их IP-адресами.</p>
24 DNS будто работает переводчиком с человеческого на машинный<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>DNS возвращает браузеру IP-адрес, с которым тот уже умеет работать. Теперь браузер начинает составлять HTTP-запрос с вложенным в него IP-адресом.</p>
24 DNS будто работает переводчиком с человеческого на машинный<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>DNS возвращает браузеру IP-адрес, с которым тот уже умеет работать. Теперь браузер начинает составлять HTTP-запрос с вложенным в него IP-адресом.</p>
25 <p>Сам HTTP-запрос может выглядеть так:</p>
25 <p>Сам HTTP-запрос может выглядеть так:</p>
26 <em>Изображение: Skillbox Media</em><p>Здесь четыре элемента: метод - "GET", URI - "/", версия HTTP - "1.1" и адрес хоста - "<a>www.skillbox.ru</a>". Давайте разберём каждый из них подробнее.</p>
26 <em>Изображение: Skillbox Media</em><p>Здесь четыре элемента: метод - "GET", URI - "/", версия HTTP - "1.1" и адрес хоста - "<a>www.skillbox.ru</a>". Давайте разберём каждый из них подробнее.</p>
27 <p><strong>Метод</strong> - это действие, которое клиент ждёт от сервера. Например, отправить ему HTML-страницу сайта или скачать документ. Протокол HTTP не ограничивает количество разных методов, но программисты договорились между собой использовать только три основных:</p>
27 <p><strong>Метод</strong> - это действие, которое клиент ждёт от сервера. Например, отправить ему HTML-страницу сайта или скачать документ. Протокол HTTP не ограничивает количество разных методов, но программисты договорились между собой использовать только три основных:</p>
28 <ul><li><strong>GET</strong> - чтобы получить данные с сервера. Например, видео с YouTube или мем с Reddit.</li>
28 <ul><li><strong>GET</strong> - чтобы получить данные с сервера. Например, видео с YouTube или мем с Reddit.</li>
29 <li><strong>POST</strong> - чтобы отправить данные на сервер. Например, сообщение в Telegram или новый трек в SoundCloud.</li>
29 <li><strong>POST</strong> - чтобы отправить данные на сервер. Например, сообщение в Telegram или новый трек в SoundCloud.</li>
30 <li><strong>HEAD</strong> - чтобы получить только метаданные об HTML-странице сайта. Это те данные, которые находятся в &lt;head&gt;-теге HTML-файла.</li>
30 <li><strong>HEAD</strong> - чтобы получить только метаданные об HTML-странице сайта. Это те данные, которые находятся в &lt;head&gt;-теге HTML-файла.</li>
31 </ul><p><strong>URI</strong>расшифровывается как "унифицированный идентификатор ресурса" (или Uniform Resource Identifier) - это полный адрес сайта в Сети. Он состоит из двух частей:<strong>URL</strong>и <strong>URN</strong>. Первое - это адрес хоста. Например,<a>www.skillbox.ru</a>или<a>www.vk.com</a>. Второе - это то, что ставится после URL и символа / - например, для URI<a>www.skillbox.ru/media</a>URN-адресом будет /media. URN ещё можно назвать адресом до конкретного файла на сайте.</p>
31 </ul><p><strong>URI</strong>расшифровывается как "унифицированный идентификатор ресурса" (или Uniform Resource Identifier) - это полный адрес сайта в Сети. Он состоит из двух частей:<strong>URL</strong>и <strong>URN</strong>. Первое - это адрес хоста. Например,<a>www.skillbox.ru</a>или<a>www.vk.com</a>. Второе - это то, что ставится после URL и символа / - например, для URI<a>www.skillbox.ru/media</a>URN-адресом будет /media. URN ещё можно назвать адресом до конкретного файла на сайте.</p>
32 <p><strong>Версия HTTP</strong>указывает, какую версию HTTP браузер использует при отправке запроса. Если её не указывать, по умолчанию будет стоять версия 1.1. Она нужна, чтобы сервер вернул HTTP-ответ с той же версией HTTP-протокола и не создал ошибок с чтением у клиента.</p>
32 <p><strong>Версия HTTP</strong>указывает, какую версию HTTP браузер использует при отправке запроса. Если её не указывать, по умолчанию будет стоять версия 1.1. Она нужна, чтобы сервер вернул HTTP-ответ с той же версией HTTP-протокола и не создал ошибок с чтением у клиента.</p>
33 <p><strong>Адрес хоста</strong>нужен, чтобы указать, с какого сайта клиент пытается получить данные. Адрес указывают в виде домена, но он сразу же меняется на IP-адрес перед отправкой запроса с помощью DNS.</p>
33 <p><strong>Адрес хоста</strong>нужен, чтобы указать, с какого сайта клиент пытается получить данные. Адрес указывают в виде домена, но он сразу же меняется на IP-адрес перед отправкой запроса с помощью DNS.</p>
34 Ещё раз показываем, где что находится в HTTP-запросе<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>После получения и обработки HTTP-запроса сервер создаёт ответ и отправляет его обратно клиенту. В нём содержатся дополнительная информация (метаданные) и запрашиваемые данные.</p>
34 Ещё раз показываем, где что находится в HTTP-запросе<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>После получения и обработки HTTP-запроса сервер создаёт ответ и отправляет его обратно клиенту. В нём содержатся дополнительная информация (метаданные) и запрашиваемые данные.</p>
35 <p>Простой HTTP-ответ выглядит так:</p>
35 <p>Простой HTTP-ответ выглядит так:</p>
36 <em>Изображение: Skillbox Media</em><p>Здесь три главные части: статус ответа - HTTP/1.1 200 OK, заголовки Content-Type и Content-Length и тело ответа - HTML-код. Рассмотрим их подробнее.</p>
36 <em>Изображение: Skillbox Media</em><p>Здесь три главные части: статус ответа - HTTP/1.1 200 OK, заголовки Content-Type и Content-Length и тело ответа - HTML-код. Рассмотрим их подробнее.</p>
37 <p><strong>Статус ответа</strong>содержит версию HTTP-протокола, который клиент указал в HTTP-запросе. А после неё идёт код статуса ответа - 200, что означает успешное получение данных. Затем - словесное описание статуса ответа: "ок".</p>
37 <p><strong>Статус ответа</strong>содержит версию HTTP-протокола, который клиент указал в HTTP-запросе. А после неё идёт код статуса ответа - 200, что означает успешное получение данных. Затем - словесное описание статуса ответа: "ок".</p>
38 <p>Всего статусов в спецификации HTTP 1.1 - 40. Вот самые популярные из них:</p>
38 <p>Всего статусов в спецификации HTTP 1.1 - 40. Вот самые популярные из них:</p>
39 <ul><li>200 OK - данные успешно получены;</li>
39 <ul><li>200 OK - данные успешно получены;</li>
40 <li>201 Created - значит, что запрос успешный, а данные созданы. Его используют, чтобы подтверждать успех запросов PUT или POST;</li>
40 <li>201 Created - значит, что запрос успешный, а данные созданы. Его используют, чтобы подтверждать успех запросов PUT или POST;</li>
41 <li>300 Moved Permanently - указывает, что URL-адрес изменили навсегда;</li>
41 <li>300 Moved Permanently - указывает, что URL-адрес изменили навсегда;</li>
42 <li>400 Bad Request - означает неверно сформированный запрос. Обычно это случается в связке с запросами POST и PUT, когда данные не прошли проверку или представлены в неправильном формате;</li>
42 <li>400 Bad Request - означает неверно сформированный запрос. Обычно это случается в связке с запросами POST и PUT, когда данные не прошли проверку или представлены в неправильном формате;</li>
43 <li>401 Unauthorized - нужно выполнить аутентификацию перед тем, как запрашивать доступ к ресурсу;</li>
43 <li>401 Unauthorized - нужно выполнить аутентификацию перед тем, как запрашивать доступ к ресурсу;</li>
44 <li>404 Not Found - значит, что не удалось найти запрашиваемый ресурс;</li>
44 <li>404 Not Found - значит, что не удалось найти запрашиваемый ресурс;</li>
45 <li>405 Method Not Allowed - говорит, что указанный метод HTTP не поддерживается для запрашиваемого ресурса;</li>
45 <li>405 Method Not Allowed - говорит, что указанный метод HTTP не поддерживается для запрашиваемого ресурса;</li>
46 <li>409 Conflict - произошёл конфликт. Например, когда клиент хочет создать дважды данные с помощью запроса PUT;</li>
46 <li>409 Conflict - произошёл конфликт. Например, когда клиент хочет создать дважды данные с помощью запроса PUT;</li>
47 <li>500 Internal Server Error - означает ошибку со стороны сервера.</li>
47 <li>500 Internal Server Error - означает ошибку со стороны сервера.</li>
48 </ul><p><strong>Заголовки</strong>помогают браузеру разобраться с полученными данными и представить их в правильном виде. Например, заголовок<strong>Content-Type</strong>сообщает, какой формат файла пришёл и какие у него дополнительные параметры, а <strong>Content-Length</strong> - сколько места в байтах занимает этот файл.</p>
48 </ul><p><strong>Заголовки</strong>помогают браузеру разобраться с полученными данными и представить их в правильном виде. Например, заголовок<strong>Content-Type</strong>сообщает, какой формат файла пришёл и какие у него дополнительные параметры, а <strong>Content-Length</strong> - сколько места в байтах занимает этот файл.</p>
49 <p><strong>Тело ответа</strong>содержит в себе сам файл. Например, сервер может вернуть код HTML-документа или отправить JPEG-картинку.</p>
49 <p><strong>Тело ответа</strong>содержит в себе сам файл. Например, сервер может вернуть код HTML-документа или отправить JPEG-картинку.</p>
50 Обычная структура HTTP-ответа<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Как только браузер получил ответ с веб-страницей, он отображает её с помощью внутреннего движка. И на этом весь процесс отправки и получение HTTP-запросов заканчивается, а клиент получает нужные ему данные.</p>
50 Обычная структура HTTP-ответа<em>Иллюстрация: Polina Vari для Skillbox Media</em><p>Как только браузер получил ответ с веб-страницей, он отображает её с помощью внутреннего движка. И на этом весь процесс отправки и получение HTTP-запросов заканчивается, а клиент получает нужные ему данные.</p>
51 Отправили HTTP-запрос - получили HTML-страницу<em>Иллюстрация: Polina Vari для Skillbox Media</em><ul><li>HTTP-протокол - это набор правил, по которым компьютеры обмениваются данными друг с другом. Его инициирует клиент (в данном случае - человек, заходящий в интернет с любого устройства), а обрабатывает сервер и возвращает обратно клиенту. Между ними могут находиться прокси-серверы, которые занимаются дополнительными задачами - шифрованием данных, перераспределением нагрузки или кэшированием.</li>
51 Отправили HTTP-запрос - получили HTML-страницу<em>Иллюстрация: Polina Vari для Skillbox Media</em><ul><li>HTTP-протокол - это набор правил, по которым компьютеры обмениваются данными друг с другом. Его инициирует клиент (в данном случае - человек, заходящий в интернет с любого устройства), а обрабатывает сервер и возвращает обратно клиенту. Между ними могут находиться прокси-серверы, которые занимаются дополнительными задачами - шифрованием данных, перераспределением нагрузки или кэшированием.</li>
52 <li>HTTP-запрос содержит четыре элемента: метод, URI, версию HTTP и адрес хоста. Метод указывает, какое действие нужно совершить. URI - это путь до конкретного файла на сайте. Версию HTTP нужно указывать, чтобы избежать ошибок, а адрес хоста помогает браузеру определить, куда отправлять HTTP-запрос.</li>
52 <li>HTTP-запрос содержит четыре элемента: метод, URI, версию HTTP и адрес хоста. Метод указывает, какое действие нужно совершить. URI - это путь до конкретного файла на сайте. Версию HTTP нужно указывать, чтобы избежать ошибок, а адрес хоста помогает браузеру определить, куда отправлять HTTP-запрос.</li>
53 <li>HTTP-ответ имеет три части: статус ответа, заголовки и тело ответа. В статусе ответа сообщается, всё ли прошло успешно и возникли ли ошибки. В заголовках указывается дополнительная информация, которая помогает браузеру корректно отобразить файл. А в тело ответа сервер кладёт запрашиваемый файл.</li>
53 <li>HTTP-ответ имеет три части: статус ответа, заголовки и тело ответа. В статусе ответа сообщается, всё ли прошло успешно и возникли ли ошибки. В заголовках указывается дополнительная информация, которая помогает браузеру корректно отобразить файл. А в тело ответа сервер кладёт запрашиваемый файл.</li>
54 </ul><a>Курс с трудоустройством: "Профессия Java-разработчик + ИИ" Узнать о курсе</a>
54 </ul><a>Курс с трудоустройством: "Профессия Java-разработчик + ИИ" Узнать о курсе</a>