Практическое занятие 7. Гипертекстовый протокол HTTP (часть 2) 132
Идентификация доступа (RFC-2617) 132
Базовая схема идентификации (Authentication) 134
Краткое изложение схемы авторизации 134
Согласование содержимого 134
Согласование, управляемое сервером 134
Согласование, управляемое агентом (Agentdriven Negotiation) 135
Прозрачное согласование (Transparent Negotiation) 136
Кэширование в HTTP 136
Корректность кэша 137
Предупреждения 137
Механизмы управления кэшем 138
Прямые предупреждения агента пользователя 138
Исключения для правил и предупреждений 138
Работа под управлением клиента 138
Модель истечения срока годности. Определение срока годности под управлением сервера 139
Эвристический контроль пригодности 139
Вычисление возраста 139
Вычисление времени жизни (Expiration) 141
Устранение неопределенности значений времени жизни 141
Неопределенность из-за множественных откликов 142
Модель проверки пригодности 142
Даты последней модификации 143
Валидаторы кэша для меток объектов (Entity Tag Cache Validators) 143
Слабые и сильные валидаторы 143
Правила того, когда использовать метки объекта и даты последней модификации 144
Условия пригодности 145
Кэшируемость отклика 145
Формирование откликов кэшей 146
Заголовки End-to-end (точкаточка) и Hop-by-hop (шагза-шагом) 146
Немодифицируемые заголовки 146
Комбинирование заголовков 147
Комбинирование байтовых фрагментов 147
Кэширование согласованных откликов 147
Кэши коллективного и индивидуального использования 148
Ошибки и поведение кэша при неполном отклике 148
Побочные эффекты методов GET и HEAD 148
Несоответствие после актуализации или стирания 149
Обязательная пропись (Write-Through Mandatory) 149
Замещения в кэше 149
Списки предыстории 149
Определения полей заголовка 150
Поле Accept 150
Поле Accept-Charset 151
Поле Accept-Encoding 151
Поле Accept-Language 152
Поле Accept-Ranges 152
Поле Age 152
Поле Allow 153
Авторизация 153
Поле Cache-Control 154
Что допускает кэширование? 155
Что может быть записано в память кэша? 155
Модификации базового механизма контроля времени жизни 155
Управление перепроверкой пригодности и перезагрузкой 156
End-to-end reload 156
Specific end-to-end revalidation 156
Unspecified end-to-end revalidation 156
Директива No-Transform 158
Расширения управления кэшем 158
Соединение 158
Content-Base 159
Кодирование содержимого 159
Язык содержимого 159
Длина содержимого 160
Поле Content-Location 160
Content-MD5 160
Отрывок содержимого 161
Тип содержимого 162
Дата 162
Поле ETag 163
Поле Expires 163
Поле From 163
Поле Host 164
Поле If-Modified-Since 164
Поле If-Match 165
Поле If-None-Match 165
Заголовок If-Range 166
Поле If-Unmodified-Since 167
Поле Last-Modified 167
Поле Location 167
Поле Max-Forwards 167
Поле Pragma 168
Поле Proxy-Authenticate 168
Поле Proxy-Authorization 168
Поле Public 169
Фрагмент. Фрагменты байт 169
Запросы получения фрагментов 170
Поле Referer 170
Поле Retry-After 171
Поле Server 171
Поле Transfer-Encoding (Транспортное кодирование) 171
Заголовок Upgrade (Актуализация) 171
Поле User-Agent (Агент пользователя) 172
Поле Vary 172
Поле Via 173
Поле Warning (Предупреждение) 174
Поле WWW-Authenticate 175
Соображения безопасности 175
Аутентификация клиентов 176
Предложение выбора схемы идентификации 176
Злоупотребление служебными (Log) записями сервера 177
Передача конфиденциальной информации 177
Атаки, основанные на именах файлов и проходах 177
Персональная информация 178
Аспекты конфиденциальности, связанные с заголовками Accept 178
Фальсификация DNS 178
Заголовки Location и мистификация 179
Приложения 179
1. Интернетовский тип среды message/http 179
2. Тип среды Интернет multipart/byteranges 179
3. Толерантные приложения 179
4. Различие между объектами HTTP и MIME 180
Преобразование к канонической форме 180
Введение кодирования содержимого 180
No Content-Transfer-Encoding 180
Поля заголовка в многофрагментных телах 181
Введение транспортного кодирования 181
MIME-Version 181
Дополнительные методы запросов 181
Метод PATCH 181
Метод LINK 182
Определения дополнительных полей заголовка 182
Поле Alternates 182
Поле Content-Version 182
Поле Derived-From 182
Поле Link 182
Практическое занятие 8. Функционирование веб-приложений. 185
Как работают веб-приложения 185
Краткие итоги 187
Протокол HTTP/HTTPS 187
Краткие итоги 193
Что такое веб-сервер? 194
Краткие итоги 199
Контрольные вопросы 199
Практическое занятие 1. Адресация IPv4
Протокол IP версии 4
Данные, передаваемые с использованием протокола IPv4, помещаются в сообщения, называемые пакетами или дейтаграммами. Протокол IPv4 использует пакет, который условно можно разделить на заголовок длиной, как правило, 20 байт и данные. Заголовок содержит адресные и управляющие поля, а в поле Данные находится непосредственно информация, которая передается через составную сеть. В отличие от формата некоторых других протоколов, например Ethernet, пакет IPv4 не содержит следующего за полем Данные контрольной суммы всего пакета.
Рис. 1.1 Формат пакета IPv4
Пакет IPv4 состоит из следующих полей:
● Версия (Version) – для IPv4 значение поля равно 4;
● Длина заголовка (IHL, Internet Header Length) – указывает на начало блока данных в пакете. Обычно значение для этого поля равно 5;
● Тип сервиса (ToS, Type of Service) – содержит информацию, требуемую для обеспечения функций качества обслуживания (QoS);
● Общая длина (TL, Total Length) – общая длина пакета с учетом заголовка и поля данных;
● Идентификатор пакета (Identification) – используется для распознавания пакетов, образовавшихся путем фрагментации исходного пакета;
● Флаги (Flag) – содержит признаки, связанные с фрагментацией пакета;
● Смещение фрагмента (Fragment Offset) – значение, определяющее позицию фрагмента в потоке данных;
● Время жизни (TTL, Time to Live) – временной интервал, в течение которого пакет может перемещаться по сети маршрутизаторами;
● Протокол (Protocol) – указывает, какому протоколу верхнего уровня принадлежит информация, размещенная в поле данных пакета;
● Контрольная сумма (Header Checksum) – рассчитывается по заголовку и позволяет определить целостность заголовка пакета;
● Адрес источника (Source IP Address) и адрес назначения (Destination IP Address) – указывают отправителя и получателя пакета;
● Опции (Options) – необязательное поле, может использоваться при отладке работы сети;
● Данные (Data) – данные передаваемые в пакете: или полное сообщение, полученное от вышележащего уровня или его фрагмент.
Заголовок IPv4, как правило, имеет длину 20 байт. При использовании необязательного поля Опции (Options), длина заголовка может быть увеличена в зависимости от количества опций, но всегда остается кратной 32 битам.
Понятие IP-адресации
Основной задачей протокола IP является передача данных между устройствами составной сети, для чего необходима информация о расположении адресата. Идентифицировать адресата и определить маршрут до него позволяет IP-адрес.
В отличие от физического адреса (МАС-адреса), который присваивается каждому сетевому устройству во время изготовления и позволяет уникально идентифицировать каждый узел сети, IP-адрес идентифицирует сетевой интерфейс (интерфейс подключения к сети), а не само устройство.
Рис. 1.2 IP-интерфейсы устройств
Любое устройство, которое передает данные, используя сетевой уровень, будет иметь как минимум один уникальный IP-адрес для сетевого интерфейса. Например, таким сетевым узлам, как компьютеры (если установлена одна сетевая карта) и сетевые принт-серверы обычно присваивают один IP-адрес. Маршрутизаторам или коммутаторам 3 уровня может быть присвоено более одного IP-адреса, т.к. они могут использоваться для соединения нескольких сетей.
Для того чтобы устройство участвовало в сетевом взаимодействии с помощью протокола IP, его интерфейсу должен быть присвоен уникальный IP-адрес, который позволяет однозначно идентифицировать интерфейс между ним и данной сетью. IP-адреса назначаются независимо от физических адресов. Если устройство переместить в новую сеть, его IP-адрес изменится, а физический (МАС-адрес) останется прежним.
Таким образом, каждое устройство, которое выполняет передачу данных, имеет связанный с ним адрес на канальном уровне и IP-адрес на сетевом уровне. Возникает вопрос: почему адресация выполняется на двух разных уровнях? Потому что эти два адреса используются для разных целей. Логически соединение между источником и приемником сообщения в составной сети осуществляется на сетевом уровне с использованием IP-адреса. Поэтому IP-адреса иногда называют логическими адресами. Физически отправителя и получателя соединяет последовательность каналов связи, работающих по технологиям канального уровня. Чтобы передать данные между непосредственно подключенными устройствами используются адреса канального уровня, например, МАС-адреса.
Рис. 1.3 Физические и логические адреса