3

Я очень плохо разбираюсь в компьютерных сетях, хотя учился в аспирантуре.

Я постоянно забываю о подсетях и масках, а что нет!

В настоящее время я играю с Docker и Erlang и пытаюсь заниматься распределенным программированием.

Я запустил 4 док-контейнера

(gru@172.17.0.63) # also known as Server 
(minion1@172.17.0.61)
(minion2@172.17.0.64)
(minion3@172.17.0.65)

где числа после @ являются их соответствующими IP адресами, взятыми из команды ifconfig .
Теперь, учитывая эти IP адреса, как я могу определить, находятся ли они в одной локальной сети / сети?

Если вопрос задан неправильно или глупо, мои извинения, но я застрял!

большое спасибо

2 ответа2

2

Вам нужно знать маску подсети. Маска подсети говорит вам, какие биты адреса представляют подсеть, а какие биты представляют хост в подсети. Если ваша подсеть - это /24 (255.255.255.0), то любой адрес, первые три октета которого совпадают, будет находиться в одной подсети.

В вашем примере, если ваша маска подсети равна /26 или больше (255.255.255.192 или выше), то эти адреса не будут находиться в одной подсети, потому что 63 будет широковещательным адресом одной подсети, а 64 будет " сетевой "адрес (0 для номера хоста) другой подсети. Таким образом, эти адреса, вероятно, даже не будут надежно работать в качестве адресов одноадресного хоста, если ваша маска подсети была /26 или больше.

1

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

IP-адрес состоит из четырех 8-битных октетов; Октет - это последовательность из 8 двоичных битов. Следовательно, каждый бит может быть 0 или 1, поэтому каждый октет может представлять 2 ^ 8 разных значений, что составляет 256 (0-255). Поскольку таких октетов четыре, может быть комбинация адресов, равная 28+8+8+8 или 232, что составляет 4 294 967 296 возможных адресов. Каждый двоичный бит имеет значение: 128, 64, 32, 16, 8, 4, 2, 1, поэтому в зависимости от того, включен этот двоичный бит или нет, мы добавляем или не добавляем значение для этого бита.

Маска указывает количество адресов, которые мы игнорируем. В основном, где есть единицы, есть адреса, которые не являются частью группы, в которой находится наш адрес. Для сети /24 (или сети с маской 255.255.255.0) это означает, что из 2 ^ 32 возможных адресов мы вычитаем 2 ^ 24 адреса, поэтому в нашей группе осталось 2 ^ 8 адресов, или 256 из них.

Таким образом, если у вас был адрес 172.17.0.0/24, это означает, что в этой сети будет 256 адресов, что будет 172.17.0.0-172.17.0.255, хотя некоторые из них будут зарезервированы как сетевой адрес (172.17.0.0). и один будет зарезервирован как широковещательный адрес (172.17.0.255), и вам также потребуется шлюз (обычно 172.17.0.1).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .