Введення
Стек протоколів TCP / IP тісно пов'язаний з мережею Internet, її історією та сучасністю. Створений він був у 1969 році, коли для мережі ARPANET знадобився ряд стандартів для об'єднання в єдину мережу комп'ютерів з різними архітектурами та операційними системами. На базі цих стандартів і був розроблений набір протоколів, що отримали назву TCP / IP. Разом зі зростанням Internet протокол TCP / IP завойовував позиції і в інших мережах. На сьогоднішній день цей мережевий протокол використовується як для зв'язку комп'ютерів всесвітньої мережі, так і в переважній більшості корпоративних мереж. У наші дні використовується версія протоколу IP, відома як IPv4. У статті ми розглянемо стандартну схему адресації і більше нові методи раціонального використання адресного простору, введені в результаті виявлених недоліків у реалізації протоколу IP.
1. Адресація протоколу IP
Згідно зі специфікацією протоколу, кожному вузлу, приєднаного до IP-мережі, присвоюється унікальний номер. Вузол може представляти собою комп'ютер, маршрутизатор, міжмережевий екран і ін Якщо один вузол має кілька фізичних підключень до мережі, то кожному підключенню повинен бути привласнений свій унікальний номер. Цей номер, або по-іншому IP-адресу, має довжину в чотири октету, і складається з двох частин. Перша частина визначає мережу, до якої належить вузол, а друга - унікальний адресу самого вузла всередині мережі. У класичній реалізації протоколу першу частину адреси називали "мережевим префіксом", оскільки вона однозначно визначала мережу. Однак у сучасній реалізації це вже не так і мережа ідентифікують іншим чином, нижче мова піде про класичну адресної схемою протоколу ip.
Спочатку всі адресний простір розділили на п'ять класів: A, B, C, D і Е. Така схема отримала назву "класової". Кожен клас однозначно ідентифікувався першими бітами лівого байта адреси. Самі ж класи відрізнялися розмірами мережевої та вузловий частин. Знаючи клас адреси, ви могли визначити межу між його мережевий і вузловий частинами. Крім того, така схема дозволяла при маршрутизації не передавати разом з пакетом інформацію про довжину мережної частини IP-адреси.
Таблиця 1-Іеархіческая схема протоколів IP
Клас А | ||||
Номер біта | 0 | 8 | 16 | 24 31 |
Адреса | 0 ....... | ........ | ........ | ........ |
Мережева частина | ||||
Клас В | ||||
Номер біта | 0 | 8 | 16 | 24 31 |
Адреса | 10 ...... | ........ | ........ | ........ |
Мережева частина | ||||
Клас С | ||||
Номер біта | 0 | 8 | 16 | 24 31 |
Адреса | 110 ..... | ........ | ........ | ........ |
Мережева частина | ||||
Клас D | ||||
Номер біта | 0 | 8 | 16 | 24 31 |
Адреса | 1110 .... | ........ | ........ | ........ |
Клас E | ||||
Номер біта | 0 | 8 | 16 | 24 31 |
Адреса | 1111 .... | ........ | ........ | ........ |
Клас А орієнтований на дуже великі мережі. Всі адреси, що належать цьому класу, мають 8-бітний мережний префікс, на що вказує перший біт лівого байта адреси встановлений в нуль. Відповідно, на ідентифікацію вузла відведено 24 біта і кожна мережа "вісімка" може містити до 224-2 вузлів. Два адреси необхідно відняти, оскільки адреси, що містять у правому октеті всі нулі (ідентифікує вказану мережу) і всі одиниці (широкомовний адреса) використовуються в службових цілях і не можуть бути присвоєні вузлів. Самих же мереж "вісімок" може бути 27-2. Знову ми віднімаємо двійку, але це вже дві службових мережі: 127 / 8 і 0 / 8 (по-старому: 127.0.0.0 і 0.0.0.0). Нарешті, можна помітити, що клас А містить всього 27 * 224 = 231 адрес, або половину всіх можливих IP-адрес. Клас В призначений для мереж великого і середнього розмірів. Адреси цього класу ідентифікуються двома старшими бітами, рівними відповідно 1 і 0. Мережевий префікс класу складається з шістнадцяти біт або перших двох октетів адреси. Оскільки два перших біта мережевого префікса зайняті визначальним клас ключем, то можна задати лише 214 різних мереж. Вузлів ж у кожної мережі можна визначити до 216-2. У деяких джерелах, для визначення кількості можливих мереж використовується формула 2х-2 для всіх класів, а не тільки для А. Це пов'язано з певними причинами, які більш детально будуть викладені нижче. На сьогоднішній день немає ніякої необхідності зменшувати кількість можливих мереж на дві. Провівши обчислення, аналогічні наведеним для класу А, ми побачимо, що клас У займає чверть адресного простору протоколу IPНаконец, самий вживається клас мереж - клас С-має 24 бітний мережний префікс, визначається старшими бітами, встановленими в 110, і може ідентифікувати до 221 мереж . Відповідно, клас дозволяє адресувати до 28-2 вузлів. Займає восьму частину адресного простору протоколу TCP / IP. Останні два класи займають залишилася восьму частину в адресному просторі і призначені для службового (клас D) та експериментального (клас Е) використання. Для класу D старші чотири біта адреси встановлені в 1110, для класу Е - 1111. Сьогодні клас D використовується для групової передачі інформації. Оскільки довгі послідовності з одиниць і нулів важко запам'ятати, IP адреси звичайно записують у десятковій формі. Для цього кожен октет адреси представляється у вигляді десяткового числа. Між собою октети відокремлюються крапкою. Іноді октети позначаються як wxyz і називаються "z-октет", "y-октет", "x-октет" і "w-октет". Представлення IP-адреси у вигляді чотирьох десяткових чисел розділених точками і називається "точково-десяткова нотація".
Октет | W | X | Y | Z |
Номер біта | 0 | 8 | 16 | 24 31 |
Адреса | 11011100 | 11010111 | 00001110 | 00010110 |
220 | 215 | 14 | 22 | |
Точково-десятковий формат | 220.215.14.22 |
Малюнок 1 - IP в точково-десяткового нотації
На рис. 1 показано, як IP-адреса представляється у точково-десяткового нотації.
Підсумуємо інформацію про класи мереж в таблиці:
Таблиця 2 - Класова мережу
Клас | Кількість мереж | Кількість вузлів | Десятковий діапазон | |
A | 27 - 2 (126) | 224 - 2 (2 147 483 648) | 1.ххх.ххх.ххх | 126.ххх.ххх.ххх |
B | 214 (16 384) | 216 - 2 (65 534) | 128.0.ххх.ххх | 191.255.ххх.ххх |
C | 221 (2 097 152) | 28 - 2 (254) | 192.0.0.ххх | 223.255.255.ххх |
D | - | - | 224.0.0.ххх | 239.255.255.ххх |
E | - | - | 240.0.0.ххх | 254.255.255.ххх |
1.1 Угода про спеціальні:: broadcast, multicast, loopback
У протоколі IP існує кілька угод про особливу інтерпретації IP-адрес:
якщо IР-адреса складається тільки з двійкових нулів,
0 0 0 0 ................................... 0 0 0 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
то він позначає адресу того вузла, який згенерував цей пакет;
якщо в поле номера мережі коштують 0,
0 0 0 0 ....... 0 | Номер вузла |
то за замовчуванням вважається, що цей вузол належить тій же самій мережі, що й вузол, що відправив пакет;
якщо всі двійкові розряди IP-адреси рівні 1, то пакет з такою адресою призначення повинен розсилатися всім вузлам, що перебувають у тій же мережі, що й джерело цього пакета.
1 1 1 1 ......................................... 1 січня | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Така розсилка називається обмеженим широкомовним повідомленням (limited broadcast);
якщо в поле адреси призначення коштують суцільні 1,
Номер мережі | 1111 ................ 11 |
то пакет, що має таку адресу розсилається всім вузлам мережі із заданим номером. Така розсилка називається широкомовним повідомленням (broadcast); адреса 127.0.0.1 зарезервований для організації зворотного зв'язку при тестуванні роботи програмного забезпечення вузла без реального відправлення пакета по мережі. Ця адреса має назва loopback.
Вже згадувана форма групового IP-адреси - multicast - означає, що даний пакет повинен бути доставлений відразу декільком вузлам, які утворюють групу з номером, зазначеним у поле адреси. Вузли самі ідентифікують себе, тобто визначають, до якої з груп вони відносяться. Один і той же вузол може входити в кілька груп. Такі повідомлення на відміну від широкомовних називаються мультівещательнимі. Груповий адреса не ділиться на поля номера мережі й вузла й обробляється маршрутизатором особливим чином. У протоколі IP немає поняття широкомовного в тому сенсі, в якому воно використовується в протоколах канального рівня локальних мереж, коли дані повинні бути доставлені абсолютно усіх вузлів. Як обмежений широкомовний IP-адресу, так і широкомовна IP-адреса мають межі розповсюдження в інтермережі - вони обмежені або мережею, до якої належить вузол - джерело пакета, або мережею, номер якої вказаний у адресі призначення. Тому поділ мережі за допомогою маршрутизаторів на частини локалізує широкомовний шторм межами однієї зі складових загальну мережу частин просто тому, що немає способу адресувати пакет одночасно всім вузлам всіх мереж складовою мережі.
1.2 Відображення фізичних адрес на IP-адреси: протоколи ARP і RARP
У протоколі IP-адресу сайту, тобто адреса комп'ютера або порту маршрутизатора, призначається довільно адміністратором мережі й прямо не пов'язаний з його локальною адресою, як це зроблено, наприклад, у протоколі IPX. Підхід, використовуваний в IP, зручно використовувати у великих мережах і через його незалежності від формату локальної адреси, і через стабільності, тому що в противному випадку, при зміні на комп'ютері мережного адаптера ця зміна повинні б були враховувати всі адресати всесвітньої мережі Internet ( в тому випадку, звичайно, якщо мережа підключена до Internet'у). Локальний адреса використовується в протоколі IP тільки в межах локальної мережі при обміні даними між маршрутизатором і вузлом цієї мережі. Маршрутизатор, одержавши пакет для вузла однієї з мереж, безпосередньо підключених до його портів, повинен для передачі пакета сформувати кадр відповідно до вимог прийнятої в цій мережі технології і вказати в ньому локальна адреса вузла, наприклад його МАС-адресу. У прийшов пакеті ця адреса не вказано, тому перед маршрутизатором встає задача пошуку його по відомому IP-адресою, яка зазначена в пакеті як адреси призначення. З аналогічною задачею зіштовхується й кінцевий вузол, коли він хоче відправити пакет у вилучену мережу через маршрутизатор, підключений до тієї ж локальної мережі, що і цей вузол. Для визначення локальної адреси по IP-адресою використовується протокол дозволу адреси Address Resolution Protocol, ARP. Протокол ARP працює різним образом залежно від того, який протокол канального рівня працює в даній мережі - протокол локальної мережі (Ethernet, Token Ring, FDDI) з можливістю широкомовного доступу одночасно до всіх вузлів мережі, або ж протокол глобальної мережі (X.25, frame relay), як правило не підтримуючий широкомовний доступ. Існує також протокол, що вирішує зворотну задачу - знаходження IP-адреси за відомим локального адресою. Він називається реверсивний ARP - RARP (Reverse Address Resolution Protocol) і використовується при старті бездискових станцій, що не знають у початковий момент свого IP-адреси, але знаючих адресу свого мережного адаптера. У локальних мережах протокол ARP використовує широкомовні кадри протоколу канального рівня для пошуку в мережі вузла із заданим IP-адресою. Вузол, якому потрібно виконати відображення IP-адреси на локальну адресу, формує ARP запит, вкладає його в кадр протоколу канального рівня, указуючи в ньому відомий IP-адресу, і розсилає запит широкомовно. Всі вузли локальної мережі одержують ARP запит і порівнюють зазначений там IP-адресу із власним. У разі їх збігу вузол формує ARP-відповідь, в якій вказує свій IP-адресу і свій локальний адресу і відправляє його вже направлено, тому що в ARP запиті відправник зазначає свою локальну адресу. ARP-запити і відповіді використовують один і той же формат пакета. Так як локальні адреси можуть у різних типах мереж мати різну довжину, то формат пакета протоколу ARP залежить від типу мережі. На малюнку 2 показаний формат пакета протоколу ARP для передачі по мережі Ethernet.
Тип мережі | Тип протоколу | |
Довжина локальної адреси | Довжина мережевого адреси | Операція |
Локальний адресу відправника (байти 0 - 3) | ||
Локальний адресу відправника (байти 4 - 5) | IP-адреса відправника (байти 0-1) | |
IP-адреса відправника (байти 2-3) | Бажаємий локальну адресу (байти 0 - 1) | |
Бажаємий локальну адресу (байти 2-5) | ||
Бажаємий IP-адреса (байти 0 - 3) |
Рисунок 2 - Формат пакета протоколу ARP
У полі типу мережі для мереж Ethernet вказується значення 1. Поле типу протоколу дозволяє використовувати пакети ARP не тільки для протоколу IP, але і для інших мережевих протоколів. Для IP значення цього поля дорівнює 080016. Довжина локальної адреси для протоколу Ethernet дорівнює 6 байтам, а довжина IP-адреси - 4 байтам. У полі операції для ARP запитів вказується значення 1 для протоколу ARP і 2 для протоколу RARP. Вузол, що відправляє ARP-запит, заповнює в пакеті всі поля, крім поля шуканого локальної адреси (для RARP-запиту не вказується шуканий IP-адресу). Значення цього поля заповнюється вузлом, упізнав свою IP-адресу. У глобальних мережах адміністратора мережі найчастіше доводиться вручну формувати ARP-таблиці, в яких він задає, наприклад, відповідність IP-адреси адресою вузла мережі X.25, який має сенс локальної адреси. Останнім часом намітилася тенденція автоматизації роботи протоколу ARP і в глобальних мережах. Для цієї мети серед всіх маршрутизаторів, підключених до якої-небудь глобальної мережі, виділяється спеціальний маршрутизатор, який веде ARP-таблицю для всіх інших вузлів і маршрутизаторів цієї мережі. При такому підході централізованому для всіх вузлів і маршрутизаторів вручну потрібно встановити тільки IP-адресу і локальний адресу виділеного маршрутизатора. Потім кожен вузол і маршрутизатор реєструє свої адреси в виділеному маршрутизаторі, а при необхідності встановлення відповідності між IP-адресою і локальною адресою вузол звертається до виділеного маршрутизатора з запитом і автоматично отримує відповідь без участі адміністратора.
1.3 Організація доменів і доменних імен
Для ідентифікації комп'ютерів апаратне та програмне забезпечення в мережах TCP / IP покладається на IP-адреси, тому для доступу до мережевого ресурсу в параметрах програми цілком достатньо вказати IP-адресу, щоб програма правильно зрозуміла, до якого хосту їй потрібно звернутися. Наприклад, команда ftp://192.45.66.17 буде встановлювати сеанс зв'язку з потрібним ftp-сервером, а команда http://203.23.106.33 відкриє початкову сторінку на корпоративному web-сервері. Однак користувачі зазвичай вважають за краще працювати із символьними іменами комп'ютерів, і операційні системи локальних мереж привчили їх до цього зручного способу. Отже, у мережах TCP / IP повинні існувати символьні імена хостів і механізм для встановлення відповідності між символьними іменами й IP-адресами. В операційних системах, які спочатку розроблялися для роботи в локальних мережах, таких як Novell NetWare, Microsoft Windows або IBM OS / 2, користувачі завжди працювали з символьними іменами комп'ютерів. Так як локальні мережі складалися з невеликого числа комп'ютерів, то використовувалися так звані плоскі імена, що складаються з послідовності символів, не розділених на частини. Прикладами таких імен є: NW1_1, mail2, MOSCOW_ SALES_2. Для встановлення відповідності між символьними іменами й Мас-адресами в цих операційних системах застосовувався механізм широкомовних запитів, подібний механізму запитів протоколу ARP. Так, широкомовний спосіб дозволу Імен реалізований в протоколі NetBIOS, на якому були побудовані багато локальних ОС. Так звані NetBIOS-імена стали на довгі роки одним з основних типів плоских імен у локальних мережах. Для стека TCP / IP, розрахованого в загальному випадку на роботу у великих територіально розподілених мережах, подібний підхід виявляється неефективним з кількох причин. Плоскі імена не дають можливості розробити єдиний алгоритм забезпечення унікальності імен у межах великої мережі. У невеликих мережах унікальність імен комп'ютерів забезпечує адміністратор мережі, записуючи кілька десятків імен у журналі або файлі. При зростанні мережі задачу вирішують уже кілька адміністраторів, погоджуючи імена між собою неформальним способом. Однак якщо мережа розташована в різних містах або країнах, то адміністраторам кожної частини мережі потрібно придумати спосіб іменування, який дозволив би їм давати імена новим комп'ютерам незалежно від інших адміністраторів, забезпечуючи в той же час унікальність імен для всієї мережі. Найнадійніший спосіб вирішення цього завдання - відмова від плоских імен у принципі. Широкомовна спосіб встановлення відповідності між символьними іменами й локальними адресами добре працює тільки в невеликій локальній мережі, не розділеній на підмережі. У великих мережах, де загальна широкомовного не підтримується, потрібен інший спосіб дозволу символьних імен. Зазвичай хорошою альтернативою широкомовного є застосування централізованої служби, що підтримує відповідність між різними типами адрес всіх комп'ютерів мережі. Компанія Microsoft для своєї корпоративної операційної системи Windows NT розробила централізовану службу WINS, яка підтримує базу даних NetBIOS-імен і відповідних їм IP-адрес. Для ефективної організації іменування комп'ютерів у великих мережах природним є застосування ієрархічних складових імен. У стеці TCP / IP застосовується доменна система імен, яка має ієрархічну деревоподібну структуру, яка допускає використання в імені довільної кількості складових частин (рис. 3).