| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Сетевые технологии > Адреса и маски. |
| Автор: Orthenner 23.5.2004, 15:40 |
| Значит так, задача такая: Имеется адрес и маска, например: 62.118.0.0/16 Необходимо проверить, попадает ли в эту сеть адрес, ну например 62.118.0.58. Не могли бы подсказать алгоритм этой проверки - чем детальнее, тем лучше. Заранее спасибо. Orthenner. |
| Автор: Secandr 23.5.2004, 15:55 |
| маска - это способ разделить IP на две области - сеть и адрес машины. маска - совокупность бит:11111100000 где первые единицы - сеть, последнии нули - компьютер. насколько я помню 16 - количество еиниц. Тоесть где стоят 11111 - нужно брать байты из IP, где 0000 - можно ставить любой. Пример: IP = 101100111***101(в двоичной форме) маска=1111111***100 (все 1, кроме последних двух) тогда диапазон ip: 101100111***100 101100111***111 Для того чтобы определить диапазон нужно перевести IP в двоичную систему, взять первых 16 битов, дополнить остаток нулями(по идеи ip - 4 байта = 32 бита) - в твоём случае 16 нулей, и перевести обратно в десятичную запись. Получим первый IP диапазона Затем берём первых 16 байт из IP, и добавляем 1 (16 штук) - получаем последний Пример: 62 = 118= тогда ip=00111110011101100000000000000000 маска = 11111111111111110000000000000000 тогда диапазон от 00111110011101100000000000000000 до 00111110011101101111111111111111 в десятичной записи: 62.118.0.0 62.118.255.255 |
| Автор: Orthenner 23.5.2004, 16:20 |
| Спасибо большое. Теперь разобрался Т.е. биты адресов, которые попадают в данную сеть - последние (32-маска). Если маска - 19, то в данную сеть попадает 11111.11111111 адресов или 8191 адресов. |
| Автор: Secandr 23.5.2004, 23:47 |
| Orthenner Я сам разобрался, вспомнить бы ещё, что есть сети класса A,B,C |
| Автор: dwr_budr 4.6.2004, 07:18 |
| Secandr Дык A, B и C это оч просто Просто псевдонимы сетей разных размерностей A это ххх.ххх.ххх.ххх/24 B это ххх.ххх.ххх.ххх/16 C это ххх.ххх.ххх.ххх/8 |
| Автор: Akina 4.6.2004, 07:28 | ||
dwr_budr
Наоборот A это ххх.ххх.ххх.ххх/8 B это ххх.ххх.ххх.ххх/16 C это ххх.ххх.ххх.ххх/24 И вообще с учетом того что CIDR теперь стандарт, надо бы забыть о классах. |
| Автор: dwr_budr 4.6.2004, 08:48 |
| Akina Блин точно |
| Автор: ida 21.7.2004, 16:35 |
| Народ, можно поподробнее о безклассовой междоменной маршрутизации (CIDR)? Насколько я понимаю, в такой записи число после слэша - это количество разрядов, которые предназначены для идентификации хоста внутри сети?... А все остальные разряды перед ними - это адрес сети?... Akina, а когда CIDR стал стандартом (дай сцылочку на RFC, если знаешь, плиз)? |
| Автор: MuToGeN 23.7.2004, 11:00 |
| Число после слеша - это кол-во единиц, если взять маску в двоичном виде. |
| Автор: Akina 23.7.2004, 15:22 |
| ida RFC - не стандарт. Стандарт - STDxxx. Насчет конкретных документов - http://www.faqs.org/rfcs/index.html Первый (кажется) документ касательно стандартизации CIDR - это "RFC 1817 - CIDR and Classful Routing". Можешь искать по обратным ссылкам на него. PS. Кстати, бывают еще и "дырявые" маски... |
| Автор: ida 26.7.2004, 14:11 | ||
Всем спасибо, все нашла, толстые книжки forever. Цитирую, господа:
А я думала, что после слэша количество разрядов хостовой части адреса. Пэрэпутала. |
| Автор: Akina 26.7.2004, 16:04 |
| ida В принципе все началось с супернеттинга (RFC 1338)... |