Internet Protocol
![]() | Ця стаття містить перелік посилань, але походження тверджень у ній залишається незрозумілим через практично повну відсутність внутрішньотекстових джерел-виносок. |
Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
IP (від англ. Internet Protocol; «інтернет протокол», «міжмережевий протокол») — протокол мережевого рівня для передавання датаграм між мережами.
IP-протокол — найпоширеніша реалізація ієрархічної схеми мережевої адресації. Використовуваний в мережі Інтернет, протокол відповідає за адресацію пакетів, але не відповідає за встановлення з'єднань, не є надійним і дозволяє реалізувати тільки негарантовану доставку даних. Термін «протокол без встановлення з'єднань» (англ. connectionless) означає, що протокол для взаємодії не потребує виділеного каналу, як це відбувається під час телефонної розмови і не існує процедури виклику перед початком передачі даних між мережевими вузлами. Протокол IP вибирає найефективніший шлях з числа доступних на основі рішень прийнятих протоколом маршрутизації. Відсутність надійності і негарантована доставка не означає, що система працює погано або ненадійно, а вказує лиш на те, що протокол IP не докладає ніяких зусиль, щоб перевірити чи був пакет доставлений за призначенням. Ці функції делеговані протоколам транспортного та вищих рівнів. Транспортний рівень також відповідає за збірку пакетів у повідомлення в потрібній послідовності.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/UDP_encapsulation.svg/200px-UDP_encapsulation.svg.png)
Інформація, проходячи вниз по рівням моделі OSI, на кожному рівні певним чином обробляється протоколами цього рівня. На малюнку можна побачити, як на мережному рівні дані інкапсулюються всередину пакетів, іноді названих дейтаграммами (датаграмами).
Протокол IP розпізнає формат заголовка пакета (адресну частину та іншу службову інформацію включно), але не аналізує і не піклується про фактичні дані. Він приймає і передає будь-які дані, передані протоколами верхніх рівнів.
Заголовок і хвіст фрейму відкидаються і замінюються новими щоразу при проходженні пакетом маршрутизатора. Причина в тому, що блоки інформації другого рівня (фрейми) використовуються для локальної доставки пакетів, у той час як блоки третього рівня (пакети) призначені для наскрізної передачі даних згідно з схемою маршрутизації.
Ethernet-фрейми другого рівня призначені для роботи всередині широкомовних доменів з призначеними кожному мережному пристрою MAC-адресами. Фрейми другого рівня інших типів, як наприклад послідовні двохточкові з'єднання або Frame relay розподілених мереж (мереж WAN), використовують свою власну схему адресації другого рівня. Принциповим є те, що незалежно від використовуваної схеми адресації другого рівня, всі вони розроблені для використання всередині одного широкомовного домену другого рівня. При проходженні крізь пристрій третього рівня інформація другого рівня змінюється.
Процеси, виконувані пристроями третього рівня, проілюстровані на малюнку справа.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/73/%D0%86%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D1%96%D1%8F_%D0%B2_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%D1%96.gif/220px-%D0%86%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D1%96%D1%8F_%D0%B2_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%D1%96.gif)
Із фрейму, що приходить на інтерфейс роутера, витягається MAC-адреса і перевіряється, адресований цей пакет безпосередньо якомусь вузлу чи інтерфейсу, чи він є широкомовним (ця процедура виконується всіма пристроями всередині домену колізій). В будь-якому з цих випадків пакет буде оброблено, в іншому — відкинуто, оскільки він адресований іншому вузлу в домені колізій. Таким чином, домен колізій — розподілене середовище передачі даних, в якому пристрої працюють в режимі конкуренції. На основі значення, що зберігається в полі контрольної суми, за допомогою циклічного збиткового коду (Cyclical Redundancy Check — CRC), що був вилучений з хвоста отриманого фрейму, перевіряється чи були дані пошкоджені. Якщо перевірка дає позитивний результат — фрейм відкидається. У випадку негативного результату, заголовок і хвіст фрейму відкидаються і пакет передається на третій рівень. Далі виконується перевірка, чи було пакет адресовано маршрутизатору, чи потрібна подальша маршрутизація на шляху до місця призначення. Пакети, адресовані роутеру як IP-адреса отримувача, мають адресу одного з його інтерфейсів. У таких пакетів видаляється заголовок і вони передаються на четвертий, транспортний рівень. Якщо пакет потребує маршрутизації, IP-адреса пункту призначення пакету порівнюється з записами в таблиці маршрутизації. Якщо знайдено точну відповідність або існує стандартний маршрут, — пакет відправляється на інтерфейс, що вказано в таблиці маршрутизації. Коли пакет комутується на вихідний інтерфейс, нове значення CRC додається у хвіст фрейму і, в залежності від типу інтерфейсу (Ethernet, Frame relay або послідовний), пакету додається відповідний заголовок. Після чого фрейм пересилається в інший широкомовний домен на шляху до кінцевого пункту призначення.
Вище ми розглянули як пакети третього рівня стають даними другого рівня та інкапсулюються у фрейми. Аналогічно, IP-пакети складаються з даних верхнього рівня та IP-заголовку. За специфікацією протоколу, пакет має бути не більший за 65535 бітів (з заголовком та даними включно).
- Версія (Version) — 4-бітове поле, що описує використовувану версію протоколу IP. Всі пристрої зобов'язані використовувати протокол IP однієї версії, пристрій що використовує іншу версію буде відкидати пакети.
- Довжина IP-заголовку (IP header Length — HLEN) — 4-бітове поле, що описує довжину заголовку пакету в 32-бітових блоках. Це значення — це повна довжина заголовку з врахуванням двох полів змінної довжини.
- Тип обслуговування (Type of Service — TOS) — 8-бітове поле, що вказує на ступінь важливості інформації, що привласнена протоколом верхнього рівня.
- Загальна довжина (Total Length) — 16-бітове поле, що описує довжину пакету в байтах, із заголовком та даними включно. Для того щоб вирахувати довжину блока даних, потрібно від повної довжини відняти значення поля HLEN.
- Ідентифікація (Identification) — шістнадцятибітове поле, що зберігає ціле число, яке описує даний пакет. Це число являє собою послідовний номер.
- Прапорці (Flags) — 3-бітове поле, в якому два молодших біта контролюють фрагментацію пакетів. Перший біт визначає чи було пакет фрагментовано, а другий чи є цей пакет останнім фрагментом в серії фрагментів.
- Зміщення фрагментації (Fragment Offset) — 13-бітове поле, що допомагає зібрати разом фрагменти пакетів. Це поле дозволяє використовувати 16 бітів в сумі для прапорів фрагментації.
- Час життя (Time-to-Live — TTL) — 8-бітове поле — лічильник, в якому зберігаються послідовно зменшуване значення кількості пройдених вузлів (роутерів, що їх ще іноді в цьому випадку називають хопами (hops)) на шляху до місця призначення. У випадку коли лічильник пройдених хопів дорівнюватиме нулю — пакет буде відкинуто, таким чином попереджується нескінченна циклічна пересилка пакетів.
- Протокол (Protocol) — 8-бітове поле, що вказує на те, який протокол верхнього рівня отримає пакет, після завершення обробки IP-протоколом. Наприклад TCP або UDP.
- Контрольна сума заголовку (Header Checksum) — 16-бітове поле, що допомагає перевірити цілісність заголовку пакету.
- IP-адреса відправника (Source IP address) (адресант, сорс, відправник) — 32-бітове поле, що зберігає IP-адресу вузла-відправника.
- IP-адреса отримувача (Destination IP adress) (адресат, дест, отримувач) — 32-бітове поле, що зберігає адресу вузла призначення (отримувача).
- Опції (Options) — поле змінної довжини, що дозволяє протоколу IP реалізувати підтримку різних опцій, зокрема засобів безпеки.
- Підкладка (Padding) — поле, що використовується для вставки додаткових нулів, для гарантування кратності IP-заголовку 32 бітам.
- Дані (Data) — поле змінної довжини (64 Кбіт макс.), що зберігає інформації для верхніх рівнів.
Біти 0-3 | 4-7 | 8-15 | 16-18 | 19-23 | 24-31 |
---|---|---|---|---|---|
Версія | HLEN | Тип обслуговування | Загальна довжина | ||
Ідентифікація | Прапорці | Зміщення фрагментації | |||
Час життя | Протокол | Контрольна сума заголовку | |||
IP-адреса відправника | |||||
IP-адреса отримувача | |||||
Опції | Додаток | ||||
Дані (65535 мінус заголовок) | |||||
… |
IP-пакет складається з даних протоколу верхнього рівня і заголовку, що має описану вище структуру. Хоча основною частиною заголовку є адреси відправника і призначення, саме інші частини заголовку роблять протокол таким надійним і гнучким. Інформація, що зберігається в полях заголовку задає дані пакету і призначена для протоколів верхніх рівнів.
- Комп'ютерні мережі: [навчальний посібник] / А. Г. Микитишин, М. М. Митник, П. Д. Стухляк, В. В. Пасічник. — Львів: «Магнолія 2006», 2013. — 256 с. ISBN 978-617-574-087-3
- Буров Є. В. Комп'ютерні мережі: підручник / Євген Вікторович Буров. — Львів: «Магнолія 2006», 2010. — 262 с. ISBN 966-8340-69-8