Лабораторные работы по дисциплине
"Архитектура вычислительных систем (и компьютерных сетей)"
(МО-III, ПО-III, ПРО-III)


Лабораторная работа № 1 Основы работы с Internet (комплексом протоколов TCP/IP)

Лабораторная работа № 2 Разработка приложений для Web-сервера (с использованием "стандартного" подхода)

Лабораторная работа № 3 Разработка приложений для Web-сервера (с работой с БД)

Курсовая работа. Разработка приложений для Web-сервера (с работой с БД и использованием "фоновой" обработки)


 

Лабораторная работа № 1
Основы работы с Internet (комплексом протоколов TCP/IP)

Цель работы: получение навыков установки и конфигурирования стека протоколов TCP/IP, определение работоспособности интересующего узла или канала связи, изучение основ организации безопасной работы в Internet.

Порядок выполнения работы

    1. Установка и конфигурирование стека протоколов TCP/IP.
    2. Обследование локальной, кафедральной и университетской сетей:
      • Получение первоначальной информации (написание программы по определению для задаваемого пользователем диапазона адресов работоспособности каждого узла и его символьного (доменного) имени).
      • Анализ сети (написание программы по определению для заданного пользователем поддиапазона адресов  (выбранных из  диапазона, заданного на предыдущем шаге) следующих параметров: адрес сети, адрес шлюза, маска, широковещательный адрес).
      • Синтезирование структуры локальной / кафедральной(внешние адреса) / факультетской / университетской сети на основе полученных ранее данных.
    3. Установка, конфигурирование и работа с Межсетевым Экраном (МСЭ или Firewall).
    4. Подготовить и защитить отчет.
Требования к оформлению отчета

Кроме общих требований, которые можно посмотреть на http://vmk.ugatu.ac.ru/treb.htm, отчет должен содержать следующую информацию:

Рекомендуемая литература
citforum.ru

Краткие теоретические сведения

Типы адресов: физический (MAC-адрес), сетевой (IP-адрес) и символьный (DNS-имя)

Каждый компьютер в сети TCP/IP имеет адреса трех уровней: Номер узла в протоколе IP назначается независимо от локального адреса узла. Деление IP-адреса на поле номера сети и номера узла - гибкое, и граница между этими полями может устанавливаться весьма произвольно. Узел может входить в несколько IP-сетей. В этом случае узел должен иметь несколько IP-адресов, по числу сетевых связей. Таким образом IP-адрес характеризует не отдельный компьютер или маршрутизатор, а одно сетевое соединение.

Три основных класса IP-адресов

IP-адрес имеет длину 4 байта и обычно записывается в виде четырех чисел, представляющих значения каждого байта в десятичной форме, и разделенных точками, например:

128.10.2.30 - традиционная десятичная форма представления адреса,

10000000 00001010 00000010 00011110 - двоичная форма представления этого же адреса.

На рисунке показана структура IP-адреса.

Класс А
0 N сети N узла

Класс В
1 0 N сети N узла

Класс С
1 1 0 N сети N узла

Класс D
1 1 1 0 адрес группы multicast

Класс Е
1 1 1 1 0 зарезервирован

Структура IР-адреса

Адрес состоит из двух логических частей - номера сети и номера узла в сети. Какая часть адреса относится к номеру сети, а какая к номеру узла, определяется значениями первых битов адреса:

В таблице приведены диапазоны номеров сетей, соответствующих каждому классу сетей.
Класс Наименьший адрес Наибольший адрес
A 0.1.0.0 126.0.0.0
B 128.0.0.0 191.255.0.0
C 192.0.1.0. 223.255.255.0
D 224.0.0.0 239.255.255.255
E 240.0.0.0 247.255.255.255

Соглашения о специальных адресах: broadcast, multicast, loopback

В протоколе IP существует несколько соглашений об особой интерпретации IP-адресов:
0 0 0 0 ................................... 0 0 0 0 

то он обозначает адрес того узла, который сгенерировал этот пакет;
0 0 0 0 .......0  Номер узла
то по умолчанию считается, что этот узел принадлежит той же самой сети, что и узел, который отправил пакет;
1 1 1 1 .........................................1 1 

