Загальні положення

 

Стек ТCP/IP є самим широко поширеним набором. Більшість глобальних мереж використовують набір ТCP/IP для передачі свого трафіку, тому всі сучасні операційні системи підтримують цей протокол.

Ви можете використовувати ТCP/IP для побудови як приватних (private), так і спільних (public) мереж. Передбачимо, що ваша організація має декілька різних офісів, в кожному з яких є своя локальна мережа. Ви могли б скористатися ТCP/IP, щоб забезпечити міжмережеве з'єднання.

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

Набір ТCP/IP масштабується. Що дає можливість додавати нові підмережі без порушення існуючих мережевих служб.

Архітектура мереж ТCP/IP дозволяє працювати з кожним видом мереж, роблячи її незалежною від постачальника або типа мережі. Ці мережеві протоколи мають настільки маленький заголовок, наскільки це можливо. Проте вони забезпечують оптимальну продуктивність.

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

Мережі, що використовують комплект протоколів ТCP/IP, є пакетно-комутовані. Пакетно-комутована мережа передає інформацію по мережі невеликими порціями, званими пакетами.

Протоколи ТCP/IP визначають формат пакетів. Формат пакету точно визначає:

• джерело і приймач пакету;

• тип пакету;

• порядок проходження пакетів.

Internet Protocol - IP - основний протокол стека. IP не забезпечує перевірку виникнення помилок або яку-небудь надійність, він просто передає дані по мережі у формі пакетів. Надійність забезпечується протоколом більш високого рівня, так званим протоколом управління передачею (Transmission Control Protocol - TCP).

IP забезпечує якнайкращий маршрут доставки датаграм без прямого з'єднання. Іншими словами, немає ніякої гарантії, що пакети прибудуть за призначенням. Також не гарантується прийом пакетів в тій послідовності, в якій вони були відправлені. Цілісність і правильна послідовність даних, що містяться в IP-пакетах може бути забезпечена тільки протоколом більш високого рівня. Це відбувається тому, що контрольна сума IP-пакета розраховується тільки для заголовка пакету і не розраховується для поля даних.

IP визначає форму пакетів і способи управління ними при відправленні і прийомі. Формат пакету називається IP-датаграмой.

IP-датаграма схожа на кадр, що передається по мережі.

 

Таблиця 2.1

  Формат IP-пакета  
32 бита  
  Версія IHL Тип сервіса TOS Довжина пакету  
  Идентифиікація Прапори Зсув фрагмента    
  Час життя TTL Протокол Контрольна сума заголовка  
  Адреса відправника  
  Адреса одержувача  
  Опції(+ заповнення)  
  Данні (змінна довжина)  

 

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

Датаграма містить поле версії (VERS), в яке поміщається номер використовуваної версії протоколу.

Поле IHL містить довжину заголовка датаграми в 32-розрядних словах (тобто їх число).

Поле типа сервісу TOS визначає який протокол більш високого рівня оброблятиме цю датаграму.

Поле довжини пакету визначає повну довжину IP-пакета в байтах, включаючи дані і заголовок.

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

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

Поле часу життя (Time to Live - TTL) містить лічильник, який зменшується до нуля. Після цього датаграма знищується. Це запобігає безконечному зацикленню пакетів.

Поле протоколу показує, який протокол більш високого рівня отримає вхідний пакет після його IP-обробки. Кожному протоколу стека TCP/IP привласнений свій номер (наприклад, протокол TCP має номер 6, а протокол UDP - номер 17). Цей номер і записується у відповідне поле протоколу.

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

Адресу відправника визначає вузол-джерело пакету. Адресу одержувача визначає вузол, якому цей пакет відправлений.

Поле опцій дозволяють протоколу IP виконувати такі функції, які забезпечують безпеку, тестування мережі, налагодження і тому подібне

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

Протокол ARP (Address Resolution Protocol) використовується для перетворення відомих IP-адресов в адреси фізичні (або MAC-адреси) і допускає з'єднання з множинним доступом, такі як в Ethernet. Це виконується за допомогою посилки ARP-запроса, а також кешування використовуваних адрес.

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

Таким чином, протокол ARP перетворить IP-адресу у фізичні (або апаратні) адреси. Кожного разу, посилаючи ARP-запрос і отримуючи на нього відповідь, вузол зберігає IP-адресу і відповідна йому фізична адреса в спеціальний кеш перетворення адрес.

Термін «локальний ARP» використовується при описі перетворення адрес, коли і запрошуючий вузол, і вузол призначення використовують спільно один і той же дріт (або середу) для передачі повідомлень. Перш ніж перейти до пояснення локального ARP, скажемо пару слів про так звані маски підмережі. Ця маска визначає, чи знаходяться вузли в одній підмережі. Оскільки відправляючі і одержуючі вузли знаходяться в одній підмережі, вони повинні використовувати фізичну адресу для встановлення з'єднання один з одним. Таким чином відправник використовує ARP для визначення фізичної адреси станції-одержувача.

Протокол RARP (Reverse Address Resolution Protocol) в стеку ТCP/IP виконує функції, протилежні функціям протоколу ARP, тобто перетворить фізичні (або MAC-адреса) у відповідні ним IP-адреса.

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

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

Протокол - TCP не підтверджує отримання пошкоджених або втрачених даних і це є сигналом відправникові повторити передачу. Таким чином, ТCP/IP - протокол, відповідний для поетапної (session-based) передачі даних, клієнт/серверних застосувань, а також таких критичних служб, як FTP (File Transmission Protocol - протокол передачі файлів).

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

 

Таблиця 2.2

  Формат TCP-пакету  
  Порт- джерело Порт- приймач  
  Номер в послідовності  
  Номер підтвердження  
  Зміщення Резерв Прапори Вікно  
  Контрольна сума Покажчик необхідних даних  
  Опції (+заповнення)  
  Данні (змінна довжина)  
           

 

Заголовок пакету TCP містить поля порту-джерела і порту-приймача, що визначають крапки, в яких процеси вищого рівня джерела і приймача отримують послуги TCP. Поле порту-джерела визначає протокол-джерело більш високого рівня. Більшість широко використовуваних додатків вищого рівня мають специфічні номери портів, закріплені за ними (наприклад, FTP використовує порт 21). Поле порту-приймача також містить номер порту, але цього разу це високорівневий протокол призначення.

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

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

Номер підтвердження містить порядковий номер наступного байта даних, які хоче отримати приймач.

Поле зсуву даних показує кількість 32-розрядних слів в TCP-заголовке.

Поле прапорів містить інформацію, що управляє, таку як установка і закінчення з'єднання.

Поле вікна визначає розмір буфера для вхідних даних.

Поле опцій визначає різні опції TCP. Наприклад, можна вказати максимальний розмір TCP-сегмента.

Для пересилки даних з використанням TCP комп'ютер-відправник встановлює з'єднання з комп'ютером призначення. Комп'ютер призначення має бути готовий до отримання даних. Щоб спростити процес установки з'єднання, TCP використовує трьохетапну послідовність дій.

 

Таблиця 2.3

  Трьохетапний процес установки TCP-з’єднання  
  Хост A   Хост B  
  Посилка SYN [seq = x] Прийом SYN [seq = x]  
  Прийом SYN [seq = y, ack = x+1]   Посилка SYN [seq = y, ack = x+1]  
  Посилка ACK [ack = y+1]   Прийом ACK [ack = y+1]  

 

Обмін номером в послідовності і номером підтвердження протягом всього з'єднання дає можливість відновлення втрачених або пошкоджених даних.

Хай хост А хоче встановити з'єднання з хостом В. Спочатку хост А посилає перший номер в послідовності x з А в B. Хост B отримує перший номер, збільшує його на одиницю і посилає його назад як підтвердження, а також посилає свій власний номер послідовності біля. Хост А отримує пакет з пізнавальним числом, яке відповідає посланому їм x, збільшеним на 1. Після цього хост відправляє назад до хосту В присланий ним номер послідовності, заздалегідь збільшивши його на 1.

