Перевод айпи адреса в двоичную систему

Перевод айпи адреса в двоичную систему

Побитовые операторы в JavaScript работают с 32-битными целыми числами в их двоичном представлении.

Это представление называется «32-битное целое со знаком, старшим битом слева и дополнением до двойки».

Разберём, как устроены числа внутри подробнее, это необходимо знать для битовых операций с ними.

    Что такое двоичная система счисления, вам, надеюсь, уже известно. При разборе побитовых операций мы будем обсуждать именно двоичное представление чисел, из 32 бит.

Разделить 32-битное число на 2 16-битных — C (СИ)

Примеры представления чисел в двоичной системе:

a = 0; // 00000000000000000000000000000000
a = 1; // 00000000000000000000000000000001
a = 2; // 00000000000000000000000000000010
a = 3; // 00000000000000000000000000000011
a = 255;// 00000000000000000000000011111111

Обратите внимание, каждое число состоит ровно из 32-битов.

Несмотря на то, что нам такой способ записи чисел кажется совсем обычным, бывают языки и технологии, использующие способ записи «младший бит слева», когда биты пишутся наоборот, от меньшего разряда к большему.

Именно поэтому спецификация EcmaScript явно говорит «старший бит слева».

  • Дополнение до двойки — это название способа поддержки отрицательных чисел.

Двоичный вид числа, обратного данному (например,5и-5) получается путём обращения всех битов с прибавлением 1.

То есть, нули заменяются на единицы, единицы — на нули и к числу прибавляется 1. Получается внутреннее представление того же числа, но со знаком минус.

Например, вот число 314:

Чтобы получить -314, первый шаг — обратить биты числа: заменить 0 на 1, а 1 на 0:

Второй шаг — к полученному двоичному числу приплюсовать единицу, обычным двоичным сложением: 11111111111111111111111011000101 + 1 = 11111111111111111111111011000110.

-314 = 11111111111111111111111011000110

Принцип дополнения до двойки делит все двоичные представления на два множества: если крайний-левый бит равен 0 — число положительное, если 1 — число отрицательное. Поэтому этот бит называется знаковым битом.

IP-адрес, что это такое?

Поговорим-ка мы об IP-адресах и о том как они образуются. А если быть точнее, то обсудим мы сегодня интернет протокол 4-ой версии(IPv4). Новая версия данного протокола носит имя IPv6, его обсудим чуть позже.

