Мережева взаємодії
При організації взаємодії комп'ютерів в мережі кожен рівень веде "переговори" з відповідним рівнем іншого комп'ютера. При передачі повідомлень обидва учасники мережевого обміну повинні прийняти безліч угод. Наприклад, вони повинні узгодити рівні і форму електричних сигналів, спосіб визначення довжини повідомлень, домовитися про методи контролю достовірності і т.п. Іншими словами, угоди повинні бути прийняті для всіх рівнів, починаючи від найнижчого рівня передачі бітів, до самого високого рівня, який деталізує, як інформація повинна бути інтерпретована.
Правила взаємодії двох машин можуть бути описані у вигляді набору процедур для кожного з рівнів. Такі формалізовані правила, що визначають послідовність і формат повідомлень, якими обмінюються мережеві компоненти, що лежать на одному рівні, але в різних вузлах, називаються протоколами.
Узгоджений набір протоколів різних рівнів, достатній для організації мережевої взаємодії, називається стеком протоколів.
Протоколи нижніх рівнів часто реалізуються комбінацією програмних і технічних засобів, а протоколи верхніх рівнів, як правило, програмними засобами.
Узгоджений набір протоколів різних рівнів, достатній для організації мережевої взаємодії, називається стеком протоколів.
Протоколи нижніх рівнів часто реалізуються комбінацією програмних і технічних засобів, а протоколи верхніх рівнів, як правило, програмними засобами.
Протокольні сутності одного рівня двох взаємодіючих сторін обмінюються повідомленнями відповідно до визначеного для них протоколу. Послання складаються з заголовка та поля даних (іноді це може бути відсутнє). Обмін повідомленнями є своєрідною мовою спілкування, за допомогою якого кожна сторона «пояснює» іншій стороні, що необхідно зробити на кожній стадії взаємодії.
Модель OSІ
Модель OSI визначає, по-перше, рівні взаємодії систем в мережах з комутацією пакетів, по-друге, стандартні назви рівнів, по-третє, функції, які повинні виконувати кожен рівень. Модель OSI не містить описів реалізацій конкретного набору протоколів.
В моделі OSI засоби взаємодії поділяються на сім рівнів: прикладний, представлення, сеансовий, транспортний, мережевий, канальний і фізичний. Кожний рівень пов`язаний з цілком певним аспектом взаємодії мережевих пристроїв.
\
Функції рівнів моделі OSI
Прикладний рівень (Application layer)
Прикладний рівень забезпечує прикладним процесам кошти доступу до області взаємодії, є верхнім (сьомим) рівнем і безпосередньо примикає до прикладних процесів.
Одиниця даних, якою оперує прикладний рівень, звичайно називаєтьсяповідомленням (message).
Прикладний рівень виконує наступні функції:
- Виконання різних видів робіт.
- - передача файлів;
- - управління завданнями;
- - управління системою і т. Д;
- Ідентифікація користувачів по їх паролів, адресами, електронних підписів;
- Визначення функціонуючих абонентів і можливості доступу до нових прикладним процесам;
- Визначення достатності наявних ресурсів;
- Організація запитів на з'єднання з іншими прикладними процесами;
- Передача заявок представницькому рівню на необхідні методи опису інформації;
- Вибір процедур планованого діалогу процесів;
- Управління даними, якими обмінюються прикладні процеси і синхронізація взаємодії прикладних процесів;
- Визначення якості обслуговування (час доставки блоків даних, допустимої частоти помилок);
- Угода про виправлення помилок і визначенні достовірності даних;
- Узгодження обмежень, що накладаються на синтаксис (набори символів, структура даних).
Зазначені функції визначають види сервісу, які прикладної рівень надає прикладним процесам. Крім цього, прикладний рівень передає прикладним процесам сервіс, що надається фізичним, канальним, мережевим, транспортним, сеансовим і представницьким рівнями.
На прикладному рівні необхідно надати в розпорядження користувачів вже перероблену інформацію. З цим може впоратися системне і користувальницьке програмне забезпечення.
Прикладний рівень відповідає за доступ додатків в мережу. Завданнями цього рівня є перенесення файлів, обмін поштовими повідомленнями і управління мережею.
До числа найбільш поширених протоколів верхніх трьох рівнів відносяться:
- FTP (File Transfer Protocol) протокол передачі файлів;
- TFTP (Trivial File Transfer Protocol) найпростіший протокол пересилки файлів;
- X.400 електронна пошта;
- Telnet робота з віддаленим терміналом;
- SMTP (Simple Mail Transfer Protocol) простий протокол поштового обміну;
- CMIP (Common Management Information Protocol) загальний протокол управління інформацією;
- SLIP (Serial Line IP) IP для послідовних ліній. Протокол послідовної посимвольной передачі даних;
- SNMP (Simple Network Management Protocol) простий протокол мережевого управління;
- FTAM (File Transfer, Access, and Management) протокол передачі, доступу та управління файлами.
Рівень представлення даних (Presentation layer)
Функції даного рівня - представлення даних, що передаються між прикладними процесами, у потрібній формі.
Представницький рівень виконує наступні основні функції:
1. Генерація запитів встановлення сеансів взаємодії прикладних процесів.
2. Узгодження уявлення даних між прикладними процесами.
3. Реалізація форм представлення даних.
4. Подання графічного матеріалу (креслень, малюнків, схем).
5. Засекречування даних.
6. Передача запитів на припинення сеансів.
Протоколи рівня уявлення даних зазвичай є складовою частиною протоколів трьох верхніх рівнів моделі.
Сеансовий рівень (Session layer)
Сеансовий рівень - це рівень, що визначає процедуру проведення сеансів між користувачами чи прикладними процесами.
Сеансовий рівень забезпечує виконання таких функцій:
1. Встановлення і завершення на сеансовому рівні з'єднання між взаємодіючими системами.
2. Виконання нормального і термінового обміну даними між прикладними процесами.
3. Управління взаємодією прикладних процесів.
4. Синхронізація сеансових з'єднань.
5. Оповіщення прикладних процесів про виняткових ситуаціях.
6. Встановлення в прикладному процесі міток, що дозволяють після відмови або помилки відновити його виконання від найближчій мітки.
7. Переривання в потрібних випадках прикладного процесу його коректне поновлення.
8. Припинення сеансу без втрати даних.
9. Передача особливих повідомлень про хід проведення сеансу.
Сеансовий рівень відповідає за організацію сеансів обміну даними між кінцевими машинами. Протоколи сеансового рівня зазвичай є складовою частиною протоколів трьох верхніх рівнів моделі.
Транспортний рівень (Transport Layer)
Транспортний рівень призначений для передачі пакетів через комунікаційну мережу. На транспортному рівні пакети розбиваються на блоки.
У функції транспортного рівня входять:
1. Управління передачею по мережі і забезпечення цілісності блоків даних.
2. Виявлення помилок, часткова їх ліквідація і повідомлення про невиправлених помилки.
3. Відновлення передачі після відмов і несправностей.
4. Укрупнення або поділ блоків даних.
5. Надання пріоритетів при передачі блоків (нормальна або термінова).
6. Звіт про підтвердження надсилання.
7. Ліквідація блоків при тупикових ситуаціях в мережі.
Починаючи з транспортного рівня, все вище розміщені протоколи реалізуються програмними засобами, зазвичай включаються до складу мережевої операційної системи.
Найбільш поширені протоколи транспортного рівня включають в себе:
- TCP (Transmission Control Protocol) протокол управління передачею стека TCP / IP;
- UDP (User Datagram Protocol) призначений для користувача протокол дейтаграм стека TCP / IP;
- NCP (NetWare Core Protocol) базовий протокол мереж NetWare;
- SPX (Sequenced Packet eXchange) упорядкований обмін пакетами стека Novell;
- TP4 (Transmission Protocol) - протокол передачі класу 4.
Мережевий рівень (Network Layer)
Мережевий рівень забезпечує прокладку каналів, що з'єднують абонентські і адміністративні системи через комунікаційну мережу, вибір маршруту найбільш швидкого і надійного шляху.
Мережевий рівень виконує функції:
1. Створення мережевих з'єднань і ідентифікація їх портів.
2. Виявлення та виправлення помилок, що виникають при передачі через комунікаційну мережу.
3. Управління потоками пакетів.
4. Організація (впорядкування) послідовностей пакетів.
5. Маршрутизація і комутація.
6. Сегментування і об'єднання пакетів.
На мережевому рівні визначається два види протоколів. Перший вид відноситься до визначення правил передачі пакетів з даними кінцевих вузлів від вузла до маршрутизатора і між маршрутизаторами. Саме ці протоколи звичайно мають на увазі, коли говорять про протоколи мережевого рівня. Однак часто до мережевого рівня відносять і інший вид протоколів, званих протоколами обміну маршрутною інформацією. За допомогою цих протоколів маршрутизатори збирають інформацію про топологію міжмережевих з'єднань.
Протоколи мережевого рівня реалізуються програмними модулями операційної системи, а також програмними і апаратними засобами маршрутизаторів.
Найбільш часто на мережевому рівні використовуються протоколи:
- IP (Internet Protocol) протокол Internet, мережевий протокол стека TCP / IP, який надає адресну і маршрутну інформацію;
- IPX (Internetwork Packet Exchange) протокол міжмережевого обміну пакетами, призначений для адресації і маршрутизації пакетів в мережах Novell;
- X.25 міжнародний стандарт для глобальних комунікацій з комутацією пакетів (частково цей протокол реалізований на рівні 2);
- CLNP (Connection Less Network Protocol) мережевий протокол без організації з'єднань.
Канальний рівень (Data Link)
Одиницею інформації канального рівня є кадри (frame). Кадри - це логічно організована структура, в яку можна поміщати дані. Завдання канального рівня - передавати кадри від мережевого рівня до фізичного рівня.
![]() |
Кадр з канального рівня OSI |
Канальний рівень може виконувати такі види функцій:
1. Організація (встановлення, управління, розірвання) канальних з'єднань і ідентифікація їх портів.
2. Організація і передача кадрів.
3. Виявлення та виправлення помилок.
4. Управління потоками даних.
5. Забезпечення прозорості логічних каналів (передачі по ним даних, закодованих будь-яким способом).
Найбільш часто використовувані протоколи канального рівня включають:
- HDLC (High Level Data Link Control) протокол управління каналом передачі даних високого рівня, для послідовних з'єднань;
- IEEE 802.2 LLC (тип I і тип II) забезпечують MAC для середовищ 802.x;
- Ethernet мережна технологія за стандартом IEEE 802.3 для мереж, яка використовує шинну топологію і колективний доступ з прослуховуванням несучої частоти і виявленням конфліктів;
- Token ring мережна технологія за стандартом IEEE 802.5, яка використовує кільцеву топологію і метод доступу до кільцю з передачею маркера;
- FDDI (Fiber Distributed Date Interface Station) мережева технологія за стандартом IEEE 802.6, яка використовує оптоволоконний носій;
- X.25 міжнародний стандарт для глобальних комунікацій з комутацією пакетів;
- Frame relay мережу, організована з технологій Х25 і ISDN.
Фізичний рівень (Physical Layer)
Фізичний рівень призначений для поєднання з обмеженими фізичними засобами з'єднання. Фізичні засоби з'єднання - це сукупність фізичної середовища, апаратних і програмних засобів, що забезпечує передачу сигналів між системами.
Фізичний рівень складається з підрівня стикування з середовищем і підрівня перетворення передачі.
Перший з них забезпечує сполучення потоку даних з використовуваним фізичним каналом зв'язку.
Другий здійснює перетворення, пов'язані з застосовуваними протоколами. Фізичний рівень забезпечує фізичний інтерфейс з каналом передачі даних, а також описує процедури передачі сигналів в канал і отримання їх з каналу. На цьому рівні визначаються електричні, механічні, функціональні і процедурні параметри для фізичної зв'язку в системах.
Фізичний рівень отримує пакети даних від вищого канального рівня і перетворює їх в оптичні або електричні сигнали, відповідні 0 і 1 бінарного потоку.
Фізичний рівень виконує наступні функції:
1. Встановлення і роз'єднання фізичних сполук.
2. Передача сигналів в послідовному коді і прийом.
3. Прослуховування, в потрібних випадках, каналів.
4. Ідентифікація каналів.
5. Оповіщення про появу несправностей і відмов.
До числа найбільш поширених специфікацій фізичного рівня відносяться:
- EIA-RS-232-C, CCITT V.24 / V.28 - механічні / електричні характеристики незбалансованого послідовного інтерфейсу;
- EIA-RS-422/449, CCITT V.10 - механічні, електричні та оптичні характеристики збалансованого послідовного інтерфейсу;
- Ethernet - мережева технологія за стандартом IEEE 802.3 для мереж, яка використовує шинну топологію і колективний доступ з прослуховуванням несучої і виявленням конфліктів;
- Token ring - мережна технологія за стандартом IEEE 802.5, яка використовує кільцеву топологію і метод доступу до кільцю з передачею маркера
Протоколи взаємодії додатків і протоколи транспортної підсистеми
Функції всіх рівнів моделі OSI можуть бути віднесені до однієї з двох груп: або до функцій, які надаються конкретної технічної реалізації мережі, або до функцій, орієнтованим на роботу з додатками.
Три нижніх рівні - фізичний, канальний і мережевий - є мережозалежними, тобто протоколи цих рівнів тісно пов'язані з технічною реалізацією мережі, з комунікаційним обладнанням. Наприклад, перехід на обладнання FDDI означає повну зміну протоколів фізичного і канального рівня у всіх вузлах мережі.
Протоколи, що використовуються в рівнях OSI |
Три верхніх рівня - сеансовий, рівень представлення і прикладний - орієнтовані на додатки і мало залежать від технічних особливостей побудови мережі. На протоколи цих рівнів не впливають ніякі зміни в топології мережі, заміна обладнання або перехід на іншу мережеву технологію. Так, перехід від Ethernet на високошвидкісну технологію АТМ не зажадає ніяких змін в програмних засобах, що реалізовують функції прикладного, представницького і сеансового рівнів.
Транспортний рівень є проміжним, він приховує всі деталі функціонування нижніх рівнів від верхніх рівнів. Це дозволяє розробляти додатки, що не залежать від технічних засобів, які безпосередньо займаються транспортуванням повідомлень.
Малюнок 2 показує рівні моделі OSI, на яких працюють різні елементи мережі. Комп'ютер, з встановленої на ньому мережевий ОС, взаємодіє з іншим комп'ютером за допомогою протоколів всіх семи рівнів. Ця взаємодія комп'ютери здійснюють через різні комунікаційні пристрої: концентратори, модеми, мости, комутатори, маршрутизатори, мультиплексори. Залежно від типу, комунікаційний пристрій може працювати або тільки на фізичному рівні (повторювач), або на фізичному і канальному (міст і комутатор), або на фізичному, канальному і мережевому, іноді захоплюючи і транспортний рівень (маршрутизатор).
Функціональна відповідність видів комунікаційного обладнання рівням моделі OSI
Кращим способом для розуміння відмінностей між мережевими адаптерами, повторювачами, мостами / комутаторами і маршрутизаторами є розгляд їх роботи в термінах моделі OSI. Співвідношення між функціями цих пристроїв і рівнями моделі OSI показано на малюнку 3.
Повторювач, який регенерує сигнали, за рахунок чого дозволяє збільшувати довжину мережі, працює на фізичному рівні.
Мережевий адаптер працює на фізичному і канальному рівнях. До фізичного рівня відноситься та частина функцій мережного адаптера, яка пов'язана з прийомом і передачею сигналів по лінії зв'язку, а отримання доступу до середовища передачі, розпізнавання МАС-адреси комп'ютера - це вже функція канального рівня.
Мости виконують велику частину своєї роботи на канальному рівні. Для них мережа представляється набором МАС-адрес пристроїв. Вони витягають ці адреси з заголовків, доданих до пакетів на канальному рівні, і використовують їх під час обробки пакетів для прийняття рішення про те, на який порт відправити той чи інший пакет. Мости не мають доступу до інформації про адреси мереж, що відноситься до більш високого рівня. Тому вони обмежені в ухваленні рішень про можливі шляхи або маршрутах переміщення пакетів по мережі.
Маршрутизатор працюють на мережному рівні моделі OSI. Для маршрутизаторів мережу - це набір мережевих адрес пристроїв і безліч мережевих шляхів. Маршрутизатор аналізують всі можливі шляхи між будь-якими двома вузлами мережі і вибирають найкоротший з них. При виборі можуть братися до уваги і інші фактори, наприклад, стан проміжних вузлів і ліній зв'язку, пропускна спроможність ліній або вартість передачі даних.
Для того, щоб маршрутизатор міг виконувати покладені на нього функції йому повинна бути доступна більш розгорнута інформація про мережу, ніж та, яка доступна мосту. У заголовку пакета мережного рівня крім мережевої адреси є дані, наприклад, про критерії, який повинен бути використаний при виборі маршруту, про час життя пакета в мережі, про те, яким протоколом верхнього рівня належить пакет.
Завдяки використанню додаткової інформації, маршрутизатор може здійснювати більше операцій з пакетами, ніж міст / комутатор. Тому програмне забезпечення, необхідне для роботи маршрутизатора, є більш складним.
На малюнку 3 показаний ще один тип комунікаційних пристроїв - шлюз, який може працювати на будь-якому рівні моделі OSI. Шлюз (gateway) - це пристрій, що виконує трансляцію протоколів. Шлюз розміщується між взаємодіючими мережами і служить посередником, що переводять повідомлення, що надходять з однієї мережі, у формат іншої мережі. Шлюз може бути реалізований як чисто програмними засобами, встановленими на звичайному комп'ютері, так і на базі спеціалізованого комп'ютера.
Трансляція одного стека протоколів в інший представляє собою складну інтелектуальну задачу, що вимагає максимально повної інформації про мережу, тому шлюз використовує заголовки всіх трансльованих протоколів.
Модель OSI і популярні стеки комунікаційних протоколів
Семирівнева модель OSI є теоретичною, і містить ряд недоробок. Реальні мережні протоколи змушені відхилятися від неї, забезпечуючи непередбачувані можливості, тому прив'язка деяких з них до рівнів OSI є трохи умовною. В даний час основним використовуваним стеком протоколів є TCP/IP, розробка якого не була пов'язана з моделлю OSI і до того ж була здійснена до її прийняття.
Основна недоробка OSI — непродуманий транспортний рівень. На ньому OSI дозволяє обмін даними між застосунками (вводячи поняття порту — ідентифікатора додатка), однак можливість обміну простими датаграмами в OSI не передбачена — транспортний рівень повинен утворювати з'єднання, забезпечувати доставку, управляти потоком тощо. Реальні ж протоколи реалізують таку можливість.
Стек TCP / IP
Стек TCP / IP, званий також стеком DoD і стеком Internet, є одним з найбільш популярних і перспективних стеків комунікаційних протоколів. Якщо в даний час він поширений в основному в мережах з ОС UNIX, то реалізація його в останніх версіях мережевих операційних систем для персональних комп'ютерів (Windows NT, NetWare) є гарною передумовою для швидкого зростання числа установок стека TCP / IP.
Стек був розроблений з ініціативи Міністерства оборони США (Department of Defence, DoD) більше 20 років тому для зв'язку експериментальної мережі ARPAnet з іншими сателітними мережами як набір загальних протоколів для різнорідної обчислювальної середовища. Мережа ARPA підтримувала розробників і дослідників у військових областях. У мережі ARPA зв'язок між двома комп'ютерами здійснювалася з використанням протоколу Internet Protocol (IP), який і до цього дня є одним з основних в стеці TCP / IP і фігурує в назві стека.
Великий внесок у розвиток стека TCP / IP вніс університет Берклі, реалізувавши протоколи стека у своїй версії ОС UNIX. Широке поширення ОС UNIX привело і до широкого поширення протоколу IP і інших протоколів стека. На цьому ж стеку працює всесвітня інформаційна мережа Internet, чий підрозділ Internet Engineering Task Force (IETF) вносить основний вклад в удосконалення стандартів стека, що публікуються в формі специфікацій RFC.
Так як стек TCP / IP був розроблений до появи моделі взаємодії відкритих систем ISO / OSI, то, хоча він також має багаторівневу структуру, відповідність рівнів стека TCP / IP рівням моделі OSI досить умовно.
Структура протоколів TCP / IP приведена на малюнку 4. Протоколи TCP / IP поділяються на 4 рівня.
Найнижчий (рівень IV) - рівень міжмережевих інтерфейсів - відповідає фізичному і канальному рівням моделі OSI. Цей рівень в протоколах TCP / IP не регламентується, але підтримує всі популярні стандарти фізичного і канального рівня: для локальних каналів це Ethernet, Token Ring, FDDI, для глобальних каналів - власні протоколи роботи на аналогових комутованих і виділених лініях SLIP / PPP, які встановлюють з'єднання типу "точка - точка" через послідовні канали глобальних мереж, і протоколи територіальних мереж X.25 і ISDN. Розроблено також спеціальна специфікація, що визначає використання технології ATM як транспорт канального рівня.
Наступний рівень (рівень III) - це рівень міжмережевої взаємодії, який займається передачею дейтаграм з використанням різних локальних мереж, територіальних мереж X.25, ліній спеціального зв'язку і т. П. В якості основного протоколу мережевого рівня (в термінах моделі OSI) в стеку використовується протокол IP, який спочатку проектувався як протокол передачі пакетів в складових мережах, що складаються з великої кількості локальних мереж, об'єднаних як локальними, так і глобальними зв'язками. Тому протокол IP добре працює в мережах зі складною топологією, раціонально використовуючи наявність у них підсистем і ощадливо витрачаючи пропускну здатність низькошвидкісних ліній зв'язку. Протокол IP є дейтаграмним протоколом.
Наступний рівень (рівень II) називається основним. На цьому рівні функціонують протокол управління передачею TCP (Transmission Control Protocol) і протокол дейтаграм користувача UDP (User Datagram Protocol). Протокол TCP забезпечує стійке віртуальне з'єднання між віддаленими прикладними процесами. Протокол UDP забезпечує передачу прикладних пакетів дейтаграмним методом, тобто без встановлення віртуального з'єднання, і тому вимагає менших накладних витрат, ніж TCP.
Верхній рівень (рівень I) називається прикладним. За довгі роки використання в мережах різних країн і організацій стек TCP / IP нагромадив велику кількість протоколів і сервісів прикладного рівня. До них відносяться такі широко використовувані протоколи, як протокол копіювання файлів FTP, протокол емуляції терміналу telnet, поштовий протокол SMTP, використовуваний в електронній пошті мережі Internet і її російської гілки РЕЛКОМ, гіпертекстові сервіси доступу до вилученої інформації, такі як WWW і багато інших.
Стек IPX / SPX
Цей стек є оригінальним стеком протоколів фірми Novell, який вона розробила для своєї мережевої операційної системи NetWare ще на початку 80-х років. Протоколи Internetwork Packet Exchange (IPX) і Sequenced Packet Exchange (SPX), які дали ім'я стека, є прямою адаптацією протоколів XNS фірми Xerox, поширених в набагато менше ступеня, ніж IPX / SPX. За кількістю установок протоколи IPX / SPX лідирують, і це обумовлено тим, що сама ОС NetWare займає лідируюче положення з часткою установок в світовому масштабі приблизно в 65%.
На фізичному і канальному рівнях в мережах Novell використовуються всі популярні протоколи цих рівнів (Ethernet, Token Ring, FDDI і інші).
На мережевому рівні в стеці Novell працює протокол IPX, а також протоколи обміну маршрутною інформацією RIP і NLSP (аналог протоколу OSPF стека TCP / IP). IPX є протоколом, який займається питаннями адресації та маршрутизації пакетів в мережах Novell. Маршрутні рішення IPX засновані на адресних полях в заголовку його пакета, а також на інформації, що надходить від протоколів обміну маршрутною інформацією. Наприклад, IPX використовує інформацію, що поставляється або протоколом RIP, або протоколом NLSP (NetWare Link State Protocol) для передачі пакетів комп'ютера призначення або наступного маршрутизатора. Протокол IPX підтримує тільки дейтаграммний спосіб обміну повідомленнями, за рахунок чого економно споживає обчислювальні ресурси. Отже, протокол IPX забезпечує виконання трьох функцій: завдання адреси, встановлення маршруту і розсилку дейтаграм.
Транспортному рівню моделі OSI в стеці Novell відповідає протокол SPX, який здійснює передачу повідомлень з встановленням з'єднань.
На верхніх прикладному, представницькому і сеансовому рівнях працюють протоколи NCP і SAP. Протокол NCP (NetWare Core Protocol) є протоколом взаємодії сервера NetWare і оболонки робочої станції. Цей протокол прикладного рівня реалізує архітектуру клієнт-сервер на верхніх рівнях моделі OSI. За допомогою функцій цього протоколу робоча станція проводить підключення до сервера, відображає каталоги сервера на локальні букви дисководів, переглядає файлову систему сервера, копіює вилучені файли, змінює їх атрибути і т.п., а також здійснює розподіл мережевого принтера між робочими станціями.
API(application programming interface)
API (програмний інтерфейс програми, інтерфейс прикладного програмування) - набір готових класів, процедур, функцій, структур і констант, що надаються додатком (бібліотекою, сервісом) або операційною системою для використання в зовнішніх програмних продуктах. Використовується програмістами при написанні всіляких додатків.
![]() |
API |
API як засіб інтеграції додатків
API визначає функціональність, яку надає програма (модуль, бібліотека), при цьому API дозволяє абстрагуватися від того, як саме ця функціональність реалізована.
Якщо програму (модуль, бібліотеку) розглядати як чорний ящик, то API - це безліч «ручок», які доступні користувачеві даного ящика і які він може крутити і смикати.
Програмні компоненти взаємодіють один з одним за допомогою API. При цьому зазвичай компоненти утворюють ієрархію - високорівневі компоненти використовують API низькорівневих компонентів, а ті, в свою чергу, використовують API ще більш низькорівневих компонентів.
За таким принципом побудовані протоколи передачі даних через Інтернет. Стандартний стек протоколів (мережева модель OSI) містить 7 рівнів (від фізичного рівня передачі біт до рівня протоколів програм, подібних протоколів HTTP і IMAP). Кожен рівень користується функціональністю попереднього ( «нижчого») рівня передачі даних і, в свою чергу, надає потрібну функціональність наступного ( «вищерозміщений») рівню.
Важливо зауважити, що поняття протоколу близьке за змістом до поняття API. І те, і інше є абстракцією функціональності, тільки в першому випадку мова йде про передачу даних, а в другому - про взаємодію додатків.
API бібліотеки функцій і класів включає в себе опис сигнатур і семантики функцій.
Cигнатура функції
Сигнатура функції - частина загального оголошення функції, що дозволяє засобам трансляції ідентифікувати функцію серед інших. У різних мовах програмування існують різні уявлення про сигнатурі функції, що також тісно пов'язане з можливостями перевантаження функцій в цих мовах.
Іноді розрізняють сигнатуру виклику і сигнатуру реалізації функції. Сигнатура виклику зазвичай складається з синтаксичної конструкції виклику функції з урахуванням сигнатури області видимості даної функції, імені функції, послідовності фактичних типів аргументів у виклику і типі результату. У сигнатурі реалізації зазвичай беруть участь деякі елементи з синтаксичної конструкції оголошення функції: специфікатор області видимості функції, її ім'я і послідовність формальних типів аргументів.
Наприклад, в мові програмування C ++ проста функція однозначно розпізнається компілятором по її імені та послідовності типів її аргументів, що становить сигнатуру функції в цій мові. Якщо функція є методом деякого класу, то в сигнатурі братиме участь і ім'я класу.
У мові програмування Java сигнатуру методу складає його ім'я і послідовність типів параметрів; тип значення в сигнатурі не бере.
Cемантика функції
Семантика функції - це опис того, що дана функція робить. Семантика функції включає в себе опис того, що є результатом обчислення функції, як і від чого цей результат залежить. Зазвичай результат виконання залежить тільки від значень аргументів функції, але в деяких модулях є поняття стану.
Тоді результат функції може залежати від цього стану, і, крім того, результатом може стати зміна стану. Логіка цих залежностей і змін відноситься до семантиці функції. Повним описом семантики функцій є виконуваний код функції або математичне визначення функції.
Сокети
Сокет (англ. Socket - роз'єм) - назва програмного інтерфейсу для забезпечення обміну даними між процесами. Процеси при такому обміні можуть виконуватися як на одній ЕОМ, так і на різних ЕОМ, пов'язаних між собою мережею. Сокет - абстрактний об'єкт, який представляє кінцеву точку з'єднання.
Слід розрізняти клієнтські і серверні сокети. Клієнтські сокети грубо можна порівняти з кінцевими апаратами телефонної мережі, а серверні - з комутаторами. Клієнтську програму (наприклад, браузер) використовує тільки клієнтські сокети, а серверне (наприклад, веб-сервер, якому браузер посилає запити) - як клієнтські, так і серверні сокети.
Інтерфейс сокетів вперше з'явився в BSD Unix. Програмний інтерфейс сокетів описаний в стандарті POSIX.1 і в тій чи іншій мірі підтримується всіма сучасними операційними системами.
принципи сокетов
Як відомо, для взаємодії між машинами за допомогою стека протоколів TCP / IP використовуються адреси та порти. Перше на поточний момент є 32-бітову адресу (для протоколу IPv4, 128-бітний для IPv6), найбільш часто його представляють в символьній формі mmm.nnn.ppp.qqq (адреса, розбитий на чотири поля, розділених точками, по одному байту в полі).
Друге - це номер порту в діапазоні від 0 до 65535 (для протоколу TCP).
Ця пара і є сокет ( «гніздо», з відповідною адресою і портом).
У процесі обміну, як правило, використовується два сокета - сокет відправника і сокет одержувача. Наприклад, при зверненні до сервера на HTTP-порт сокет буде виглядати так: 194.106.118.30:80, а відповідь буде надходити на mmm.nnn.ppp.qqq: xxxxx.
Кожен процес може створити «слухає» сокет (серверний сокет) і прив'язати його до якого-небудь порту операційної системи (в UNIX непривілейованих процеси не можуть використовувати порти менше 1024).
Хто слухає процес зазвичай знаходиться в циклі очікування, тобто прокидається при появі нового з'єднання. При цьому зберігається можливість перевірити наявність з'єднань на даний момент, встановити тайм-аут для операції і т.д.
Кожен сокет має свою адресу. ОС сімейства UNIX можуть підтримувати багато типів адрес, але обов'язковими є INET-адреса і UNIX-адреса. Якщо прив'язати сокет до UNIX-адресою, то буде створений спеціальний файл (файл сокета) по заданому шляху, через який зможуть повідомлятися будь-які локальні процеси шляхом читання / запису з нього. Сокети типу INET доступні з мережі і вимагають виділення номера порту.
Зазвичай клієнт явно «приєднується» до слухача, після чого будь-читання або запис через його дескриптор передаватимуть дані між ним і сервером.
Взаємодія протоколів
Багаторівневі представлення засобів мережевої взаємодії має свою специфіку, пов'язану з тим, що в процесі обміну повідомленнями беруть участь щонайменше дві сторони, тобто в даному випадку необхідно організувати узгоджену роботу двох ієрархій апаратних і програмних засобів на різних комп'ютерах. Обидва учасники мережевого обміну повинні прийняти безліч угод.
Наприклад, вони повинні узгодити рівні і форму електричних сигналів, спосіб визначення розміру повідомлень, домовитися про методи контролю достовірності і т.п. Іншими словами, угоди повинні бути прийняті на всіх рівнях, починаючи від найнижчого - рівня передачі бітів, і закінчуючи найвищим , які реалізують обслуговування користувачів мережі. На рис. 4.5 показана модель взаємодії двох вузлів. З кожної сторони засобу взаємодії представлені чотирма рівнями.
Кожен рівень підтримує інтерфейси двох типів. По-перше, це інтерфейси послуг з вище-і нижчого рівнів «своєї» ієрархії засобів. По-друге, це інтерфейс із засобами взаємодії іншого боку, розташованими на тому ж рівні ієрархії. Цей тип інтерфейсу називають протоколом. Таким чином, протокол завжди є одноранговим інтерфейсом.
По суті, терміни «протокол» і «інтерфейс» висловлюють одне і те ж поняття - формалізований опис процедури взаємодії двох об'єктів, але традиційно в мережах за ними закріпили різні області дії: протоколи визначають правила взаємодії модулів одного рівня в різних вузлах, а інтерфейси - правила взаємодії модулів сусідніх рівнів в одному вузлі.
Ієрархічно організований набір протоколів, достатній для організації взаємодії вузлів в мережі, називається стеком протоколів.
Коментарі
Дописати коментар