- •Оглавление
- •Практическое занятие 1. Адресация iPv4
- •1.1. Протокол ip версии 4
- •1.1.1. Понятие ip-адресации
- •1.1.2. Представление и структура адреса iPv4
- •1.1.3. Классовая адресация iPv4
- •1.1.4. Частные и публичные адреса iPv4
- •1.1.5. Формирование подсетей
- •1.1.6. Маски подсети переменной длины (vlsm)
- •1.1.7. Бесклассовая адресация iPv4
- •1.1.8. Общие функции классовой и бесклассовой адресации
- •1.2. Выделение адресов
- •1.3. Агрегирование маршрутов и суперсети
- •6.4. Способы конфигурации адреса iPv4
- •Практическое занятие 1. Задания
- •1.1. Преобразование десятичного формата представления числа в двоичный
- •1.2. Преобразование двоичного формата представления числа в десятичный
- •1.3. Преобразование ip-адреса из десятичного формата в двоичный
- •1.4. Преобразование ip-адреса из двоичного формата в десятичный
- •1.5. Определение классов ip-адресов
- •1.6. Определение допустимых для использования ip-адресов
- •1.7. Вычисление количества битов, необходимого для подсетей
- •1.8. Вычисление масок подсети
- •1.9. Разбиение сети на подсети с использованием маски подсети фиксированной длины
- •2.1. Формат заголовка iPv6
- •2.2. Представление и структура адреса iPv6
- •0:0:0:0:0:0:13.1.68.3 Или в сокращенном виде ::13.1.68.3
- •0:0:0:0:0:Ffff:129.144.52.38 или в сокращенном виде ::ffff:129.144.52.38
- •2.3. Типы адресов iPv6
- •2.4. Индивидуальные адреса
- •Идентификатор интерфейса
- •Глобальные индивидуальные адреса iPv6
- •Локально-используемые индивидуальные адреса iPv6
- •2.5. Альтернативные адреса
- •2.6. Групповые адреса
- •2.7. Способы конфигурации адреса iPv6
- •2.8. Планирование подсетей iPv6
- •3.2 Методика расчета времени двойного оборота и уменьшения межкадрового интервала
- •3.3 Пример расчета конфигурации сети
- •Практическое занятие 3. Задание
- •3.1. Произвести оценку конфигурации сети в соответствии с вариантом:
- •3.2. По результатам расчетов сделать вывод о корректности конфигурации сети Ethernet.
- •Практическое занятие 4. Система доменных имен
- •4.1. Пространство имен
- •4.1.1. Плоское пространство имен
- •4.1.2. Иерархическое пространство имен
- •4.1.5.1.2. Частично определенное имя домена
- •4.1.6. Домен
- •4.2. Распределение имен
- •4.2.1. Иерархия серверов имен
- •4.2.2. Зона
- •4.2.3. Корневой сервер
- •4.2.4. Первичные и вторичные серверы
- •4.3. Dns в Интернете
- •4.3.1. Родовой домен
- •4.3.2. Домены страны
- •4.3.3. Инверсный домен
- •4.4. Распознавание имен
- •4.4.1. Распознаватель (resolver)
- •4.4.2. Отображение имен в адреса
- •4.4.3. Отображение адресов в имена
- •4.4.4. Рекурсивное распознавание
- •4.4.5. Итерационное распознавание
- •4.4.6. Кэширование
- •4.5.1. Заголовок
- •4.6.2. Запись ресурса
- •4.7. Сжатие
- •Примеры
- •Пример 1
- •Пример 2
- •4.9. Инкапсуляция
- •Практическое занятие 4. Задания
- •Практическое занятие 5. Протокол snmp (Простой протокол управления сетью)
- •5.2. Концепция
- •5.3. Менеджеры и агенты
- •5.4. Компоненты управления
- •5.4.1. Задачи snmp
- •5.4.2. Задачи smi
- •5.4.3. Задачи mib
- •5.4.4. Аналогия
- •5.5. Общие замечания
- •5.6. Структура управляющей информации, версия 2 (smIv2)
- •5.6.2.1. Простой тип
- •5.6.2.2. Структурированный тип
- •5.7. Метод кодирования
- •5.7.1.2. Таблицы
- •Лексикографическое упорядочение
- •Ответ (Response)
- •Ловушка (Trap)
- •5.9. Формат
- •5.10. Сообщения
- •Пример 1
- •Практическое занятие 5. Задания
- •Практическое занятие 6. Гипертекстовый протокол http (часть 1)
- •6.1. Соглашения по нотации и общая грамматика. Расширенные bnf
- •6.2. Основные правила
- •6.2. Параметры протокола. Версия http
- •6.3. Универсальные идентификаторы ресурсов (uri)
- •6.4. Общий синтаксис
- •6.4.2. Сравнение uri
- •6.5. Форматы даты/времени. Полная дата
- •6.5.1. Интервалы времени в секундах
- •6.6. Наборы символов
- •Кодировки содержимого
- •Транспортное кодирование
- •Типы среды
- •Канонизация и текст по умолчанию
- •Составные типы
- •Лексемы (token) продукта
- •2.9. Значения качества (Quality values)
- •Языковые метки
- •Метки объектов
- •Структурные единицы
- •Http сообщение. Типы сообщений
- •Заголовки сообщений
- •Общие поля заголовка
- •Строка запроса
- •Uri запроса
- •Ресурс, идентифицируемый запросом
- •Поля заголовка запроса
- •Статусная строка
- •Статусный код и словесный комментарий
- •Поля заголовка отклика
- •Объект (Entity)
- •Поля заголовка объекта
- •Тело объекта
- •Соединения. Постоянные соединения. Цель
- •Общие процедуры
- •Согласование
- •Буферизация
- •Проксисерверы
- •Практические соображения
- •Требования к передаче сообщений
- •Метод определений
- •Безопасные и идемпотентные методы. Безопасные методы
- •Идемпотентные методы
- •Метод get
- •Метод head
- •Метод post
- •Метод put
- •Метод delete
- •Метод trace
- •Successful 2xx (Успешная доставка)
- •201 Created (Создано)
- •202 Accepted (Принято)
- •203 NonAuthoritative Information (Не надежная информация)
- •204 No Content (Никакого содержимого)
- •205 Reset Content (Сброс содержимого)
- •206 Partial Content (Частичное содержимое)
- •Redirection 3xx (Переадресация)
- •300 Multiple Choices (Множественный выбор)
- •301 Moved Permanently (Постоянно перемещен)
- •302 Moved Temporarily (Временно перемещен)
- •303 See Other (смотри другие)
- •304 Not Modified (Не модифицировано)
- •305 Use Proxy (Используйте прокси)
- •Client Error 4xx (Ошибка клиента)
- •400 Bad Request (Плохой запрос)
- •401 Unauthorized (Не авторизован)
- •402 Необходима оплата
- •403 Forbidden (Запрещено)
- •404 Not Found (Не найдено)
- •405 Method Not Allowed (Метод не разрешен)
- •406 Not Acceptable (Не приемлемо)
- •407 Proxy Authentication Required (Необходима идентификация прокси)
- •408 Request Timeout (Таймаут запроса)
- •409 Conflict (Конфликт)
- •410 Gone (Исчез)
- •415 Unsupported Media Type (Неподдерживаемый тип среды)
- •Server error 5xx (ошибка сервера)
- •Базовая схема идентификации (Authentication)
- •Краткое изложение схемы авторизации
- •Согласование содержимого
- •Согласование, управляемое сервером
- •Согласование, управляемое агентом (Agentdriven Negotiation)
- •Прозрачное согласование (Transparent Negotiation)
- •Кэширование в http
- •Корректность кэша
- •Предупреждения
- •Механизмы управления кэшем
- •Прямые предупреждения агента пользователя
- •Исключения для правил и предупреждений
- •Работа под управлением клиента
- •Модель истечения срока годности. Определение срока годности под управлением сервера
- •Эвристический контроль пригодности
- •Вычисление возраста
- •Вычисление времени жизни (Expiration)
- •Устранение неопределенности значений времени жизни
- •Неопределенность из-за множественных откликов
- •Модель проверки пригодности
- •Даты последней модификации
- •Валидаторы кэша для меток объектов (Entity Tag Cache Validators)
- •Слабые и сильные валидаторы
- •Правила того, когда использовать метки объекта и даты последней модификации
- •Условия пригодности
- •Кэшируемость отклика
- •Формирование откликов кэшей
- •Заголовки End-to-end (точкаточка) и Hop-by-hop (шагза-шагом)
- •Немодифицируемые заголовки
- •Комбинирование заголовков
- •Комбинирование байтовых фрагментов
- •Кэширование согласованных откликов
- •Кэши коллективного и индивидуального использования
- •Ошибки и поведение кэша при неполном отклике
- •Побочные эффекты методов get и head
- •Несоответствие после актуализации или стирания
- •Обязательная пропись (Write-Through Mandatory)
- •Замещения в кэше
- •Списки предыстории
- •Определения полей заголовка
- •Поле Accept
- •Поле Accept-Charset
- •Поле Accept-Encoding
- •Поле Accept-Language
- •Поле Accept-Ranges
- •Поле Age
- •Поле Allow
- •Авторизация
- •Поле Cache-Control
- •Что допускает кэширование?
- •Что может быть записано в память кэша?
- •Модификации базового механизма контроля времени жизни
- •Управление перепроверкой пригодности и перезагрузкой
- •Директива No-Transform
- •Расширения управления кэшем
- •Соединение
- •Кодирование содержимого
- •Язык содержимого
- •Длина содержимого
- •Поле Content-Location
- •Отрывок содержимого
- •Тип содержимого
- •Поле eTag
- •Поле Expires
- •Поле From
- •Поле Host
- •Поле If-Modified-Since
- •Поле If-Match
- •Поле If-None-Match
- •Заголовок If-Range
- •Поле If-Unmodified-Since
- •Поле Last-Modified
- •Поле Location
- •Поле Max-Forwards
- •Поле Pragma
- •Поле Proxy-Authenticate
- •Поле Proxy-Authorization
- •Поле Public
- •Фрагмент. Фрагменты байт
- •Запросы получения фрагментов
- •Поле Referer
- •Поле Retry-After
- •Поле Server
- •Поле Transfer-Encoding (Транспортное кодирование)
- •Заголовок Upgrade (Актуализация)
- •Поле User-Agent (Агент пользователя)
- •Поле Vary
- •Поле Via
- •Поле Warning (Предупреждение)
- •Поле www-Authenticate
- •Соображения безопасности
- •Аутентификация клиентов
- •Предложение выбора схемы идентификации
- •Злоупотребление служебными (Log) записями сервера
- •Передача конфиденциальной информации
- •Атаки, основанные на именах файлов и проходах
- •Персональная информация
- •Аспекты конфиденциальности, связанные с заголовками Accept
- •Фальсификация dns
- •Заголовки Location и мистификация
- •Приложения
- •1. Интернетовский тип среды message/http
- •2. Тип среды Интернет multipart/byteranges
- •3. Толерантные приложения
- •4. Различие между объектами http и mime
- •Преобразование к канонической форме
- •Введение кодирования содержимого
- •Поля заголовка в многофрагментных телах
- •Введение транспортного кодирования
- •Дополнительные методы запросов Метод patch
- •Метод link
- •Определения дополнительных полей заголовка Поле Alternates
- •Поле Content-Version
- •Поле Derived-From
- •Поле Link
- •Практическое занятие 8. Функционирование веб-приложений. Как работают веб-приложения
- •Краткие итоги
- •Протокол http/https
- •Краткие итоги
- •Что такое веб-сервер?
- •Краткие итоги
- •Контрольные вопросы
Структурные единицы
HTTP/1.1 позволяет клиенту запросить только часть объекта (диапазон). HTTP/1.1 использует структурные единицы, определяющие выделение части объекта, в полях заголовка Range и ContentRange. Объект может быть разбит на фрагменты с использованием различных структурных единиц.
rangeunit = bytesunit | otherrangeunit bytesunit = "bytes" otherrangeunit = token
Единственной структурной единицей, определенной в HTTP/1.1, является bytes. HTTP/1.1 реализации могут игнорировать диапазоны, специфицированные с использованием других структурных единиц. Стандарт HTTP/1.1 сконструирован так, чтобы позволить реализацию приложений, которые не зависят от знания диапазонов.
Http сообщение. Типы сообщений
Сообщения HTTP включают в себя запросы клиента к серверу и отклики сервера клиенту.
HTTPmessage = Request | Response ; HTTP/1.1 messages
Сообщения запрос и отклик используют общий формат сообщений RFC-822 [7.9] для передачи объектов (поле данных сообщения). Оба типа сообщений состоят из стартовой строки, одного или более полей заголовка (также известные как "заголовки"), пустой строки (то есть, строка, содержащая CRLF ), отмечающей конец полей заголовка, а также опционного тела сообщения.
genericmessage = startline *messageheader CRLF [ messagebody ] startline = RequestLine | StatusLine
В интересах надежности рекомендуется серверам игнорировать любые пустые строки, полученные, когда ожидается RequestLine (строка запроса). Другими словами, если сервер читает протокольный поток в начале сообщения и получает сначала CRLF, он должен игнорировать CRLF.
Определенные некорректные реализации HTTP/1.0 клиентов генерируют дополнительные CRLF после запроса POST. Клиент HTTP/1.1 не должен посылать CRLF до или после запроса.
Заголовки сообщений
Поля заголовка HTTP, которые включают в себя общие поля заголовка, заголовка запроса, заголовка отклика и заголовка объекта, следуют тому же общему формату, что дан в разделе 3.1 RFC-822 [7.9]. Каждое поле заголовка состоит из имени, за которым следует двоеточие (":"), и поля значения. Поля имен безразличны в отношении использования строчных и прописных букв. Поле значения может начинаться с любого числа LWS, хотя один SP предпочтительнее. Поля заголовка могут занимать несколько строк, каждая новая строка должна открываться, по крайней мере, одним SP или HT. Рекомендуется, чтобы приложения следовали общему формату, если они создаются конструкциями HTTP, так как могут существовать некоторые реализации, которые не могут воспринимать ничего, кроме общих форматов.
Messageheader = fieldname ":" [ fieldvalue ] CRLF fieldname = token fieldvalue = *( fieldcontent | LWS )
fieldcontent = <OCTET'ы образуют значения поля и состоят из *TEXT или комбинаций лексем, tspecials и закавыченных строк>
Порядок, в котором приходят поля заголовка с отличающимися именами, не имеет значения. Однако хорошей практикой считается посылка сначала поля общего заголовка, за которым следует заголовок запроса или отклика, а в заключение поля заголовка объекта.
Множественные поля заголовка сообщения с идентичными именами могут присутствовать тогда и только тогда, когда значение поля определяется как список из элементов, разделенных запятыми [то есть, #(значения)]. Должна быть предусмотрена возможность объединять множественные поля заголовка в одну пару "имя_поля: значение_поля", без изменения семантики сообщения, путем добавления каждой последующей пары полезначение, отделенных друг от друга запятыми. Порядок, в котором следуют поля заголовка с идентичными именами, влияет на последующую интерпретацию значения комбинированного поля, по этой причине проксисервер не должен менять порядок значений этих полей при переадресации сообщения.
го длина определяется следующим образом (в порядке приоритета).
Любое сообщениеотклик, которое не должно включать в себя тело сообщения (такое, как отклик 1xx, 204 и 304, а также любые отклики на запрос HEAD), всегда завершаются первой пустой строкой после полей заголовка, вне зависимости от присутствующих в сообщении полей заголовка объекта.
Если присутствует поле заголовка Transfer-Encoding и указано, что использовано фрагментное ("chunked") транспортное кодирование, тогда длина тела определяется выбранной схемой кодирования.
Если присутствует поле заголовка ContentLength, его значение в байтах и определяет длину тела сообщения.
Если сообщение использует тип cреды multipart/byteranges, который является самоограничивающим, тогда он и определяет длину. Этот тип среды не должен использоваться, если отправитель не знает, может ли получатель разобрать его. Присутствие в запросе заголовка Range с множественными спецификаторами диапазона подразумевает, что клиент может разобрать отклики типа multipart/byteranges.
Длина определяется сервером при закрытии связи. (Закрытие соединения не может применяться для обозначения конца тела запроса, так как это не оставит возможности для сервера послать отклик.)
Для совместимости с приложениями HTTP/1.0, запросы HTTP/1.1, содержащие тело запроса, должны включать корректное поле заголовка ContentLength. Когда запрос содержит тело сообщения, а поле ContentLength отсутствует, рекомендуется, чтобы сервер реагировал откликом 400 (плохой запрос), если он не может определить длину сообщения, или 411 (необходима длина), если он настаивает на получении корректного поля ContentLength.
Все приложения HTTP/1.1, которые получают объект ( entity ), должны понимать блочное ( chunked ) транспортное кодирование, таким образом, разрешая использование этого механизма для сообщений, когда длина сообщения не может быть определена заранее.
Сообщения не должны включать поле заголовка ContentLength и блочное транспортное кодирование одновременно. Если такое сообщение получено, поле ContentLength должно игнорироваться.
Когда в сообщении присутствует поле ContentLength и разрешено наличие тела сообщения, его значение поля должно строго соответствовать числу октетов в теле сообщения. Агенты пользователя HTTP/1.1 должны оповещать пользователя, если получено сообщение некорректной длины.
