Як обчислюють номери префікса, мережі, підмережі та хоста?


97

Приклад:

IP: 128.42.5.4

У двійковій формі: 10000000 00101010 00000101 00000100

Підмережа: 255.255.248.0

Як ви могли визначити префікс, мережу, підмережу та номери хостів?

Відповіді:


164

Обчислення довжини мережі (також називається префіксом):

Перетворіть пунктирно-десяткове представлення мережевої маски у двійкове. Потім підрахуйте кількість суміжних 1 біт, починаючи з найбільш значущого біта першого октету (тобто лівої частини двійкового числа).

255.255.248.0   in binary: 11111111 11111111 11111000 00000000
                           -----------------------------------
                           I counted twenty-one 1s             -------> /21

Префікс 128.42.5.4 з мережевою маскою 255.255.248.0 становить / 21.

Розрахунок мережевої адреси:

Мережева адреса є логічним І відповідних бітів у бінарному поданні IP-адреси та маски мережі. Вирівняйте біти за обома адресами та виконайте логічне І на кожній парі відповідних бітів. Потім конвертуйте окремі октети результату назад у десяткові.

Логічна та істинна таблиця:

Логічний І

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
255.255.248.0   in binary: 11111111 11111111 11111000 00000000
                           ----------------------------------- [Logical AND]
                           10000000 00101010 00000000 00000000 ------> 128.42.0.0

Як бачимо, мережева адреса 128.42.5.4/21 становить 128.42.0.0

Розрахунок широкомовної адреси:

Електронна адреса перетворює всі біти хоста в 1s ...

Пам'ятайте, що наша IP-адреса у десятковій формі:

128.42.5.4      in binary: 10000000 00101010 00000101 00000100

Маска мережі:

255.255.248.0   in binary: 11111111 11111111 11111000 00000000

Це означає, що наші біти хоста є останніми 11 бітами IP-адреси, тому що ми знаходимо маску хоста шляхом перевертання мережевої маски:

Host bit mask            : 00000000 00000000 00000hhh hhhhhhhh

Щоб обчислити адресу широкомовної програми, ми змушуємо всі біти хоста бути 1s:

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
Host bit mask            : 00000000 00000000 00000hhh hhhhhhhh
                           ----------------------------------- [Force host bits]
                           10000000 00101010 00000111 11111111 ----> 128.42.7.255

Розрахунок підмереж:

Ви не надали достатньо інформації для розрахунку підмереж для цієї мережі; як правило, ви будуєте підмережі шляхом перерозподілу деяких бітів хоста як мережевих бітів для кожної підмережі. Багато разів не існує одного правильного способу підмережі блоку ... залежно від ваших обмежень, може існувати кілька дійсних способів підмережі блоку адрес.

Припустимо, ми розділимо 128.42.0.0/21 на 4 підмережі, які повинні містити щонайменше 100 хостів у кожній ...

підмережі

У цьому прикладі ми знаємо, що вам потрібно щонайменше префікс / 25, щоб містити 100 хостів; Я вибрав / 24, тому що він потрапляє на межу октету. Зауважте, що мережева адреса кожної підмережі позичає хости-біти з батьківського блоку мережі.

Пошук необхідної маски підмережі або маски мережі:

Звідки я зрозумів, що мені потрібно принаймні / 25 маскулярності на 100 господарів? Обчисліть префікс, підкріпивши кількість бітів хоста, необхідних для вмісту 100 хостів. Потрібно 7 хостів, щоб містити 100 хостів. Офіційно це обчислюється з:

Біт хоста = Журнал 2 (Кількість хостів) = Журнал 2 (100) = 6.643

Оскільки адреси IPv4 мають ширину 32 біти, а ми використовуємо біти хоста (тобто найменш значущі біти), просто відніміть 7 з 32, щоб обчислити мінімальний префікс підмережі для кожної підмережі ... 32 - 7 = 25.

Ледачий спосіб розбити 128.42.0.0/21 на чотири рівних підмережі:

Оскільки нам потрібно лише чотири підмережі з цілого блоку 128.42.0.0/21, ми могли б використовувати / 23 підмережі. Я вибрав / 23, тому що нам потрібні 4 підмережі ... тобто додаткові два біти додані до маски мережі.

Це однаково справедлива відповідь на обмеження, використовуючи / 23 підмережі 128.42.0.0/21 ...

підмережа, 2-й варіант

Обчислення номера хоста:

Це те, що ми вже зробили вище ... просто повторно використовуйте маску хоста з роботи, яку ми зробили, коли ми обчислили адресу широкомовної передачі 128.42.5.4/21 ... Цього разу я використаю замість 1s h, тому що нам потрібно знову виконати логічне І на мережевій адресі.

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
Host bit mask            : 00000000 00000000 00000111 11111111
                           ----------------------------------- [Logical AND]
                           00000000 00000000 00000101 00000100 -----> 0.0.5.4

Обчислення максимально можливої ​​кількості хостів у підмережі:

Щоб знайти максимальну кількість хостів, перегляньте кількість бінарних бітів у номері хосту вище. Найпростіший спосіб зробити це - відняти довжину мережевої маски від 32 (кількість бітів в IPv4-адресі). Це дає вам кількість бітів хоста в адресі. У цей момент ...

Максимальна кількість хостів = 2 ** (32 - довжина мережі_маска) - 2

Причина, яку ми віднімаємо вище 2, полягає в тому, що всі хости і всі нулі хостів зарезервовані. Загальний нуль хоста - це номер мережі; загальний номер хоста - це адреса широкомовної програми.

Використовуючи приклад підмережі 128.42.0.0/21 вище, кількість хостів становить ...

Максимальна кількість господарів = 2 ** (32 - 21) - 2 = 2048 - 2 = 2046

Пошук максимальної маски мережі (мінімальна маска хоста), яка містить дві IP-адреси:

Припустимо, хтось надасть нам дві IP-адреси і очікує, що ми знайдемо найдовшу мережеву маску, яка містить їх обох; наприклад, що робити:

  • 128.42.5.17
  • 128.42.5.67

Найпростіше зробити це перетворити як у двійковий, так і шукати найдовший рядок мережевих бітів з лівої сторони адреси.

128.42.5.17     in binary: 10000000 00101010 00000101 00010001
128.42.5.67     in binary: 10000000 00101010 00000101 01000011
                           ^                           ^     ^
                           |                           |     |
                           +--------- Network ---------+Host-+
                             (All bits are the same)    Bits

У цьому випадку максимальна маска мережі (мінімальна хост-маска) буде / 25

ПРИМІТКА. Якщо ви спробуєте почати з правого боку, не хитрість лише тому, що ви знайдете один відповідний стовпчик бітів; можуть бути неперевершені біти за межами цих збіжних бітів. Чесно кажучи, найбезпечніше, що потрібно зробити - це почати з лівого боку.


15

Відповідь вище вдало вражає ніготь на голові. Однак, коли я вперше розпочав свою роботу, мені знадобилося кілька різних прикладів з кількох джерел, щоб вона справді потрапила додому. Тому, якщо вас цікавлять інші приклади, я написав кілька публікацій у блозі на цю тему - http://www.oznetnerd.com/category/subnetting/

Адміністратори, якщо ця публікація вважається спамом, сміливо видаляйте її.

Редагувати: Згідно з пропозицією YLearn, я спробую захопити відповідні частини з частини 1 моєї серії, не вставляючи тут весь запис.

Давайте використаємо 195.70.16.159/30 як приклад.

Оскільки це / / 30, ми знаємо, що частина хоста буде в четвертому октеті. Перетворимо це у бінарне:

128 64 32 16  8  4 2 1
SN  SN SN SN SN SN H H
 1   0  0  1  1  1 1 1

Тепер, щоб дізнатись мережеву адресу, що ми все робимо, це разом додати біти SN, які мають під собою 1. (128 + 16 + 8 + 4 = 156).

Коли ви додасте цю 156 до перших трьох октетів адреси, нам залишається мережева адреса 195.70.16.156.

Тепер, як ми знаємо, що першою корисною адресою завжди є мережева адреса плюс одна, все, що нам потрібно зробити, - це виконати наступний розрахунок: (156 + 1 = 157).

Це дає нам першу корисну адресу 195.70.16.157.

Тепер давайте на хвилину пропустимо останню корисну адресу і знайдемо адресу широкомовної передачі. Щоб дізнатися, що це таке, все, що нам потрібно зробити, - це додати всі Н-біти разом (незалежно від того, вони є 1 або 0), а потім додати це число до мережевої адреси. (2 + 1 + 156 = 159).

Це дає нам ефірну адресу 195.70.16.159.

І нарешті, давайте розробимо останню корисну адресу. Цей процес схожий на пошук Першої корисної адреси, однак, замість того, щоб додати її до мережевої адреси, ми фактично віднімаємо її з широкомовної адреси. (159 - 1 = 158).

Це дає нам останню корисну адресу 195.70.16.158.

І там ми його маємо! Наш temaplte завершений. Для легкої довідки, ось знову:

  • Адреса мережі: 195.70.16.156
  • Перша корисна адреса: 195.70.16.157
  • Остання адресна адреса: 195.70.16.158
  • Адреса мовлення: 195.70.16.159

Як ярлик ви можете також використовувати цю формулу. Він працює в підмережах будь-якого розміру:

  • Перша корисна адреса = мережева адреса + 1
  • Broadcast Address = Наступна мережева адреса - 1
  • Остання корисна адреса = широкомовна адреса - 1

4
Крихітний (майже незначний) застереження: формула останньої корисної адреси внизу працює для всіх підмереж, крім a / 31 ... див. RFC 3021 . Це невеликий, але релевантний виняток, якщо хтось намагався використовувати ваш алгоритм у коді.
Майк Пеннінгтон

11

Я не хочу нічого відволікати від чудової відповіді Майка Пеннінгтона , яку я невблаганно пропагував, але я продовжую бачити питання, на які не відповідає безпосередньо його відповідь, і я створив щось, що спочатку ґрунтувалося на відповіді Майка, але я маю більше інформації для вирішення питань, що з’явилися з часом. На жаль, вона занадто велика, і мені довелося розбити її на дві відповіді.


Частина 1 з 2


Математика IPv4

Враховуючи IPv4 адресу та маску мережі IPv4 (мережеву маску можна також отримати від довжини мережевої маски або маски хоста), ви можете визначити багато інформації про мережу IPv4: мережева адреса, мережева широкомовна адреса, загальні адреси хостів, загальна корисна кількість Адреса хоста, перша корисна адреса хоста та остання корисна адреса хоста.

Я не можу наголосити на тому, що ви повинні займатися математикою IPv4 у двійковій формі. Я думаю, що кожен мережевий інженер (або потенційний мережевий інженер) спробував знайти спосіб зробити все це у десятковій мірі, як я впевнений, що вам буде *. Проблема полягає в тому, що 10 (десяткова) не є потужністю 2 (двійкові), тому десятковий і двійковий не природно перетворюють між собою так, як шістнадцятковий (основа 16) природним чином перетворюється на бінарний і з нього, тому що 16 - це сила 2 .

Здається, що використання крапкових десяткових позначень для IPv4 було ранньою помилкою, яку тепер неможливо виправити, але IPv6 прийняв використання шістнадцяткових з самого початку, і це легко перетворити між шістнадцятковим і двійковим.

Якщо у вас немає калькулятора IP (ймовірно, це не дозволено на іспитах з класу мережевого навчання або сертифікаційних тестах), корисно скласти діаграму значень бітів в октеті. Оскільки це двійкове значення, кожне бітове значення в 2 рази більше того ж значення цифри у наступній менш значущій цифрі. Кожна цифра є числом базисних разів, однаковим значенням цифри у наступній менш значущій цифрі. Це справедливо і для будь-якої іншої бази чисел, включаючи десяткову (базу 10), де кожне розрядне значення в 10 разів перевищує значення однієї і тієї ж цифри в наступній менш значущій позиції числа. Для двійкових цифр (біт):

---------------------------------------------------------
| Bit # |   7 |   6 |   5 |   4 |   3 |   2 |   1 |   0 |
---------------------------------------------------------
| Value | 128 |  64 |  32 |  16 |   8 |   4 |   2 |   1 |
---------------------------------------------------------

Якщо десяткове значення - це значення потужності 10, двійкове значення - це повноваження 2. Зауважте, що для кожного бітового числа у таблиці вище відповідне значення дорівнює 2 потужності бітового числа.

For our example IPv4 dotted-decimal address of 198.51.100.223:
1st octet: 198 = 128 + 64 +  0 +  0 + 0 + 4 + 2 + 0 = 11000110
2nd octet:  51 =   0 +  0 + 32 + 16 + 0 + 0 + 2 + 1 = 00110011
3rd octet: 100 =   0 + 64 + 32 +  0 + 0 + 4 + 0 + 0 = 01100100
4th octet: 223 = 128 + 64 +  0 + 16 + 8 + 4 + 2 + 1 = 11011111

For our example IPv4 binary address of 11000110001100110110010011011111:
1st octet: 11000110 = 128 + 64 +  0 +  0 + 0 + 4 + 2 + 0 = 198
2nd octet: 00110011 =   0 +  0 + 32 + 16 + 0 + 0 + 2 + 1 =  51
3rd octet: 01100100 =   0 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 100
4th octet: 11011111 = 128 + 64 +  0 + 16 + 8 + 4 + 2 + 1 = 223

Вам також потрібно запам’ятати свої таблиці правди зі школи (у двійковій математиці 0 - помилково, а 1 - правда):

-----------------------------------------
| False AND False = False | 0 AND 0 = 0 |
-----------------------------------------
| False AND True  = False | 0 AND 1 = 0 |
-----------------------------------------
| True  AND False = False | 1 AND 0 = 0 |
-----------------------------------------
| True  AND True  = True  | 1 AND 1 = 1 |
-----------------------------------------

-----------------------------------------
| False OR False = False  | 0 OR 0 = 0  |
-----------------------------------------
| False OR True  = True   | 0 OR 1 = 1  |
-----------------------------------------
| True  OR False = True   | 1 OR 0 = 1  |
-----------------------------------------
| True  OR True  = True   | 1 OR 1 = 1  |
-----------------------------------------