IP-адрес(Internet Protocol Address) — это уникальный сетевой адрес компьютера либо другого сетевого оборудования в компьютерной сети. Каждый дом или здание имеет свой адрес, который идентифицирует его. И нет двух зданий с одинаковым адресом. Так же и в компьютерной сети. У каждого компьютера или сетевого оборудования(роутеры, телефоны, сетевые принтеры) должен быть свой уникальный адрес. Ведь именно по этому адресу и приходит информация из сети. В этом то и состоит работа Internet Protocol`а: он должен выдать уникальный адрес устройству, должен обеспечивать сортировку и доставку пакетов. В каждый входящий и исходящий IPv4-пакет включены IPv4-адрес отправителя и получателя. Протокол IPv4 обеспечивает маршрутизацию этих пакетов от отправителя до получателя.

Как выглядит IP-адрес?

Каждый из нас знает как выглядит адрес дома. А как же выглядит IP-адрес компьютера? Приблизительно вот так:

Те, которые хоть раз видели ip-адрес, а видели наверное многие, скажут, что я что-то путаю. И добавят, что ip-адрес выглядит вроде этого:

На что я отвечу, то что ip-адрес выглядит вот так:

Так где же правда? Да везде! Все эти числа обозначают один и тот же ip-адрес. Самый ходовой его записью является первый. Почему? Да потому что это двоичное число и соответственно в таком виде его видят машины! Дальше идет вторая запись. Это запись уже для нас — для людей!

Побитовые операторы

Третья запись представляет адрес в десятичной форме, а четвертая — в шестнадцатеричной. 3 и 4 записи, в основном, используются только в учебниках.

Как образуется IP-адрес?

Рассмотрим первую и вторую запись. Первая запись — это число, состоящее только из двух цифр: 1 и 0. Все возможные его комбинации равны 2 в 32 степени(так как в числе 32 разряда). Отсюда следует, то что и ip-адресов может быть только 2 в 32 степени, а это 4 294 967 296 уникальных адресов. А людей уже больше 7 млрд! Именно поэтому и увидела свет новая версия интернет протокола. Но о ней будет немного позже.

Вторая запись формируется таким образом: ip-адрес в двоичном формате, делится на 4 части(октета):

00001010 00010000 00001010 10001111

Таким образом, образуются 4 числа по 8 цифр. После чего каждую часть переводят в десятичную систему счисления и получают:

Я не хочу освещать процесс перевода двоичного числа в десятичный.

Для этого можете использовать Калькулятор.

Как узнать свой IP-адрес?

Узнать какой у Вас IP-адрес не составляет труда. Для этого Вам нужно открыть командную строку и ввести в окно команду ipconfig. Там Вы сможете не только узнать свой IP-адрес, но и другую связанную информацию. Так же, Вы можете проверить свой IP-адрес на специальных сайтах, таких как 2ip.ru. И кстати, IP-адреса указанные в командной строке и на сайте могут отличаться друг от друга. Это объясняется наличие частных IP-адресов.

Двоичное преобразование адресов TCP/IP

В двоичной системе исчисления используется только две цифры: 0 и 1. Так как это система исчисления с основанием, равным 2, то каждая позиция в двоичной последовательности представляет степень двойки. Если связать это со стандартной десятичной системой исчисления, которая используется каждый день, то можно понять, что все не так плохо.

Возьмем число 201. При рассмотрении этого трехзначного числа можно заметить, что в нем присутствует разряд единиц, разряд десятков и разряд сотен. Поэтому число 201 равно 1х1+0х10+2х100. Цифра в каждом разряде умножается на степень 10 с показателем, соответствующим положению разряда. Так как двоичная система исчисления имеет основание 2, цифра каждого разряда умножается на степень двойки, соответствующую положению разряда.

Для преобразования десятичных чисел в двоичное представление, можно просто начать с единицы и продолжить удвоение числа, пока не будет достигнуто значение 128. После этого необходимо использовать последовательность нумерации из приведенной таблицы преобразования.

Теперь посмотрим, как адрес IP 10.8.32.6 преобразовывается в двоичную форму.

Использование простой таблицы для преобразования двоичных чисел

Столбцы двоичных разрядов (по основанию 2)

Вот пример техники для преобразования десятичного числа в двоичное представление.

1. Найдите наибольшее число в таблице преобразования, которое меньше или равно числу, преобразование которого необходимо выполнить (128, 64, 32, 8 и т.д.) и укажите 1 в его столбце.

2. Отнимите число из выбранной колонки от числа, преобразование которого выполняется.

3. Найдите наибольшее число в таблице преобразования, которое меньше или равно числу, оставшемуся после первого шага, и поместите 1 в столбец этого числа.

4. Отнимите число из выбранного столбца от числа, которое осталось на шаге 2.

Целое (тип данных)

Повторите шаги 3 и 4, пока разность не станет равна 0; после этого поместите 0 во все столбцы, которые не содержат 1. Вот это и будет наше двоичное число!

Для преобразования числа 10 необходимо найти в таблице самое большое число, не превышающее 10. Это будет 8, поэтому в столбец числа 8 необходимо поместить 1. После этого необходимо отнять 8 от 10. В результате получится число 2. В столбце, соответствующем числу 2, необходимо разместить 1. Результатом последней разности будет 2, поэтому для завершения преобразования во все остальные столбцы необходимо поместить 0.

Использование этой таблицы для преобразования двоичного числа в десятичное еще проще, чем преобразование десятичного числа в двоичное. Просто запишите 8-разрядное число в таблице, указывая каждый разряд в одном столбце таблицы. После этого сложите значения столбцов таблицы, которые содержат 1. Например, двоичное число 10100001 будет равно 128+32+1 или 161.

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

10.08. Раздел Локальная сеть

Теперь, когда мы знаем, что такое IP-адрес, маска подсети, идентификаторы сети и узла, полезно запомнить правила, которые следует применять при назначении этих параметров:

1. идентификатор сети не может содержать только двоичные нули или только единицы. Например, адрес 0.0.0.0 не может являться идентификатором сети;

2. идентификатор узла также не может содержать только двоичные нули или только единицы – такие адреса зарезервированы для специальных целей:

· все нули в идентификаторе узла означают, что этот адрес является адресом сети. Например, 192.168.5.0 является правильным адресом сети при использовании маски 255.255.255.0 и его нельзя использовать для адресации компьютеров,

· все единицы в идентификаторе узла означают, что этот адрес является адресом широковещания для данной сети. Например, 192.168.5.255 является адресом широковещания в сети 192.168.5.0 при использовании маски 255.255.255.0 и его нельзя использовать для адресации компьютеров;

3. идентификатор узла в пределах одной и той же подсети должен быть уникальным;

4. диапазон адресов от 127.0.0.1 до 127.255.255.254 нельзя использовать в качестве IP-адресов компьютеров. Вся сеть 127.0.0.0 по маске 255.0.0.0 зарезервирована под так называемый «адрес заглушки» (loopback), используемый в IP для обращения компьютера к самому себе.

Это легко проверить: достаточно на любом компьютере с установленным протоколом TCP/IP выполнить команду

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

Классовая и бесклассовая IP-адресация

Первоначальная система IP-адресации в Интернете выглядела следующим образом. Все пространство возможных IP-адресов (а это более четырех миллиардов, точнее 4 294 967 296 адресов) было разбито на пять классов, причем принадлежность IP-адреса к определенному классу определялась по нескольким битам первого октета (табл. 8.2).

Целое (тип данных)

Заметим, что для адресации сетей и узлов использовались только классы A, B и C. Кроме того, для этих сетей были определены фиксированные маски подсети по умолчанию, равные, соответственно, 255.0.0.0, 255.255.0.0 и 255.255.255.0, которые не только жестко определяли диапазон возможных IP-адресов узлов в таких сетях, но и механизм маршрутизации.

Чтобы рассчитать максимально возможное количе-ство узлов в любой IP-сети, достаточно знать, сколько битов содержится в идентификаторе узла, или, иначе, сколько нулей имеется в маске подсети. Это число используется в качестве показателя степени двойки, а затем из результата вычитается два зарезервированных адреса (сети и широковещания). Аналогичным способом легко вычислить и возможное количество сетей классов A, B или C, если учесть, что первые биты в октете уже зарезервированы, а в классе A нельзя использовать IP-адреса 0.0.0.0 и 127.0.0.0 для адресации сети.

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

Первоначально данная схема хорошо работала, поскольку количество сетей было небольшим. Однако с развитием Интернета такой подход к распределению IP-адресов стал вызывать проблемы, особенно острые для сетей класса B. Действительно, организациям, в которых число компьютеров не превышало нескольких сотен (скажем, 500), приходилось регистрировать для себя целую сеть класса B. Поэтому количество доступных сетей класса B стало на глазах «таять», но при этом громадные диапазоны IP-адресов (в нашем примере – более 65000) пропадали зря.

Чтобы решить проблему, была разработана бесклассовая схема IP-адресации (Classless InterDomain Routing, CIDR), в которой не только отсутствует привязка IP-адреса к классу сети и маске подсети по умолчанию, но и допускается применение так называемых масок подсети с переменной длиной (Variable Length Subnet Mask, VLSM). Например, если при выделении сети для вышеуказанной организации с 500 компьютерами вместо фиксированной маски 255.255.0.0 использовать маску 255.255.254.0,то получившегося диапазона из 512 возможных IP-адресов будет вполне достаточно.

Оставшиеся 65 тысяч адресов можно зарезервировать на будущее или раздать другим желающим подключиться к Интернету.

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

Дата добавления: 2014-11-25; Просмотров: 1686; Нарушение авторских прав?;

Источник

ЕГЭ по информатике. Задание 12

Задание 12 — «Сетевые адреса» — характеризуется, как задания базового уровня сложности. За это задание можно получить 1 балл . На решение дается около 2 минут . В среднем это задание выполняет 60% учащихся.

IP-адрес компьютера имеет длину 4 байта. IP-адрес записывают в виде четырех чисел, разделенных точками. Числа принимают значения от 0 до 255 (255 = 11111111 в двоичной системе – наибольшее число, которое можно записать в один байт).

IP-адрес состоит из двух частей: адреса сети и номера компьютера в этой сети. Для деления адреса на части используют маску. Маска – это 32-битное число, в двоичной записи которого сначала стоят единицы, а потом – нули . Единицы определяют часть адреса, относящуюся к адресу сети, а нули – часть адреса, относящуюся к номеру компьютера в сети.

В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.

Для узла с IP-адресом 111.81.208.27 адрес сети равен 111.81.192.0. Чему равно наименьшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.

Во-первых, нас интересует только третий байт маски, поэтому запишем третий байт IP-адреса и адреса сети в двоичной системе счисления:

Теперь надо определить, с каким числом нужно произвести поразрядную конъюнкцию 11010000 , чтобы получить 11000000? Напомню, что при конъюнкции (логическом умножении) 1*1 = 1, 1*0 = 0, 0*1 = 0, 0*0 = 0.

Очевидно, что первые две цифры в маске должны быть единицами, а 4-я нулем. И помним, что в маске сначала идут все единицы, затем все нули.

Это или 11000000 , или 11100000 . По условию задачи требуется найти наименьшее значение – это 11000000.

В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

Пример. Если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.

Для узла с IP-адресом 38.97.21.61 адрес сети равен 38.96.0.0. Укажите наибольшее общее количество единиц в двоичной записи байтов маски. Ответ запишите в виде десятичного числа.

IP адрес и адрес сети имеют расхождение во втором байте. Переведем второй байт в двоичную систему:
97 = 01100001

Определим, с каким числом нужно произвести поразрядную конъюнкцию 01100001 , чтобы получить 01100000? Напомню, что при конъюнкции (логическом умножении) 1*1 = 1, 1*0 = 0, 0*1 = 0, 0*0 = 0.

Очевидно, что потому как нас интересует наибольшее количество единиц, то все цифры в маске должны быть единицами, а последняя — нулем. К тому же, помним, что в маске сначала идут все единицы, затем все нули.

Первый байт маски состоит из восьми единиц 11111111, а третий и четвертый — из восьми нулей 00000000, поэтому наибольшее возможное количество единиц во всех четырёх байтах маски равно 8 + 7 + 0 + 0 = 15.

Рассмотрим еще пример (такие задачи в ЕГЭ встречаются реже):

В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

Пример. Если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.

Сколько различных хостов допускает маска сети 255.255.254.0?

Маска сети определяет, какая часть IP-адреса является адресом сети, а какая — номером хоста. На месте единиц маски в IP-адресе записан адрес сети, а на месте нулей — номер хоста.

Переведём каждый байт маски в двоичную систему счисления:

В двоичной записи имеем девять нулей, значит в IP-адресе хост выделено девять разрядов.

Каждый разряд числа в двоичной системе счисления может принимать значение 0 или 1. Таким образом, количество хостов для этой маски равно 2*2*2*2*2*2*2*2*2 = 512.

Но номер хоста не может состоять из одних нулей или единиц, то есть вычитаем эти два случая.

Если остались вопросы, пишите в комментариях. Обязательно отвечу. Если нужно разобрать конкретный пример, также — в комментарии.

Еще больше интересного материала в группе в ВК и на сайте . Кроме этого, можете воспользоваться услугами репетитора .

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Научные работы на RJ-diplom.ru
Adblock
detector