РАЗРАБОТКА ПРОГРАММЫ АНАЛИЗА И РАСЧЕТА IP-АДРЕСОВ (IP-КАЛЬКУЛЯТОРА) - Студенческий научный форум

VIII Международная студенческая научная конференция Студенческий научный форум - 2016

РАЗРАБОТКА ПРОГРАММЫ АНАЛИЗА И РАСЧЕТА IP-АДРЕСОВ (IP-КАЛЬКУЛЯТОРА)

Алексеев Д.М. 1, Пескова О.Ю. 1
1Южный Федеральный Университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Введение

Отличительным признаком современного мира является взаимосвязь всех людей. Люди с творческими идеями могут немедленно связаться с другими нужными людьми, чтобы воплотить свои идеи в реальность. Неоспоримым выглядит тот факт, что сеть коммуникаций изменила наш образ жизни, способы образования и развлечения. Объединение компьютеров в сети позволило значительно повысить производительность труда.

Участники человеческой сети нуждаются в возможности обмениваться информацией из любого уголка мира в любое время. Для обнаружения местонахождения друг друга и создания надежных каналов связи между собой требуется система глобальных адресов.

Для обмена данными в Интернете узлу необходим IP-адрес. IP-адрес представляет собой 32-разрядный номер, который уникально идентифицирует узел (компьютер или устройство, например, принтер или маршрутизатор) в сети TCP/IP. [1]

Еще одним элементом, необходимым для работы протокола TCP/IP, является маска подсети. Протокол TCP/IP использует маску подсети, чтобы определить, в какой сети находится узел: в локальной подсети или удаленной сети.

В протоколе TCP/IP части IP-адреса, используемые в качестве адреса сети и узла, не зафиксированы, следовательно, указанные выше адреса сети и узла невозможно определить без наличия дополнительных сведений. Данные сведения можно получить из другого 32-разрядного номера под названием «маска подсети». [3, 5]

Процесс получения информации о классе IP-адреса, количестве рабочих адресов для хостов, широковещательном адресе, IP-адресе сети можно реализовать как при помощи аналитических расчетов, так и программно.

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

Целью моей работы является создание в среде разработки Microsoft Visual C++ 2010 Express программы-анализатора IP-адресов. Разработанная программа-анализатор IP-адресов должна иметь следующий функционал и выполнять такие задачи, как:

  1. Вывод на рабочую область экрана введенного IP-адреса и маски подсети

  2. Отображение IP-адреса и маски подсети в двоичном представлении (для наглядности)

  3. Вывод информации о классовой принадлежности IP-адреса, введенного пользователем

  4. Расчет адреса сети

  5. Расчет адреса широковещательной рассылки

  6. Вывод информации о количестве узлов (хостов) в сети

В ходе достижения поставленной цели мною будут рассмотрены следующие основные пункты:

  1. Теоретические основы адресации

  2. Основные модули программы

  3. Руководство к пользованию

1. Теоретические основы адресации 1.1. Классы IP-адресов

IP-адрес(от англ. Internet Protocol Address) — уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу IP. [1, 2]

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

128.10.2.30 – традиционная десятичная форма записи IP-адреса,

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

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

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

  • Если адрес начинается с 0, то сеть относят к классу A, и номер сети занимает один байт, остальные 3 байта интерпретируются как номер узла в сети. Сети класса A имеют номера в диапазоне от 1 до 126. Формально номера сетей 0 и 127 принадлежат к сети класса A, но на практике номер 0 имеет специальное употребление (для указания маршрута по умолчанию), а номер 127 зарезервирован для специальных целей, о чем будет сказано ниже.

  • Если первые два бита адреса равны 10, то сеть относится к классу B. В сетях класса B под адрес сети и под адрес узла отводится по 16 битов, то есть по 2 байта.

  • Если адрес начинается с последовательности 110, то это сеть класса C. Под адрес сети отводится 24 бита, а под адрес узла – 8 битов.

  • Если адрес начинается с последовательности 1110, то он является адресом класса D и обозначает особый, групповой адрес – multicast. Если в пакете в качестве адреса назначения указан адрес класса D, то такой пакет должны получить все узлы, которые подписались на групповую рассылку по данному адресу.

  • Если адрес начинается с последовательности 11110, то это адрес класса E, он зарезервирован для будущих применений.

Вычислить максимальное число адресов по длине идентификатора можно по формуле, где x — длина идентификатора в битах. Исходный стандарт IP-адресации запрещает использование адресов сети и хоста, состоящих только из нулей или единиц, поэтому из вычитается 2. [5, 9]

Ниже приведена таблица, отображающая изложенные выше утверждения.

Класс

A

 

C

Значение первых битов (двоичное)

0

10

110

Значение первого байта (десятичное)

1-127

128-191

192-223

Длина идентификатора сети, бит

8

16

24

Длина идентификатора хоста, бит

24

16

8

Максимальное число сетей

126

16384

2097152

Максимальное число хостов

16777214

65534

254

Маска подсети

255.0.0.0

255.255.0.0

255.255.255.0

В сетях класса A, B и C адрес начального диапазона внутри сети (т.е. для сети класса B 150.14.0.0 начальным адресом будет 150.14.0.0) называется адресом сети и используется для указания направления маршрутизации пакетов. [2, 4]

