Что такое HTTP и HTTPS
Что такое HTTP
HTTP расшифровывается как HyperText Transfer Protocol - протокол передачи гипертекста.
Это набор правил, по которым браузер запрашивает документы у сервера, а сервер их отдаёт.
Простая аналогия. Вы приходите в библиотеку и говорите библиотекарю: "Дайте книгу под номером 7423". Библиотекарь находит и приносит. Или отвечает: "Такой книги нет". Вот и весь HTTP - запрос и ответ.
Только вместо книги - HTML-страница, картинка, видео или любой другой файл. Вместо вас - браузер. Вместо библиотекаря - веб-сервер.
HTTP работает поверх TCP/IP.
TCP обеспечивает надёжную доставку данных, IP - адресацию.
HTTP не беспокоится о том, как именно байты добираются из точки А в точку Б. Это задача нижних протоколов.

Как выглядит HTTP-запрос
Когда вы набираете в браузере адрес и нажимаете Enter, браузер отправляет серверу сообщение. Это HTTP-запрос.
Его структура простая. Первая строка содержит три части: метод, путь и версию протокола.

Метод - это то, что браузер просит сделать.
GET - самый распространённый. "Дайте мне этот документ." Каждый раз, когда вы открываете страницу - это GET-запрос.
POST - отправить данные на сервер. Заполнили форму, нажали "Отправить" - браузер посылает POST с содержимым формы.
PUT и DELETE - загрузить или удалить данные. Используются в API, реже в обычном браузере.
HEAD - то же, что GET, но без тела документа. Только заголовки. Так поисковые роботы проверяют, изменилась ли страница, не скачивая её целиком.
Дальше в запросе идут заголовки - дополнительная информация. Какой браузер обращается, какие типы файлов он принимает, на каком языке хочет ответ.
Что отвечает сервер
Сервер получает запрос, находит нужный файл и отвечает. Первая строка ответа - код состояния. Это самая известная часть HTTP.

200 OK - всё хорошо, документ найден, вот он.
301 Moved Permanently - страница переехала навсегда. Браузер автоматически перейдёт по новому адресу. Используется при редиректах.
304 Not Modified - страница не менялась с прошлого раза. Браузер возьмёт версию из своего кэша - незачем скачивать заново.
404 Not Found - страница не найдена. Сервер работает, но такого документа у него нет.
500 Internal Server Error - ошибка на стороне сайта, не вашей.
503 Service Unavailable - сервер временно недоступен. Перегружен или на техническом обслуживании.
Первая цифра кода говорит о классе: 2xx - успех, 3xx - перенаправление, 4xx - ошибка клиента, 5xx - ошибка сервера.
После заголовков идёт тело ответа - сам HTML-документ, картинка, файл. То, что браузер показывает на экране.
Что такое HTTPS
HTTPS - это HTTP Secure. Тот же протокол, но с шифрованием.
Разница одна, и она принципиальная.
Обычный HTTP передаёт данные открытым текстом. Кто угодно, кто находится между вами и сервером - провайдер, роутер в кафе, оператор Wi-Fi в аэропорту - может прочитать содержимое. Пароль от почты, номер карты, личная переписка - всё в открытом виде.
HTTPS оборачивает HTTP-соединение в слой шифрования. Передаётся тот же запрос, тот же ответ - но зашифрованные. Читать их без ключа невозможно.
Шифрование обеспечивает протокол TLS - Transport Layer Security. Раньше он назывался SSL, и это название до сих пор встречается в документации. SSL официально устарел в 2015 году, но слово прижилось - люди до сих пор говорят "SSL-сертификат", имея в виду TLS.
Как браузер договаривается о шифровании
Перед тем как обменяться данными, браузер и сервер проводят переговоры. Это называется TLS-рукопожатие - handshake.
Браузер говорит: "Я умею работать с такими-то алгоритмами шифрования. Выбирай."
Сервер отвечает: "Хорошо, используем вот этот. И вот мой сертификат - проверь, что я действительно тот, за кого себя выдаю."
Браузер проверяет сертификат. Если он выдан доверенным центром сертификации - переговоры продолжаются. Стороны вычисляют общий ключ шифрования. Соединение установлено.
Всё это занимает миллисекунды. Пользователь ничего не замечает.
Что такое сертификат и замочек в браузере
Сертификат - цифровой документ. В нём написано: "Сервер по адресу newscroll.ru является именно тем сайтом, которым вы хотели его видеть. Это подтверждает такой-то центр сертификации."
Центры сертификации (CA) - это организации, которым браузеры доверяют по умолчанию. Список зашит в операционную систему и браузер. Самые известные: Let's Encrypt, DigiCert, Comodo.
Когда браузер видит действующий сертификат от доверенного CA - в адресной строке появляется замочек.
Это значит три вещи одновременно. Соединение зашифровано - посторонние не могут прочитать трафик. Сервер прошёл проверку - вы разговариваете именно с тем сайтом, адрес которого набрали. Данные не изменились в пути - никто не подменил страницу на маршруте.
Красный замочек или предупреждение "Небезопасно" означает одно из трёх: сертификат просрочен, самоподписан или домен не совпадает с тем, на котором вы находитесь. Вводить пароли и платёжные данные на таком сайте не стоит.
С 2018 года Google Chrome помечает все HTTP-сайты как небезопасные. Это ускорило переход веба на HTTPS: сегодня больше 95% сайтов используют зашифрованный протокол.
Сегодня HTTPS - стандарт для всех сайтов без исключений. Let's Encrypt выдаёт сертификаты бесплатно и продлевает их автоматически. Причин использовать HTTP почти не осталось.
HTTP/2 и HTTP/3
Оригинальный HTTP/1.1 из 1997 года имел один существенный недостаток. Для каждого файла браузер открывал отдельный запрос. Загружаете страницу с сотней картинок - сотня последовательных обращений к серверу.
HTTP/2 появился в 2015 году и решил это мультиплексированием. Несколько запросов идут по одному соединению одновременно. Страницы стали загружаться заметно быстрее.
HTTP/3 (2022) пошёл дальше. Он заменил TCP на протокол QUIC, построенный поверх UDP. Это ускоряет соединение в условиях потерь пакетов - в первую очередь на мобильных сетях, где сигнал нестабилен.
Для обычного пользователя разница незаметна: браузер сам выбирает версию протокола, которую поддерживает сервер. Но разработчикам и сисадминам важно знать, какую версию обслуживает их сервер.

Как HTTP связан с другими протоколами
HTTP работает не в одиночку. Он верхний этаж многоуровневой архитектуры.
Когда вы открываете страницу - DNS переводит доменное имя в IP-адрес.
TCP/IP устанавливает соединение и доставляет пакеты. TLS шифрует данные, если используется HTTPS. И только потом HTTP передаёт сам запрос и ответ.
Каждый уровень не знает деталей другого. HTTP не знает, как TCP разбивает данные на пакеты. TCP не знает, что внутри пакетов. Это принцип инкапсуляции. Именно он позволяет интернету работать с таким разнообразием устройств, сетей и приложений.
Тим Бернерс-Ли строил HTTP поверх уже существующей инфраструктуры, придуманной Серфом и Каном. Не с нуля - а как следующий этаж на готовом фундаменте.