| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Сетевые технологии > Расчета адресов в подсети и сетевых масок |
| Автор: admsasha 26.11.2006, 14:49 |
| Подскажите алгоритм для расчета адресов в подсети и сетевых масок. Как что вычисляется ? |
| Автор: maxim1000 26.11.2006, 14:55 |
| перенёс из Алгоритмов |
| Автор: SoWa 26.11.2006, 19:00 |
| Не понимаю. А разве не Random функция распределяет с исключением? |
| Автор: bilbobagginz 27.11.2006, 02:06 | ||
да не всегда рандом: иногда рандом, иногда псевдо-рандом, а иногда - тщательно отобранные рандомные величины. по-всякому бывает... |
| Автор: admsasha 27.11.2006, 03:20 | ||
непонял, причет тут Random для расчета сети ??? задача такая, есть ip и маска, как посчитать сеть ? т.е. есть данные ip=192.168.1.10 mask=255.255.255.0 ----- надо получить сеть 192.168.1.0 с префиксом /24 В двоичную систему всё это перевел, а как дальше ? что из чего вычитать ? |
| Автор: MuToGeN 27.11.2006, 10:47 |
192.168.1.10 = 11000000 10101000 00000001 00001010 255.255.255.0 = 11111111 11111111 11111111 00000000 После битового "и" имеем - 11000000 10101000 00000001 00001010 (жирное - ИД сети, курсив - ИД хоста).Адреса, где ИД хоста состоит только из нулей или единиц, отбрасываем - они используются для бродкастов. Остаются адреса с 00000001 по 11111110. |
| Автор: spin2 27.11.2006, 14:35 | ||
Добавлено @ 14:39
Сеть как раз есть кусок ID сети, а вместо ID хоста - все нули, то есть 11000000 10101000 00000001 00000000 = 192.168.1.0 А маска "/24" - это означает, что из 32-х бит маски 24 отводятся на идентификатор сети. Первый и последний адреса: первый - 1, естественно. 11000000 10101000 00000001 00000001 = 192.168.1.1 Последний - 254, потому что 255 - широковещательный. 11000000 10101000 00000001 11111110 = 192.168.1.254 |
| Автор: MuToGeN 27.11.2006, 14:45 |
| admsasha, подробнее: Есть такое устаревшее понятие как бродкаст. IP-пакет, отправленный на бродкастный адрес сети, должен приходить на все доступные в сети хосты. Для этого используются 2 адреса, состоящих из ИД сети и нулей вместо ИД хоста и единиц вместо ИД хоста. В данном случае это 192.168.1.0 и 192.168.1,255. В ipv6 его не будет, все ф-ии, связанные с ним, достанутся мультикастам. На бродкастах например работает ARP. Ситуация примерно такая - я - 192.168.1.24 и мне надо подключиться к 192.168.1.1, но я знаю только его IP и не знаю MAC адрес. Я посылаю бродкаст-пакет "У кого IP 192.168.1.1?", 192.168.1.1 отвечает "У меня", из ответа я узнаю его MAC. Фигню сморозил: И есть такое понятие как мультикаст - машины сначала договариваются о том, кому нужна передаваемая информация, и далее при отправке пакета его получают только те, кто должен его получить. Т.е., минимальный IP в бинарном виде сотоит из ID сети + (32 - маска по CIDR - 1) нулей + единица, максимальный - ID сети + (32 - маска по CIDR - 1) единиц + '1', т.е. все возможные комбинации, кроме первого и последнего ИД хоста. |
| Автор: spin2 27.11.2006, 15:29 |
| MuToGeN, странные вещи Вы рассказываете. 254-й адрес - вполне обычное дело. А со всеми нулями на месте хоста - это адрес сети, а не широковещательный. |
| Автор: admsasha 27.11.2006, 16:28 | ||
Что-то я не понял, как вы вычислили эти адреса (мин/макс) ? С Broadcast разобрался. |
| Автор: MuToGeN 27.11.2006, 17:59 |
Извиняюсь, действительно фигню сказал -) http://www.iana.org/assignments/multicast-addresses, http://www.google.ru/url?sa=t&ct=res&cd=7&url=http%3A%2F%2Fwww.cisco.com%2Funivercd%2Fcc%2Ftd%2Fdoc%2Fcisintwk%2Fito_doc%2Fipmulti.htm&ei=8vxqReyDEKXa2AKbvriOCw&usg=__lacR3xKc0HGEcGJkuj560BYAzfA=&sig2=8FT-w7tkhk7NALya8wPTQA |
| Автор: spin2 27.11.2006, 18:38 |
| admsasha, у Вас есть ip=192.168.1.10 и mask=255.255.255.0. У маски в двоичном виде 24 "1" сначала, а потом 8 "0". То, где "1" дает нам адрес сети и 8 бит остается у нас на адрес хоста. А что такое 8 бит? Это все от 00000000 до 11111111: 00000000 00000001 00000010 ... 11111100 11111101 11111110 11111111 Далее, всегда первое уходит на сеть (00000000) и последнее - на широковещательный (11111111). Что остается? Первый хост - 00000001 и последний - 11111110. Или в десятичном виде 1 и 254. |
| Автор: admsasha 28.11.2006, 03:42 | ||
Это то понятно, я думал какой то другой подсчет имеется, тут грубо говоря: min=сеть+1, max=бродкаст-1. Спасибо. |
| Автор: spin2 28.11.2006, 14:59 | ||
Одно и то же. |
| Автор: admsasha 2.12.2006, 19:38 |
| Кстате, вот что получилось. http://www.unix.lviv.ua/component/option,com_wrapper/Itemid,47/ Прошу не считать это рекламой, я даю ссылку на конкретном топике на конкретную страницу. |
| Автор: ZeeLax 3.12.2006, 09:06 |
работает только параметры переобзовите в одном стиле. А то "Сеть", потом "BroadCast". |
| Автор: Secandr 3.12.2006, 11:03 |
| Ещё что хотел сказать, надо бы в програмку встроить проверку на правильность маски, ибо сейчас она хавает маску 255.252.255.0, что есть неправильно Есть конечно в циске вилдкармаск(кажется так называется), которая может быть и 255.0.0.255, но это уже вне стандарта |
| Автор: ZeeLax 3.12.2006, 13:09 | ||
Не совсем верно. Wildcard bits - набор, определяющий, в каких позициях будет производится сравнение IP-адреса пакета с IP-адресом, указанным, например в списке контроля доступа. Уменьшает количество операций над адресом/маской и как следствие ускоряет обработку пакетов маршрутизатором. Так что всё в рамках стандарта |
| Автор: admsasha 3.12.2006, 13:38 |
| Имеется введу по русски ? "бродкаст" ? |
| Автор: Secandr 3.12.2006, 13:41 |
| ZeeLax, по сути Wildcard bits не есть маска, так что всё же проверку маски стоит ввести в софтинке. |
| Автор: ZeeLax 3.12.2006, 13:54 |
конечно конечно, против этого я ничего не говорил. Добавлено @ 13:56 Имеется ввиду на одном языке. Если на русском, то по-русски, а не транслитом. |
| Автор: spin2 4.12.2006, 16:45 |
| admsasha, еще я бы добавила такую функциональность: если маска не указана, то берется маска соответствующего класса. |
| Автор: admsasha 4.12.2006, 16:53 |
| Всё, поправленно :-) Еще замечания есть ? Буду рад предложениям, заранее потренируюсь :-D Да и админам вдруг пригодится Добавлено @ 17:02 spin2, хорошо... только уточнение... если стоит сеть x.y.z.0 - то маска 255.255.255.0 если x.y.0.0 - то 255.255.0.0 так ? а если x.y.z.23 - то ? |
| Автор: spin2 4.12.2006, 18:32 |
| admsasha, это по первому числу (х) нужно смотреть. Есть же разбиение сетей на классы: A - маска /8, адреса 1-126 B - /16, адреса 129-191 C - /24, адреса 192-223 |
| Автор: admsasha 4.12.2006, 19:11 | ||
эм.. куда 127 и 128 делись ? :-D а адреса > 223 ? |
| Автор: DENNN 5.12.2006, 00:51 |
админы пользуют ipcalc когда в голове посчитать не удается ))) |
| Автор: Secandr 5.12.2006, 08:46 |
| Админы пользуются простым калькулятором Количество хостов в сети: 2^(32-[маска в битах])-2 количество хостов, которое можно выдать клиенту, если есть шлюз: 2^(32-[маска в битах])-3 Первый айпи для маски XX бит должен быть 2^(32-[маска в битах])*N шлюз 2^(32-[маска в битах])*N+1 броадкаст: 2^(32-[маска в битах])*(N+1)-1 Степени двойки админ должен помнить до 2^12 а адреса > 223 относятся к мультикастовому диапазону, если мне память не изменяет. |
| Автор: MuToGeN 5.12.2006, 12:46 |
Общая логика такая - раскладываем маску на биты и смотрим за тем, чтобы оно состояло чтрого из 2х частей, одна из них - только единицы (первая), другая - только нули (вторая), т.е. что-то типа 11110000 может являться маской, а что-то типа 00111001 не может. Добавлено @ 12:49 Мультикаст - это только .0 и .225 (для класса C). Я сам про .224 я несколько раз писал фигню, извиняюсь, был неправ. |
| Автор: Secandr 5.12.2006, 23:32 | ||
| MuToGeN, это броадкаст http://www.iana.org/assignments/multicast-addresses
P.S. Ну уж модератор-то раздела "Сетевые технологии" должен мультикаст от броадкаста отличать |
| Автор: DENNN 6.12.2006, 01:07 |
| Спасибо Secandr, а то я уже сам сомневаться начал |
| Автор: admsasha 6.12.2006, 09:52 | ||
Еще замечания ? |
| Автор: MuToGeN 6.12.2006, 11:08 |
| Secandr, сори, второй раз ошибаюсь |
| Автор: spin2 6.12.2006, 17:02 |
| admsasha, отлично. |
| Автор: NEt_Hunter 4.3.2007, 21:44 | ||
Secandr, N это что? Покажите, пожалуйста, эти вычисления для данного примера |