Возможные (битовые) шаблоны сетевой маски

13

При заданном префиксе Yлегко подсчитать соответствующую маску сети: положите Yвремя установленного бита, а затем заполните «вправо» нулями до тех пор, пока не получите 32 бита (IPv4).

Пример:

Префикс 24, таким образом, маска сети 11111111 11111111 11111111 00000000или 255.255.255.0.

Может ли быть маска сети с другим битовым шаблоном , например

  • 00000000 11111111 00000000 11111111( 0.255.0.255)
  • 00000000 11111111 11111111 11111111( 0.255.255.255)
  • 11111111 11111111 11111111 00000001( 255.255.255.1)

Указание «префикса», очевидно, не подойдет для этих случаев.

(Я почти уверен, что ответ «НЕТ», но я пишу некоторый сетевой код, и это должно работать во всех возможных случаях, поэтому я хочу быть уверен на 101%.)

Даниэль Жур
источник

Ответы:

11

RFC950 утверждает, что

Поскольку биты, которые идентифицируют подсеть, определяются битовой маской, они не должны быть смежными в адресе. Однако мы рекомендуем, чтобы биты подсети были смежными и располагались как наиболее значимые биты локального адреса.

Большинство устройств следуют этой рекомендации, чтобы обеспечить ее соблюдение. Мне удалось использовать несмежные маски подсетей только в сетях с Linux только в 2012 году; протестированные мною устройства Windows, OSX, Cisco и HP не обрабатывали / не позволяли.

Филип Хаглунд
источник
2
Я полагаю, что это было заменено RFC1519 , который явно требует смежной маски.
user1686
@ Grawity Может быть так. Найдено: «Единственное невыполненное ограничение - это то, что маска должна быть смежной». когда говорил о CIDR, но не читал достаточно, чтобы получить контекст.
Филип Хаглунд
6

Если вы используете префиксы и сети, то ответ - нет, биты должны быть смежными. Существуют случаи, когда можно использовать маску подстановки (обратную маску), например Cisco ACL, и это может быть любая битовая комбинация. Например, вы можете заблокировать трафик со всех нечетных узлов в сети. Это, кажется, все еще преподается, но я не видел, чтобы это использовалось очень часто (хотя я видел это) в реальном мире.

Рон Мопин
источник
4

Нет. Маска сети - это непрерывная серия единиц.

(Другие являются шаблонами подстановочных знаков.)

Рики Бим
источник
1
Это неправда. 30 лет назад было много. Там еще могут быть некоторые в работе.
КАРТА
2
Я очень сомневаюсь в этом. Никакое современное оборудование для маршрутизации не позволит этого. И маршрутизаторы 80-х годов будут иметь многочисленные проблемы с тем, как сегодня работает IP. (Был там. Сказал, что вы не используете подсеть с нулевым значением - даже в конце 90-х годов это было проблемой) Только два устройства, которые у меня еще остались с той эпохи , не будут принимать несмежную маску сети. (WTI pdus, все еще рядом, потому что у них есть порты 10bT. С ними ничего не говорит, больше всего интернет .)
Рикки Бим
3

Когда TCP / IP впервые вышел и получил широкое распространение, на самом деле было много подсетей с несмежными масками. Но по мере того, как адреса становились дефицитными, накладные расходы на остальную часть сети позволяли глобальную маршрутизацию этих префиксов, а не заставляли все быть только на основе префиксов; было слишком много, и глобальная сеть изменилась только на поддержку префиксов. В действительности все еще могут существовать устаревшие сети, которые используют несмежные маски внутри себя (многие IGP поддерживают это, тем не менее). Но когда такая сеть подключается к Интернету, у нее появляется один префикс, охватывающий все из них, который он рекламирует в BGP. И, конечно, EGP (предшественник BGP) поддерживает только классовую адресацию.

Я знаю нескольких игроков с оригинальными сетями класса А, которые использовали несмежные маски внутри сети по тем или иным причинам. Я просто не знаю, кто-нибудь из них все еще это делает. Многие из них даже не выходят. ARPAnet имел внутреннюю маску 255.0.0.255 (IIRC).

КАРТА
источник
2
БРЕД КАКОЙ ТО. Это не имеет ничего общего с CIDR, или классами, или агрегацией. Маска сети ВСЕГДА была смежной.
Рики Бим
6
См. RFC 950 , например. На стр. 15 приведен пример с сетевой маской 255.255.255.88.
Росс Прессер
4
Я думаю, что страница 12 RFC 1519 на самом деле вредит вашему делу, поскольку единственное релевантное предложение звучит так: « Единственное невыполненное ограничение - это то, что маска должна оставаться смежной ». (Акцент мой) Так как маска подразумевается / принимается классом в классовой маршрутизации, и использовались только три смежные маски, а RFC на CIDR определяет смежные маски, кажется, что ваш ответ неправильный. Сообщение со списком FreeBSD для меня загадка.
Тодд Уилкокс
3
RFC замены 4632: tools.ietf.org/html/rfc4632 Обратите внимание, что нотация с косой чертой обсуждается и используется, и термин « длина префикса » встречается несколько раз, и ни один из них не имел бы никакого смысла, если бы несмежные маски были поддерживается. Из RFC 950 ясно, что в первые дни могли существовать системы, которые использовали несмежные маски, но поднятие этого вопроса не поможет спрашивающему понять, как в настоящее время работает TCP / IP, и может быть очень запутанным.
Тодд Уилкокс
3
Поскольку биты, которые идентифицируют подсеть, определяются битовой маской, они не должны быть смежными в адресе. Однако мы рекомендуем, чтобы биты подсети были смежными и располагались как наиболее значимые биты локального адреса . Хотя это не соответствует формулировке «СЛЕДУЕТ / ДОЛЖЕН», используемой сегодня, именно так все создали современные возможности подсетей. За 3 десятилетия работы в сети я никогда не сталкивался с технологиями, позволяющими создавать отдельные подсети.
Рикки Бим