Как работает подсети IPv4?

  

Это Канонический вопрос о подсети IPv4.

     

по теме:

     

Как работает подсетей и как вы это делаете вручную или в голове? Может ли кто-нибудь объяснить концептуально и с несколькими примерами? Ошибка сервера вызывает много вопросов о домашней задаче подсети, поэтому мы могли бы использовать ответ, чтобы указать на них на «Ошибка сервера».

  • Если у меня есть сеть, как мне понять как разделить его?
  • Если мне дана сетевая маска, как мне знать, что такое диапазон сети для это?
  • Иногда происходит слэш по числу, что это за число?
  • Иногда есть маска подсети, но и маску подстановки, они кажутся одинаковыми, но они разные?
  • Кто-то упомянул о знании бинарных данных для этого?
418 голосов | спросил 19 revs, 10 users 40%
Kyle Brandt
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

7 ответов


623

Существуют IP-подсети, позволяющие маршрутизаторам выбирать подходящие адресаты для пакетов. Вы можете использовать подсети IP для разбивки больших сетей по логическим причинам (брандмауэр и т. Д.) Или физическим потребностям (меньшие широковещательные домены и т. Д.).

Проще говоря, IP-маршрутизаторы используют IP-подсети для принятия решений о маршрутизации. Понимать, как эти решения работают, и вы можете понять, как планировать IP-подсети.

Подсчет до 1

Если вы уже свободно владеете двоичной (базой 2) записью, вы можете пропустить этот раздел.

Для тех из вас, кто остался: вам стыдно за то, что вы не владеете двоичной нотой!

Да, это может быть немного суровым. На самом деле, очень легко научиться считать в двоичном формате, а также для изучения ярлыков для преобразования двоичных файлов в десятичные и обратно. Вы действительно должны знать, как это сделать.

Подсчет в двоичном формате так прост, потому что вам нужно только знать, как считать 1!

Подумайте о «одометре» автомобиля, за исключением того, что в отличие от традиционного одометра каждая цифра может рассчитывать только до 1 от 0. Когда автомобиль свежий с завода, одометр считывает «00000000».

Когда вы проехали свою первую милю, одометр читает «00000001». Пока что так хорошо.

Когда вы проехали свою вторую милю, первая цифра одометра возвращается назад к «0» (так как это максимальное значение «1»), а вторая цифра одометра переходит на «1», что делает одометр прочитал «00000010». Это похоже на цифру 10 в десятичной нотации, но на самом деле это 2 (количество миль, которые вы довели до сих пор) в двоичной нотации.

Когда вы проехали третью милю, одометр читает «00000011», так как первая цифра одометра снова поворачивается. Число «11» в двоичной записи совпадает с десятичным числом 3.

Наконец, когда вы проехали четвертую милю, обе цифры (которые читали «1» в конце третьей мили) откат назад до нулевой позиции, а 3-я цифра сворачивается в положение «1», давая нам «00000100». Это двоичное представление десятичного числа 4.

Вы можете запомнить все это, если хотите, но вам действительно нужно понять , как маленький одометр «перекатывается», поскольку число, которое он подсчитывает, становится больше. Это точно так же, как традиционная операция одинарного десятичного одометра, за исключением того, что каждая цифра может быть только «0» или «1» на нашем вымышленном «двоичном одометре».

Чтобы преобразовать десятичное число в двоичный код, вы можете перевернуть одометр вперед, отметьте галочкой, подсчитав вслух, пока вы не прокатили его несколько раз, равное десятичному числу, которое вы хотите преобразовать в двоичный. Независимо от того, что отображается на одометре после того, как все, что couting и roll, будут двоичным представлением десятичного числа, которое вы подсчитали до.

Так как вы понимаете, как продвигается одометр вперед, вы также поймете, как он возвращается назад. Чтобы преобразовать двоичный номер, отображаемый на одометре, до десятичного числа, вы можете прокручивать одометр обратно по одному тику за раз, считая вслух, пока одометр не прочитает «00000000». Когда все это подсчет и кастинг завершены, последнее число, которое вы произносите вслух, будет десятичным представлением двоичного числа, с которого начинался одометр.

Преобразование значений между двоичным и десятичным способами будет very утомительным. Вы могли бы это сделать, но это было бы не очень эффективно. Легче изучить небольшой алгоритм, чтобы сделать это быстрее.

Быстрый переход: каждая цифра в двоичном числе называется «бит». Это «b» из «двоичного» и «это» из «цифры». Бит - двоичная цифра.

Преобразование двоичного числа, например, «1101011» в десятичный, - это простой процесс с удобным небольшим алгоритмом.

Начните с подсчета количества бит в двоичном номере. В этом случае есть 7. Сделайте 7 разделов на листе бумаги (на ваш взгляд, в текстовом файле и т. Д.) И начните заполнять их справа налево. В самый правый слот введите число «1», потому что мы всегда будем начинать с «1». В следующем слоте слева введите двойное значение в слоте справа (так, «2» в следующем, «4» в следующем) и продолжайте, пока все слоты не будут заполнены. (В конце концов вы запомните эти цифры, которые имеют силу 2, так как вы делаете это все больше и больше. Я в порядке до 131 072 в голове, но после этого мне обычно нужен калькулятор или бумага).

Итак, у вас должно быть следующее на вашей бумаге в ваших маленьких слотах.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |

Транскрибируйте биты из двоичного числа ниже слотов, например:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0         1         0         1         1

Теперь добавьте некоторые символы и вычислите ответ на проблему:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
       +          +          +         +         +         +         =

Выполняя всю математику, вы должны придумать:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
 64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

Вот и все. «1101011» в десятичном формате - 107. Это просто шаги и легкая математика.

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

Скажем, что мы хотим преобразовать число 218 в двоичное. Начиная справа от листа бумаги, напишите номер «1». Слева удвоить это значение (так, «2») и продолжить движение влево от бумаги, удвоив последнее значение. Если число, которое вы собираетесь написать, больше, чем число, которое преобразует стоп-запись. в противном случае продолжайте удваивать предыдущее число и писать. (Преобразование большого числа, например 34,157,216,092, в двоичное с использованием этого алгоритма может быть немного утомительным, но это, безусловно, возможно.)

Итак, вы должны иметь на своем документе:

 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

Вы перестали записывать числа на 128, потому что удвоение 128, которое даст вам 256, будет большим, чем число, преобразованное (218).

Начиная с самого левого числа, напишите над ним «218» (128) и спросите себя: «218 больше или равно 128?» Если ответ «да», поцарапайте «1» ниже «128». Выше «64» напишите результат 218 минус 128 (90).

Глядя на «64», спросите себя: «На 90 больше или равно 64?» Это значит, что вы должны написать «1» ниже «64», затем вычесть 64 из 90 и записать это выше «32» (26).

Когда вы доберетесь до «32», вы обнаружите, что 32 не больше или равно 26. В этом случае напишите «0» ниже «32», скопируйте число (26) сверху 32 " до «16», а затем продолжайте задавать себе тот же вопрос с остальными номерами.

Когда все будет готово, вы должны:

 218         90         26         26        10         2         2         0
 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
   1          1          0          1         1         0         1         0

