Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Добро пожаловать в Кран-ресторан — казуальный симулятор, который превратит вас в настоящего мастера кулинарии! Управляйте краном, ловите нужные ингредиенты и готовьте блюда по рецептам, избегая ошибок, чтобы сохранить рейтинг и получить ценные награды.

Кран-Ресторан

Казуальные, Аркады, Шарики

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
50
ventricola
ventricola
8 лет назад
Лига Сисадминов

IP over Ethernet #2 Таблица маршрутизации для утюга и пылесоса⁠⁠

Предыдущая часть.


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


И здесь для дальнейшего движения в правильном направлении об этом самом IP нужно бы хоть немного рассказать.


Тут я начну не с истории, а с практики. Представьте обычную советскую семью поклонников продукции эплл, у них в квартире наверняка есть устройства, которые что-то передают по IP. Предлагаю рассмотреть пылесос, который по заполнению мусорника отправляет в облако эппл соответствующие фоточки голой хозяйки данные о необходимости почистить или заменить пакет, ну и периодически шлет сообщения о необходимости замены расходников на новые оригинальные. Ну или в крайнем случае утюг, утюг может быть был бы даже лучше, но пусть все-таки будет пылесос. Облако в свою очередь шлет что надо в АНБ хозяйке на айфон. Большая часть коммуникаций работает в IP сетях. А IP сети, прошу прощения за тавтологию, в свою очередь в ethernet сетях.


Что же делает пылесос, когда ему надо передать информацию?! (Предлагаю профантазировать о модели пылесоса с подключением к таймкапсулю по вайфаю).

IP over Ethernet #2 Таблица маршрутизации для утюга и пылесоса Интернет, Ethernet, Internet over Ethernet, IP, Римские цифры, Длиннопост

Предположим, что все автоматизировано, как положено в эппл и пылесос автоматически подключается к сети и получает настройки для сетевого подключения. Внутри пылесоса для функционирования передачи данных в облака при такой схеме должен быть предусмотрен какой-то компьютер-контроллер, который содержит программно-аппаратные средства для осуществления контроля параметров работы пылесоса, обработки данных и передаче данных куда нужно. Как минимум нам интересны сетевая карта вайфая (сетевой интерфейс) и операционная система с tcp/ip стеком.


В момент включения пылесос подключится к вайфай сети, запросит и получит настройки сетевого подключения, в числе которых скорее всего:

1. IP адрес

2. Маску сети

3. Шлюз по умолчанию

4. IP адреса ДНС серверов

IP over Ethernet #2 Таблица маршрутизации для утюга и пылесоса Интернет, Ethernet, Internet over Ethernet, IP, Римские цифры, Длиннопост

В L3 схеме сети это будет выглядеть так:

IP over Ethernet #2 Таблица маршрутизации для утюга и пылесоса Интернет, Ethernet, Internet over Ethernet, IP, Римские цифры, Длиннопост

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


Итак что же произошло при получении пылесосом настроек сети? Сетевой интерфейс пылесоса произвел автонастройку параметров, необходимых для полноценной передачи данных в соответствии с информацией, полученной от dhcp сервера таймкапсуля. Предположим он получил от домашнего маршрутизатора (таймкапсуля)

1. IP адрес - 192.168.0.100

2. Маску сети - 255.255.255.0

3. Шлюз по умолчанию - 192.168.0.1

4. IP адреса ДНС серверов - 192.168.0.1, 8.8.8.8

Итак зачем все это нужно.

IP адрес - идентификатор хоста в IP сети, уникальное в сети 32хбитное число, представляемое для удобства человека чаще всего как набор из 4х 8мибитных десятичных чисел (байтов или октетов). Октет это восьмиразрядное двоичное число, например 11111111. В большинстве случаев сейчас байт тоже восьмиразрядное двоичное число, поэтому в данном контексте они тождественны.

192.168.0.100 - 11000000101010000000000001100100 или 3232235620 (в десятичной системе), или 11000000.10101000.00000000.01100100 с разделением октетов точками.


Тут нужно опять сделать отступление. Представьте, что вам нужно перемножить 2 числа -

LXXVIII * CXI, для многих задача покажется невыполнимой, потому что я привел числа, записанные римскими цифрами, а данная система записи чисел - непозиционная.

В то врtмя как мы привыкли использовать арабские цифры и позиционную систему записи чисел с основанием в 10.