В сетях класса A, B и C адрес конечного диапазона внутри сети (т.е. для сети класса B 150.14.0.0 конечный адрес равен 150.14.255.255) имеет специальное назначение и называется «широковещательный» (broadcast) адрес. Данные, отправленные на этот адрес, дойдут до всех компьютеров, имеющих адреса внутри указанной сети (т.е. сеть 150.14.0.0).

Сеть 127.0.0.0 используется для работы IP-протокола внутри самого компьютера, назначается специальному локальному интерфейсу (т.н. loopback) и позволяет обеспечить функционирование сетевых приложений на компьютере даже без сетевой карты. [10]

В каждом из классов A, B и C выделяют диапазон адресов для нужд локальной сети. Администраторы сети вольны распоряжаться назначением этих адресов компьютерам своей сети.

  • в сети класса A зарезервирована сеть 10.х.х.х

  • в сети класса B зарезервирован диапазон сетей от 172.16.х.х до 172.31.х.х

  • в сети класса C зарезервирован диапазон сетей от 192.168.0.х до 192.168.255.х

Пример 1.

По данному IP-адресу определить, к сети какого класса он принадлежит, получить IP-адрес сети, маску сети и IP-адрес широковещательной рассылки в данной сети:

181.64.49.214

181=

Так как первые два бита адреса равны 10, то сеть относится к классу B.

Адрес класса В.

В сетях класса B под адрес сети отводится 16 битов, то есть 2 байта.

Следовательно, адрес сети 181.64.0.0

Маска сети 255.255.0.0

Адрес широковещательной рассылки 181.64.255.255

1.2. Бесклассовая адресация

Первоначальная схема разбиения на классы сетей с течением времени показала свою практическую непригодность. Это было обусловлено тем, что для некоторых организаций сеть класса C (т.е. фактически 255 адресов) была слишком большой, и реально из нее им требовалось всего лишь 4-10 адресов, а для других сеть класса C была маленькой, но сеть класса B – слишком большой (так как там было уже 65535 адресов). Поэтому стали использовать так называемую бесклассовую адресацию (Classless InterDomain Routing – CIDR). [1, 2, 5]

Было введено понятие длины маски сети, которая определяла количество бит в IP-адресе, отведенных под адрес сети, и, соответственно, число равное (32 – «длина маски») определяло число бит, отведенное под количество компьютеров, которое можно в этой сети использовать. Бесклассовая адресация явилась обобщением классовой адресации сетей.

Маска сети – это битовая маска, которая в двоичном коде представима как последовательность 1 от старшего разряда в количестве, равном длине маски сети, и далее 0 до общей длины последовательности 32 бит. [6]

Чтобы получить адрес сети, нам необходимо выполнить операцию логического И между IP-адресом и маской сети.

Чтобы получить адрес широковещательной рассылки, необходимо выполнить операцию логического ИЛИ между IP-адресом и инверсией маски сети.

Количество узлов (хостов) высчитывается по формуле , где x — количество нулевых битов в маске подсети.

Пример 2.

Используйте IP-адрес и соответствующую длину маски сети, чтобы получить IP-адрес сети, маску сети и IP-адрес широковещательной рассылки в данной сети.

181.64.49.214/19

Сначала необходимо получить маску сети в явном виде:

/19 — это 19 единичных бит от 31 бита направо

или в десятичном виде 255.255.224.0

Число компьютеров в такой сети:

Так как результат логического И/ИЛИ байтового значения с 0 и 255 очевиден, то нам необходимо получить представление в двоичном виде лишь байта 49 нашего IP-адреса.

Чтобы получить адрес сети, нам необходимо выполнить операцию логического И между IP-адресом и маской сети:

181.64. .214 И 255.255..0----------------------------- 181.64. .0 = 181.64.32.0 — адрес сети

Чтобы получить адрес широковещательной рассылки, необходимо выполнить операцию логического ИЛИ между IP-адресом и инверсией маски сети.

Получим инверсию маски сети:

или в десятичном виде 0.0.31.255

Тогда:

181.64..214 ИЛИ 0.0..255 --------------------------181.64..255 = 181.64.63.255 – адрес широковещательной рассылки.

2. Руководство программиста 2.1. Общая информация

Программа анализа и расчета IP-адресов «IPv4 Subnetting Calculator» создана в среде разработки Visual Studio на языке программирования C++. Реализована данная программа в качестве консольного приложения.

2.2. Модули программы

Программный код консольного приложения IPv4 Subnetting Calculator можно условно разделить на несколько логических структур (программных модулей):

  1. подключение используемых в программе стандартных библиотекC++.

  2. получение IP-адреса, введенного пользователем. В данной структуре реализован процесс получения октетов введенного IP-адреса, а также осуществляется их проверка (количество октетов IP-адреса – 4, а десятичное значение каждого октета IP-адреса должно находиться в промежутке от 0 до 255). В случае, когда какое-либо из условий проверки не выполняется, на экран выводится сообщение об ошибке. Работа данного программного модуля базируется на использовании векторов, операторов цикла, методов getline (осуществляет чтение потока до любого специального символа), push_back (добавляет новый элемент в конец вектора), atoi (преобразует строку, адресуемую параметром str, в значение типа int). Проверка корректности октетов введенного IP-адреса достигается путем использования метода size (определяет количество элементов в векторе, в контексте данного программного кода осуществляет проверку количества октетов - 4) и операторов сравнения (указывают условия для каждого из октетов >= 0, = 0 && octetsIP[i]

Просмотров работы: 1257