IP-підмережі існують, щоб маршрутизатори могли вибрати відповідні пункти призначення для пакетів. Ви можете використовувати IP-підмережі для розбиття великих мереж з логічних причин (брандмауер тощо) або фізичних потреб (менші домени широкомовного зв'язку тощо).
Простіше кажучи, IP-маршрутизатори використовують ваші IP-підмережі для прийняття маршрутизаційних рішень. Зрозумійте, як ці рішення працюють, і ви можете зрозуміти, як планувати підмережі IP.
Відлік до 1
Якщо ви вже вільно володієте двозначними (базовими 2) позначеннями, ви можете пропустити цей розділ.
Тим із вас, хто залишився: соромтеся за те, що ви не володієте бінарними нотаціями!
Так ... це може бути трохи суворо. Дійсно, дуже просто навчитися рахувати у двійковій формі, а також навчитися ярликів для перетворення двійкового в десятковий і зворотний. Ви дійсно повинні знати, як це зробити.
Підрахунок у двійковій формі настільки простий, оскільки потрібно лише знати, як рахувати до 1!
Подумайте про «одометр» автомобіля, за винятком того, що на відміну від традиційного одометра кожна цифра може нараховувати до 1 від 0. Коли автомобіль свіжий із заводу, одометр пише «00000000».
Коли ви проїхали свою першу милю, одометр проголошує "00000001". Все йде нормально.
Коли ви проїхали другу милю, перша цифра одометра перекидається на "0" (оскільки максимальне значення - "1"), а друга цифра одометра перекидається на "1", завдяки чому одометр читається " 00000010 ". Це виглядає як число 10 у десятковій нотації, але насправді це 2 (кількість миль, якими ви проїхали машину поки що) у двійковій нотації.
Коли ви проїхали третю милю, одометр читає "00000011", оскільки перша цифра одометра знову повертається. Число "11", у двійковому позначенні, те саме, що і десяткове число 3.
Нарешті, коли ви проїхали свою четверту милю, обидві цифри (на яких було написано "1" в кінці третьої милі) відкотуються назад до нульової позиції, а третя цифра котиться до позиції "1", даючи нам " 00000100 ". Ось двійкове представлення десяткового числа 4.
Ви можете запам'ятати все це, якщо хочете, але вам справді потрібно лише зрозуміти, як маленький одометр «перекидається», коли кількість його підрахунків збільшується. Це точно так само, як і в традиційній операції з десятковим одометром, за винятком того, що кожна цифра може бути лише "0" або "1" на нашому вигаданому "бінарному одометрі".
Щоб перетворити десяткове число у двійкове, ви могли прокрутити одометр вперед, позначте галочкою, рахуючи вголос, доки ви не прокатите його в кілька разів, рівне десятковому числу, яке ви хочете перетворити у двійкове. Що б не відображалося на одометрі, все-таки те, що котирування та кочення було би двійковим поданням десяткового числа, до якого ви рахували.
Оскільки ви розумієте, як одометр котиться вперед, ви також зрозумієте, як він котиться назад, також. Щоб перетворити двійкове число, відображене на одометрі назад, у десятковий, ви можете повернути одометр по одній галочці за один раз, рахуючи вголос, поки одометр не прочитає "00000000". Коли все, що відбувається підрахунок і прокат, завершено, останнє число, яке ви говорите вголос, буде десятковим поданням двійкового числа, з якого починався одометр.
Перетворення значень між двійковими та десятковими таким чином було б дуже стомлюючим. Ви могли це зробити, але це було б не дуже ефективно. Простіше навчитися трохи алгоритму робити це швидше.
Швидкий бік: Кожна цифра у двійковому числі відома як "біт". Це "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-квартала Майн-стріт, оскільки номер будівлі становить від 100 до 199, а більшість міських кварталів пронумеровані сотнями. Ви "просто знаєте", як розділити адресу.
Маршрутизатори доставляють пакети, а не піцу. Їх робота така ж, як у водія піци: Щоб максимально наблизити вантаж (пакети) до пункту призначення. Маршрутизатор підключений до двох або більше IP-підмереж (щоб бути корисним). Для прийняття рішень щодо доставки маршрутизатор повинен вивчити IP-адреси пакетів і розділити ці адреси адресатів на компоненти "назва вулиці" та "номер будівлі", як і драйвер піци.
Кожен комп'ютер (або "хост") в мережі IP налаштований унікальною IP-адресою та маскою підмережі. Цю IP-адресу можна розділити на компонент "номер будівлі" (наприклад, "123" у наведеному вище прикладі), названий "ідентифікатор хоста" та компонент "назва вулиці" (наприклад, "Головна вулиця" у прикладі вище), який називається " "ідентифікатор мережі". Для наших людських очей легко зрозуміти, де знаходиться номер будівлі та назва вулиці у "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 / номер). Ця нотація відома як "Безкласова маршрутизація між доменами" (CIDR). "255.255.255.0" складається з 24 біт 1 на початку, і швидше записати це як "/ 24", ніж як "255.255.255.0". Щоб перетворити номер CIDR (наприклад, "/ 16") у маску з пунктирною десятковою підмережею, просто випишіть це число 1, розділіть його на групи з 8 біт і перетворіть у десяткові. (Наприклад, "/ 16" - "255.255.0.0").
Ще в "старі часи" маски підмережі не були вказані, а були отримані, переглядаючи певні біти IP-адреси. Наприклад, IP-адреса, що починається з 0 - 127, мала маску підмережі 255.0.0.0 (називається IP-адресою "класу А").
Ці маски на увазі підмережі сьогодні не використовуються, і я не рекомендую більше дізнаватися про них, якщо у вас не трапиться мати справу зі дуже старим обладнанням або старими протоколами (наприклад, 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".
Для маршрутизатора цей процес вибору маршруту виконується шляхом побудови таблиці маршрутів та консультацій з таблицею щоразу, коли пакет повинен бути доставлений. Таблиця маршрутизації містить ідентифікатори мережі та назви інтерфейсу призначення. Ви вже знаєте, як отримати мережевий ідентифікатор з 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, але прості алгоритми дадуть однакові результати.
Статичні маршрути
До цього часу ми говорили про наш гіпотетичний маршрутизатор як про те, що вони безпосередньо підключені до нього. Очевидно, це не так, як світ справді працює. За аналогією з керуванням піцею, іноді водія не пускають далі в будівлю, ніж на стійку реєстрації, і йому доводиться роздавати піцу комусь іншому для доставки остаточному одержувачу (призупиніть свою невіру і поводьтеся зі мною, поки Я розтягую свою аналогію, будь ласка).
Почнемо, називаючи наш роутер із попередніх прикладів "Маршрутизатор А". Ви вже знаєте таблицю маршрутизації RouterA як:
- Ідентифікатор мережі: 192.168.20.0 (11000000.10101000.00010100.00000000) - маска підмережі / 24 - Інтерфейс RouterA-Ethernet0
- Ідентифікатор мережі: 192.168.10.0 (11000000.10101000.00001010.00000000) - маска підмережі / 24 - Інтерфейс RouterA-Ethernet1
Припустимо, є ще один маршрутизатор, "Маршрутизатор B", з IP-адресами 192.168.10.254/24 та 192.168.30.1/24, призначеними для його інтерфейсів Ethernet0 та Ethernet1. Він має таку таблицю маршрутизації:
- Ідентифікатор мережі: 192.168.10.0 (11000000.10101000.00001010.00000000) - маска підмережі / 24 - Інтерфейсний маршрутизаторB-Ethernet0
- Ідентифікатор мережі: 192.168.30.0 (11000000.10101000.00011110.00000000) - маска підмережі / 24 - Інтерфейсний маршрутизаторB-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, про що маршрутизатор A нічого не знає.
Припустимо, що ПК з IP-адресою 192.168.20.13, приєднаний до мережі, підключеної до інтерфейсу Ethernet0 маршрутизатора A, відправляє пакет на маршрутизатор A для доставки. Наш гіпотетичний пакет призначений для IP-адреси 192.168.30.46, це пристрій, приєднаний до мережі, підключеної до інтерфейсу Ethernet1 маршрутизатора B.
З таблицею маршрутизації, показаною вище, жоден запис у таблиці маршрутизації маршрутизатора A не відповідає призначенню 192.168.30.46, тому маршрутизатор A поверне пакет на ПК, що надсилає повідомлення, з повідомленням "Мережа призначення недоступна".
Щоб зробити маршрутизатор «обізнаним» про існування мережі 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 хоче доставити пакети до мережі підключення 192.168.20.0 підмережі 255.255.255.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, приєднаної до маршрутизатора A, наш гіпотетичний пакет з ПК за адресою 192.168.20.13 потрапив би до пристрою призначення за адресою 192.168.30.46, але будь-яка відповідь, яку 192.168.30.46 намагалися відправити назад, буде повернута маршрутизатором B як "Мережа призначення недоступна". Одностороння комунікація, як правило, небажана. Завжди будьте впевнені, що думаєте про рух потоку в обох напрямках, коли думаєте про спілкування в комп'ютерних мережах.
З статичних маршрутів ви можете отримати багато пробігу. Динамічні протоколи маршрутизації, такі як EIGRP, RIP тощо, насправді є не що інше, як спосіб маршрутизаторів обмінюватись інформацією про маршрутизацію між собою, що насправді може бути налаштовано статичними маршрутами. Однією з найбільших переваг використання динамічних протоколів маршрутизації над статичними маршрутами є те, що протоколи динамічної маршрутизації можуть динамічно змінювати таблицю маршрутизації на основі мережевих умов (використання пропускної здатності, інтерфейс "спад" тощо) і, таким чином, використання динамічного Протокол маршрутизації може призвести до конфігурації, яка "обводить" збої або вузькі місця в мережевій інфраструктурі. (Протоколи динамічної маршрутизації , однак , НАЙКЛЮЧІ за межами цієї відповіді.)
Ви не можете дістатися звідси
У випадку нашого прикладу маршрутизатора A, що відбувається, коли входить пакет, пов'язаний для "172.16.31.92"?
Дивлячись на таблицю маршрутизації маршрутизатора, жоден інтерфейс призначення або статичний маршрут не відповідають першим 24 бітам 172.18.31.92 (що становить 10101100.00010000.00011111.01011100, BTW).
Як ми вже знаємо, маршрутизатор A поверне пакет відправнику через повідомлення "Мережа недоступної мережі".
Скажіть, що за адресою "192.168.20.254" сидить ще один маршрутизатор (маршрутизатор C). Маршрутизатор 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
Було б непогано, якби маршрутизатор A міг би маршрутизувати пакети, які не відповідають жодному локальному інтерфейсу аж до маршрутизатора C, таким чином, щоб маршрутизатор 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 цей напрямок , яке ми НЕ знаємо , як доставити пакет. Якщо ви стикаєтесь з пакетом, призначеним для пункту призначення, для якого у нас немає конкретної таблиці маршрутизації, ця запис "шлюзу за замовчуванням" завжди буде відповідати (оскільки відповідає нульовим бітам адреси призначення) і надає нам місце "останньої інстанції", яке ми можемо відправити пакети для доставки. Іноді ви почуєте шлюз за замовчуванням, який називається "крайнім шлюзом".
Для того, щоб маршрут шлюзу за замовчуванням був ефективним, він повинен звернутися до маршрутизатора, який можна отримати за допомогою інших записів у таблиці маршрутизації. Якщо ви спробували вказати на маршрутизаторі A шлюз за замовчуванням 192.168.50.254, доставка, наприклад, такий шлюз за замовчуванням не вдасться. 192.168.50.254 - це не адреса, яку маршрутизатор A знає, як доставити пакети для використання будь-якого іншого маршруту в таблиці маршрутизації, тому така адреса була б неефективною як шлюз за замовчуванням. Це можна сказати стисло: Шлюз за замовчуванням повинен бути встановлений для адреси, яка вже є доступною, використовуючи інший маршрут у таблиці маршрутів.
Реальні маршрутизатори, як правило, зберігають шлюз за замовчуванням як останній маршрут у таблиці маршрутизації таким чином, що він відповідає пакетам після того, як вони не змогли зіставити всі інші записи таблиці.
Містобудування та маршрутизація IP
Розбиття підмережі IP на менші підмережі IP - це містобудівне планування. У міському плануванні районування використовується для адаптації до природних особливостей ландшафту (річки, озера тощо), для впливу на транспортні потоки між різними частинами міста та для поділу різних типів землекористування (промислових, житлових тощо) . IP-підмережа насправді майже однакова.
Є три основні причини, через які ви підмережу в мережі:
Можливо, ви хочете спілкуватися на різних відміну від засобів масової інформації. Якщо у вас є T1 WAN-з'єднання між двома будівлями, IP-роутери можуть бути розміщені на кінцях цих з'єднань, щоб полегшити зв'язок по T1. Мережі на кожному кінці (і, можливо, "проміжна" мережа на самому T1) будуть призначені для унікальних IP-підмереж, щоб маршрутизатори могли приймати рішення про те, який трафік слід направляти через лінію T1.
У мережі Ethernet ви можете використовувати підмережу для обмеження кількості трансляційного трафіку в певній частині мережі. Протоколи рівня додатків використовують можливість широкомовної передачі Ethernet для дуже корисних цілей. По мірі того, як ви все більше й більше хостів набираються в одну і ту ж мережу Ethernet, відсоток трансляційного трафіку по проводу (або в ефірі, в бездротовій Ethernet) може збільшитися до такого моменту, що створить проблеми з доставкою не трансляційного трафіку. (За старих часів трафік трансляції міг переповнити центральний процесор хостів, змусивши їх вивчити кожен пакет мовлення. Це сьогодні менш вірогідне.) Надмірний трафік на комутованій Ethernet також може надходити у вигляді "затоплення кадрів до невідомих напрямків". Ця умова викликана тим, що комутатор Ethernet не може відслідковувати кожне місце призначення в мережі, і це є причиною того, що комутовані мережі Ethernet не можуть масштабуватись до нескінченної кількості хостів. Ефект затоплення кадрів до невідомих напрямків аналогічний ефекту надлишкового трансляційного трафіку для цілей підмережі.
Можливо, ви хочете "поліцейські" типи трафіку, що протікає між різними групами хостів. Можливо, у вас є пристрої сервера друку, і ви хочете лише, щоб авторизовані серверні комп'ютери черги друку надсилали їм завдання. Обмежуючи трафік, дозволений для надходження до підмережі пристрою сервера друку, користувачі не можуть налаштувати свої ПК для спілкування безпосередньо з пристроями сервера друку, щоб обходити облік друку. Ви можете розмістити пристрої сервера друку в підмережу все для себе і створити правило в маршрутизаторі або брандмауері, приєднаному до цієї підмережі, щоб контролювати список хостів, дозволених надсилати трафік на пристрої сервера друку. (Як маршрутизатори, так і брандмауери зазвичай можуть приймати рішення про те, як чи потрібно доставляти пакет, грунтуючись на вихідних та цільових адресах пакета. Брандмауери, як правило, є підвидом маршрутизатора з нав’язливою особистістю. Вони можуть бути дуже занепокоєні корисним навантаженням пакетів, тоді як маршрутизатори, як правило, ігнорують корисні навантаження та просто доставляють пакети.)
Плануючи місто, ви можете планувати, як вулиці перетинаються одна з одною, і можете використовувати поворотні, односторонні та тупикові вулиці для впливу на потоки руху. Можливо, ви хочете, щоб головна вулиця була завдовжки 30 блоків, в кожному блоці - до 99 будівель. Планувати нумерацію вулиць досить просто так, щоб кожен блок на головній вулиці мав діапазон номерів вулиць, що збільшуються на 100 для кожного блоку. Дуже легко дізнатися, яким повинен бути "стартовий номер" у кожному наступному блоці.
Плануючи IP-підмережі, ви маєте справу зі створенням потрібної кількості підмереж (вулиць) з потрібною кількістю наявних ідентифікаторів хостів (номерів будівель) та використанням маршрутизаторів для підключення підмереж одна до одної (перехрестя). Правила щодо дозволених адрес джерела та місця призначення, вказані в маршрутизаторах, можуть додатково контролювати потік трафіку. Брандмауери можуть діяти як нав’язливі дорожні поліцейські.
В цілях цієї відповіді, створення нашої підмережі - наша єдина головна проблема. Замість роботи в десятковій частині, як це було б із містобудування, ви працюєте у двійковій формі, щоб описати межі кожної підмережі.
Продовження: Як працює підмережа IPv4?
(Так ... ми досягли максимального розміру відповіді (30000 символів).)