* Якщо ви виконуєте математику IPv4 протягом багатьох років, ви можете дістатись до того, що ви можете виконувати бінарні / десяткові перетворення в голові, а потім, можливо, ви зможете робити математику IPv4 у десятковій формі. Незважаючи на те, що я можу це зробити в своїй голові, я завжди двічі перевіряю за допомогою калькулятора IP або перетворюю на двійкові, виконую математику та перетворюю назад у десяткові, перш ніж вносити зміни у виробничу мережу.


Адреса IPv4

IPv4 пунктирно-десяткові позначення, наприклад 198.51.100.223, просто спрощують людину читати IPv4 адресу. Чотири окремі розділи, звані октетами, справді не мають значення для IPv4. Не робіть поширеної помилки мислення, що октети мають особливе значення. Адреса IPv4 - це дійсно 32-бітове двійкове число, і саме таким чином мережеві пристрої бачать та використовують IPv4-адресу.

Наш приклад IPv4-адреса 198.51.100.223насправді 11000110001100110110010011011111є пристроєм у мережі, тому ви можете бачити, що крапкове десяткове подання дійсно полегшує людину. Кожен октет - це вісім біт 32-бітної адреси (звідси загальновживаний термін "октет"), тому є чотири октети ( 32 address bits / 8 bits per octet = 4 octets). У нашому прикладі 32-розрядна двійкова адреса розділена на чотири октети, потім кожен двійковий октет перетворюється на десяткове число *:

Binary address: 11000110001100110110010011011111
                ---------------------------------------------
Binary octets:  | 11000110 | 00110011 | 01100100 | 11011111 |
Decimal octets: |      198 |       51 |      100 |      223 |
                ---------------------------------------------
Dotted-decimal: 198.51.100.223

Оскільки кожен октет має вісім біт у довжину, кожен октет матиме значення між 0та 255(будь-які значення, що перевищують 255недійсні). Причина полягає в тому, що 2^8 = 256: 2(база двійкових чисел) потужність 8(вісім біт на октет) дорівнює 256кількості різних значень, які можуть бути виражені восьмибітовим октетом. Пам'ятайте, що перше значення є 0, тому 256значення th буде на один менший від загальної кількості значень, яке можна виразити ( 256 – 1 = 255).

Щоб правильно виконати математику IPv4, потрібно робити це у двійковій формі, інакше ви будете робити помилки, які спричинить вам проблеми та фрустрацію. Це означає, що ви повинні перетворити пунктирне десяткове позначення у двійкове перед тим, як спробувати маніпулювати ним:

Dotted-decimal: 198.51.100.223
                ---------------------------------------------
Decimal octets: |      198 |       51 |      100 |      223 |
Binary octets:  | 11000110 | 00110011 | 01100100 | 11011111 |
                ---------------------------------------------
Binary address: 11000110001100110110010011011111

* Провідні нулі в точково-десятковій IPv4-адресі можуть бути інтерпретовані деякими програмами та мовами програмування як вісімковий (основа 8), а не десятковий (основа 10), що спричиняє помилки, і слід уникати провідних нулів для крапкового десяткового представлення IPv4, але провідні нулі необхідні для двійкових октетів IPv4 адреси, оскільки вони представляють бітові позиції в повній адресі, а вихід бітової позиції скоротить адресу і змінить бінарне значення.


Мережа IPv4

Мережева маска IPv4 використовується для поділу адреси IPv4 на дві частини: мережеву частину та хост-частину. Ділення може бути на будь-яке бітове число, тому воно може потрапити в межах октету, а не на октетну межу, як багато людей неправильно припускають, що це завжди робиться. Мережа мережі IPv4 має той самий розмір, що і IPv4-адреса (32 біти), і вона виражається у крапково-десятковій нотації так само, як ви б виразили IPv4-адресу у крапково-десятковій нотації (чотири восьми бітні октети, розділені знаком a період). Наприклад, 255.255.248.0.

Мережа IPv4 мережі складається з декількох послідовних 1бітів (що представляють мережеву частину адреси), а потім число 0бітів (що представляє частину хосту адреси). Загальна кількість 1бітів і загальна кількість 0бітів складає 32, кількість бітів в IPv4-адресі або мережевій масці. Для нашого прикладу мережевої маски:

Dotted-decimal: 255.255.248.0
                ------------------------------------------------
Decimal octets: |      255 |      255 |         248 |        0 |
Binary octets:  | 11111111 | 11111111 | 11111 | 000 | 00000000 |
                ------------------------------------------------
                | 21 Network bits             | 11 Host bits   |
                ------------------------------------------------

Як бачимо, поділ між мережевою та хост-частиною адреси IPv4 за допомогою цієї конкретної маски потрапляє в межах октету, а не на октетну межу.

Мережа мережі IPv4 часто представлена ​​кількістю послідовних 1бітів у масці. Це по-різному називається довжиною мережевої маски або довжиною префікса, і вона представлена ​​як /наступна кількість послідовних 1бітів у масці мережі. Для нашого прикладу підрахунок кількості послідовних 1бітів отримує 21, які можна представити як /21.

Враховуючи довжину маски, ви можете обчислити пунктирно-десяткове представлення маски. Просто занесіть кількість 1біт на довжину маски і додайте достатню кількість 0бітів на кінці до загальних 32бітів. Перетворіть отримане двійкове число в крапкове десяткове подання:

Mask length:    /21
                ------------------------------------------------
                | 21 Network bits             | 11 Host bits   |
                ------------------------------------------------
Binary octets:  | 11111111 | 11111111 | 11111 | 000 | 00000000 |
Decimal octets: |      255 |      255 |         248 |        0 |
                ------------------------------------------------
Dotted-decimal: 255.255.248.0

Приклад може бути представлений традиційно як 198.51.100.223мережева маска 255.255.248.0, або він може бути представлений як більш сучасний CIDR (безкласовий маршрутизація між доменами) 198.51.100.223/21.


IPv4 мережева адреса

Мережева адреса IPv4 - це адреса IPv4 з усіма встановленими бітами хоста 0. Мережева адреса IPv4 може бути обчислена порозрядним ANDчином відповідних бітів у двійковому поданні адреси IPv4 та маски мережі IPv4. Вирівняйте біти за обома адресами та виконайте побіжно ANDна кожній парі відповідних бітів, а потім перетворіть окремі октети результату назад у десяткові.

Для нашого прикладу IPv4-адреса 198.51.100.223та маска мережі 255.255.248.0:

Decimal address:        198.51.100.223/21
Binary address octets:  11000110 00110011 01100100 11011111
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  11000110 00110011 01100000 00000000
Decimal network octets:      198       51       96        0
Dotted-decimal network: 198.51.96.0

Як бачите, мережевою адресою 198.51.100.223/21є 198.51.96.0. Зауважте, що ви не можете залежати від октетів, щоб повідомити, яка частина адреси - це мережа, а яка - адреса для хостів.

Ви можете скористатися цим методом, щоб визначити, чи є дві адреси в одній і тій же мережі чи в різних *. Якщо, наприклад, ви хочете побачити, чи знаходиться ваша 198.51.100.223/21адреса в одній мережі IPv4 з хостом, призначеним 198.51.102.57адресою, визначте свою мережу IPv4-адресу (як вище). Далі визначте мережеву адресу IPv4 відповідного хоста, використовуючи вашу мережну маску IPv4 (хости в одній мережі використовують ту саму мережеву маску, а у вас може бути не лише маска, а лише адреса призначення хоста):

