- •Оглавление
- •Практическое занятие 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
- •Краткие итоги
- •Что такое веб-сервер?
- •Краткие итоги
- •Контрольные вопросы
Практическое занятие 8. Функционирование веб-приложений. Как работают веб-приложения
Цель лекции: сформировать концептуальное представление о функционировании веб-приложений.
Веб-приложения – это специальный вид приложений, которые работают в глобальной сети Интернет по протоколу HTTP (см. "Введение в платформу .NET Framework и ASP.NET" ). Как правило, веб-приложения не требуют установки дополнительного программного обеспечения на стороне клиента, а вся логика, в основном, выполняется на стороне сервера. Для отображения пользовательского интерфейса используется браузер – программа, способная распозновать язык разметкиHTML (и сопутствующие технологии – таблицы стилей CSS, клиентский скриптовой язык программирования JavaScript и т.д.). Браузер обычно принято называть "тонким клиентом", т.е. клиентом, который содержит минимальное количество бизнес-логики.
Давайте разберемся в том, как функционирует любое веб-приложение. Необходимые компоненты для работы пользователя с веб-приложением – браузер (тонкий клиент), веб-сервер (серверная часть), протокол взаимодействия клиента и сервера (HTTP) и язык разметки для создания документов (HTML). Основу функционирования веб-сервера и протокола HTTP мы подробнее рассмотрим в следующих лекциях, а пока остановимся на концептуальном представлении. Для того, чтобы веб-приложение стало доступно, его необходимо разместить в рамках веб-сервера (специальная программа, которая обрабатывает запросы из сети). После этого приложение получит свой уникальный адрес в рамках протокола HTTP (например, http://www.myapplication.com/page1.html). Используя этот адрес пользователь может обратиться к приложению. Для этого он должен запустить браузер (клиентское приложение) и ввести в адресной строке адрес приложения. В этот момент браузер сгенерирует запрос к серверу и отправит его, используя протокол HTTP. В момент, когда сервер примет этот запрос, он сможет распознать, что именно требуется от него на основе полученного запроса. Используя эти данные он сгенерирует ответ и отправит его обратно клиенту также используя протокол HTTP. Обычно ответ содержит гипертекстовую разметку HTML, содержащую структуру документа, который передается пользователю. После того, как браузер получит ответ в виде HTML-документа, он немедленно отобразит его пользователю. Таким образом, было совершено взаимодействие клиента и сервера. Зачастую документ HTML содержит ссылки на изображение, другие медиа-файлы, таблицы стилей или клиентские сценарии. В этом случае браузер генерирует еще несколько аналогичных запросов к веб-серверу. Однако, в этом случае веб-сервер передает клиенту уже не HTML-документ, а соответствующие запрашиваемые ресурсы (изображения, таблицы стилей, клиентские сценарии и т.д.).
В самом простейшем случае на сервере может быть сохранен готовый документ HTML, который по запросу будет передаваться пользователю. Это – так называемый, статический документ. В этом случае он просто считывается с жесткого диска и передается клиенту. Однако, такой сценарий работы в глобальной сети становится все более редким. Другой подход – генерация кода HTML в процессе обработки запроса от клиента. Этот подход позволяет сделать веб-приложение более интерактивным, отзывчивым на действия клиента и создающее впечатления настоящего приложения, а не простой загрузки HTML-документов. Таким образом, мы, имея возможность генерировать HTML-код страницы, можем влиять на ту информацию, элементы управления и другие аспекты интерфейса, которые увидит пользователь. По сути, задача веб-приложения и заключается в том, чтобы генерировать нужный HTML-код, в зависимости от действий пользователя. Однако, возможности веб-приложений могут не ограничиваться только генерацией разметки HTML – они могут генерировать изображения, клиентские сценарии, таблицы стилей и другие ресурсы, которые могут быть загружены пользователем. Тем не менее, основным сценарием является все-таки генерация конечного документа HTML.
Как уже говорилось ранее, для взаимодействия клиента и сервера используется протокол HTTP (который более детально будет рассмотрен в последующих лекциях). Сейчас важно понять, что этот протокол работает по схеме "запрос-ответ". В момент, когда клиент хочет обратиться к серверу, он генерирует запрос, который отправляется серверу. Сервер обрабатывает этот запрос и подготавливает ресурсы, которые будут отправлены клиенту. После этого сервер генерирует ответ, в котором содержаться все необходимые данные и отправляет клиенту. Работа веб-приложений заключается в формировании необходимых данных как раз в момент подготовки ресурсов на сервере. Обычно в этот момент запускается некоторый программный код, который содержит определенную бизнес логику. Схему работы типичного веб-приложения схематически можно представить следующим образом (зеленым цветом обозначены действия, которые выполняются на клиентской стороне, а синие – на серверной).
Веб-приложения существенно отличаются от настольных приложений. Последние запускаются на компьютере клиента и выполняют свой код именно там. Поэтому настольные приложения зачастую обладают более богатым и отзывчивым пользовательским интерфейсом и позволяют реализовывать более богатые сценарии. По сравнению с настольными приложениями, веб-приложения обладают более ограниченными возможностями по формированию пользовательского интерфейса и клиентской функциональности. По этой причине за последнее время сложился стереотип о том, что серьезные приложения (например, бизнес-приложения) – это, как правило, настольные приложения. Однако, развитие веб-технологий доказало, что веб-приложения также могут реализовывать богатые сценарии и успешно конкурировать с настольными приложениями. Кроме того, за последние несколько лет очень активно развиваются технологии, позволяющие сделать веб-приложения еще более интерактивными. К ним относятся технология AJAX (будет рассмотрена в рамках курса), которая на основе клиентских сценариев JavaScript может сделать взаимодействие более интерактивным. Также существует ряд технологий, которые добавляют интерактивности приложению за счет внедрения в браузер специальных модулей (плагинов), которые могут отображать специальные типы файлов с более богатыми возможностями. К таким технологиям в первую очередь относятся технологии Silverlight и Flash.
Однако, несмотря на то, что существует ряд технологий, упрощающих создание динамичных веб-приложений, их разработка по прежднему остается довольно трудоемкой задачей. Разработка веб-приложений существенно отличается от разработки настольных систем. Этому есть две главные причины:
Веб-приложения исполняются на сервере. Весь программный код исполняется в рамках веб-сервера, а клиенту доставляется уже готовая разметка HTML, которая отображается внутри браузера.
Веб-приложения не хранят состояния. По-сути, сервер "забывает" про пользователя после того, как обработал его запрос.
Оба этих фактора существенно влияют на процесс разработки веб-приложений. Из-за этого при построении любого веб-приложения приходится решать типичные задачи – способы хранения информации о пользователе, организация сеансов работы пользователя, способы переходов от страницы к странице, механизмы оптимизации эффективности (например, кэширование) и др. При реализации каждого веб-приложения разработчику придется столкнуться с этими проблемами и решить их. Поскольку набор этих задач является достаточно стандартным и одинаково решается для большинства веб-приложений, то его реализация вынесена в отдельные технологии, которые называются технологиями для разработки веб-приложений. К таким технологиям относятся технология Microsoft ASP.NET, PHP, Ruby on Rails и др. В них, фактически, содержатся все компоненты, необходимые для реализации веб-приложений и учитывающие их специфику. Далее в рамках данного курса мы будем рассматривать разработку веб-приложений с позиции платформы Microsoft ASP.NET.
Однако, несмотря на те преимущества настольных приложений, которые мы рассмотрели ранее, веб-приложения также обладают своими преимуществами. Основное преимущество веб-приложений заключается в процессе развертывания приложения, т.е. установке приложения конечному клиенту. Если настольное приложение необходимо установить на каждое рабочее место где оно будет использоваться, то веб-приложение нужно разместить на сервере и дать ссылку на него всем пользователям. Особенно актуален данный аспект там, где присутствует большое количество рабочих мест. Кроме того, в случае обновления программного кода, веб-приложения также имеют преимущество – для их обновления требуется только обновить код на сервере. При этом настольное приложение потребовалось бы обновлять на каждом рабочем месте.
