PascalАВС.NЕТ: калькулятор сетей TCP/IP в библиотеке School
Назначение и основные возможности
Калькулятор сетей доступен в PascalАВС.NЕТ версии не ниже 3.9.0.3360 от 21.09.2023. Он дает возможность в наглядном виде получить основную информацию о подсетях TCP/IP, задав адрес сети и маску подсети.
Реализация
Калькулятор реализован на базе двух классов.
Класс с именем Addr32 позволяет создавать объекты, моделирующие 32-битные сетевые адреса IPv4 и маски. Пользователю доступны три свойства адреса: value
(десятичный адрес в формате с октетами, например, 15.218.42.12), value2
(адрес в виде беззнакового двоичного числа длиной 32 бита) и value10
(адрес, переведенный из двоичной системы счисления в десятичную). Для объектов этого класса перегружены побитовые логические операции and
, or
, not
, а также операция +
для сложения адреса с целочисленным значением (инкремент). Это дает простоту и удобство при работе с масками.
Другой класс с именем CalcIP - это сам калькулятор на основе заданного сетевого адреса и маски. Маску можно задавать в формате десятичного адреса, префикса или непосредственно в виде 32-битной строки. У калькулятора девять свойств и их имена перечислены в круглых скобках на приведенном выше рисунке. Свойство Bitmask
имеет тип byte
, свойство Hosts
- тип integer
, а остальные семь являются объектами класса Addr32. Таким образом, если создать калькулятор с именем MyCalc, двоичный адрес первого хоста в коде программы будет доступен под именем MyCalc.Hostmin.value2
.
Что еще можно получить с помощью калькулятора
Создав объект класса Addr32 на основе того или иного формата адреса, можно получить отображение этого адреса. Перегруженный метод .ToString позволяет сформировать строку, содержащую адрес в удобном для восприятия виде. Например, оператор Print(new Addr32('34.118.53.125'));
выведет:34.118.53.125, 00100010.01110110.00110101.01111101
Метод калькулятора GenAddr - генератор адресов хостов. Он возвращает последовательность адресов в виде объектов класса Addr32.
Еще один генератор, GenAddrBin, возвращает последовательность двоичных 32-битных адресов - это удобно для операций с битовой маской. Поскольку 32-битное отображение - это строка, применение к нему регулярных выражений открывает широчайшие возможности.
Примеры использования калькулятора
1. Вот так можно получить сетевую информацию, задав ip-адрес и маску.
2. Решение варианта задания 13 с сайта К. Полякова.
(№ 6842) (К. Багдасарян) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 158.132.161.128 и маской сети 255.255.255.128.
Сколько в этой сети IP-адресов, которые в двоичной записи IP-адреса оканчиваются единицей?
В ответе укажите только число.
## uses School; var x := new CalcIP('58.132.161.128', '255.255.255.128'); x.GenAddrBin.Count(addr -> addr[^1] = '1').Println; // 64
Что дальше?
Следующий материал на эту тему будет посвящен деталям работы с калькулятором сетей TCP/IP.