По этим причинам приходится идти на всякие сложности. Для локальных сетей, подсоединенных к глобальной сети, действует специальный механизм NAT (Network Address Translation, преобразование сетевых адресов), когда маршрутизирующее устройство извне адресуется присвоенным ей адресом из сети провайдера. Имеется в виду, что этот адрес назначает провайдер, причем обычно точно так же динамически (автоматически), и пользователю об этом задумываться не приходится. Внутри же локальной сети IP-адреса (в том числе и самого маршрутизатора) присваиваются из предопределенных диапазонов адресов, которые в глобальной сети не встречаются. Механизм NAT, встроенный в маршрутизатор, и преобразует локальный адрес в адрес внешней сети. Особенностью этого механизма является то, что все компьютеры такой локальной сети извне выглядят как один-единственный IP-адрес. Для того чтобы их можно было различать, придется присоединить вашу сеть напрямую к провайдерской сети без всяких NAT, и тогда распределением адресов вы уже заниматься не сможете – эта обязанность будет возложена на маршрутизатор провайдера. Естественно, на практике так почти никто не поступает, потому что это неудобно и хлопотно всем сторонам (исключение – если у вас дома размещен собственный стационарный веб-сервер и, соответственно, заключен отдельный договор с провайдером).
Для присвоения IP-адресов в локальной сети стандартами RFC 1918 и RFC 1597 отведено три их диапазона, каждый из которых подразумевает сеть определенного масштаба:
♦ 10.0.0.0 – 10.255.255.255 (сети класса A);
♦ 172.16.0.0 – 172.31.255.255 (сети класса B);
♦ 192.168.0.0 – 192.168.255.255 (сети класса C).
Такие адреса называют частными, внутренними, локальными или «серыми» (напомним, что эти адреса не употребляются в сети Интернет). Класс A – огромные сети, которые могут содержать до 2 24(16777216) адресов, класс B – до 2 16(65536) адресов, класс С – маленькие сети, содержащие 256 адресов. Различных частных сетей класса С может быть 255 (в соответствии со вторым справа элементом адреса), сетей класса B – всего 16 (второй слева элемент, который может изменяться от 16 до 31) и сетей класса А – всего одна. Разумеется, сетей с одинаковыми диапазонами адресов, скрытых от внешнего мира за NAT, в разных местах может быть сколько угодно много.
Самый первый в локальной сети номер с нулевым адресом (например, для сети класса С – 192.168.1.0) будет номером самой сети, следующий (192.168.1.1) – обычно представляет маршрутизатор, если он имеется. Последний адрес (192.168.1.255) называется широковещательным – отправленный на него пакет будет доставлен всем узлам в сети (см. далее подробности функционирования протокола UDP). Потому максимальное число устройств в подсети может быть меньше, чем теоретически возможное число адресов.
Не следует считать, что количество адресов и, соответственно, масштаб сети может устанавливаться произвольно. Например, в адресе 192.168.1.1 оборудование само определит первые три элемента, как адрес сети, а лишь последний – как адрес устройства. Для особо любознательных скажем, что это делается по самым первым битам адреса (для класса A адрес в двоичной форме начинается с 0, для класса B – с 10, для класса С – со 110).
Но масштаб сети устанавливать все-таки приходится – вдруг вы хотите зачем-то использовать разрешенный диапазон лишь частично (и правда – кому может понадобиться единая локальная сеть, содержащая 16777216 узлов?). Какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети, задается с помощью специальной битовой маски (маски подсети, или просто маски сети). Для представления маски используется та же форма, что и для самого IP-адреса, причем в позициях номера сети в двоичном представлении этой формы должны стоять логические единицы, а в позициях, представляющих возможные номера устройств, – нули. Все логические единицы во всех двоичных разрядах содержат число 255, все логические нули – число 0. Потому маска для сети класса С обычно выглядит, как, например, 255.255.255.0. Применение к полученному откуда-то адресу и маске операции «логического И» даст нам адрес сети, из которой поступил сигнал:
IP-адрес: 11000000 10101000 00000001 00000010 (192.168.1.2)
Маска подсети: 11111111 11111111 11111111 00000000 (255.255.255.0)
Адрес сети: 11000000 10101000 00000001 00000000 (192.168.1.0)
Теперь, если мы захотим просканировать локальную сеть (подобно тому, как это делает описываемая далее программа MyLanViewer), нам достаточно узнать адрес того устройства, на котором мы находимся, а дальше просто перебрать все адреса в соответствии с заданной маской. Например, для случая, показанного ранее, это будут адреса 192.168.1.1 – 192.168.255.254.
Читать дальше
Конец ознакомительного отрывка
Купить книгу