Цифры наверху - это только заметки, используемые в вычислениях и не имеющие большого значения для нас. Внизу, однако, вы видите двоичное число «11011010». Разумеется, 218, преобразованный в двоичный, - «11011010».

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

Разделение адресов

Подумайте о IP-маршрутизации, как доставка пиццы.

Когда вас попросят доставить пиццу на «123 Main Street», вам очень просто, как человек, вы хотите пойти в здание с номером «123» на улице «Main Street». Легко понять, что вам нужно отправиться в 100-блок Main Street, потому что номер здания составляет от 100 до 199, а большинство городских кварталов пронумерованы сотнями. Вы «просто знаете», как разделить адрес вверх.

Маршрутизаторы поставляют пакеты, а не пиццу. Их работа такая же, как у пиццы: чтобы получить груз (пакеты) как можно ближе к месту назначения. Маршрутизатор подключается к двум или более IP-подсетям (чтобы быть полезным). Маршрутизатор должен проверять IP-адреса назначения пакетов и разбивать адреса получателей на свои компоненты «имя улицы» и «номер здания», как и драйвер для пиццы, для принятия решений о доставке.

Каждый компьютер (или «хост») в IP-сети настроен с уникальным IP-адресом и маской подсети. Этот IP-адрес можно разделить на компонент «номер здания» (например, «123» в примере выше), называемый «идентификатор хоста» и компонент «название улицы» (например, «Main Street» в приведенном выше примере), называемый «ID сети». Для наших человеческих глаз легко увидеть, где номер здания и название улицы находятся на «123 Main Street», но сложнее увидеть это разделение в «10.13.216.41 с маской подсети 255.255.192.0».

IP-маршрутизаторы «просто знают», как разделить IP-адреса на эти компоненты, чтобы принимать решения о маршрутизации. Поскольку понимание того, как IP-пакеты маршрутизируются, зависит от понимания этого процесса, нам также нужно знать, как разбить IP-адреса. К счастью, извлечение идентификатора хоста и идентификатора сети из IP-адреса и маски подсети на самом деле довольно просто.

Начните с написания IP-адреса в двоичном формате (используйте калькулятор, если вы еще не научились делать это в своей голове, но запишите заметку о том, как это сделать - это действительно, очень просто и впечатляет противоположный секс на вечеринках):

      10.      13.     216.      41
00001010.00001101.11011000.00101001

Запишите маску подсети вдвоичный:

     255.     255.     192.       0
11111111.11111111.11000000.00000000

Написанный бок о бок, вы можете видеть, что точка в маске подсети, где «1» останавливается «выстраивается в линию» до точки в IP-адресе. Это то, что идентификатор сети и идентификатор хоста разделены. Итак, в этом случае:

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

Маршрутизаторы используют маску подсети для «маскировки» битов, охватываемых 1 в IP-адресе (заменяя биты, которые не маскируются «0»), чтобы извлечь идентификатор сети:

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

Аналогично, используя маску подсети для «маскировки» битов, охватываемых 0 в IP-адресе (заменяя биты, которые не «маскируются» с 0 снова), маршрутизатор может извлечь идентификатор хоста:

       0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

В наших глазах человека не так легко увидеть «разрыв» между идентификатором сети и идентификатором хоста, поскольку он находится между «номером здания» и «именем улицы» на физических адресах во время доставки пиццы, но конечная эффект тот же.

Теперь, когда вы можете разделить IP-адреса и маски подсети на идентификаторы хостов и сетевых идентификаторов, вы можете маршрутизировать IP так же, как это делает маршрутизатор.

Подробнее Терминология

Вы увидите маски подсети, написанные по всему Интернету, и в течение всего остального этого ответа, как (IP /number). Эта нотация известна как «Бесклассовая междоменная маршрутизация» (CIDR). «255.255.255.0» состоит из 24 бит 1 в начале, и быстрее записать это как «/24», чем «255.255.255.0». Чтобы преобразовать номер CIDR (например, «/16») в маска подсети с десятичной запятой, просто запишите это число 1, разделите на группы по 8 бит и преобразуйте их в десятичные. (Например, «A /16» «255.255.0.0»).

Вернувшись в «старые дни», маски подсети не были указаны, а были получены путем поиска определенных битов IP-адреса. Например, у IP-адреса, начинающегося с 0 - 127, была подразумеваемая маска подсети 255.0.0.0 (называемая IP-адресом класса A).

Эти подразумеваемые маски подсети сегодня не используются, и я больше не рекомендую их узнавать, если у вас нет несчастья иметь дело с очень старым оборудованием или старыми протоколами (например, RIPv1), которые не поддерживают бесклассовую IP-адресацию. Я не буду упоминать эти «классы» адресов дальше, потому что сегодня это неприменимо и может ввести в заблуждение.

В некоторых устройствах используется обозначение подстановочных масок. «Маска подстановочных знаков» - это не что иное, как маска подсети со всеми 0, где будут 1, а 1 - там, где будет 0. «Маска подстановочного знака» в файле /26:

 11111111.11111111.11111111.11000000 - /26 subnet mask
 00000000.00000000.00000000.00111111 - /26 "wildcard mask"

Обычно вы видите «маски подстановочных знаков», используемые для сопоставления идентификаторов хостов в списках управления доступом или правилах брандмауэра. Мы не будем здесь обсуждать их здесь.

Как работает маршрутизатор

Как я уже говорил, IP-маршрутизаторы выполняют аналогичную работу с драйвером доставки пиццы в том, что им нужно доставить свой груз (пакеты) до места назначения. При представлении пакета, привязанного к адресу 192.168.10.2, IP-маршрутизатор должен определить, какой из его сетевых интерфейсов лучше всего подходит для этого пакета ближе к его адресату.

Предположим, что вы IP-маршрутизатор, и у вас есть подключенные к вам интерфейсы:

  • Ethernet0 - 192.168.20.1, маска подсети /24
  • Ethernet1 - 192.168.10.1, маска подсети /24

Если вы получаете пакет для доставки с адресом назначения «192.168.10.2», довольно легко сказать (с вашими человеческими глазами), что пакет должен быть отправлен через интерфейс Ethernet1, поскольку адрес интерфейса Ethernet1 соответствует адрес назначения пакета. Все компьютеры, подключенные к интерфейсу Ethernet1, будут иметь IP-адреса, начинающиеся с «192.168.10.», Поскольку идентификатор сети IP-адреса, назначенного вашему интерфейсу Ethernet1, «192.168.10.0».

Для маршрутизатора этот процесс выбора маршрута выполняется путем построения таблицы маршрутизации и консультаций с таблицей каждый раз, когда пакет должен быть доставлен. Таблица маршрутизации содержит идентификаторы сетевого ID и назначения. Вы уже знаете, как получить идентификатор сети из IP-адреса и маски подсети, поэтому вы на пути к созданию таблицы маршрутизации. Вот наша таблица маршрутизации для этого маршрутизатора:

  • Идентификатор сети: 192.168.20.0 (11000000.10101000.00010100.00000000) - 24-разрядная маска подсети -Интерфейс Ethernet0
  • Идентификатор сети: 192.168.10.0 (11000000.10101000.00001010.00000000) - 24-битная маска подсети - Интерфейс Ethernet1