LXXVIII * CXI = 78 * 111 = 78*100+78*10+78*1 = 7800+780+78 = 7000+800+700+80+70+8 =

= 7000+1500+150+8=8658, ну или в столбик. Эти все итерации в примере возможны потому, что каждая цифра может обозначать разные числа, находясь в разных позициях, позиции определяют соответствующие степени основания системы счисления (для нас привычно степени 10ти - 10^0 - единицы, 10^1 - десятки, 10^2 -сотни и т.д.), а цифра в позиции определяет их количество. То есть 111 = 1 единица + 1 десятка + 1 сотня.


Эти же принципы используются в системах счисления с другим основанием (двоичной, восьмеричной, шестнадцатиричной), нас будет интересовать двоичная система.


В двоичной системе основание не 10, а 10, шутка, а нет, не шутка - основание 2 то есть в двоичной записи - 10, цифр соответственно не 10 (0-9), а 2 (0,1), переход в числа в следующую позицию осуществляется при исчерпании цифр в текущей позиции. То есть как в десятичной системе, пока можно увеличивать число изменяя цифру в позиции, количество позиций не изменяется. Например число будет одноразрядным, пока для единиц хватает цифр - 1, 2, 3, 4, 5, 6, 7, 8, 9, а вот цифры закончились, дальше для увеличения числа нужно изменять разряд. 10,11,12..99, опять закончились цифры уже в десятках, опять добавляем разряд, и следующее число - 100.


Еще раз в двоичной системе цифр только 2 (0,1), поэтому натуральный ряд чисел выглядит так - 1, 10, 11, 100, 101, 110, 111 и т. д. Его не трудно перевести на человеческий (десятичный), это соответственно 1, 2, 3, 4, 5, 6, 7.


Еще раз:

1-1

2-10

3-11 (почти 99)

4-100

5-101 (дальше как с 909)

6-110 (а тут как с 990)

7-111 (а это похоже на 999).


Теперь попробуем подвести это к IP адресам, то есть к их частям - октетам. Возьмем последние октеты наших устройств (таймкапсуль-маршрутизатор - 192.168.0.1, пылесос - 192.168.0.100), то есть 1 и 100, и переведем их в двоичную систему с сохранением количества цифр в октете.

1 - 00000001 (1)

100 - 01100100 (1100100)

Чтобы количество цифр сохранялось равным 8ми (это важно), в части чисел нужны лидирующие нули.


Далее нужно понять зачем все это. А все это для маршрутизации.


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


Посмотрим как выглядит такая таблица у пылесоса, после настройки сети.


После добавления IP адреса 192.168.0.100 и маски сети 255.255.255.0 к интерфейсу в таблицу маршрутизации добавилось 2 записи:

1. - 192.168.0.100 255.255.255.255 - локальный адрес

2. - 192.168.0.0 255.255.255.0 - сеть непосредственно подключена к интерфейсу


После добавления шлюза по умолчанию - 192.168.0.1 в таблицу маршрутизации добавилась 1 запись:

3. - 0.0.0.0 0.0.0.0 - через шлюз 192.168.0.1.


Итого, еще раз, в таблице маршрутизации пылесоса появилось 3 записи:

1. - 192.168.0.100 255.255.255.255 - локальный адрес

2. - 192.168.0.0 255.255.255.0 - сеть непосредственно подключена к интерфейсу

3. - 0.0.0.0 0.0.0.0 - через шлюз 192.168.0.1.


Записи обычно сортируются по возрастанию, так что при просмотре это будет выглядеть так:

0.0.0.0 0.0.0.0 - через шлюз 192.168.0.1.

192.168.0.0 255.255.255.0 - сеть непосредственно подключена к интерфейсу

192.168.0.100 255.255.255.255 - локальный адрес


Вот как это выглядит,например, в windows 7:

$ netstat -nr
===========================================================================
Список интерфейсов
14...6c 71 d9 84 cb 57 ......Atheros AR9485WB-EG Wireless Network Adapter
13...74 d0 2b b0 64 a7 ......Qualcomm Atheros AR8161/8165 PCI-E Gigabit Ethernet Controller (NDIS 6.20)
12...6c 71 d9 84 cb 56 ......Устройства Bluetooth (личной сети)
1...........................Software Loopback Interface 1
17...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP
27...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #2
16...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #3
15...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
===========================================================================
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес  Маска сети  Адрес шлюза  Интерфейс  Метрика
0.0.0.0  0.0.0.0  192.168.0.1  192.168.0.100  20
192.168.0.0  255.255.255.0  On-link  192.168.0.100  276
192.168.0.100  255.255.255.255  On-link  192.168.0.100  276
192.168.0.255  255.255.255.255  On-link  192.168.0.100  276
127.0.0.0  255.0.0.0  On-link  127.0.0.1  306
127.0.0.1  255.255.255.255  On-link  127.0.0.1  306
127.255.255.255  255.255.255.255  On-link  127.0.0.1  306
255.255.255.255  255.255.255.255  On-link  127.0.0.1  306