то пакет с таким адресом назначения должен рассылаться всем узлам, находящимся в той же сети, что и источник этого пакета. Такая рассылка называется ограниченным широковещательным сообщением (limited broadcast);
Номер сети  1111................11
то пакет, имеющий такой адрес рассылается всем узлам сети с заданным номером. Такая рассылка называется широковещательным сообщением (broadcast); Уже упоминавшаяся форма группового IP-адреса - multicast - означает, что данный пакет должен быть доставлен сразу нескольким узлам, которые образуют группу с номером, указанным в поле адреса. Узлы сами идентифицируют себя, то есть определяют, к какой из групп они относятся. Один и тот же узел может входить в несколько групп. Такие сообщения в отличие от широковещательных называются мультивещательными. Групповой адрес не делится на поля номера сети и узла и обрабатывается маршрутизатором особым образом.

В протоколе IP нет понятия широковещательности в том смысле, в котором оно используется в протоколах канального уровня локальных сетей, когда данные должны быть доставлены абсолютно всем узлам. Как ограниченный широковещательный IP-адрес, так и широковещательный IP-адрес имеют пределы распространения в интерсети - они ограничены либо сетью, к которой принадлежит узел - источник пакета, либо сетью, номер которой указан в адресе назначения. Поэтому деление сети с помощью маршрутизаторов на части локализует широковещательный шторм пределами одной из составляющих общую сеть частей просто потому, что нет способа адресовать пакет одновременно всем узлам всех сетей составной сети.

Подсети

Важным элементом разбиения адресного пространства Internet являются подсети. Подсеть - это
подмножество сети, не пересекающееся с другими подсетями. Это означает, что сеть организации
(скажем, сеть класса С) может быть разбита на фрагменты, каждый из которых будет составлять
подсеть. Реально, каждая подсеть соответствует физической локальной сети (например, сегменту
Ethernet). Вообще говоря, подсети придуманы для того, чтобы обойти ограничения физических сетей
на число узлов в них и максимальную длину кабеля в сегменте сети. Например, сегмент тонкого
Ethernet имеет максимальную длину 185 м и может включать до 32 узлов. Самая маленькая сеть - класса С - может состоять из 254 узлов. Для того, чтобы достичь этой цифры, надо объединить несколько физических сегментов сети. Сделать это можно либо с помощью физических устройств (например, репитеров), либо при помощи машин-шлюзов. В первом случае разбиения на подсети не требуется, т.к. логически сеть выглядит как одно целое. При использовании шлюза сеть разбивается на подсети (рисунок 1).

На рисунке 1 изображен фрагмент сети класса B - 144.206.0.0, состоящий из двух подсетей -
144.206.130.0 и 144.206.160.0. В центре схемы изображена машина шлюз, которая связывает
подсети. Эта машина имеет два сетевых интерфейса и, соответственно, два IP-адреса.


Рисунок 1. Схема разбиения адресного пространства сети на подсети

В принципе, разбивать сеть на подсети необязательно. Можно использовать адреса сетей другого
класса (с меньшим максимальным количеством узлов). Но при этом возникает, как минимум, два
неудобства:

     В сети, состоящей из одного сегмента Ethernet, весь адресный пул сети не будет использован,
     т.к., например, для сети класса С (самой маленькой с точки зрения количества узлов в ней),
     из 254 возможных адресов можно использовать только 32;
     Все машины за пределами организации, которым разрешен доступ к компьютерам сети данной
     организации, должны знать шлюзы для каждой из сетей. Структура сети становится открытой
     во внешний мир. Любые изменения структуры могут вызвать ошибки маршрутизации. При
     использовании подсетей внешним машинам надо знать только шлюз всей сети организации.
     Маршрутизация внутри сети - это ее внутреннее дело.

Разбиение сети на подсети использует ту часть IP-адреса, которая закреплена за номерами хостов.
Администратор сети может замаскировать часть IP-адреса и использовать ее для назначения номеров
подсетей. Фактически, способ разбиения адреса на две части, теперь будет применятся к адресу хоста
из IP-адреса сети, в которой организуется разбиение на подсети.

Маска подсети - это четыре байта, которые накладываются на IP-адрес для получения номера
подсети. Например, маска 255.255.255.0 позволяет разбить сеть класса В на 254 подсети по 254 узла
в каждой. На рисунке 2 приведено маскирование подсети 144.206.160.0 из предыдущего примера.