Для нашей входящей пакетной привязки для «192.168.10.2» нам нужно только преобразовать адрес этого пакета в двоичный файл (как люди - маршрутизатор получает его как двоичный с провода для начала) и пытается сопоставить его с каждым адресом в нашей таблице маршрутизации (до количества бит в маске подсети), пока мы не сопоставим запись.

  • Входящий пакет назначения: 11000000.10101000.00001010.00000010

Сравнивая это с записями в нашей таблице маршрутизации:

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

Запись для Ethernet0 соответствует первому 19-битовому штрафу, но затем прекращает сопоставление. Это означает, что это не правильный интерфейс назначения. Вы можете видеть, что интерфейс Ethernet1 соответствует 24 битам адреса назначения. Ах, ха! Пакет привязан для интерфейса Ethernet1.

В реальном маршрутизаторе таблица маршрутизации сортируется таким образом, что самые длинные маски подсети проверяются для совпадений в первую очередь (то есть наиболее конкретные маршруты) и численно, так что, как только будет найдено совпадение, пакет могут быть маршрутизированы, и дальнейшие попытки сопоставления не нужны (это означает, что 192.168.10.0 будет указан первым, а 192.168.20.0 никогда не было бы проверено). Здесь мы немного упрощаем это. Необычные структуры данных и алгоритмы делают более быстрыми IP-маршрутизаторы, но простые алгоритмы будут давать одинаковые результаты.

Статические маршруты

До этого момента мы говорили о нашем гипотетическом маршрутизаторе как о наличии сетей, напрямую связанных с ним. Очевидно, это не так, как мир действительно работает. В аналогии с пиццей иногда водитель больше не допускается к зданию, чем к стойке регистрации, и ему нужно передать пиццу кому-то еще для доставки конечному получателю (приостановите свое недоверие и несите меня, пока Я растягиваю свою аналогию, пожалуйста).

Давайте начнем с вызова нашего маршрутизатора из более ранних примеров «Router A». Вы уже знаете таблицу маршрутизации RouterA как:

  • Идентификатор сети: 192.168.20.0 (11000000.10101000.00010100.00000000) - Маска подсети /24 - Интерфейс RouterA-Ethernet0
  • Идентификатор сети: 192.168.10.0 (11000000.10101000.00001010.00000000) - Маска подсети /24 - Интерфейс RouterA-Ethernet1

Предположим, что есть еще один маршрутизатор «Router B» с IP-адресами 192.168.10.254/24 и 192.168.30.1/24, назначенными его интерфейсам Ethernet0 и Ethernet1. Он имеет следующую таблицу маршрутизации:

  • Идентификатор сети: 192.168.10.0 (11000000.10101000.00001010.00000000) - Маска подсети /24 - Интерфейс RouterB-Ethernet0
  • Идентификатор сети: 192.168.30.0 (11000000.10101000.00011110.00000000) - Маска подсети /24 - Интерфейс RouterB-Ethernet1

В хорошем ASCII-искусстве сеть выглядит следующим образом:

               Interface                      Interface
               Ethernet1                      Ethernet1
               192.168.10.1/24                192.168.30.254/24
     __________  V                  __________  V
    |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
  ^ |__________|                 ^ |__________|
  ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

Вы можете видеть, что маршрутизатор B знает, как «добраться до» сети, 192.168.30.0/24, что Router A ничего не знает.

Предположим, что ПК с IP-адресом 192.168.20.13, подключенным к сети, подключенной к интерфейсу Ethernet0 маршрутизатора A, отправляет пакет в Router A для доставки. Наш гипотетический пакет предназначен для IP-адреса 192.168.30.46, который является устройством, подключенным к сети, подключенной к интерфейсу Ethernet1 маршрутизатора B.

С приведенной выше таблицей маршрутизации ни одна запись в таблице маршрутизации маршрутизатора A не соответствует адресату 192.168.30.46, поэтому маршрутизатор A вернет пакет на отправляющий ПК с сообщением «Целевая сеть недоступна».

Чтобы сделать Router «осведомленным» о существовании сети 192.168.30.0/24, мы добавим следующую запись в таблицу маршрутизации на маршрутизаторе A:

  • Идентификатор сети: 192.168.30.0 (11000000.10101000.00011110.00000000) - маска подсети /24 - Доступна через 192.168.10.254

Таким образом, маршрутизатор A имеет запись таблицы маршрутизации, которая соответствует адресу 192.168.30.46 нашего примерного пакета. Этазапись в таблице маршрутизации эффективно говорит: «Если вы получите пакет, привязанный к 192.168.30.0/24, отправьте его на 192.168.10.254, потому что он знает, как с этим справиться». Это аналогичная операция «раздача пиццы на столе», о которой я упоминал ранее, - передача пакета кому-то еще, кто знает, как приблизить его к месту назначения.

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

Если маршрутизатор B хочет доставлять пакеты в сеть 255.255.255.0 сети подсети 192.168.20.0, ему также потребуется запись в своей таблице маршрутизации:

  • Идентификатор сети: 192.168.20.0 (11000000.10101000.00010100.00000000) - маска подсети /24 - Доступна через: 192.168.10.1 (IP-адрес маршрутизатора A в сети 192.168.10.0).

Это создаст путь для доставки между сетью 192.168.30.0/24 и сетью 192.168.20.0/24 через сеть 192.168.10.0/24 между этими маршрутизаторами.

Вы всегда должны быть уверены, что маршрутизаторы с обеих сторон такой «интерстициальной сети» имеют запись таблицы маршрутизации для сети «дальнего конца». Если в нашем примере маршрутизатор B не имел записи таблицы маршрутизации для сети «дальнего конца» 192.168.20.0/24, подключенной к маршрутизатору. Наш гипотетический пакет с ПК по адресу 192.168.20.13 мог бы добраться до целевого устройства в 192.168.30.46, но любой ответ, который 192.168.30.46 попытался отправить обратно, будет возвращен маршрутизатором B как «Целевая сеть недоступна». Односторонняя связь обычно нежелательна. Всегда будьте уверены, что вы думаете о трафике, проходящем в обоих направлениях , когда вы думаете о связи в компьютерных сетях.

Вы можете получить много пробега из статических маршрутов. Динамические протоколы маршрутизации, такие как EIGRP, RIP и т. Д., На самом деле не являются чем-то большим, чем способ для маршрутизаторов обмениваться информацией о маршрутизации между собой, что фактически может быть настроено на статические маршруты. Однако одним большим преимуществом использования динамических протоколов маршрутизации по статическим маршрутам является то, что динамические протоколы маршрутизации могут динамически изменять таблицу маршрутизации на основе сетевых условий (использование полосы пропускания, интерфейс «вниз» и т. Д.) И , как таковой, использование протокола динамической маршрутизации может привести к конфигурации, которая «маршрутизирует» сбои или узкие места в сетевой инфраструктуре. (Тем не менее, динамические протоколы маршрутизации WAY выходят за рамки этого ответа.)

