Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
SPX (Sequence Packet eXchange) і його вдосконалена модифікація SPX II являють собою транспортні протоколи 7-рівневої моделі OSI. Це протокол гарантує доставку пакета і використовує техніку ковзного вікна (віддалений аналог протоколу TCP). У разі втрати або помилки пакет даних пересилається повторно, число повторень задається програмно. У протоколі SPX не передбачена широкомовна або мультикастинг-адресація. У SPX індукується ситуація, коли партнер несподівано перериває з'єднання, наприклад через обрив зв'язку. Пакети SPX вкладаються в пакети IPX. При цьому в полі тип пакету IPX записується код 5. Заголовок пакета SPX завжди містить 42 байти, включаючи 30 байт заголовка IPX-пакета, куди він вкладений.
Поле управління з'єднанням визначає, чи є даний пакет системним чи прикладним. Це поле містить однобітові прапори, використовувані spx і spx II для керування потоком даних у віртуальному каналі.
Поле тип потоку даних характеризує тип даних, поміщених в пакет. Значення цього поля перераховані нижче:
Поля ідентифікатора відправника і одержувача містять коди, що визначають учасників інформаційного обміну, присвоюються SPX-драйвером в момент встановлення зв'язку. У запитах на з'єднання це поле містить код 0xffff. Дане поле служить для забезпечення демультиплексування пакетів, що надходять на один і той же з'єднувач (socket). Поле послідовний номер визначає число пакетів пересланих в одному напрямку. Кожен з партнерів обміну має свій лічильник, який скидається в нуль після досягнення 0xffff, після чого рахунок може продовжуватися. Для програми це поле, також як і наступні два, недоторкане. spx-пакети підтвердження містять в цьому полі порядковий номер останнього посланого пакета. Поле номер підтвердження характеризує послідовний номер наступного пакета, який spx очікує отримати. Будь-який пакет з порядковим номером менше, ніж задано в полі номера підтвердження, доставлений благополучно і не вимагає ретрансміссіі. Поле число буферів служить для вказання числа доступних на станції буферів (буфери нумеруються, починаючи з 0, один буфер здатний прийняти один пакет) і використовується для організації управління потоком даних між додатками. Код цього поля інформує партнера про найбільший порядковий номер пакету, який може бути посланий. Протокол spx посилає пакети до тих пір, доки "послідовний номер не стане рівним числу-вказівником на віддаленій ЕОМ.
SPX-протокол не посилає наступний пакет до тих пір, поки не отримає підтвердження одержання попереднього. Хоча в протоколі SPX передбачений алгоритм ковзних вікон (як і в TCP), практично він в наш час[коли?] не використовується, що цілком виправдано для локальних мереж. Слід зауважити, що для досить великих LAN, де пакет проходить через кілька перемикачів або маршрутизаторів, нехтування технікою вікон стає недозволеною розкішшю. На випадок непередбачених обривів зв'язку в spx є алгоритм "сторожова собака". Цей алгоритм реалізується спеціальною програмою, яка активується лише у разі, коли протягом певного часу в каналі відсутній трафік в будь-якому з напрямів (машина все зробила, а оператор заснув). У цьому випадку програма посилає спеціальні пакети і, якщо певна кількість спроб "достукатися" до партнера не увінчається успіхом, сесія переривається. Якщо партнер не надсилає відгук за певний відрізок часу (RTT), проводиться повторна посилка пакету, при цьому RTT збільшується на 50%. Значення RTT не повинно перевищити величини max_retry_delay, яка за замовчуванням дорівнює 5 секундам. Якщо зв'язок не відновилася, відправник намагається знайти інший маршрут до адресата. Якщо маршрут знайдений, лічильник спроб скидається в нуль і процедура відправки запускається знову. Допустима кількість спроб може лежати в діапазоні 1-255 (за замовчуванням - 10). При відсутності успіху сесія переривається.
Значення RTT визначається за часом відгуку найближчого маршрутизатора, який подвоюється, а до отриманої величини додається деяка константа. Для кожної з сесій RTT визначається незалежно. Багато тимчасових констант задаються адміністратором мережі. Протокол spx дозволяє здійснити від 100 до 2000 з'єднань одночасно (за замовчуванням це число дорівнює 1000). Конфігураційні параметри SPX-протоколу (і мережі) зберігаються у файлах shell.cfg і net.cfg.
У 1992 році була розроблена нова версія SPX - SPX II. Головне удосконалення протоколу пов'язано із застосуванням пакетів більшого розміру. Раніше довгі spx-пакети фрагментувалися і пересилалися по частинах, враховуючи, що черговий пакет може бути посланий лише після отримання підтвердження, неважко зрозуміти крайню неефективність такої схеми. Стандарт spx дозволяє обмін пакетами з розміром, обмеженим тільки використовуваної мережевим середовищем. Так в Ethernet пакет SPX II може мати довжину 1518 байт. Крім того, SPX II допускає використання технології вікон, тобто можна послати кілька кадрів, не чекаючи отримання підтвердження на кожен з вже посланих. Розмір вікна встановлюється відповідно до коду, що містяться в полі число-покажчик (число буферів / пакетів). При необхідності адміністратор може задати розмір вікна раз і назавжди. Формат пакетів SPX II дещо відрізняється від SPX. У SPX II збільшено число допустимих кодів для поля управління з'єднанням, введено додаткове поле в заголовок підтвердження (два байти, ім'я поля "розширене підтвердження"). Нове поле додано після поля число буферів. Алгоритм встановлення зв'язку в SPX II відрізняться від варіанту spx тим, що необхідно узгодити розмір пересилаються пакетів.
0 | Управління з'єднанням (1) |
Тип потоку даних (1) |
2 | Ідентифікатор відправника (2) | |
4 | Ідентифікатор адресата (2) | |
6 | Порядковий номер (2) | |
8 | Номер підтвердження отримання (2) | |
10 | Кількість буферів (2) | |
12 | Розширене підтвердження (2) |
Табл.1. Формат заголовка SPX-II
Управління мережами Novell здійснюється за допомогою стандартного протоколу SNMP (Simple Network Management Protocol) і керуючої бази даних MIB.