Здесь кроме тех маршрутов, что я перечислял выше, есть еще несколько, но про них позже.

Теперь надо сказать несколько слов откуда эти маршруты взялись и что с ними можно делать. Представьте, что пылесосу нужно отправить какие-то данные хосту 8.8.8.8, на котором находится публичный ДНС гугла, ну типа "привет, пока, пшел вон, тупая железяка!", так сказать приветствие от IoT компании эппл, сервису компании гугл. Для отправки данного месседжа, его необходимо поместить в IP пакет с соответствующими заголовками, по минимуму как-то так:

1. IP адрес отправителя

2. IP адрес получателя

3. Тип данных

4. TTL и т. д.

Хост готовит пакет, в котором IP адрес отправителя - 192.168.0.100, IP адрес получателя - 8.8.8.8, остальное пока не важно. Далее встает вопрос куда же это отправлять? За ответом хост отправляется выбирать из собственной таблицы маршрутизации маршрут, по которому отправить пакет.

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

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

2. Из нескольких подходящих маршрутов выбираются те, у которых маска сети максимальна

3. Из оставшихся выбираются те, у которых метрика минимальна.


Теперь нужно понять, зачем нужны маски и как все это работает.


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


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

Чаще всего эквивалентом истинности чего-либо в вычислениях является двоичная единица, а эквивалентом лжи - ноль.


Теперь к сути операций, сначала Логическое И (умножение или AND):

Истина И Истина = Истина, Ложь И (Истина или Ложь) = Ложь, (если есть хоть немного лжи, то все целиком - ложь) или так:

1 И 1 = 1, 1 И 0 = 0, 0 И 1 = 0, 0 И 0 = 0, или так:

1 * 1 = 1, 1 * 0 = 0, 0 * 1 = 0, 0 * 0 = 0.

То есть если один из операндов - ноль, результат тоже ноль.


Далее Логическое ИЛИ (сложение или OR):

Истина ИЛИ Истина = Истина, Истина ИЛИ Ложь = Истина, Ложь ИЛИ Ложь = Ложь (если есть хоть немного истины, то все целиком - истина) или так:

1 ИЛИ 1 = 1, 1 ИЛИ 0 = 1, 0 ИЛИ 1 = 1, 0 ИЛИ 0 = 0, или так:

1 + 1 = 1 (сумма, конечно, 2, но главное, что она больше нуля, то есть результат суммирования не 0), 1 + 0 = 1, 0 + 1 = 1, 0 + 0 = 0.

То есть если один из операндов - единица, то результат тоже единица.


Логическое НЕ (отрицание или инверсия, или NOT):

НЕ Истина = Ложь, а НЕ Ложь = Истина, или так:

НЕ 1 = 0, а НЕ 0 = 1.

То есть после операции результат будет противоположным операнду.


Теперь вернемся к маскам. Маски представляют собой некий числовой трафарет (похожий на решетку Кардано), который нужен для необходимых в маршрутизации IP пакетов расчетов.

IP over Ethernet #2 Таблица маршрутизации для утюга и пылесоса Интернет, Ethernet, Internet over Ethernet, IP, Римские цифры, Длиннопост

Чаще всего это набор единиц слева направо в 32х-разрядном двоичном числе. Например:

10000000000000000000000000000000 - маска /1 (1 единица) или 128.0.0.0,

11000000000000000000000000000000 - маска /2 (2 единицы) или 192.0.0.0,

11100000000000000000000000000000 - маска /3 (3 единицы) или 224.0.0.0,

11111111.00000000.00000000.00000000 - маска /8 (8 единиц) или 255.0.0.0,

11111111.11111111.00000000.00000000 - маска /16 (16 единиц) или 255.255.0.0,

11111111.11111111.11111111.00000000 - маска /24 (24 единицы) или 255.255.255.0.


Маски (32 бита) накладывается на IP адреса (32 бита), чтобы производить разнообразные расчеты.


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