Вы не можете добраться отсюда

В случае нашего примера Router A, что происходит, когда пакет, привязанный к «172.16.31.92», входит?

Глядя на маршрутизатор Таблица маршрутизации, ни целевой интерфейс, ни статический маршрут не совпадают с первыми 24 битами 172.18.31.92 (это 10101100.00010000.00011111.01011100, BTW).

Как мы уже знаем, маршрутизатор A вернет пакет отправителю через сообщение «Недоступная сеть назначения».

Скажите, что есть еще один маршрутизатор (Router C), расположенный по адресу «192.168.20.254». Маршрутизатор C имеет подключение к Интернету!

                              Interface                      Interface                      Interface
                              Ethernet1                      Ethernet1                      Ethernet1
                              192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                    __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                 ^                              ^                              ^
               Interface                      Interface                      Interface
               Ethernet0                      Ethernet0                      Ethernet0
               10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

Было бы неплохо, если Router A мог маршрутизировать пакеты, которые не соответствуют локальному интерфейсу до Router C, чтобы Router C мог отправлять их в Интернет. Введите маршрут «по умолчанию».

Добавьте запись в конце нашей таблицы маршрутизации следующим образом:

  • Идентификатор сети: 0.0.0.0 (00000000.00000000.00000000.00000000) - маска подсети /0 - Маршрутизатор назначения: 192.168.20.254

Когда мы пытаемся сопоставить «172.16.31.92» с каждой записью в таблице маршрутизации, мы попадаем в эту новую запись. Сначала это немного озадачивает. Мы хотим сопоставить нулевые биты адреса назначения с ... подождите ... что? Согласование нулевых бит? Итак, мы не ищем ни одного матча. В этой записи таблицы маршрутизации говорится, в основном: «Если вы попадете сюда, вместо того, чтобы отказаться от доставки, отправьте пакет на маршрутизатор по адресу 192.168.20.254 и дайте ему обработать его».

192.168.20.254 - это пункт назначения, который мы DO знаем, как доставить пакет. когдастолкнувшись с пакетом, привязанным к месту назначения, для которого у нас нет конкретной записи таблицы маршрутизации, эта запись «по умолчанию» всегда будет соответствовать (поскольку она соответствует нулевым битам адреса назначения) и дает нам «последнее место», которое мы можем отправить пакеты для доставки. Иногда вы слышите шлюз по умолчанию, называемый «шлюзом последней инстанции».

Для того, чтобы маршрут по умолчанию был эффективен, он должен ссылаться на маршрутизатор, доступный с помощью других записей в таблице маршрутизации. Если вы попытались указать шлюз по умолчанию 192.168.50.254 в Router A, например, доставка на такой шлюз по умолчанию не удалась. 192.168.50.254 не является адресом, который Router A знает, как доставлять пакеты для использования любого из других маршрутов в своей таблице маршрутизации, поэтому такой адрес будет неэффективным в качестве шлюза по умолчанию. Это можно сформулировать кратко: шлюз по умолчанию должен быть установлен на адрес, который уже доступен, используя другой маршрут в таблице маршрутизации.

Реальные маршрутизаторы обычно хранят шлюз по умолчанию в качестве последнего маршрута в своей таблице маршрутизации, так что он соответствует пакетам после того, как они не смогли сопоставить все другие записи в таблице.

Градостроительство и IP-маршрутизация

Прерывание IP-подсети в более мелкие подсети IP - это городское планирование. В городском планировании зонирование используется для адаптации к природным особенностям ландшафта (рек, озер и т. Д.), Для влияния на транспортные потоки между различными частями города и для разделения различных видов землепользования (промышленных, жилых и т. Д.), , IP-подсети действительно то же самое.

Существуют три основные причины, по которым вы будете подсеть сети:

  • Возможно, вам захочется общаться на разных непохожих средствах связи. Если у вас есть соединение T1 WAN между двумя зданиями, IP-маршрутизаторы могут быть размещены на концах этих соединений для облегчения связи через T1. Сети на каждом конце (и, возможно, «межстраничная» сеть на самом T1) будут назначены уникальным IP-подсетям, чтобы маршрутизаторы могли принимать решения о том, какой трафик должен быть отправлен по линии T1.

  • В сети Ethernet вы можете использовать подсети для ограничения объема широковещательного трафика в определенной части сети. Протоколы прикладного уровня используют широковещательные возможности Ethernet для очень полезных целей. По мере того, как вы получаете все больше и больше хостов, упакованных в одну и ту же сеть Ethernet, хотя процент широковещательного трафика на проводе (или в эфире, в беспроводном Ethernet) может увеличиться до такой степени, что создает проблемы для доставки не-широковещательного трафика. (В прежние дни широковещательный трафик мог перегружать ЦП хостов, заставляя их исследовать каждый широковещательный пакет. Это менее вероятно сегодня.) Чрезмерный трафик на коммутируемой сети Ethernet также может быть вызван «наводнением кадров в неизвестные адресаты». Это обусловлено тем, что коммутатор Ethernet не может отслеживать каждый пункт назначения в сети и является причиной, по которой коммутируемые сети Ethernet не могут масштабироваться до бесконечного числа хостов. Влияние наводнения кадров на неизвестные адресаты аналогично влиянию избыточного широковещательного трафика для целей подсети.

  • Вы можете «полировать» типы трафика, проходящего между различными группами хостов. Возможно, у вас есть серверные устройства печати, и вы только хотите, чтобы авторизованные серверы очереди печати отправляли задания на них. Ограничивая поток трафика, разрешенный для потока в подсеть устройства сервера печати, пользователи не могут настроить свои ПК на прямой разговор с устройствами сервера печати, чтобы обойти учет печати. Вы можете поместить устройства сервера печати в подсеть все для себя и создать правило в маршрутизаторе или брандмауэре, подключенном к этой подсети, для управления списком хостов, которому разрешено отправлять трафик на устройства сервера печати. (Как маршрутизаторы, так и брандмауэры обычно могут принимать решения о том, как или доставить пакет на основе исходных и целевых адресов пакета. Брандмауэры, как правило, являются подвидом маршрутизатора с навязчивой личностью. Они могут быть очень, очень обеспокоены полезная нагрузка пакетов, тогда как маршрутизаторы обычно игнорируют полезную нагрузку и просто доставляют пакеты.)

При планировании города вы можете планировать, как улицы пересекаются друг с другом, и могут использовать поворотные, односторонние и тупиковые улицы, чтобы влиять на потоки трафика. Вы можете захотеть, чтобы Main Street составляла 30 блоков, каждый из которых имел до 99 зданий каждый. Планировать нумерацию улиц довольно легко, так что каждый блок на главной улице имеет ряд номеров улиц, увеличивающихся на 100 для каждого блока. Очень легко понять, что должно означать «начальный номер» в каждом последующем блоке.

При планировании IP-подсетей вы занимаетесь построением правильного количества подсетей (улиц) с правильным количеством доступных идентификаторов хоста (номерами зданий) и использованием маршрутизаторов для подключения подсетей друг к другу (пересечения). Правила о разрешенных адресах источника и получателя, указанных вмаршрутизаторы могут дополнительно контролировать поток трафика. Брандмауэры могут действовать как навязчивые полицейские.

Для целей этого ответа создание наших подсетей является нашей главной проблемой. Вместо того, чтобы работать в десятичной форме, как и с городским планированием, вы работаете в двоичном формате, чтобы описывать границы каждой подсети.

Продолжение дальше: Как работает подсети IPv4?

(Да ... мы достигли максимального размера ответа (30000 символов).)

ответил Evan Anderson 4 PM00000070000005131 2009, 19:51:51
134

Продолжение: Как работает подсетей IPv4?

Ваш интернет-провайдер дает вам сетевой ID 192.168.40.0/24 (11000000.10101000.00101000.00000000). Вы знаете, что вы хотите использовать устройство брандмауэра /маршрутизатора для ограничения связи между различными частями вашей сети (серверами, клиентскими компьютерами, сетевым оборудованием) и, таким образом, вы хотели бы разбить эти различные части вашей сети вверх в IP-подсети (которые затем может маршрутизировать устройство межсетевого экрана /маршрутизатора).

У вас есть:

  • 12 серверных компьютеров, но вы можете получить до 50% больше
  • 9 коммутаторов
  • 97 клиентских компьютеров, но вы можете получить больше

Каким образом можно разбить 192.168.40.0/24 на эти части?

Думая даже на две силы и работая с большим количеством возможных устройств, вы можете придумать:

  • 18 серверных компьютеров - следующая наибольшая мощность двух - 32
  • 9 переключателей - следующая наибольшая мощность двух - 16
  • 97 клиентских компьютеров. Следующая наибольшая мощность двух составляет 128

В данной подсети IP зарезервированы два зарезервированных адреса, которые нельзя использовать как допустимые IP-адреса устройства - адрес со всеми нулями в части идентификатора хоста и адрес со всеми в части идентификатора хоста. Таким образом, для любой заданной IP-подсети количество доступных хост-адресов равно двум величинам, равным 32 минус количество бит в маске подсети, минус 2. Итак, в случае 192.168.40.0/24 мы может видеть, что маска подсети имеет 24 бита. Это оставляет 8 бит доступными для идентификаторов хостов. Мы знаем, что от 2 до 8-й мощности 256 - это означает, что 256 возможных комбинаций бит вписываются в слот шириной 8 бит. Поскольку комбинации из этих 8 бит «11111111» и «00000000» недопустимы для идентификаторов хостов, это оставляет нам 254 возможных хоста, которые могут быть назначены в сети 192.168.40.0/24.

Из этих 254 хостов, похоже, мы можем поместиться на клиентские компьютеры, коммутаторы и серверные компьютеры в это пространство, верно? Попробуем.

У вас есть 8 бит маски подсети для «игры с» (остальные 8 бит IP-адреса 192.168.40.0/24, которые не покрываются маской подсети, предоставленной вашим интернет-провайдером). Мы должны разработать способ использования этих 8 бит для создания нескольких уникальных идентификаторов сети, которые могут размещать устройства выше.

Начните с самой большой сети - клиентских компьютеров. Вы знаете, что следующая большая мощность двух из числа возможных устройств равна 128. Число 128 в двоичном формате составляет «10000000». К счастью для нас, это вписывается в 8-битный слот, который у нас есть бесплатно (если это не так, это будет признаком того, что наша стартовая подсеть слишком мала, чтобы разместить все наши устройства).

Давайте возьмем наш идентификатор сети, предоставленный нашим интернет-провайдером, и добавим к нему один бит маски подсети, разбив его на две сети:

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.00000000 - Old subnet mask (/24)

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

Посмотрите, пока это не имеет смысла. Мы увеличили маску подсети на один бит в длину, заставив идентификатор сети покрыть один бит, который был бы использован для идентификатора хоста. Поскольку один бит может быть равен нулю или один, мы фактически разделили нашу сеть 192.168.40.0 на две сети. Первый допустимый IP-адрес в сети 192.168.40.0/25 будет первым идентификатором хоста с «1» в самом правом разряде:

11000000.10101000.00101000.00000001 - 192.168.40.1 - First valid host in the 192.168.40.0/25 network

Первый допустимый хост в сети 192.168.40.128 также будет первым идентификатором хоста с «1» в самом правом бите:

11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/25 network

Последний допустимый хост в каждой сети будет идентификатором хоста с каждым битом кроме , самым правильным битом которого установлено значение «1»:

11000000.10101000.00101000.01111110 - 192.168.40.126 - Last valid host in the 192.168.40.0/25 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.128/25 network

Таким образом, мы создали сеть, достаточно большую для хранения наших клиентских компьютеров, и вторую сеть, с помощью которой мы можем применить тот же принцип для разбивки на менее мелкие сети. Сделаем заметку:

  • Клиентские компьютеры - 192.168.40.0/25 - Действительные IP-адреса: 192.168.40.1 - 192.168.40.126

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

У нас есть 12 серверных компьютеров, но мы можем купить еще до 6. Давайте планируем 18, что оставляет нам следующую высшую степень 2 как 32. В двоичном формате 32 - это «100000», чтоимеет длину 6 бит. У нас есть 7 бит маски подсети, оставшихся в 192.168.40.128/25, поэтому у нас достаточно бит, чтобы продолжить «играть». Добавление еще одного бита маски подсети дает нам еще две сети:

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - Old subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/26 network
11000000.10101000.00101000.10111110 - 192.168.40.190 - Last valid host in the 192.168.40.128/26 network

11000000.10101000.00101000.11000000 - 192.168.40.192 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.11000001 - 192.168.40.193 - First valid host in the 192.168.40.192/26 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.192/26 network

Итак, теперь мы разделили 192.168.40.128/25 на две другие сети, каждая из которых имеет 26 бит маски подсети или всего 62 возможных идентификаторов хоста - 2 ^ (32 - 26) - 2 .

Это означает, что обе эти сети имеют достаточно адресов для наших серверов и коммутаторов! Давайте сделаем заметки:

  • Серверы - 192.168.40.128/26 - Действительные IP-адреса: 192.168.40.129 - 192.168.40.190
  • Коммутаторы - 192.168.40.192/26 - Действительные IP-адреса: 192.168.40.193 - 192.168.40.254

Этот метод называется маскировкой подсети переменной длины (VLSM) и, если он правильно применяется, заставляет «основные маршрутизаторы» иметь меньшие таблицы маршрутизации (посредством процесса, называемого «суммирование маршрута»). В случае нашего интернет-провайдера в этом примере они могут совершенно не знать о том, как мы подключили 192.168.40.0/24. Если их маршрутизатор имеет пакет, привязанный к 192.168.40.206 (один из наших коммутаторов), им нужно знать только, чтобы передать его нашему маршрутизатору (поскольку 192.168.40.206 соответствует идентификатору сети и маске подсети 192.168.40.0/24 в таблице маршрутизации маршрутизатора ), и наш маршрутизатор доставит его к месту назначения. Это позволяет нашим маршрутам подсети из своих таблиц маршрутизации. (Я упрощаю здесь, но вы получаете идею.)

Вы можете планировать очень географически большие сети таким же образом. Пока вы выполняете правильное «градостроительное планирование» (ожидая количество хостов в каждой подсети с некоторой точностью и вниманием к будущему), вы можете создать большую иерархию маршрутизации, которая на основных маршрутизаторах »суммирует «на очень небольшое количество маршрутов. Как мы видели выше, чем больше маршрутов, находящихся в таблице маршрутизации маршрутизатора, тем медленнее он выполняет свою работу. Разработка IP-сети с VLSM и сохранение небольших таблиц маршрутизации - это хорошая вещь (tm).

Нереализм примеров

Вымышленный мир в этом ответе, очевидно, вымышленный. Как правило, вы можете создавать подсети на современной коммутируемой сети Ethernet с большим количеством хостов, чем 254 (зависит от профиля трафика). Как отмечалось в комментариях, использование /24 сетей между маршрутизаторами несовместимо с Real Life (tm). Он делает для симпатичных примеров, но является пустой тратой адресного пространства. Как правило, a /30 или a /31 (см. http://www.faqs.org/rfcs/rfc3021.html для получения подробной информации о том, как /31 работа - они выходят за рамки этого ответа) сеть используется для ссылок, которые строго связаны между двумя маршрутизаторами.

ответил Evan Anderson 4 PM00000070000005131 2009, 19:51:51
71

Sub-плетение

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

Binary

Binary - это система подсчета базы 2. Состоит только из двух чисел (1 и 0). Подсчет продолжается таким образом.

1 = 001 ( 0 + 0 + 1 = 1)
2 = 010 ( 0 + 2 + 0 = 2)
3 = 011 ( 0 + 2 + 1 = 3)
4 = 100 ( 4 + 0 + 0 = 4)
5 = 101 ( 4 + 0 + 1 = 5)

Итак, если вы только представляете, что каждый 1 является держателем места для значения (все двоичные значения равны двум)

1     1     1     1     1 = 31
16  + 8  +  4  +  2  +  1 = 31

Итак ... 100000 = 32. И 10000000 = 128. И 11111111 = 255.

Когда я говорю: «У меня есть маска подсети 255.255.255.0», я действительно имею в виду: «У меня есть маска подсети 11111111.11111111.11111111.00000000». Мы используем подсети в качестве короткой руки.

Периоды в адресе, разделяйте каждые 8 ​​двоичных цифр (октет). Вот почему IPv4 известен как 32-битное (8 * 4) адресное пространство.

Почему подсеть?

IPv4-адреса (192.168.1.1) не хватает. Суб-сеть дает нам возможность увеличить количество доступных сетей (или хостов). Это по административным причинам и по техническим причинам.

Каждый IP-адрес разбивается на две отдельные части: сеть и хост. По умолчанию адрес класса C (192.168.1.1) использует первые 3 октета (192.168.1) для сетевой части адреса. и 4-й октет (.1) в качестве хост-части.

По умолчанию IP-адрес и маска подсети для адреса класса C выглядит следующим образом:

IP     192.168.1.1 
Subnet 255.255.255.0

В двоичном виде

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

Посмотрите на бинарный пример еще раз. Обратите внимание, как я сказал, что первые три октета используются для сети? Обратите внимание, как часть сети является единственной? Это все суб-сеттинг. Расширим.

Учитывая, что у меня есть один октет для моей части хоста (в приведенном выше примере). Я могу ТОЛЬКО когда-либо иметь 256 хостов (256 - максимальное значение октета, считая от 0). Но есть еще один небольшой трюк: вам нужно вычесть 2 адреса хоста из доступных (в настоящее время 256). Первый адрес в диапазоне будет для сети (192.168.1.0), а последним адресом в диапазоне будет широковещательная передача (192.168.1.255). Таким образом, у вас действительно есть 254 доступных адреса для хостов в одной сети.

Пример из практики

Скажем, я дал вам следующий лист бумаги.

Create 4 networks with 192.168.1.0/24.

Давайте посмотрим на это. Обозначение /24 называется записью CIDR. Вместо ссылки на 255.255.255.0 мы просто ссылаемся на биты, которые нам нужны для сети. В этом случае нам нужно 24 бита (3 * 8) с 32-битного адреса. Запись этого в двоичном формате

11111111.11111111.11111111.00000000 = 255.255.255.0
8bits   + 8bits  + 8bits  + 0bits   = 24bits

Далее мы знаем, что нам нужно выяснить, сколько подсетей нам нужно. Похож на 4. Так как нам нужно создать больше сетей (в настоящее время у нас есть только один), давайте перевернем несколько бит

11111111.11111111.11111111.00000000 = 255.255.255.0   = 1 Network OR /24
11111111.11111111.11111111.10000000 = 255.255.255.128 = 2 Networks OR /25
11111111.11111111.11111111.11000000 = 255.255.255.192 = 4 Networks (remember powers of 2!) OR /26

Теперь, когда мы решили, что /26, начнем выделять хосты. Немного простая математика:

32(bits) - 26(bits) = 6(bits) for host addresses.

У нас есть 6 бит для распределения в каждой сети для хостов. Помня, что нам нужно вычесть 2 для каждой сети.

h = host bits    
2^h - 2 = hosts available

2^6 - 2 = 62 hosts 

Finally we have 62 hosts in 4 networks, 192.168.1.0/26

Теперь нам нужно выяснить, куда идут хосты. Вернемся к двоичному!

11111111.11111111.11111111.00,000000 [the comma is the new network/hosts division]

Begin to calculate:

11000000.10101000.00000001.00,000000 = 192.168.1.0 [First IP = Network Adress]
11000000.10101000.00000001.00,000001 = 192.168.1.1 [First Host IP]
11000000.10101000.00000001.00,000010 = 192.168.1.2 [Second Host IP]
11000000.10101000.00000001.00,000011 = 192.168.1.3 [Third Host IP]

And so on ... until ...

11000000.10101000.00000001.00,111110 = 192.168.1.62 [Sixty Second Host IP]
11000000.10101000.00000001.00,111111 = 192.168.1.63 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.01,000000 = 192.168.1.64 [First IP = Network Address]
11000000.10101000.00000001.01,000001 = 192.168.1.65 [First Host IP]
11000000.10101000.00000001.01,000010 = 192.168.1.66 [Second Host IP]

And so on ... until ...

11000000.10101000.00000001.01,111110 = 192.168.1.126 [Sixty Second Host IP]
11000000.10101000.00000001.01,111111 = 192.168.1.127 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.10,000000 = 192.168.1.128 [First IP = Network Address]
11000000.10101000.00000001.10,000001 = 192.168.1.129 [First Host IP]

Etc ...

Таким образом вы можете рассчитать всю подсеть.

Дикие карты Маска дикой карты - это перевернутая маска подсети.

11111111.11111111.11111111.11000000 = 255.255.255.192 [Subnet]
00000000.00000000.00000000.00111111 = 0.0.0.63 [Wild Card]

Далее

Google для терминов «супер-netting» и «VLSM (маска подсети с переменной длиной)» для более сложных тем.

Теперь я вижу, что я слишком долго отвечал ... вздох

ответил Joseph Kern 4 PM00000070000003131 2009, 19:58:31
29

Краткий исторический урок: изначально одноадресные адреса IPv4 были разделены на 3 класса, каждая из которых имела связанную по умолчанию длину маски (называемую маской подсети)

  • Класс A: все, что находится в диапазоне 1.0.0.0 -> 127.255.255.255. Классная маска подсети 255.0.0.0 (/8 в нотации CIDR)
  • Класс B: все в диапазоне 128.0.0.0 -> 191.255.255.255. Классная маска подсети 255.255.0.0 (/16 в нотации CIDR)
  • Класс C: все в диапазоне 192.0.0.0 -> 223.255.255.255. Классная маска подсети 255.255.255.0 (/24 в нотации CIDR)

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

Однако, по мере роста сетей IP, стало ясно, что этот подход имеет свои проблемы. Назовите только три:

В классном мире все подсетей имели , чтобы иметь маску /8, /16 или /24. Это означало, что наименьшая подсеть, которую можно было сконфигурировать, была /24, что позволяло 254 адресам хостов (.0 и .255 зарезервировано как сетевой и широковещательный адреса соответственно). Это было чрезвычайно расточительно, особенно в отношении двухточечных соединений, к которым привязаны только два маршрутизатора.

Даже после того, как это ограничение было ослаблено, более ранние протоколы маршрутизации (например, RIPv1 ) не объявить длину маски, связанную с префиксом IP. В отсутствие конкретной маски он будет использовать либо маску непосредственно подключенного интерфейса в той же классной сети, либо вернуться к использованию классной маски. Например, если вы хотите использовать сеть 172.16.0.0 для ссылок между маршрутизаторами с /30 масками, все подсети от 172.16.0.0 - 172.16.255.255 должны иметь маску /30 (16384) подсети, каждый из которых имеет 2 используемых IP-адреса).