З'єднання вважається за відкрите і хости можуть обмінюватися даними.

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

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

 

Таблиця 2.4

  Плаваюче вікно TCP  
  Джерело      
  Посилка 1 Отримувач  
  Посилка 2   Прийом 1  
  Посылка 3   Прийом 2  
      Прийом 3  
      Посилка підтвердження 4  
  Прийом підтвердження 4      
  Посилка 4      
  Посилка 5   Прийом 4  
  Посилка 6   Прийом 5  
      Прийом 6  
      Посилка підтвердження7  
  Прийом підтвердження 7      
  Розмір вікна = 3  

 

TCP «передбачає» підтвердження, тобто підтверджуючий номер відповідає пакету, який очікується наступним. Як видно на малюнку, що передає комп'ютер має розмір вікна, рівний 3. Тобто він може посилати три пакети без отримання підтвердження перед посилкою четвертого. Якщо джерело не отримує підтвердження на посилку четвертого пакету певний час, він автоматично повторює передачу перших три. Тобто підтвердження, що не отримали певний час, пакети посилаються заново.

Протокол UDP (User Datagram Protocol)не вимагає з'єднання і «ненадійний», тобто це простий протокол передає пакети без підтверджень і гарантованої доставки. Тут абсолютно відсутня перевірка правильності доставки датаграм за призначенням. Тобто контроль помилок і повторна передача виконуються протоколами більш високого рівня. UDP використовується тоді, коли надійні механізми TCP не потрібні. Наприклад, для передачі даних через високонадійну мережу.

UPD, так само як і TCP, використовує номери портів (або сокетів) для передачі інформації протоколам більш високого рівня - рівня додатків.

 

Таблиця 2.5

Номера портів  
    F T P     T E L N E T     S M T P     D N S   T F T P     S N M P    
Номери портів  
Транспортний рівень TCP UDP  

Номери звичайних портів привласнюються широко використовуваним застосуванням. Наприклад, протокол передачі файлів (FTP) використовує номер порту призначення 21. Порти з динамічними кордонами не мають фіксованих номерів. Тому при обробці запиту додатка необхідно визначити порт, який воно використовує. Наприклад, клієнтський комп'ютер, що запрошує FTP-сесію може перший раз отримати номер порту 1026, а наступного разу - 1252.

UDP дозволяє клієнтським застосуванням, що стоять на машинах з різними IP-адресами використовувати один і той же номер порту. Пакети UDP доставляються додаткам з відповідним як IP-адресом, так і номером порту.

Датаграми UDP полягають в один або декілька IP-пакетів. IP-адрес дозволяє відправити IP-пакети потрібному вузлу. IP-програми з IP-пакета витягують пакет UDP і передає його програмі рівня UDP. А вже програми рівня UDP передають отримані дані в потрібний порт.

 

Таблиця 2.6

  Формат UDP-сегмента
Число біт  
  Порт-джерело Порт-приймач Довжина Контрольнасума Данні
  Немає полів номера в послідовності і номери підтвердження

 

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

UDP не посилає підтверджень. Це залишено більш високорівневим протоколам.

UDP підтримує широкомовні повідомлення. Таким чином один хост може спілкуватися з багатьма.

Протокол SNMP (Simple Network Management Protocol) використовується переважно в мережах, що працюють на базі TCP/IP. Цей протокол дозволяє мережевому адміністраторові виконувати моніторинг мережі з однієї робочої станції. Ця станція називається SNMP-менеджером, а всі останні - SNMP-агентами. Агентами можуть бути хости, маршрутизатори, або інші SNMP-менеджери. Незалежно від типа агента, отримавши запит, вони посилають необхідну інформацію SNMP-менеджеру. Наприклад, маршрутизатор повинен повідомити інформацію про свою таблицю маршрутів і про величину допустимого трафіку. З іншого боку, мейнфрейми можуть повідомити інформацію про ті послуги, які вони надають, а також інформацію про з'єднання з клієнтами, встановлені на даний момент.