Повторю еще раз 192.168.0.100 это в двоичной системе -

11000000.10101000.00000000.01100100,

а 255.255.255.0 -

11111111.11111111.11111111.00000000.

Итак на первом этапе стек рассчитывает из комбинации адреса и маски адрес IP сети, непосредственно подключенный к интерфейсу при помощи побитовой операции И:

11000000.10101000.00000000.01100100 И

11111111.11111111.11111111.00000000 =

11000000.10101000.00000000.00000000 или 192.168.0.0.

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


Далее производится операция инвертирования маски - НЕ

11111111.11111111.11111111.00000000 =

00000000.00000000.00000000.11111111

это 0.0.0.255.

Данное число называется wildcard. Это эквивалент количества адресов в данной сети.

Таким образом минимальный адрес в сети, подключенной к вайфай интерфейсу пылесоса -

192.168.0.0, а максимальный (192.168.0.0+0.0.0.255) - 192.168.0.255.

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


Все это нужно, чтобы при настройке интерфейса добавить в таблицу маршрутизации запись, указанную ранее:


192.168.0.0 255.255.255.0 - сеть непосредственно подключена к интерфейсу.


А также чтобы определять принадлежность произвольного адреса назначения в IP пакете определенной сети из таблицы маршрутизации.


Например 8.8.8.8 совершенно точно не входит в 192.168.0.0 255.255.255.0, но в таблице маршрутизации была еще одна запись:


0.0.0.0 0.0.0.0 - через шлюз 192.168.0.1,


Как понимать что такое сеть 0.0.0.0 0.0.0.0.


Давайте посчитаем.

Адрес 0.0.0.0 это:

00000000.00000000.00000000.00000000, маска такая же:

00000000.00000000.00000000.00000000, после операции И, получим

00000000.00000000.00000000.00000000, это 0.0.0.0 - адрес сети (а также и минимальный адрес в данной сети), после инверсии маски:

00000000.00000000.00000000.00000000, получим

11111111.11111111.11111111.11111111, то есть 255.255.255.255 (wildcard, количество адресов в сети), после арифметического сложения адреса сети и wildcard (0.0.0.0+255.255.255.255) получим 255.255.255.255 - максимальный адрес в сети.


После данных операций становится понятно, что сеть 0.0.0.0 0.0.0.0 (короткая запись с маской, указывающей на количество единиц маски, - 0.0.0.0/0) содержит все IPv4 адреса в сети IP. Адреса 8.8.8.8, 192.168.0.1 и 192.168.0.100 являются частью данной сети.


Продолжение следует...

Показать полностью 4
[моё] Интернет Ethernet Internet over Ethernet IP Римские цифры Длиннопост
16
9
BenediktTritiy
8 лет назад

Учим римские цифры.⁠⁠

Целый год ходил с часами и не замечал. Как теперь это развидеть?

Учим римские цифры. Римские цифры, Часы
Показать полностью 1
[моё] Римские цифры Часы
31
Uruguay
Uruguay
8 лет назад

Интересные часы.⁠⁠

Интересные часы.
Интересное Часы Римские цифры Лишнее 9GAG
30
0
Cr4shed
Cr4shed
8 лет назад

2017, что-нибудь изменится?⁠⁠

2017, что-нибудь изменится?
2017 Римские цифры
2
75
Octobe.R
Octobe.R
8 лет назад

Многообещающий 17-й⁠⁠

Многообещающий 17-й
2017 Мат Картина Римские цифры
6
Denchik88
Denchik88
8 лет назад

Что то странное в этих часах)Произведено в Белоруссии.⁠⁠

Что то странное в этих часах)Произведено в Белоруссии. Римские цифры, Часы, Республика Беларусь
Показать полностью 1
[моё] Римские цифры Часы Республика Беларусь
25
2368
SuperWonderBat
SuperWonderBat
9 лет назад

Если бы я учился в античное время⁠⁠

Учитель: Как будет 4000 в римской нумерации?

Я: Мммм...

Учитель: Правильно

Если бы я учился в античное время Перевод, Античность, Римские цифры, 9GAG
Показать полностью 1
Перевод Античность Римские цифры 9GAG
99
duvaLka
9 лет назад

II типов людей⁠⁠

Люди делятся на одиннадцать типов — тех, кто умеет читать римские цифры и тех, кто не умеет.

Текст Анекдот Римские цифры
15
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии