как определить что IP-адреса находятса в одной подсети?

 вопрос общий, без каких либо конкретных адресов.

Если данная информация оказалась полезной/интересной - плюсаните, пожалуйста:

Аватар пользователя savely

Надо знать маску. И наложить маску ANDом на каждый адрес. Если после AND в обоих случаях получилось одинаковое число - они в одной сети. Если нет - в разных.
Т.е. комп имеет IP и маску. Ты говоришь - хочу послать на такой-то адрес. Комп накладывает маску на свой адрес и на адрес удаленного компа. Если получилось одинаковое число - комп шлет напрямую, если разные - через шлюз.

А кому счас легко...

Аватар пользователя max3

а можно на примере каком нибудь с потолка? 

желательно 2х2(один когда они в одной подсети и один когдa в разных)

понять тобой написанное я понял, но хотелось бы закрепить примером.

заранее спасибо.

Про маску подсети.



Пример1:
IP 192.168.0.35
Маска 255.255.255.0
Подсеть 192.168.0.0
и
IP 192.168.0.58
Маска 255.255.255.0
Подсеть 192.168.0.0

Пример2:
IP 192.168.1.35
Маска 255.255.255.0
Подсеть 192.168.1.0
и
IP 192.168.0.58
Маска 255.255.255.0
Подсеть 192.168.0.0

В 1-ом примере подсети одинаковые, а во 2-ом разные.

Аватар пользователя max3

 На примере Maco:
(Для собственного успокоения, просто были проблемы с подсетями до етого)
Пример1:
IP 192.168.0.35
IP 192.168.0.58
Маска 255.255.255.0

11000000.10101000.00000000.00100011
11111111.11111111.11111111.00000000
и
11000000.10101000.00000000.00111010
11111111.11111111.11111111.00000000
result
11000000.10101000.00000000.00000000
11000000.10101000.00000000.00000000
t.e.


Подсеть 192.168.0.0 \
Подсеть 192.168.0.0 / same subnet

Пример2:
IP 192.168.1.35
IP 192.168.0.58
Маска 255.255.255.0

11000000.10101000.00000001.00100011
11111111.11111111.11111111.00000000
и
11000000.10101000.00000000.00111010
11111111.11111111.11111111.00000000
result
11000000.10101000.00000001.00000000
11000000.10101000.00000000.00000000
t.e.
Подсеть 192.168.1.0 \
Подсеть 192.168.0.0 / different subnets

еше вопрос по определению максимал;ного количества хостов в подсети,
например:
192.168.11.0/28  (C class)
32-28=4
2^4=16
16-2=14 Max # of Hosts (ну и шлюз, в реальной жизни можно отнять)  -Верно?

14.49.23.128/25  (A class)
32-25=7
2^7=128
128-2=126 Max # of Hosts ( -gateway) - Верно?

Назначение маски подсети
Маска назначается по следующей схеме 28 − n (для сетей класса C), где n - количество компьютеров в подсети + 2, округленное до ближайшей большей степени двойки.
Пример: В некой сети класса C есть 30 компьютеров, маска для такой сети вычисляется следующим образом:
28 - 32 = 224 (0E0h) < = > 255.255.255.224 (0xFFFFFFE0)
-откуда 28 появилось? и цифра 2 - ето и есть Broadcast+Base address ?

Для простых масок типа 255 (0xFF) переводить в двоичную систему необязательно. А вот для более сложных масок - надо переводить:

IP 82.144.53.12
Маска 255.255.240.0
Подсеть 82.144.48.0

IP 82.144.61.39
Маска 255.255.240.0
Подсеть 82.144.48.0

Т.е. это адреса одной подсети.

 53 (dec) = 00110101 (bin) 
 61 (dec) = 00111101 (bin) 
240 (dec) = 11110000 (bin) 
 48 (dec) = 00110000 (bin)

Поправил, это у меня был сдвиг по фазе вправо:).

Аватар пользователя savely

Цитата:
еше вопрос по определению максимального количества хостов в подсети

Верно. Только непонятно, зачем отнимать шлюз. Он тоже считается за хост. И никто ему не мешает быть обычным компом.

Цитата:
Назначение маски подсети

Какая-то шаманская формула... 28 - не знаю откуда. И в общем-то логичнее из 256 вычитать 32... Тоже 224.
Вообще достаточно взять количество нулевых битов в ближайшей большей степени двойки. Т.е. 32 - 5 нулевых битов. Пишем байт маски с 5-ю нулевыми битами - 1110 0000 (bin) = 224 (dec)

Цифра 2 - да.

А кому счас легко...

Аватар пользователя DanZer

Цитата:
Какая-то шаманская формула... 28 - не знаю откуда.

28 - отсюда: 192.168.11.0/28. Это альтернативный способ обозначения маски подсети, обозначает кол-во ненулевых битов. Т.е. адрес x.x.x.x/8 = x.x.x.x с маской 11111111.00000000.00000000.00000000bin/255.0.0.0hex.
x.x.x.x/28 = x.x.x.x с маской 11111111.11111111.11111111.11110000bin/255.255.255.240hex

Кстати, рекомендую программку LANCalculator - имхо, наглядней уже некуда:


Настоящий джентльмен назовет кошку кошкой, даже наступив на нее в темноте.
Что-то ищем? Google в помощь

Аватар пользователя savely

Цитата:
Маска назначается по следующей схеме 28 − n (для сетей класса C), где n - количество компьютеров в подсети + 2, округленное до ближайшей большей степени двойки.

Цитата:
28 - отсюда: 192.168.11.0/28. Это альтернативный способ обозначения маски подсети, обозначает кол-во ненулевых битов

Ну, про альтернативный способ я, как ни странно, знаю. Мне формула непонятна, она может и правильная, но какая-то шаманская, т.е. замороченная. Мне проще по битам посчитать.

P.S. Объяснять мне формулу не надо.

А кому счас легко...

Это не 28!!! Это 2 в степени 8! итого 256. Вот и получается, 256-32=224 =)

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей