HTTP
HTTP (HyperText Transfer Protocol) — широко распространённый протокол передачи данных, изначально разработанный для гипертекстовых документов (документов, содержащих ссылки на другие документы). Он является протоколом прикладного уровня (седьмого уровня модели OSI). Актуальная версия — HTTP/1.1, описанная в спецификации RFC 2616.
HTTP часто используется как транспортный протокол для других протоколов прикладного уровня, таких как XML-RPC и WebDAV. В таких случаях HTTP выступает в роли транспортного API многих программных продуктов. Передаваемые данные могут иметь любой формат, например, XML или JSON. Передача данных обычно осуществляется через TCP/IP-соединения. Серверное ПО обычно использует TCP-порт 80; если порт не указан явно, клиентское ПО по умолчанию использует этот порт.
Формирование HTTP-запроса
Для формирования HTTP-запроса необходимо составить стартовую строку и указать как минимум один заголовок — обязательный заголовок Host. Он необходим, поскольку преобразование доменного имени в IP-адрес происходит на стороне клиента. Сервер не получает информацию о том, какой адрес использовался для соединения, поэтому адрес необходимо передать в заголовке Host.
Методы HTTP
Метод (в англоязычной литературе — verb или web verb) — последовательность символов (кроме управляющих и разделителей), определяющая операцию с указанным ресурсом. Спецификация HTTP/1.1 не ограничивает количество методов, но для совместимости обычно используются лишь некоторые стандартные методы. Важно отметить, что спецификация не обязывает сервер понимать все методы и обрабатывать запросы определённым образом. Например, на запрос DELETE index.html сервер не обязан удалять файл index.html.
URI (Uniform Resource Identifier)
URI — уникальный идентификатор ресурса, путь к конкретному ресурсу (например, документу). В случае использования метода GET, он подразумевает получение ресурса. Некоторые запросы могут не относиться к какому-либо ресурсу; тогда вместо URI используется звёздочка (*).
Коды состояния HTTP
Код состояния (статус-код) — трёхзначное число, указывающее на результат запроса. Примеры:
- 200 OK: ресурс успешно получен.
- 404 Not Found: ресурс не найден.
- 403 Forbidden: доступ к ресурсу запрещён.
Спецификация HTTP/1.1 определяет 40 кодов состояния; допускается расширение и использование дополнительных кодов. Пояснение к коду состояния — текстовое сообщение (без символов новой строки), упрощающее понимание ответа человеком. Клиентское ПО может не учитывать пояснение.
HTTPS
HTTPS (HyperText Transfer Protocol Secure) — расширение HTTP, реализующее шифрование передаваемых данных с помощью криптографического протокола SSL/TLS. Для HTTPS-соединений обычно используется TCP-порт 443. HTTPS защищает информацию от перехвата и атак типа «man-in-the-middle», если сертификат проверяется на клиенте, приватный ключ не скомпрометирован, пользователь не подтверждал использование недоверенного сертификата и на компьютере не внедрены сертификаты вредоносного центра сертификации. HTTPS поддерживается всеми популярными браузерами.
HTTPS обеспечивает:
- Шифрование данных: предотвращает перехват данных.
- Целостность данных: фиксирует любые изменения данных.
- Аутентификацию: защищает от перенаправления пользователя.
Когда необходим HTTPS?
Использование HTTPS обязательно для передачи конфиденциальной информации: проведение платежей в интернете, оплата товаров, доступ к личному кабинету с данными пользователя (паспорт и т. д.). Рекомендуется использовать HTTPS на всех сайтах, запрашивающих личные данные.
Как работает HTTPS?
Работа HTTPS основана на обмене общим секретным ключом между компьютером пользователя и сервером. Этот ключ используется для шифрования данных и считается невозможным для подделки. Для избежания перехвата данных используется цифровой сертификат — электронный документ, идентифицирующий сервер. Браузер проверяет подлинность сертификата перед началом обмена данными. Сертификаты выдают центры сертификации на платной основе и на определённый срок.
HTTP и HTTPS — важные протоколы для работы в интернете. HTTPS обеспечивает безопасность передачи данных, особенно важных. Переход на HTTPS рекомендуется для всех сайтов, работающих с конфиденциальной информацией.