Decimal address:        198.51.102.57/21
Binary address octets:  11000110 00110011 01100110 00111001
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  11000110 00110011 01100000 00000000
Decimal network octets:      198       51       96        0
Dotted-decimal network: 198.51.96.0

Порівняйте отриману мережеву адресу IPv4 з вихідною мережевою адресою IPv4 і зауважте, що мережеві адреси рівні, тому адреси хостів знаходяться в одній мережі.

Тепер давайте подивимось, чи перебуваєте ви в тій самій мережі, що і 74.125.69.100адреса Google:

Decimal address:        74.125.69.100/21
Binary address octets:  01001010 01111101 01000101 01100100
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  01001010 01111101 01000000 00000000
Decimal network octets:       74      125       64        0
Dotted-decimal network: 74.125.64.0

Порівняйте отриману мережеву адресу IPv4 з вихідною мережевою адресою IPv4 і зауважте, що мережеві адреси різні, тому адреси хостів є в різних мережах.


* Це метод, який використовує хост джерела, щоб визначити, чи є він хостом призначення в тій же мережі, що і вихідний хост.


IPv4 хост-маска

Одне корисне, часто недооцінене значення, яке корисне при IPv4-адресації, - маска хоста IPv4. Маска хоста IPv4 - це просто обернена маска мережі IPv4. Ви можете створити бінарну маску хоста з маски двійкової мережі або маску двійкової мережі з маски бінарного хоста, просто перевернувши 1s і 0s стартової маски:

Dotted-decimal network mask: 255.255.248.0
Decimal network mask octets:      255      255      248        0
Binary network mask octets:  11111111 11111111 11111000 00000000 invert
                             -----------------------------------
Binary host mask octets:     00000000 00000000 00000111 11111111
Decimal host mask octets:           0        0        7      255
Dotted-decimal host mask:    0.0.7.255

Математично створити маску хоста з мережевої маски або мережну маску з маски хоста, віднісши початкову маску від найдовшої маски ( /32або маски "всі").

Це можна зробити у двійковій формі:

Binary all-ones mask octets: 11111111 11111111 11111111 11111111
Binary network mask octets:  11111111 11111111 11111000 00000000 -
                             -----------------------------------
Binary host mask octets:     00000000 00000000 00000111 11111111
Decimal host mask octets:           0        0        7      255
Dotted-decimal host mask:    0.0.7.255

Це також можна зробити в десятковій формі (октет "всі" 255), але не забудьте перетворити його у двійкове, перш ніж насправді намагатися використовувати його для маніпуляції адресою:

Decimal all-ones mask octets: 255 255 255 255
Decimal network mask octets:  255 255 248   0 -
                              ---------------
Decimal host mask octets:       0   0   7 255
Dotted-decimal host mask:     0.0.7.255

IPv4 мережева адреса мовлення

Мережева адреса IPv4 мережі - це мережева адреса IPv4 з усіма встановленими бітами хоста 1. Існує кілька способів обчислити адресу широкомовної мережі IPv4.

Для нашого прикладу IPv4-адреса 198.51.100.223та маска мережі 255.255.248.0.

Ви можете виконувати побіжно ORз IPv4 адресою або мережевою адресою за допомогою маски хоста:

Decimal address octets:        198       51      100      223
Binary address octets:    11000110 00110011 01100100 11011111
Binary host mask octets:  00000000 00000000 00000111 11111111 OR
                          -----------------------------------
Binary broadcast octets:  11000110 00110011 01100111 11111111
Decimal broadcast octets:      198       51      103      255
Dotted-decimal broadcast: 198.51.103.255

Ви можете просто додати значення хости IPv4 до значення мережевої адреси IPv4:

Binary network octets:    11000110 00110011 01100000 00000000
Binary host mask octets:  00000000 00000000 00000111 11111111 +
                          -----------------------------------
Binary broadcast octets:  11000110 00110011 01100111 11111111
Decimal broadcast octets:      198       51      103      255
Dotted-decimal broadcast: 198.51.103.255

Це також можна зробити в десятковій кількості:

Decimal network octets:   198  51  96   0
Decimal host mask octets:   0   0   7 255 +
                          ---------------
Decimal broadcast octets: 198  51 103 255
Dotted-decimal broadcast: 198.51.103.255

Загальні адреси хостів IPv4

Загальна кількість хостів IPv4 для мережі 2відповідає потужності кількості бітів хоста, що становить 32мінус кількість мережевих бітів. У нашому прикладі /21мережі (маска 255.255.248.0мережі) є 11біти хоста ( 32 address bits – 21 network bits = 11 host bits). Це означає, що 2048в /21мережі IPv4 ( 2^11 = 2048) є загальні адреси хостів ( ).


Загальна кількість корисних адрес мереж IPv4

За винятком /31мереж (маска мережі 255.255.255.254) та /32(мережева маска 255.255.255.255), кількість корисних адрес хостів у мережі IPv4 - це загальна кількість мережевих адрес хост мінус 2(оскільки IPv4 мережі та широкомовні адреси непридатні для адрес хостів у мережі, повинен відняти їх від кількості корисних адрес хоста). У нашому прикладі мережі /21( 255.255.248.0) є 2046корисні адреси хоста ( 2^11 - 2 = 2046).


Перша користувальна мережа IPv4-адреса хоста

За винятком /31мереж (маска мережі 255.255.255.254) та /32(мережева маска 255.255.255.255), першою корисною адресою хоста мережі IPv4 є мережева адреса IPv4 плюс 1(адреса мережі IPv4 не використовується для адреси мережевого хоста). У нашому прикладі мережі 198.51.96.0/21, першою корисною адресою мережі є 198.51.96.1( 198.51.96.0 + 1 = 198.51.96.1). Просто встановіть біт низького порядку двійкової мережевої адреси IPv4 на 1:

Decimal network octets:      198       51       96        0
Binary network octets:  11000110 00110011 01100000 00000000
                        -----------------------------------
Binary address octets:  11000110 00110011 01100000 00000001
Decimal address octets:      198       51       96        1
Dotted-decimal address: 198.51.96.1

Остання мережева адреса хоста IPv4

За винятком /31мереж (маска мережі 255.255.255.254) та /32(маска мережі 255.255.255.255), останньою корисною адресою хоста мережі IPv4 є адреса широкомовної мережі IPv4 мінус 1(адреса широкомовної мережі IPv4 не використовується для адреси мережевого хоста). У нашому прикладі мережі 198.61.96.0/21, останньою корисною мережевою адресою є 198.51.103.254( 198.51.103.255 - 1 = 198.51.103.254). Просто встановіть біт низького порядку бінарної IPv4 мережевої адреси на 0:

Decimal broadcast octets:      198       51      103      255
Binary broadcast octets:  11000110 00110011 01100111 11111111
                          -----------------------------------
Binary address octets:    11000110 00110011 01100111 11111110
Decimal address octets:        198       51      103      254
Dotted-decimal address:   198.51.103.254

Розміщення IPv4 мережевої адреси у всіх разом

Для нашого прикладу мережевої адреси IPv4 198.51.100.223та маски 255.255.248.0(або 198.51.100.223/21) ми можемо обчислити велику кількість мережевої інформації:

Host address:                       198.51.100.223
Network mask:                       255.255.248.0
Network mask length:                21
Host mask:                          0.0.7.255
Host mask length:                   11
*Network address:                   198.51.96.0
*First usable network host address: 198.51.100.1
*Last usable network host address:  198.51.103.254
*Network Broadcast address:         198.51.103.255
Total network host addresses:       2048
Usable network host addresses:      2046

* Екзамени мережевих класів освіти та сертифікаційні тести попросять вас швидко обчислити їх для мережі IPv4 з урахуванням адреси хоста та маски (або довжини маски). Ви можете використовувати підказки, наведені нижче, для швидкої перевірки відповідей:

  • Мережева адреса (підказка: парне число)
  • Перша корисна адреса хоста (підказка: мережева адреса плюс 1, непарне число)
  • Остання адресна адреса хоста (підказка: широкомовна адреса мінус 1, парне число)
  • Трансляційна адреса (підказка: мережева адреса плюс хост-маска, непарне число)

Наведені підказки не стосуються /31(мережева маска 255.255.255.254) або /32(мережева маска 255.255.255.255).

З огляду на достатню кількість часу на іспиті та проблему, яка має декілька методів для отримання відповіді, вам слід скористатися кількома методами, щоб двічі перевірити відповідь.


Продовження в наступній відповіді ...


9

Продовження з попередньої відповіді ...


Частина 2 з 2


Вибір адреси мережевого шлюзу (маршрутизатора) IPv4

Шлюз - це хост у мережі, який вміє пересилати пакети до інших мереж, і йому може бути призначена будь-яка корисна адреса хоста мережі. Деякі люди лише випадковим чином присвоюють адреси шлюзу будь-якій застосованій мережевій адресі, деякі люди завжди присвоюють першу корисну адресу мережевого хосту шлюзу, а деякі люди завжди присвоюють останню корисну адресу хоста мережі для шлюзу. Насправді не має значення, яку корисну мережу адресу хоста ви призначите шлюзу, але ви повинні намагатися бути послідовною.


IPv4 /31(мережева маска 255.255.255.254) Мережі

Спочатку /31мережі (маска мережі 255.255.255.254) були непридатними, оскільки існує лише один біт хоста, що дає вам дві загальні адреси мережевих хостів, але кількість корисних адрес мережевого хоста - це загальна кількість мережевих адрес мінус 2( 2 total host addresses - 2 = 0 usable host addresses).

Посилання "точка-точка" потребують лише двох адрес хоста (по одному для кожного кінця посилання). Традиційний спосіб призначення мереж IPv4 вимагав використання мереж /30(маска мережі 255.255.255.252) для посилань "точка-точка", але це витрачає половину адрес мережевого хоста, оскільки в /30мережі є чотири загальні адреси мережевих хостів, але лише дві корисні адреси мережевих хостів ( 2^2 – 2 = 2).

Із критичним дефіцитом адреси IPv4 було створено стандарт, що дозволяє використовувати /31мережі для посилання "точка-точка". Це має сенс, оскільки немає необхідності в трансляції в таких мережах: будь-які пакети, надіслані хостом у мережі, призначені для єдиного іншого хоста в мережі, який ефективно транслює. У /31мережі мережева адреса - це перша корисна адреса хоста, а широкомовна адреса - остання корисна адреса хоста.

На жаль, не всі постачальники (зокрема Microsoft) підтримують стандарт використання /31мереж на посиланнях "точка-точка", і ви найчастіше бачите посилання "точка-точка" за допомогою /30мереж.


IPv4 /32(мережева маска 255.255.255.255) Мережі

/32(Мережева маска 255.255.255.255) мережу як мережу, без адрес вузлів, а також адреса хоста, сам по собі. У мережі є лише одна адреса, і це адреса мережі. Оскільки в мережі немає інших хостів, трафік повинен бути спрямований на мережеву адресу та з неї.

Ці адреси часто використовуються у віртуальних мережевих інтерфейсах, визначених всередині пристрою, які можуть маршрутизувати пакети між його віртуальним та фізичним інтерфейсами. Прикладом цього є створення віртуального інтерфейсу в мережевому пристрої, який буде використовуватися як джерело або пункт призначення самого пристрою. Віртуальний інтерфейс не може випадати через фізичну проблему, наприклад, відключений кабель, і якщо пристрій має кілька шляхів до нього, інші пристрої все ще можуть спілкуватися з пристроєм, використовуючи адресу віртуального інтерфейсу, коли фізичний інтерфейс пристрою з якихось причин не працює .


Підмережа мереж IPv4

Підмережа мережі - це створення декількох довших мереж із мережевої адреси та маски. Основна ідея полягає в тому, що ви позичаєте біти високого замовлення з хост-частини вихідної мережі. Припустимо, ви хочете створити 14 підмереж однакового розміру з нашої вихідної 198.51.96.0/21мережі. Оскільки ви позичаєте біти високого порядку з хост-частини вихідної мережі, ви отримаєте число, яке є потужністю 2, але 14не є потужністю 2, тому ви повинні отримати наступну більш високу потужність 2, яка, як буває 16( 16 = 2^4). Потужність 2у цьому випадку 4- кількість хотів бітів високого порядку, необхідних для запозичення для кількості створених підмереж. Ви також можете використовувати математичну формулу, щоб визначити кількість потрібних бітів:Log2(X subnets) = Y borrowed bits, округлене до наступного цілого значення:

Log2(14 subnets) = 3.807354922, rounded up = 4 borrowed bits

Для нашого прикладу необхідності 14 підмереж однакового розміру вихідної 198.51.96.0/21мережі, починаючи з усіх 0s * для першої підмережі, додайте 1до частини підмережі, щоб отримати наступну підмережу:

           ----------------------------------------------
Original:  | 21 network bits       | 11 host bits       |
           ----------------------------------------------
Network:   | 110001100011001101100 | 0000 |  0000000    | = 198.51.96.0/21
Subnet 1:  | 110001100011001101100 | 0000 |  0000000    | = 198.51.96.0/25
Subnet 2:  | 110001100011001101100 | 0001 |  0000000    | = 198.51.96.128/25
Subnet 3:  | 110001100011001101100 | 0010 |  0000000    | = 198.51.97.0/25
Subnet 4:  | 110001100011001101100 | 0011 |  0000000    | = 198.51.97.128/25
Subnet 5:  | 110001100011001101100 | 0100 |  0000000    | = 198.51.97.128/25
Subnet 6:  | 110001100011001101100 | 0101 |  0000000    | = 198.51.98.128/25
Subnet 7:  | 110001100011001101100 | 0110 |  0000000    | = 198.51.99.0/25
Subnet 8:  | 110001100011001101100 | 0111 |  0000000    | = 198.51.99.128/25
Subnet 9:  | 110001100011001101100 | 1000 |  0000000    | = 198.51.100.0/25
Subnet 10: | 110001100011001101100 | 1001 |  0000000    | = 198.51.100.128/25
Subnet 11: | 110001100011001101100 | 1010 |  0000000    | = 198.51.101.0/25
Subnet 12: | 110001100011001101100 | 1011 |  0000000    | = 198.51.101.128/25
Subnet 13: | 110001100011001101100 | 1100 |  0000000    | = 198.51.102.0/25
Subnet 14: | 110001100011001101100 | 1101 |  0000000    | = 198.51.102.128/25
           ----------------------------------------------
