Протокол Ethernet
MAC Ethernet
Использование MAC-адресов является одним из наиболее важных аспектов технологии локальной сети Ethernet. MAC-адреса используют шестнадцатеричную систему счисления.
Шестнадцатеричный — это слово, которое используется и как существительное, и как прилагательное. При использовании отдельно (как существительное) оно означает шестнадцатеричную систему счисления. Шестнадцатеричная система счисления обеспечивает удобный способ для представления двоичных значений. Подобно тому, как десятичный формат является системой счисления с основанием 10, а двоичный — с основанием 2, шестнадцатеричный формат представляет собой систему счисления с основанием 16.
В системе счисления с основанием 16 используются цифры от 0 до 9 и буквы от A до F. На рис. 1 показаны соответствующие десятичные и шестнадцатеричные значения для двоичного кода 0000—1111. Нам проще представить значение в виде одной шестнадцатеричной цифры, чем в виде четырёх двоичных битов.
Если 8 бит (байт) — это общепринятая бинарная группа, двоичный код 00000000—11111111 может быть представлен в шестнадцатеричной системе исчисления в качестве диапазона 00–FF. Чтобы заполнить 8-битное представление, всегда отображаются ведущие нули. Например, двоичное значение 0000 1010 показано в шестнадцатеричной системе как 0A.
Примечание. Важно отличать шестнадцатеричные значения от десятичных относительно символов от 0 до 9, как показано на рис. 1.
Представление шестнадцатеричных значений
Шестнадцатеричное значение обычно представлено в тексте значением, которое располагается после 0x (например, 0x73) или подстрочного индекса 16. В остальных, более редких случаях, за ним может располагаться H (например, 73H). Однако, поскольку подстрочный текст не распознаётся в командной строке или средах программирования, перед техническим представлением шестнадцатеричных значений стоит «0x» (нулевой Х). Так, приведённые выше примеры будут отображаться как 0x0A и 0x73 соответственно.
Шестнадцатеричная система счисления используется для представления MAC-адресов Ethernet и IP-адресов версии 6.
Числовые преобразования между десятичными и шестнадцатеричными значениями не вызывают затруднений, однако быстрое деление или умножение на 16 не всегда удобно. При необходимости такого преобразования обычно проще преобразовать десятичное или шестнадцатеричное значение в двоичное, а затем преобразовать двоичное значение либо в десятичное, либо шестнадцатеричное, по мере необходимости.
Обладая определённым опытом, можно распознать шаблоны двоичных разрядов, совпадающих с десятичными и шестнадцатеричными значениями. На рис. 2 такие шаблоны показаны для выбранных 8-битных значений.
Артём Санников
Академия Cisco
MAC-адрес и шестнадцатеричная система счисления. CCNA Routing and Switching.
MAC-адрес Ethernet — это 48-битное двоичное значение, выраженное в виде 12 шестнадцатеричных чисел (4 бита для каждой шестнадцатеричной цифры).
Аналогично тому, как десятичный формат является системой счисления по основанию 10, шестнадцатеричный формат представляет собой систему счисления по основанию 16. В шестнадцатеричной системе используются числа от 0 до 9, а также буквы от A до Е. На рисунке 1 показаны десятичные и шестнадцатеричные эквиваленты для двоичных значений от 0000 до 1111. Проще представить значение в виде одной шестнадцатеричной цифры, чем в виде четырех двоичных разрядов.
Если 8 бит (1 байт) — это общепринятая бинарная группа, то двоичный код 00000000–11111111 может быть представлен в шестнадцатеричной системе счисления как диапазон 00–FF, как показано на рисунке 2. Чтобы заполнить 8-битное представление, всегда отображаются ведущие нули. Например, двоичное значение 0000 1010 показано в шестнадцатеричной системе как 0A.
Примечание: Важно отличать шестнадцатеричные значения от десятичных (в части символов от 0 до 9), как показано на рисунке.
Представление шестнадцатеричных значений
Шестнадцатеричное значение обычно представлено в тексте значением, которое располагается после 0x (например, 0x73) или подстрочного индекса 16. В остальных, более редких случаях, за ним может располагаться H (например, 73H). Однако, поскольку подстрочный текст не распознается в командной строке или средах программирования, перед техническим представлением шестнадцатеричных значений стоит «0x» (нулевой Х). Так, приведенные выше примеры будут отображаться как 0x0A и 0x73 соответственно.
Шестнадцатеричная система счисления используется для представления MAC-адресов Ethernet и IP-адресов версии 6.
Шестнадцатеричные преобразования
Числовые преобразования между десятичными и шестнадцатеричными значениями не вызывают затруднений, однако быстрое деление или умножение на 16 не всегда удобно. При необходимости такого преобразования обычно проще преобразовать десятичное или шестнадцатеричное значение в двоичное, а затем преобразовать двоичное значение соответственно либо в десятичное, либо в шестнадцатеричное.
Преобразование шестнадцатеричных значений в десятичные и двоичные
В сетевой вселенной мы используем двоичные, десятичные и шестнадцатеричные величины. Два хороших примера, где мы используем шестнадцатеричные числа — это MAC-адреса и адреса IPv6-адреса.
Особенно для IPv6-адресов полезно понять, как вы можете преобразовывать из шестнадцатеричного в двоичный и десятичный формат или наоборот.
В десятичной системе мы считаем от 0-10, в шестнадцатеричной системе — от 0 до F. Вот пример:
Двоичная система | Шестнадцатеричная система |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
Это несложно, верно? Теперь, если вы хотите перейти из двоичного кода в шестнадцатеричный, вам нужно освоить трюк. Допустим, у вас есть десятичное число 255 в двоичном формате:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Если вы хотите преобразовать это в шестнадцатеричное число, вам нужно взять 8 бит в двух частях по 4 бита (4 бита также известны как полубайт).
Теперь переведите эти части из двоичного в десятичный формат:
Обе части выглядят одинаково: 8 + 4 + 2 + 1 = 15
Теперь взгляните на десятичную-шестнадцатеричную табличку преобразования в начале статьи, и вы увидите, что 15 в десятичной форме равно «F» в шестнадцатеричном формате.
Итак, шестнадцатеричное значение = FF. Обычно вы видите шестнадцатеричные значения, записанные как 0xFF. Если вы видите «0x», то знаете, что это шестнадцатеричное значение.
Попробуем другое десятичное значение и преобразуем его в шестнадцатеричный вид, например 118. Сначала мы преобразуем 118 в двоичный вид:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
64 + 32 + 16 + 4 + 2 = 118
Мы разделим наши 8 бит на две части, вот что мы получаем:
Теперь давайте преобразуем эти полубайты из двоичного в десятичный формат:
Первый полубайт будет равен 4 + 2 + 1 = 7. Десятичное значение 7 равно шестнадцатеричному.
Второй полубайт будет равен 4 + 2 = 6. Десятичное значение 6 равно шестнадцатеричному.
Наше шестнадцатеричное значение будет равно 0x76. Попробуем еще раз!
Предположим, что мы имеем десятичное значение 206. В двоичном виде это выглядит так:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
128 + 64 + 8 + 4 + 2 = 206.
Мы разделим наши 8 бит на две части, и вот что мы получаем:
Теперь давайте преобразуем эти полубайты из двоичного в десятичный:
Первый полубайт будет 8 + 4 = 12. Десятичное значение 12 равняется «C» в шестнадцатеричном виде.
Второй полубайт будет 8 + 4 + 2 = 14. Десятичное значение 14 равно «E» в шестнадцатеричном виде.
Наше шестнадцатеричное значение будет равно 0xCE.
Надеемся, что эти примеры были полезны для вас.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.