Таблицы маршрутизации интернет-маршрутизаторов стали занимать все больше памяти; это было /известно как «взрыв таблицы маршрутизации». Например, если у провайдера было 16 непрерывных /24 сетей, им нужно было бы рекламировать все 16 префиксов, а не одну сводку, охватывающую весь диапазон.

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

  1. Маски подсети с переменной длиной (VLSM)
  2. CIDR (бесклассовая междоменная маршрутизация)

VLSM означает способность протокола маршрутизации поддерживать разные маски подсети в пределах одной и той же классной сети. Например:

192.168.1.0/24

Можно разбить на:

192.168.1.0/25
192.168.1.128/26
192.168.1.192/27
192.168.1.224/27

Это позволило значительно более эффективно использовать адресное пространство; подсети могут быть правильно заданы для количества хостов /маршрутизаторов, которые будут прикреплены к ним.

CIDR принимает VLSM и расширяет его другим способом; в дополнение к разбиению одной классной сети на более мелкие подсети, CIDR позволяет агрегировать несколько классных сетей в единую сводку. Например, следующие сети класса B (/16):

172.16.0.0/16
172.17.0.0/16
172.18.0.0/16
172.19.0.0/16

Можно агрегировать /суммировать с помощью одного префикса:

172.16.0.0/14

В терминах подсети: маска подсети имеет длину 32 бита. Длина маски указывает, сколько бит идентифицирует сетевую часть адреса. Например:

10.1.1.0/24
  • Классная маска подсети - /8
  • Маска подсети - /24
  • 16 бит (24-8) были «заимствованы» для использования подсети.

Это означает, что, предполагая, что вся сеть 10.0.0.0/8 подсети в /24s, в этом диапазоне будет 65536 (2 ^ 16) подсети. (Предполагается, что используемая вами платформа поддерживает номера подсети от 0 до 255. См. IP-подсеть Cisco-zero).

Осталось 8 бит в «хост-части» адреса. Это означает, что имеется 256 доступных IP-адресов (2 ^ 8), из которых 2 зарезервированы (10.1.1.0 - это сетевой адрес, 10.1.1.255 - адрес широковещательной передачи, подсети). Это оставляет 254 доступных IP-адреса в этой подсети. ((2 ^ 8) - 2)

ответил Murali Suriar 4 PM00000070000002031 2009, 19:53:20
6

Диапазоны сети: на сети всегда ссылаются 2 номера: один для определения сети, а другой - для определения того, какой компьютер (или хост) находится в этой сети. Поскольку каждый nortwork адрес имеет длину 32 бита, оба числа должны соответствовать этим 32 битам.

Нумерация сети важна, так как ее ICANN передает, когда вы запрашиваете сетевой диапазон IP. Если бы у нас его не было, никто не смог бы объяснить разницу между моей сетью и AT & Ts. Поэтому, пока эти числа должны быть уникальными, никто не хочет назначать номера хостам, которые находятся в моей сети. Следовательно, разделение - первая часть управляется сетевыми людьми, вторая часть - все мои, чтобы предоставить любые машины, которые я хочу.

Номер сети не фиксируется на определенном количестве бит - например, если у меня было только 200 машин для управления, я был бы доволен номером сети, который использовал 24 бита, оставив меня только с 8 бит для меня - этого достаточно для 255 хостов. Поскольку номер сети использует 24 бита, у нас может быть много их, что означает, что у многих людей могут быть свои собственные сети.

В прошлом это называлось сетью класса C. (класс B использовал 16 бит для номера сети, а в классе A использовалось 8 бит, поэтому существует только несколько сетей класса A).

В настоящее время это соглашение об именах вышло из моды. Он был заменен концепцией CIDR. CIDR явно помещает количество бит для ваших хостов после косой черты. Поэтому мой пример выше (класс C) теперь называется CIDR /24.

Это дает нам немного большую гибкость, раньше, если бы у меня было 300 хостов для управления, мне нужна сеть класса B! Теперь я могу получить /23 CIDR, поэтому у меня есть 9 бит для меня и 23 бита для номера сети. Возможно, у ICANN нет таких сетей, но если у меня есть внутренний или я арендую частичную сеть у интернет-провайдера, это упростит управление, тем более, что всем своим клиентам может быть предоставлен /29 (оставляя меня. 3 бита или максимум 8 машин), что позволяет большему количеству людей иметь собственный небольшой фрагмент доступных IP-адресов. Пока мы не получим IPv6, это очень важно.


Однако ... в то время как я знаю, что CIDR эквивалентен старой сети класса C, а a /16 - класс B, а a /8 - класс A ... Я все еще в тупике, пытаясь вычислить /22 в моей голове. К счастью, есть инструменты, которые делают это для меня:)

Однако - если вы знаете, что a /24 - 8 бит для хостов (и 24 бита для сети), то я знаю, что a /23 дает мне дополнительный бит, который удваивает количество хостов.

ответил gbjbaanb 4 PM00000070000002631 2009, 19:12:26
3

В то время как вышеописанное (извините, TL; DR), подсчет подсети все еще вызывает много сетевых администраторов. На самом деле очень простой способ сделать подсчет подсети, вы можете сделать большую часть этого в своей голове, и вам очень мало нужно запоминать. Для большинства приложений даже не нужно понимать двоичное представление, хотя оно полезно для полного понимания подсетей. Здесь я буду обсуждать только IPv4; IPv6 выходит за рамки этого обсуждения.

