💾 Archived View for gemlog.blue › users › antcating › 1625233692.gmi captured on 2023-04-26 at 15:28:49. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-04)
-=-=-=-=-=-=-
HTTP - HyperText Transfer Protocol, как следует из названия - протокол ответственен за передачу гипертекста.
Протокол HTTP впервые был представлен в 1991 году. Был представлен HTTP/0.9. На его примере я хочу показать самый базовый пример логики работы HTTP:
Протокол HTTP предполагает заведомое наличие двух сторон: клиента и сервера.
Клиент запрашивал файл гипертекста (в версии 0.9 еще не было поддержки других форматов информации):
(Request)
GET /iwantthispage.html
Сервер отвечает:
(Response in hypertext)
<HTML>
This is the best page, I've ever seen
</HTML>
Все максимально просто. Пользователь попросил - сервер отправил. Но этого функционала не было достаточно, т.к. у разных пользователей были различные операционные системы, разные разрешения экранов и другие особенности, которые не позволяли использовать одну версию сайта для всех устройств на рынке. Также, скорость Интернета росла, а значит кроме гипертекста можно было передавать различные файлы, такие как фото, видео и любые другие виды информации. Поэтому, через 5 лет, в 1996 году был выпущен протокол HTTP/1.0. Чуть позже, в 1999 году был принят самый распространенный на сегодняшний день протокол HTTP/1.1.
В версии HTTP/1.0 был добавлен заголовок - HTTP Header. В заголовке содержится информация о версии браузера (user-agent), язык, Do Not Track (#whatis_donottrack), тип соединения (с версии HTTP/1.1) и другая информация. Список (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) заголовков.
Пример взаимодействия протокола HTTP/1.1:
Клиент отправляет запрос, чтобы получить страницу main.html в под-домене сайта www.site.com
GET /subfolder/main.html HTTP/1.1
host: www.site.com
accept: image/gif, image/jpeg
accept-Language: en-us
accept-Encoding: gzip, deflate
DNT: 1
user-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
Сервер посылает ответ:
HTTP/1.1 200 OK
date: Sun, 6 Sep 2020 08:56:53 GMT
server: Apache/2.2.14 (Win32)
ETag: "3f80f-1b6-3e1cb03b"
accept-Ranges: bytes
content-language: en-US
connection: close
content-Type: text/html
<HTML>
This is the best page, I've ever seen
</HTML>
В данном примере на сервер передалась информация:
Сервер отвечает:
Так, на базовом уровне, для одного передаваемого файла, работает протокол HTTP/1.1. По аналогии, для большого количества файлов можно создавать большое количество запросов. Во время передачи данных - файлы, передающиеся по HTTP не шифруются вовсе. Для шифрования используется протокол HTTPS, который не является отдельной версией HTTP. HTTPS - "надстройка" над HTTP.
Так же, существуют версии HTTP/2.0 (2015) и HTTP/3.0 (2018), в которых была проведена оптимизация и очистка от некоторых функций, которые несли потенциальную угрозу безопасности, но самой распространенной в использовании все еще является версия HTTP/1.1.
Спасибо за внимание.