На приведенной схеме (рисунок 2) сеть класса B (номер начинается с 10) разбивается на подсети
маской 255.255.224.0. При этом первые два байта задают адрес сети и не участвуют в разбиении на
подсети. Номер подсети задается тремя старшими битами третьего байта маски. Такая маска
позволяет получить 6 подсетей. Для нумерации подсети нельзя использовать номер 000 и номер 111.
Номер 160 задает 5-ю подсеть в сети 144.206.0.0. Для нумерования машин в подсети можно
использовать оставшиеся после маскирования 13 битов, что позволяет создать подсеть из 8190
узлов. Честно говоря, в настоящее время такой сети в природе не существует и РНЦ "Курчатовский
Институт", которому принадлежит сеть 144.206.0.0, рассматривает возможность пересмотра маски
подсетей. Перестроить сеть, состоящую из более чем 400 машин, не такая простая задача, так как ей
управляет 4 администратора, которые должны изменить маски на всех машинах сети. Ряд
компьютеров работает в круглосуточном режиме и все изменения надо произвести в тот момент,
когда это минимально скажется на работе пользователей сети. Данный пример показывает насколько
внимательно следует подходить к вопросам планирования архитектуры сети и ее разбиения на
подсети. Многие проблемы можно решить за счет аппаратных средств построения сети.


Схема маскирования и вычисления номера подсети

К сожалению, подсети не только решают, но также и создают ряд проблем. Например, происходит
потеря адресов, но уже не по причине физических ограничений, а по причине принципа построения
адресов подсети. Как было видно из примера, выделение трех битов на адрес подсети не приводит к
образованию 8-ми подсетей. Подсетей образуется только 6, так как номера сетей 0 и 7 использовать в
силу специального значения IP-адресов, состоящих из 0 и единиц, нельзя. Таким образом, все
комбинации адресов хоста внутри подсети, которые можно было бы связать с этими номерами,
придется забыть. Чем шире маска подсети (чем больше места отводится на адрес хоста), тем больше
потерь. В ряде случаев приходится выбирать между приобретением еще одной сети или изменением
маски. При этом физические ограничения могут быть превышены за счет репитеров, хабов и т. п.

Отображение символьных адресов на IP-адреса: служба DNS

DNS (Domain Name System) - это распределенная база данных, поддерживающая иерархическую систему имен для идентификации узлов в сети Internet. Служба DNS предназначена для автоматического поиска IP-адреса по известному символьному имени узла. Спецификация DNS определяется стандартами RFC 1034 и 1035. DNS требует статической конфигурации своих таблиц, отображающих имена компьютеров в IP-адрес.

Протокол DNS является служебным протоколом прикладного уровня. Этот протокол несимметричен - в нем определены DNS-серверы и DNS-клиенты. DNS-серверы хранят часть распределенной базы данных о соответствии символьных имен и IP-адресов. Эта база данных распределена по административным доменам сети Internet. Клиенты сервера DNS знают IP-адрес сервера DNS своего административного домена и по протоколу IP передают запрос, в котором сообщают известное символьное имя и просят вернуть соответствующий ему IP-адрес.

Если данные о запрошенном соответствии хранятся в базе данного DNS-сервера, то он сразу посылает ответ клиенту, если же нет - то он посылает запрос DNS-серверу другого домена, который может сам обработать запрос, либо передать его другому DNS-серверу. Все DNS-серверы соединены иерархически, в соответствии с иерархией доменов сети Internet. Клиент опрашивает эти серверы имен, пока не найдет нужные отображения. Этот процесс ускоряется из-за того, что серверы имен постоянно кэшируют информацию, предоставляемую по запросам. Клиентские компьютеры могут использовать в своей работе IP-адреса нескольких DNS-серверов, для повышения надежности своей работы.

База данных DNS имеет структуру дерева, называемого доменным пространством имен, в котором каждый домен (узел дерева) имеет имя и может содержать поддомены. Имя домена идентифицирует его положение в этой базе данных по отношению к родительскому домену, причем точки в имени отделяют части, соответствующие узлам домена.

Корень базы данных DNS управляется центром Internet Network Information Center. Домены верхнего уровня назначаются для каждой страны, а также на организационной основе. Имена этих доменов должны следовать международному стандарту ISO 3166. Для обозначения стран используются трехбуквенные и двухбуквенные аббревиатуры, а для различных типов организаций используются следующие аббревиатуры:

Каждый домен DNS администрируется отдельной организацией, которая обычно разбивает свой домен на поддомены и передает функции администрирования этих поддоменов другим организациям. Каждый домен имеет уникальное имя, а каждый из поддоменов имеет уникальное имя внутри своего домена. Имя домена может содержать до 63 символов. Каждый хост в сети Internet однозначно определяется своим полным доменным именем (fully qualified domain name, FQDN), которое включает имена всех доменов по направлению от хоста к корню. Пример полного DNS-имени :
vmk.ugatu.ac.ru
------------------------
Установка и конфигурирование стека TCP/IP в Windows осуществляется в:
"Мой компьютер-Панель управления-Сеть-Конфигурация (Добавить-Протокол или TCP/IP-Свойства).
Для работы с IP-конфигурацией в Windows существует утилита winipcfg.exe.
Для определения состояния текущих соединений используется утилита netstat.
-----------------------
Сервисные утилиты ping и traceroute(в Windows - tracert)

При работе в сети Internet могут возникать ситуации, когда необходимо определить работоспособность того или иного узла или канала связи, а также выяснить, по какому конкретно каналу передаются сообщения. Для этой цели служат утилиты ping и traceroute. Эти утилиты, как и многие другие, были разработаны под ОС UNIX, но в настоящее время они распространены практически во всех ОС. Названия программных файлов утилит, а также формат их командной строки могут изменяться в зависимости от версии ОС, но принципы работы и назначение этих везде утилит одинаковы (например, под ОС типа Windows NT утилита traceroute носит название tracert, однако, выполняет она те же действия).

Утилита ping базируется на протоколах ICMP (Internet Control Message Protocol) и UDP. Протокол ICMP проверяет состояние сетевых устройств и формирует соответствующие сообщения. При возникновении неисправности в каком-либо устройстве он сообщает об этом остальным устройствам. ICMP работает на том же уровне, что и протокол IP.

Входными данными для утилиты ping является адрес узла, маршрут до которого подлежит трассировке. Адрес узла задается в виде IP-адреса или доменного адреса в командной строке при запуске утилиты. На основе откликов протокола ICMP утилита строит протокол трассировки соединения, из которого можно определить, через какие узлы и в течение какого времени проходили пакеты по сети до заданной адресной точки. Версия BSD утилиты ping в ОС UNIX позволяет выполнять очень широкий набор функций по протоколированию и трассировке соединений. В других ОС (например, в Windows NT) часть функций трассировки выделена в другую утилиту - traceroute (в Windows NT - tracert), а утилита ping позволяет только проверить наличие соединения.

Сервисные утилиты ping и traceroute зачастую требуют для своего запуска наличия у пользователя административных прав. Это связано с тем, что при трассировке соединений они посылают в сеть большое число пакетов, не несущих никакой полезной информации. Неквалифицированное или преднамеренно злоумышленное использование этих утилит может привести к значительному росту трафика сети, что в свою очередь может осложнить работу многих прикладных программ.

Указанные сервисные утилиты выполняют в основном отладочные, а не прикладные функции. Они чаще всего используются административным персоналом сетей и узлов для проверки исправности оборудования и правильности настроек программных систем. Они также полезны разработчикам прикладных программ, ориентированных на работу в сети, для проверки отклика этих программ на входящие сообщения. Версии этих утилит во многих ОС (прежде всего - под ОС UNIX) позволяют получить дополнительную отладочную информацию, полезную разработчикам программ при отладке. Например, возможна распечатка содержимого входных и выходных пакетов, распечатка заголовков пакетов (в стандартных утилитах ping и tracert под графической оболочкой типа Windows такие отладочные функции не предоставляются).


Лабораторная работа № 2
Разработка приложений для Web-сервера (без работы с БД)

Цель работы: получение навыков разработки динамических HTML-страниц на основе PHP, ASP, JavaScript и т.д.
Задание: Выбирается студентом самостоятельно, затем согласовывается с преподавателем. Реализация должна включать в себя:
Web-интерфейс, аутентификацию. Для разных уровней доступа должны быть реализованы различные функциональные возможности.
(с использованием "стандартного" подхода, т.е. без использования технологий "фоновой" обработки)

Лабораторная работа № 3
Разработка приложений для Web-сервера (с работой с БД)

Цель работы: получение навыков разработки динамических HTML-страниц на основе PHP, ASP, JavaScript и т.д., включающих работу с БД.
Задание: Продолжение ЛР№2. Реализация должна включать в себя:
см. ЛР№2 и работу с БД. Для разных уровней доступа должны быть реализованы различные возможности по вводу/изменению и удалению информации из БД.
(с использованием "стандартного" подхода, т.е. без использования технологий "фоновой" обработки)

Курсовая работа
Разработка приложений для Web-сервера (с работой с БД и "фоновой" обработкой)

Тоже, что и ЛР№3, но с использованием технологий "фоновой" обработки (AJAX, WebSockets и т.д.).