Инструменты пользователя

Инструменты сайта


про_ip-адреса_маски_подсетей_и_вообще

Различия

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

Ссылка на это сравнение

про_ip-адреса_маски_подсетей_и_вообще [2012/10/29 18:39] (текущий)
91.215.120.163 создано
Строка 1: Строка 1:
 +IP-адрес (v4) состоит из 32-бит. Любой уважающий себя админ, да и вообще айтишник (про сетевых инженеров молчу) должен уметь, будучи разбуженным среди ночи или находясь в состоянии сильного алкогольного опьянения,​ правильно отвечать на вопрос «из скольки бит состоит IP-адрес». Желательно вообще-то и про IPv6 тоже: 128 бит.
  
 +     ​Обстоятельство первое. Всего теоретически IPv4-адресов может быть:
 +    232 = 210*210*210*22 = 1024*1024*1024*4 ≈ 1000*1000*1000*4 = 4 млрд.
 +    Ниже мы увидим,​ что довольно много из них «съедается» под всякую фигню.
 +
 +
 +
 +Записывают IPv4-адрес,​ думаю, все знают, как. Четыре октета (то же, что байта, но если вы хотите блеснуть,​ то говорите «октет» — сразу сойдете за своего) в десятичном представлении без начальных нулей, разделенные точками:​ «192.168.11.10».
 +
 +В заголовке IP-пакета есть поля source IP и destination IP: адреса источника (кто посылает) и назначения (кому). Как на почтовом конверте. Внутри пакетов у IP-адресов нет никаких масок. Разделителей между октетами тоже нет. Просто 32-бита на адрес назначения и еще 32 на адрес источника.
 +
 +Однако,​ когда IP-адрес присваивается интерфейсу (сетевому адаптеру или как там его еще называют) компьютера или маршрутизатора,​ то кроме самого адреса данного устройства ему назначают еще и маску подсети. Еще раз: маска не передается в заголовках IP-пакетов.
 +
 +Компьютерам маска подсети нужна для определения границ — ни за что не угадаете чего — подсети. Чтоб каждый мог определить,​ кто находится с ним в одной [под]сети,​ а кто — за ее пределами. (Вообще-то можно говорить просто «сети»,​ часто этот термин используют именно в значении «IP-подсеть».) Дело в том, что внутри одной сети компьютеры обмениваются пакетами «напрямую»,​ а когда нужно послать пакет в другую сеть — шлют их шлюзу по умолчанию (третий настраиваемый в сетевых свойствах параметр,​ если вы помните). Разберемся,​ как это происходит.
 +
 +Маска подсети — это тоже 32-бита. Но в отличии от IP-адреса,​ нули и единицы в ней не могут чередоваться. Всегда сначала идет сколько-то единиц,​ потом сколько-то нулей. Не может быть маски
 +
 +120.22.123.12=01111000.00010110.01111011.00001100.
 +
 +Но может быть маска
 +
 +255.255.248.0=11111111.11111111.11111000.00000000.
 +
 +Сначала N единиц,​ потом 32-N нулей. Несложно догадаться,​ что такая форма записи является избыточной. Вполне достаточно числа N, называемого длиной маски. Так и делают:​ пишут 192.168.11.10/​21 вместо 192.168.11.10 255.255.248.0. Обе формы несут один и тот же смысл, но первая заметно удобнее.
 +
 +Чтобы определить границы подсети,​ компьютер делает побитовое умножение (логическое И) между IP-адресом и маской,​ получая на выходе адрес с обнуленными битами в позициях нулей маски. Рассмотрим пример 192.168.11.10/​21:​
 +
 +11000000.10101000.00001011.00001010
 +11111111.11111111.11111000.00000000
 +----------------------------------------------
 +11000000.10101000.00001000.00000000 = 192.168.8.0
 +
 +    Обстоятельство второе. Любой уважающий себя администратор обязан уметь переводить IP-адреса  ​
 +   из десятичной формы в двоичную и обратно в уме или на бумажке,​ а также хорошо владеть двоичной арифметикой.
 +
 +
 +Адрес 192.168.8.0,​ со всеми обнуленными битами на позициях,​ соответствующих нулям в маске, называется адресом подсети. Его (обычно) нельзя использовать в качестве адреса для интерфейса того или иного хоста. Если же эти биты наоборот,​ установить в единицы,​ то получится адрес 192.168.15.255. Этот адрес называется направленным бродкастом (широковещательным) для данной сети. Смысл его по нынешним временам весьма невелик:​ когда-то было поверье,​ что все хосты в подсети должны на него откликаться,​ но это было давно и неправда. Тем не менее этот адрес также нельзя (обычно) использовать в качестве адреса хоста. Итого два адреса в каждой подсети — на помойку. Все остальные адреса в диапазоне от 192.168.8.1 до 192.168.15.254 включительно являются полноправными адресами хостов внутри подсети 192.168.8.0/​21,​ их можно использовать для назначения на компьютерах.
 +
 +Таким образом,​ та часть адреса,​ которой соответствуют единицы в маске, является адресом (идентификатором) подсети. Ее еще часто называют словом префикс. А часть, которой соответствуют нули в маске, — идентификатором хоста внутри подсети. Адрес подсети в виде 192.168.8.0/​21 или 192.168.8.0 255.255.248.0 можно встретить довольно часто. Именно префиксами оперируют маршрутизаторы,​ прокладывая маршруты передачи трафика по сети. Про местонахождение хостов внутри подсетей знает только шлюз по умолчанию данной подсети (посредством той или иной технологии канального уровня),​ но не транзитные маршрутизаторы. А вот адрес хоста в отрыве от подсети не употребляется совсем.
 +
 +    Обстоятельство третье. Количество хостов в подсети определяется как 232-N-2,​где N —длина ​ маски. ​
 +     ​Чем длиннее маска,​тем меньше в ней хостов.
 +    ​
 +Из данного обстоятельства в частности следует,​ что максимальной длиной маски для подсети с хостами является N=30. Именно сети /30 чаще всего используются для адресации на point-to-point-линках между маршрутизаторами.
 +
 +И хотя большинство современных маршрутизаторов отлично работают и с масками /31, используя адрес подсети (нуль в однобитовой хоствой части) и бродкаст (единица) в качестве адресов интерфейсов,​ администраторы и сетевые инженеры часто попросту боятся такого подхода,​ предпочитая руководствоваться принципом «мало ли что».
 +
 +А вот маска /32 используется достаточно часто. Во-первых,​ для всяких служебных надобностей при адресации т. н. loopback-интерфейсов,​ во-вторых,​ от криворукости:​ /32 — это подсеть,​ состоящая из одного хоста, то есть никакая и не сеть, в сущности. Чем чаще администратор сети оперирует не с группами хостов,​ а с индивидуальными машинами,​ тем менее сеть масштабируема,​ тем больше в ней соплей,​ бардака и никому непонятных правил. Исключением,​ пожалуй,​ является написание файрвольных правил для серверов,​ где специфичность — хорошее дело. А вот с пользователями лучше обращаться не индивидуально,​ а скопом,​ целыми подсетями,​ иначе сеть быстро станет неуправляемой.
 +
 +
 +
 +Интерфейс,​ на котором настроен IP-адрес,​ иногда называют IP-интерфейсом или L3-интерфейсом («эл-три»,​ см. Модель OSI).
 +
 +Прежде чем посылать IP-пакет,​ компьютер определяет,​ попадает ли адрес назначения в «свою» подсеть. Если попадает,​ то шлет пакет «напрямую»,​ если же нет — отсылает его шлюзу по умолчанию (маршрутизатору). Как правило,​ хотя это вовсе необязательно,​ шлюзу по умолчанию назначают первый адрес хоста в подсети:​ в нашем случае 192.168.8.1 — для красоты.
 +
 +    ​
 +    Обстоятельство четвертое.Из сказанного в частности следует,​ что ​ маршрутизатор
 +    с адресом интерфейса 192.168.8.1 ничего не знает о трафике,​ передаваемом между, например,​ хостами
 +     ​192.168.8.5 и 192.168.8.7.Очень ​ частой ошибкой начинающих администраторов является желание заблокировать
 +      или как-то еще контролировать с помощью шлюза трафик между хостами в рамках одной подсети.Чтобы трафик
 +       ​проходил через маршрутизатор,​ адресат и отправитель должны находиться в разных подсетях.
 +
 +Таким образом в сети (даже самого маленького предприятия) обычно должно быть несколько IP-подсетей (2+) и маршрутизатор (точнее файрвол,​ но в данном контексте можно считать эти слова синонимами),​ маршрутизирующий и контролирующий трафик между подсетями.
 +
 +
 +
 +Следующий шаг — разбиение подсетей на более мелкие подсети. Полюбившуюся нам сеть 192.168.8.0/​21 можно разбить на 2 подсети /22, четыре подсети /23, восемь /24 и т. д. Общее правило,​ как не сложно догадаться,​ такое: K=2X-Y, где K — количество подсетей с длиной маски Y, умещающихся в подсеть с длиной маски X.
 +
 +   ​Обстоятельство пятое. Как и любому приличному IT-шнику,​ администратору сети, если только он 
 +   ​получает зарплату не за красивые глаза, положено знать наизусть степени двойки от 0 до 16.
 +
 +
 +
 +Процесс объединения мелких префиксов (с длинной маской,​ в которых мало хостов) в крупные (с короткой маской,​ в которых много хостов) называется агрегацией или суммаризацией (вот не суммированием!). Это очень важный процесс,​ позволяющий минимизировать количество информации,​ необходимой маршрутизатору для поиска пути передачи в сети. Так, скажем,​ провайдеры выдают клиентам тысячи маленьких блоков типа /29, но весь интернет даже не знает об их существовании. Вместо этого за каждым провайдером закрепляются крупные префиксы типа /19 и крупнее. Это позволяет на порядки сократить количество записей в глобальной таблице интернет-маршрутизации.
 +
 +    Обстоятельство шестое. Чем больше длина маски, тем меньше в подсети может быть хостов,​ и тем большую долю
 +     ​занимает «съедение» адресов на адреса подсети,​ направленного бродкаста и шлюза по умолчанию. В частности
 +      в подсети с маской /29 (232-29 = 8 комбинаций) останется всего 5 доступных для реального использования
 +      адресов (62,5%). Теперь представьте,​ что вы провайдер,​ выдающий корпоративным клиентам тысячи блоков
 +      /29. Таким образом,​ грамотное разбиение IP-пространства на подсети (составление адресного плана) — это
 +      целая маленькая наука, включающая поиск компромиссов между разными сложными факторами.
 +
 +
 +
 +При наличии достаточно большого диапазона адресов,​ как правило из блоков для частного использования 10.0.0.0/8, 172.16.0.0/​12 и 192.168.0.0/​16,​ конечно,​ удобно использовать маски, совпадающие по длине с границами октетов:​ /8, /16, /24 или, соответственно,​ 255.0.0.0, 255.255.0.0 и 255.255.255.0. При их использовании можно облегчить работу мозгу и калькулятору,​ избавившись от необходимости работать с двоичной системой и битами. Это правильный подход,​ но не стоит забывать,​ что злоупотребление расслабухой редко доводит до добра.
 +
 +И последнее. Пресловутые классы адресов. Дорогие товарищи,​ забудьте это слово вообще! Совсем. Вот уже скоро 20 лет (!), как нет никаких классов. Ровно с тех пор, как стало понятно,​ что длина префикса может быть любой, а если раздавать адреса блоками по /8, то никакого интернета не получится.
 +
 +Иногда «матерые специалисты» любят блеснуть словами «сеть класса такого-то» по отношению к подсети с той или иной длиной маски. Скажем,​ часто можно услышать слово «сеть класса C» про что-нибудь вроде 10.1.2.0/​24. Класс сети (когда он был) не имел никакого отношения к длине маски и определялся совсем другими факторами (комбинациями битов в адресе). В свою очередь классовая адресация обязывала иметь маски только предписанной для данного класса длины. Поэтому указанная подсеть 10.1.2.0/24 никогда не принадлежала и не будет принадлежать к классу C.
 +
 +Но обо всем этом лучше и не вспоминать. Единственное,​ что нужно знать — что существуют разные глобальные конвенции,​ собранные под одной крышей в RFC3330, о специальных значениях тех или иных блоков адресов. Так, например,​ упомянутые блоки 10/8, 172.16/12 и 192.168/16 (да, можно и так записывать префиксы,​ полностью откидывая хостовую часть) определены как диапазоны для частного использования,​ запрещенные к маршрутизации в интернете. Каждый может использовать их в частных целях по своему усмотрению. Блок 224.0.0.0/4 зарезервирован для мультикаста и т. д. Но все это лишь конвенции,​ призванные облегчить административное взаимодействие. И хотя лично я крайне не рекомендую вам их нарушать (за исключением надежно изолированных лабораторных тестов),​ технически никто не запрещает использовать любые адреса для любых целей, покуда вы не стыкуетесь с внешним миром. ​
про_ip-адреса_маски_подсетей_и_вообще.txt · Последние изменения: 2012/10/29 18:39 — 91.215.120.163