Запомните это:

Есть три ключевых момента, которые нужно запомнить: все подсети основаны на степенях двух, и есть два ключевых номера: 256 и 32. Подробнее об этом позже.

Сначала давайте посмотрим на таблицу, содержащую полномочия 2:

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

Вычисление степеней 2 легко: каждое целое увеличение мощности удваивает результат. 1 + 1 = 2, 2 + 2 = 4, 4 + 4 = 8, 8 + 8 = 16 и т. Д. Общее количество адресов в подсети должно всегда иметь значение 2 .

Поскольку каждый октет подсети IPv4 достигает 256, 256 является очень важным числом и составляет основу для остальной части математики.

Определение размера подсети

Мы начнем с простого вопроса: «сколько адресов в подсети, если маска 255.255.255.248?» Мы будем игнорировать первые три октета и посмотреть на последние. Вот как это легко: вычесть 248 из 256. 256 минус 248 равно 8. Доступно 8 адресов (включая сетевые и широковещательные адреса). Обратное также работает: «Если я хочу иметь подсеть с 16 адресами, какова будет маска подсети?» 256 минус 16 равно 240. Маска подсети будет 255.255.255.248.

Теперь, если мы хотим выйти за пределы 256 адресов (исторически, «класс C»), он становится немного сложнее: если наш последний октет равен 0, а наш третий октет, скажем, 240, (255.255. 240.0), то мы делаем математику на третьем октете и обнаруживаем, что будет 16 адресов. Поэтому мы умножаем 16 на 256 (количество адресов в последнем октете), чтобы получить 4096. Если оба последних двух октета равны 0 (например, 255.240.0.0), то мы берем результат вычитания из второго октета (мы снова будем говорить, что это 16), умножаем, но 256 (адреса в третьем октете), умножаем снова на 256 (адреса в последнем октете), чтобы получить 1 048 576 адресов. Легко! (ОК, поэтому обратное несколько сложнее. Если мы хотим подсеть с 1 048 576 адресами, мы должны будем разделить это число на 256 пару раз, чтобы получить число, которое мы можем вычесть из 256.)

Сетевой адрес

Теперь, когда мы знаем, как вычислить маску подсети, как мы выясним, что такое сетевой адрес? Это легко: это всегда кратное количеству адресов в нашей подсети. Поэтому, если у нас есть 16 адресов в нашей подсети, возможные сетевые адреса будут равны 0, 16, 32, 48, 64 и т. Д. До 240. (Обратите внимание, что 0 является действительным кратным любого числа, так как любое число, умноженное на 0 равно 0.)

И, конечно, широковещательный адрес будет последним адресом в области. Итак, если у нас есть 16 адресов в нашей подсети, и мы выбрали сетевой адрес 10.3.54.64, широковещательный адрес будет (64 + 16-1 = 79) 10.3.54.79.

Обозначение CIDR

Итак, как насчет обозначений CIDR? Как перевести это в маску подсети в стиле IPv4 и из нее?

Помните наши силы двух? Итак, теперь у нас есть еще один номер ключа, который нужно помнить, помимо 256: 32. Помните, что в CIDR-нотации описывается количество значимых бит в адресе IPv4, а также 32 бита в адресе IPv4, 8 для каждого октета. Поэтому, если у нас есть маска подсети 255.255.255.240, то есть 16 адресов. Если мы посмотрим на нашу таблицу «полномочий 2» выше, мы увидим, что 16 равна двум-четвертым степеням (2 ^ 4). Таким образом, мы вычитаем, что количество мощности - 4 - от 32 и получаем 28. Наша нотация CIDR для маски подсети 255.255.255.240, наша нотация CIDR равна /28.

И если нам дается CIDR из /28, мы вычитаем, что (28) из 32, чтобы получить 4; поднять 2 до этой (4-й) мощности (2 ^ 4), чтобы получить 16; затем вычесть, что (16) от 256 до 240; или 255.255.255.240.

ответил gbjbaanb 4 PM00000070000002631 2009, 19:12:26
0

Я также считаю, что, по крайней мере, должно быть упоминание NAT, потому что они обычно используются в современных сетях вместо подсетей из-за исчерпания адреса IPv4, между прочим. (Кроме того, когда я впервые узнал о подсетях, я был очень смущен тем, как подсети связаны с сетями, созданными маршрутизаторами WiFi).

NAT (преобразование сетевых адресов) - это метод (обычно), используемый для создания частных сетей путем сопоставления одного адресного пространства (IP: порт) с другим. В основном это используется для создания частной сети с несколькими частными IP-адресами за одним общедоступным адресом, например, в маршрутизаторах Wifi, организациями (например, университетом или корпорацией), или иногда провайдерами.

Фактический перевод адресов выполняется прозрачно в узлах, поддерживающих NAT, обычно это маршрутизаторы. Это может быть множество форм: полный конус, ограничение по адресам, ограничение по портам и т. Д. Или их смесь, которая определяет, как можно инициировать соединения через узел.

Подробную информацию можно найти на Wikipedia , но, например, рассмотрите маршрутизатор Wifi с 2 подключенных к нему устройств. Открытый IP-адрес маршрутизатора 10.9.20.21/24, а IP-адрес устройств (частные IP-адреса): A: 192.168.0.2, B: 192.168.0.3, а маршрутизатор - R: 192.168.0.1. Таким образом, если A хочет подключиться к серверу S: 10.9.24.5/24, (который на самом деле находится в другой подсети w.r.t маршрутизатора здесь):

  1. A отправляет IP-пакет в R (который будет шлюзом по умолчанию) с исходным IP-адресом 192.168.0.2, src port (скажем) 14567 и IP-адреса назначения: 10.9.24.5 (Хотя порт фактически является частью заголовка TCP).
  2. Маршрутизатор (который поддерживает NAT) отображает порт 14567 на устройство A и изменяет источник в IP-пакете на 10.9.20.21 (который является публичным IP-адресом маршрутизатора). Это в отличие от описанной выше подсети, , где IP-пакеты на самом деле никогда не меняются .
  3. S получает серию пакетов TCP (с src IP: 10.9.20.21, src Port: 14567)) и отправлять пакеты ответов с этими значениями в поля назначения.
  4. R проверяет порт назначения, который является 14567, и пересылает пакет в A.
  5. A получает ответный пакет.

В приведенной выше ситуации, если B попытался открыть соединение на том же исходном порту (14567), он будет сопоставлен другому порту с помощью R (и порт в исходящем пакете изменен) перед отправкой на S. То есть, вместо IP-адреса будет также перенос портов.

Здесь можно отметить две вещи:

  1. В связи с этим преобразованием адресов часто невозможно инициировать подключение к устройствам в частной сети, не используя некоторые специальные методы.
  2. Ограничение общих TCP-соединений от одного и того же устройства на сервере (65536 = 2 ^ 16) теперь применимо ко всем устройствам за NAT в форме NAT, используемой выше.
ответил gbjbaanb 4 PM00000070000002631 2009, 19:12:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132