модель tcp

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

Всі ці вимоги зумовили вибір моделі мережі з комутацією пакетів, в основі якої лежав не має з'єднань міжмережевий рівень. Цей рівень, званий інтернет-рівнем або міжмережевих рівнем, є основою всієї архітектури. Його завдання полягає в забезпеченні можливості для кожного хоста посилати в будь-яку мережу пакети, які будуть незалежно рухатися до пункту призначення (наприклад, в іншій мережі). Вони можуть перебувати не в тому порядку, в якому були відправлені. Якщо потрібне дотримання порядку відправлення, це завдання виконують більш верхні рівні. Зверніть увагу, що слово «інтернет» тут використовується в своєму первісному значенні незважаючи на те, що цей рівень присутній в мережі Інтернет.

Міжмережевий рівень визначає офіційний формат пакета і протокол, званий IP (Internet Protocol). Завданням мережевого протоколу є доставка IP-пакетів до пунктів призначення. Основними аспектами тут є вибір маршруту пакета і недопущення закупорки транспортних артерій. Тому можна стверджувати, що міжмережевий рівень моделі TCP / IP функцио-нально близький мережному рівню моделі OSI. Це відповідність показано на рис.

Рівень, розташований над міжмережевих рівнем моделі TCP / IP, як правило, називають транспортним. Він створений для того, щоб однорангові суті на прийомних і передавальних хостах могли підтримувати зв'язок, подібно транспортному рівню моделі OSI. На цьому рівні повинні бути описані два наскрізних протоколу. Перший, TCP (Transmission Control Protocol - протокол управління передачею), є надійним протоколом зі встановленням з'єднань, що дозволяє без помилок доставляти байтовий потік з однієї машини на будь-яку іншу машину об'єднаної мережі. Він розбиває вхідний потік байтів на окремі повідомлення і передає їх межсетевому рівню. У пункті призначення отримує TCP-процес збирає з отриманих повідомлень вихідний потік. Крім того, TCP здійснює управління потоком, щоб швидкий відправник не завалив інформацією повільного одержувача.

У моделі TCP / IP немає сеансового рівня і рівня уявлення. У цих рівнях просто не було необхідності, тому вони не були включені в модель. Досвід роботи з моделлю OSI довів правоту цієї точки зору: більшість додатків в них мало потребують.

Порівняння еталонних моделей OSI і TCP

У моделей OSI і TCP є багато спільних рис. Обидві моделі засновані на концепції стека незалежних протоколів. Функціональність рівнів також багато в чому схожа. Наприклад, в обох моделях рівні, починаючи з транспортного і вище, надають наскрізну, не залежну від мережі транспортну службу для процесів, які бажають обмінюватися інформацією. Ці рівні утворюють постачальника транспорту. Також в кожній моделі рівні вище транспортного є прикладними споживачами транспортних сервісів.

Для моделі OSI центральними є три концепції:

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

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

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

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

Спочатку в моделі TCP / IP не було чіткого поділу між службами, інтерфейсом і протоколом, хоча і проводилися спроби змінити це, щоб зробити її більш схожою на модель OSI. Так, наприклад, єдиними справжніми сервісами, наданими міжмережевих рівнем, є SEND IP PACKET (послати IP-пакет) і RECEIVE IP PACKET (отримати IP-пакет).

В результаті в моделі OSI протоколи приховані краще, ніж в моделі TCP / IP, і при зміні технології вони можуть бути відносно легко замінені. Можливість проводити подібні зміни - одна з головних цілей багаторівневих протоколів.

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

Наприклад, рівень передачі даних спочатку працював тільки в мережах з передачею від вузла до вузла. З появою широкомовних мереж в модель треба ввести новий підрівень. Коли ж на базі моделі OSI почали будувати реальні мережі з використанням існуючих протоколів, виявилося, що вони не відповідають необхідним специфікаціям служб. Тому в модель довелося додати підрівні для усунення невідповідності. Нарешті, спочатку очікувалося, що в кожній країні буде одна мережа, керована урядом і ісполозующая протоколи OSI, тому ніхто і не думав про об'єднання різних мереж. Насправді все виявилося не так.

З моделлю TCP / IP було все навпаки: спочатку з'явилися протоколи, а вже потім була створена модель, що описує існуючі протоколи. Таким чином, не було проблеми з відповідністю протоколів моделі. Вони їй відповідали прекрасно. Єдиною проблемою було те, що модель не відповідала ніяким іншим стека протоколів. В результаті вона не використовувалася для опису яких-небудь інших мереж, відмінних від TCP / IP.

Якщо поглянути на ці дві моделі ближче, то перш за все зверне на себе увагу відмінність в кількості рівнів: в моделі OSI сім рівнів, в моделі TCP / IP - чотири. В обох моделях є міжмережевий, транспортний і прикладної рівні, а інші рівні різні.

Ще одна відмінність між моделями лежить в сфері можливості використання зв'язку на основі сполук і зв'язку без встановлення з'єднання. Модель OSI на мережевому рівні підтримує обидва типи зв'язку, а на транспортному рівні - тільки зв'язок на основі сполук (оскільки транспортні служби є видимими для користувача). У моделі TCP / IP на мережевому рівні є тільки один режим зв'язку (без встановлення з'єднання), але на транспортному рівні він підтримує обидва режими, надаючи користувачам вибір. Цей вибір особливо важливий для простих протоколів «запит - відповідь».

Критика еталонної моделі TCP / IP

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

По-друге, модель TCP / IP аж ніяк не є спільною і досить погано описує будь-стек протоколів, крім TCP / IP. Так, наприклад, описати технологію Bluetooth за допомогою моделі TCP / IP абсолютно неможливо.

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

По-четверте, в моделі TCP / IP не розрізняються фізичний рівень і рівень передачі даних. Про це відмінності навіть немає згадки. Тим часом вони абсолютно різні. Фізичний рівень повинен мати справу з характеристиками передачі інформації по мідному кабелю, оптичного волокна і по радіо, тоді як завданням рівня передачі даних є визначення початку і кінця кадрів і передача їх з одного боку на іншу з необхідним ступенем надійності. Правильна модель повинна містити їх як два різних рівня. У моделі TCP / IP цього немає.

І нарешті, хоча протоколи IP і TCP були ретельно продумані і непогано реалізовані, багато інших протоколи були створені кількома студентами, які працювали над ними, поки це заняття їм не набридло. Реалізації цих протоколів розповсюджувалося, в результаті чого вони отримали широке визнання, глибоко вкоренилися, і тепер їх важко замінити на що-небудь інше. Деякі з них в даний час виявилися серйозною перешкодою на шляху прогресу. Наприклад, протокол віртуального терміналу TELNET, створений ще для механічного терміналу типу Teletype, який працював з величезною швидкістю 10 символів в секунду. Йому нічого не відомо про графічних інтерфейсах користувача і про мишок. Проте зараз, майже 30 років тому, він все ще широко використовується.

Незважаючи на всі недоліки, модель OSI (крім сеансового рівня і рівня представлення) показала себе виключно корисною для теоретичних дискусій про комп'ютерні мережі. Протоколи OSI, навпаки, не набули широкого поширення. Для TCP / IP вірно зворотне: модель практично не існує, тоді як протоколи надзвичайно популярні.

Схожі статті