Subnetted: | 25 network bits              | 7 host bits |
           ----------------------------------------------

           ----------------------------------------------
Unused:    | 110001100011001101100 | 111  | 00000000    | = 198.51.103.0/24
           ----------------------------------------------

* Існує стійкий міф про те, що для підмереж, як і для адрес хостів, всі нулі та всі підмережі не можна використовувати, однак цей міф був явно розповсюджений багато років тому стандартом. На жаль, цей міф поширюється на деякі класи мережевої освіти, і правильною відповіддю для тих (неправильних) класів було б використання другої під 15мережі.


Можна підмережу підмережі на різні підмережі (кожна мережа IPv4 - це підмережа 0.0.0.0/0мережевої адреси), як у нашому прикладі вище, де невикористана підмережа є /24підмережею, але це вимагає ретельного планування, щоб отримані підмережі починалися з правильний біт.

Наприклад, скажімо, що нам потрібна і а, /26і /27підмережа з нашої 198.51.96.0/21мережі. Для цього є два способи: почати з /26підмережі або почати з /27підмережі.

Починаючи з /26підмережі:

Original: | 110001100011001101100 | 00000000000    | /21
Subnet 1: | 110001100011001101100 | 00000 | 000000 | /26

Додайте 1до частини підмережі, щоб отримати вихідне положення наступної підмережі:

Subnet 2: | 110001100011001101100 | 00001 | 000000 | /26

Потім розгорніть другу підмережу до /27:

Subnet 2: | 110001100011001101100 | 000010 | 00000 | /27

Зауважте, що ми фактично підмережу /26підмережі в /27підмережу, і це працює добре, тому що 27більша за 26.

Починаючи з /27підмережі:

Original: | 110001100011001101100 | 00000000000    | /21
Subnet 1: | 110001100011001101100 | 000000 | 00000 | /27

Додайте 1до частини підмережі, щоб отримати вихідне положення наступної підмережі:

Subnet 2: | 110001100011001101100 | 000001 | 00000 | /27

Зауважте, що у хост-частині (п'ять хостів-хостів) залишилось недостатньо бітів для підтримки /26мережі, для чого потрібно шість хотів-хостів ( 32 address bits – 26 network bits = 6 host bits). Якщо ми будемо використовувати це як вихідне положення для /26підмережі, ми фактично перекриємо попередню та наступну /26мережі. Нам потрібно залишити розрив розміром /27мережі для вихідного положення /26мережі:

Original: | 110001100011001101100 | 00000000000     | /21
Subnet 1: | 110001100011001101100 | 000000 |  00000 | /27
Unused:   | 110001100011001101100 | 000001 |  00000 | /27
Subnet 2: | 110001100011001101100 | 00001  | 000000 | /26

/26Підмережі завжди повинна починатися на /26кордоні: кожна друга /27межа підмережі, кожна четверта /28межа, кожна восьма /29межа, і т.д. Це правило для будь-якого розміру підмережі: підмережа повинна починатися на кордоні більше підмережі , яка дорівнює 2силі більшого розміру підмережі мінус розмір підмережі. Наприклад, /23підмережа повинна запускатися в кожній 4-й /25мережі ( 2^(25 - 23) = 2^2 = 4).

Спроба налаштувати пристрій з мережевою адресою, яка починається з невірної межі бітів, або призведе до дивних, важких для усунення проблем, або пристрій призведе до помилки щодо перекриття мереж. Деякі люди намагаються це зробити за допомогою пунктирних десятків, і це може призвести до помилок. Наприклад, 198.51.96.0/27адреси мережевого хоста проходять 198.51.96.0через 198.51.96.31. Якщо ви це знаєте та намагаєтесь використовувати 198.51.96.32/26мережу, у вас виникнуть проблеми, оскільки ця мережа починається з неправильної бітової межі та перекриває /27мережу (перевірити, скориставшись побіжно ANDз адресами та мережевими масками). Воно очевидно в двійковій, але не настільки очевидно в крапковому-десятковому. Ви можете дізнатися, що /26мережі повинні запускатися з кратного десяткового числа64 кордон, але бачачи його у двійковому, можна точно сказати вам, чи ви помилилися чи ні.


Розміри підмережі залежно від кількості хостів

Загальні екзаменаційні запитання дадуть вам мережу та запропонують вам створити кілька підмереж різного розміру на основі кількості хостів для кожної підмережі. Якщо ви можете, вам потрібно уточнити, чи кількість хостів заснована на загальній кількості адрес хостів у мережі чи чи вона базується на кількості використовуваних хостів у мережі. (Наприклад, якщо питання запитує підмережу з 256або 255хостами, /24мережа надасть вам 256загальні адреси хостів, але лише 254корисні адреси хоста. Таке запитання може бути хитрому питанням, і правильна відповідь залежатиме від того, чи ні Питання означає загальну адресу хоста або корисні адреси хосту.)

Зразок питання:

Given the 198.51.96.0/21 network, subnet it for the following departments:
    Department 1:  500 hosts
    Department 2:  100 hosts
    Department 3:  200 hosts
    Department 4: 1000 hosts

Як ми побачили в розділі «Підмережа IPv4 Networks», найпростіший спосіб зробити це - спершу сортувати відділи за найбільшою та найменшою кількістю хостів, оскільки нам не потрібно буде мати справу з пробілами в мережі:

Department 4: 1000 hosts
Department 1:  500 hosts
Department 3:  200 hosts
Department 2:  100 hosts

Ви можете округлити кожен до наступної великої потужності 2, щоб отримати кількість необхідних загальних адрес хостів для кожної підмережі, а потім отримати кількість необхідних бітів хоста від показника потужності 2:

Department 4: 1024 total host addresses = 2^10 = 10 host bits
Department 1:  512 total host addresses = 2^9  =  9 host bits
Department 3:  256 total host addresses = 2^8  =  8 host bits
Department 2:  128 total host addresses = 2^7  =  7 host bits

Ви також можете змінити попередню формулу для знаходження кількості бітів, необхідних для певної кількості підмереж однакового розміру, щоб визначити кількість бітів хоста, необхідних для кожної підмережі:, Log2(X hosts) = Y host bitsокруглені до наступного цілого значення:

Department 4: Log2(1000 hosts) = 9.96578428466209, rounded up = 10 host bits
Department 1: Log2( 500 hosts) = 8.96578428466209, rounded up =  9 host bits
Department 3: Log2( 200 hosts) = 7.64385618977472, rounded up =  8 host bits
Department 2: Log2( 100 hosts) = 6.64385618977473, rounded up =  7 host bits

Коли у вас є кількість хостів бітів, необхідних для кожної підмережі, виконайте двійкову математику, щоб отримати конкретну підмережу для кожного відділу. Не забудьте додати 1до підмережі, щоб отримати початкову адресу наступної підмережі:

Original:     | 110001100011001101100 |    00000000000 | = 198.51.96.0/21
Department 4: | 110001100011001101100 | 0 | 0000000000 | = 198.51.96.0/22
Department 1: | 110001100011001101100 | 10 | 000000000 | = 198.51.100.0/23
Department 3: | 110001100011001101100 | 110 | 00000000 | = 198.51.102.0/24
Department 2: | 110001100011001101100 | 1110 | 0000000 | = 198.51.103.0/25
Unused:       | 110001100011001101100 | 1111 | 0000000 | = 198.51.103.128/25

Пошук конкретної підмережі

Вас можуть попросити надати мережеву інформацію для певної підмережі певної мережі. Наприклад, вас можуть попросити надати мережеву інформацію для 23-ї /26підмережі 198.51.96.0/21мережі. Оскільки вам потрібна 23-а підмережа, ви можете конвертувати 22(пам’ятайте, 0це перша підмережа, тому 23-та підмережа була б 22*) у двійковий: Decimal 22= Binary 10110. Використовуйте перетворене двійкове число в частині підмережі адреси:

Original:  | 110001100011001101100 |    00000000000 | = 198.51.96.0/21
Subnet 23: | 110001100011001101100 | 10110 | 000000 | = 198.51.101.128/26

Визначивши 23-ю мережеву адресу, 198.51.101.128/26ви можете обчислити іншу мережеву інформацію (як описано в попередніх розділах):

Network address:                   198.51.101.128
Network mask length:               26
Network mask:                      255.255.255.192
Host mask length:                  6
Host mask:                         0.0.0.63
First usable network host address: 198.51.101.1
Last usable network host address:  198.51.101.62
Broadcast address:                 198.51.101.63
Total network host addresses:      64
Usable network host addresses:     62

* Існує стійкий міф про те, що для підмереж, як і для адрес хостів, всі нулі та всі підмережі не можна використовувати, однак цей міф був явно розповсюджений багато років тому стандартом. На жаль, цей міф поширюється на деякі класи мережевої освіти, і правильною відповіддю для цих (неправильних) класів було б використання 24-ї ( 23десяткової, 10111двійкової) підмережі в нашому прикладі рівних підмереж, а не власне 23-ї ( 22десяткової, 10110двійкова) підмережа.


Пошук конкретного мережевого хоста

Можливо, вас попросять знайти адресу хоста для певного хоста даної мережі. Наприклад, вас можуть попросити вказати адресу хоста для 923-го хоста 198.51.96.0/21мережі. Оскільки вам потрібен 923-й хост, ви можете перетворитись 923у двійковий: Decimal 923= Binary 1110011011. Додайте перетворений двійковий номер до мережевої адреси:

Binary network: | 110001100011001101100 | 00000000000 |
Binary 923:     | 000000000000000000000 | 01110011011 | +
                  -----------------------------------
Host address:   | 110001100011001101100 | 01110011011 | = 198.51.99.155

Найбільша загальна мережа для двох хостів *

Можливо, вам нададуть два (або більше) різних хост-адрес і попросять створити найбільшу мережу (найменшу кількість хостів), яка містить обидві адреси хосту. Наприклад, знайдіть найбільшу загальну мережу 198.51.100.223і 198.51.101.76.

Спочатку перетворіть пунктирні десяткові адреси у двійкові:

198.51.100.223 = 11000110001100110110010011011111
198.51.101.76  = 11000110001100110110010101001100

Далі, починаючи з біта найвищого порядку (лівий край), порівнюйте двійкові адреси в кожній позиції бітів, поки біти в одній позиції не збігаються:

198.51.100.223 = | 11000110001100110110010 | 011011111 |
198.51.101.76  = | 11000110001100110110010 | 101001100 |

Порахуйте кількість збіжних бітів 23у цьому випадку, щоб отримати довжину маски. Потім ви можете взяти будь-яку адресу та виконувати побіжно ANDмережеву маску, щоб отримати загальну мережу. Якщо це зробити на обох адресах, це повинно призвести до однієї мережі, а якщо цього немає, то ви або зробили помилку, або ви пропустили незрівняне бітове положення.

198.51.100.223  = 11000110001100110110010011011111
/23 mask length = 11111111111111111111111000000000 AND
                  --------------------------------
Binary network:   11000110001100110110010000000000 = 198.51.100.0/23

198.51.101.76   = 11000110001100110110010111011111
/23 mask length = 11111111111111111111111000000000 AND
                  --------------------------------
Binary network:   11000110001100110110010000000000 = 198.51.100.0/23

Зауважте, що дві мережеві адреси збігаються. Це означає, що найбільшою загальною мережею для двох адрес хосту є 198.51.100.0/23(позначення CIDR) або (традиційна) 198.51.100.0з маскою 255.255.254.0.


* Ви можете побачити це як найменша загальна мережа (або якийсь варіант, наприклад мінімальна мережа або маска). Найменша мережа є насправді 0.0.0.0/0( 0мережеві біти), і це спільна мережа для всіх IPv4-адрес, тому це найменша спільна мережа між будь-якими адресами IPv4. Плутанина виникає через те, що багато людей дивляться на головну частину адреси і бачать її розмір як розмір мережі, а не розмір мережевої частини адреси.


Громадські та приватні адреси

Сам по собі IPv4 не має поняття і не розмежовує публічну та приватну адреси. Приватна адресація IPv4 була обрана довільно, і Інтернет-провайдери за домовленістю не пересилатимуть пакети в загальнодоступному Інтернеті за допомогою адрес у приватному адресному просторі, але мережеві пристрої та хости не мають уявлення, чи адреса є загальнодоступною чи приватною.

Існує три діапазони адрес, визначені приватною адресацією IPv4:

  1. 10.0.0.0/8
  2. 172.16.0.0/12
  3. 192.168.0.0/16

Класна мережева адресація

Спочатку адреси IPv4 поділялися на мережеві класи. Класна адресація була знятої десятиліттями тому, а сучасні мережі базуються на CIDR (Classless Inter-Domain Routing), але, на жаль, багато мережевих класів навчальних програм та іспитів на сертифікацію наполягають на тестуванні ваших знань щодо вмілої адреси. Будь ласка, вивчіть і будьте зручні з усією попередньою математикою IPv4 в цьому документі, перш ніж ви дізнаєтесь про класне адресивання.

Класи адрес IPv4 базуються на перших бітах адреси:

Class   Address Starts With      Address Range                 Default Size*
  A     First one bit    = 0       0.0.0.0 to 127.255.255.255        /8
  B     First two bits   = 10    128.0.0.0 to 191.255.255.255       /16
  C     First three bits = 110   192.0.0.0 to 223.255.255.255       /24
  D     First four bits  = 1110  224.0.0.0 to 239.255.255.255       N/A
  E     First four bits  = 1111  240.0.0.0 to 255.255.255.255       N/A
  • Мережі класу A мають мережеву маску за замовчуванням 255.0.0.0( /8) та маску хоста за замовчуванням 0.255.255.255, що дає вам 16,777,216загальні адреси хостів у мережі.
  • Мережі класу B мають мережеву маску за замовчуванням 255.255.0.0( /16) та маску хоста за замовчуванням 0.0.255.255, що дає вам 65,536загальні адреси хостів у мережі.
  • Мережі класу C мають мережеву маску за замовчуванням 255.255.255.0( /24) та маску хоста за замовчуванням 0.0.0.255, що дає вам 256загальні адреси хостів у мережі.
  • Адреси класу D використовуються для багатоадресної передачі, де кожна адреса використовується окремо для представлення групи хостів, які підписалися на адресу багатоадресної передачі. Це означає, що адреси класу D зазвичай не мають поняття мережевої маски.
  • Адреси класу Е зарезервовані, і їх не можна використовувати ні для чого. Є один виняток із цього, і це адреса з обмеженою трансляцією 255.255.255.255, яка є індивідуальною адресою, яку кожен хост у мережі вважатиме власною. Це означає, що все, що надсилається 255.255.255.255, отримуватиме та оброблятиме кожен хост у мережі.

Оскільки кожен клас має розмір мережі за замовчуванням, деякі питання передбачають маску за замовчуванням для вказаної адреси, тому будь-які обчислення потрібно робити на основі маски мережі за замовчуванням. Для нашої приклади адреси 198.51.100.223:

Binary: 11000110 00110011 01100100 11011111

Зауважте, що перші три біти адреси - це 110означає, що це адреса класу C, а відсутність будь-якої маски чи довжини маски, мережева маска вважається такою 255.255.255.0( /24), що робить мережеву адресу 198.51.100.0.


* Не робіть поширеної помилки, думаючи, що мережева маска диктує мережевий клас, це навпаки. Наприклад, багато людей вважають будь-яку /24мережу мережею класу C, але це навіть не є віддаленою правдою. Враховуючи, наприклад, 10.11.12.0/24мережу, багато людей неправильно називають мережу класу C через мережеву маску, навіть незважаючи на те, що перший біт адреси - 0це мережа класу A, хоча і з довшою мережевою маскою, ніж за замовчуванням Маска мережі класу A, тобто це підмережа мережі класу A, а не мережа класу C.


6

(Намагаючись утримати всі відповіді на масках в одному місці, після інших відмінних відповідей я додав цю про візуальний метод.)

Розміри підмережі залежно від кількості хостів

Це для поширеного питання "Як я розрізаю заданий розмір мережі на n частин, дозволяючи x 1 хостів у мережі 1, x 2 хостів у мережі 2 тощо"? можна абсолютно вирішити, опрацювавши методи, описані в інших відмінних відповідях.

Деяким людям, можливо, сподобається більш наочний метод та деякі загальні поради.

Візуальний метод «склоріза»

Те, як я часто навчаю візуального розуміння цього, полягає в наступному методі:

Спочатку уявіть собі паперову гільйотину так:

ковзна паперова гільйотина

( Зображення з Вікіпедії від Nathan CC BY-SA 3.0)

Властивості цього різака полягають у тому, що він ріже лише прямі лінії, він завжди ріже весь папір і прорізається перпендикулярно стороні. Наша особлива гільйотина суєтна: вона розріже папір навпіл, і ми не зможемо зробити виріз ближче 1 см від краю.

  • Скільки доступних адрес для вашого початкового блоку?
  • Припустимо, розділившись, а / 22 має 1024 адреси
  • Отримайте аркуш паперу з такою кількістю квадратних сантиметрів (і співвідношення квадрата або 2х1)
  • Тому я отримую шматок 32 см на 32 см, який має 1024 кв
  • Неодноразово
    1. Виберіть фрагмент (якщо його більше)
    2. Розріжте його навпіл (в межах обмежень: тільки прямокутні надрізи, навпіл, нічого нижче 1 см)
  • Часто можна зробити різні надрізи, і вам доведеться зробити вибір
  • Щоб отримати n мереж, вам потрібно зробити n-1 розрізи
  • Іноді у вас виникають зайві шматки (залежно від того, як ви хочете розподілити "відходи")

Ось ілюстрація цього процесу. Ви бачите, що на зрізі 1 та нарізку 2 можливий лише один вид розрізу, але при зрізі 3 ми робимо вибір: вирізаємо маленький шматочок (червоний) або великий шматок (синій), даючи дві різні можливості.

власний малюнок

Це те, що часто називають проблемою гільйотини , яку я зрозумів як проблему «склоріза», так як листове скло справді потрібно розрізати на всьому протязі, і цю специфіку можна назвати «двійковим склорізом», оскільки це завжди розрізання на половинки.

Коли я справді роблю це в реальному житті, я подумки роблю халви, дивлячись на таку сітку. Я пам'ятаю, що / 26 має починатися з 0, .64, 128 або .192; Я можу знати, що сьомий орендований рядок потребує сьомий / 30 у верхній чверті, але я не пам’ятаю, що це .216.

Сітка, очевидно, може бути використана і для представлення третього октету, і кожен квадрат являє собою / 24. Тепер сказано, що a / 18 починається з .0, .64, .128 або .192.

введіть тут опис зображення

Загальні поради щодо техніки

Загальна процедура:

  • округніть кожен необхідний розмір до найменшого блоку, який є досить великим
  • переконайтеся, що ви дотримуєтесь будь-яких глобальних правил (часто "максимізуйте доступну адресацію", іноді це "дозволити подвійне зростання" або "полегшити маршрутизацію")
  • виділіть підмережі для адрес, починаючи з НАЙБІЛЬШЕГО і спускаючись до найменших ( це та частина, яку вони зазвичай забувають вам сказати )
  • дотримуйтесь будь-яких конкретних правил (тестові запитання часто мають додаткові правила, іноді такі атрибутні, як "У жодної мережевої адреси не може бути 7")
  • перевірте, чи є місце для будь-яких неявних адрес (трансляцій, маршрутизаторів)
  • якщо будь-яка мережа мала (/ 30, / 31 або / 32), зверніть додаткову увагу, оскільки є деякі крайні випадки для мереж з 4, 2 і 1 хостами, і деталі залежать від того, яку саме проблему ви вирішуєте

5

Приклад:

IP: 128.42.5.4

У двійковій формі: 10000000 00101010 00000101 00000100

Підмережа: 255.255.248.0

Як ви могли визначити префікс, мережу, підмережу та номери хостів?

      32768     16384  8192  4096  2048  1024   512   256  ----> Binary
        128       192   224   240   248   252   254   255  ----> Sunet Mask
        /17       /18   /19   /20   /21   /22   /23   /24  ----> CIDR  
      32766     16382  8190  3094  2046  1022   510   254  ----> Host


      128     64    32     16     8     4    2     1   ----> Binary
      128    192   224    240   248   252   254   255  ----> Sunet Mask
      /25    /26   /27    /28   /29   /30   /31   /32  ----> CIDR  
      126     62    30     14     6     2    *     -   ----> Host 

     128        64        32       16        8         4         2        1
  10000000   01000000  00100000 00010000  00001000  00000100  00000010   00000001

   Example 
   Network=192.168.1.0 /24;  
   Network Address with Subnet mask =  192.168.1.0 subnet 255.255.255.0 
   Ip address range 192.168.1.0----192.168.1.255
   Fist available ip address  192.168.1.1; 
   Last available ip address  192.168.1.254; 
   Broadcast address = 192.168.1.255;
   254 Host

   Network=192.168.1.0 /25;
   Network Address with Subnet mask =  192.168.1.0 subnet 255.255.255.128
   Ip address range 192.168.1.0----192.168.1.128
   Fist available ip address  192.168.1.1; 
   Last available ip address  192.168.1.126;
   Broadcast address = 192.168.1.127;  
   126 Hosts

   When the CIDR increased ex. /24. /25.  the network will divided by the 
   binary number.
   /25  increase network   0-128| 128- 256 |                   you will have 2 Networks 
   /26  increase network   0-64 | 64 - 128 | 128-192 | 192-256 you will have 4 Networks 
    .
    .
    .
   /32......
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.