- •Лабораторна робота № 15 взаємодія процесів в ос unix за допомогою іменованих каналів
- •1 Мета роботи
- •2 Основні положення
- •2.1 Способи забезпечення взаємодії процесів в ос unix
- •2.2 Взаємодія поміж процесами за допомогою іменованих каналів
- •2.3 Функції та системні виклики ос unix,
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Взаємодія процесів в ос unix за допомогою інтерфейсу сокетів
- •1 Мета роботи
- •2 Основні положення
- •2.1 Загальні вимоги до міжпроцесної взаємодії
- •2.2 Програмний інтерфейс сокетів
- •2.3 Приклад використання сокета
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Лабораторна робота № 18
- •2.1 Утиліта ping
- •2.2 Програма traceroute
- •2.3 Програма ttcp
- •2.4 Програма tcpdump
- •2.5 Програма netstat
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Створення системи обліку трафіка
- •1 Мета роботи
- •2 Ключові положення
- •2.1 Принципи обліку трафіка
- •2.2 Мова програмування Shell
- •2.2.1 Структура команд
- •2.2.2. Структура команд
- •2.2.3 Групування команд
- •2.2.4 Переспрямовування команд
- •2.3 Брандмауер firewall
- •2.3.1 Можливості ipfw
- •2.3.2 Формат правил ipfw
- •2.4 Мова програмування awk
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Тексти програм serverfifo та clientfifo
- •Тексти програм socketserver та socketclient
- •Тексти програм servertcp та clienttcp
- •Тексти програм simpletcpserv та simpletcpclient
- •Лістинг програми обліку трафіку
Взаємодія процесів в ос unix за допомогою інтерфейсу сокетів
1 Мета роботи
Метою роботи є ознайомлення з програмними засобами створення комунікаційних вузлів та організація обміну даними за допомогою сокетів.
2 Основні положення
2.1 Загальні вимоги до міжпроцесної взаємодії
Взаємодія поміж процесами має бути уніфікованою, незалежно від того, виконуються ці процеси на одному чи то на різних комп’ютерах у мережі. Комунікаційні характеристики взаємодії мають бути доступними для процесів в уніфікованій формі, тобто додаток може вимагати конкретного виду зв’язку, який грунтуватиметься на віртуальному каналі, дейтаграмах тощо. Будь-який спосіб взаємодії має забезпечувати такі сервіси:
впорядковане доставлення даних;
відсутність дублювання даних;
надійне доставлення даних;
підтримку передавання екстрених даних;
попереднє встановлення зв’язку.
Канали забезпечують лише три перші характеристики; дані мають вигляд потоку, виокремлення з нього за необхідності окремих повідомлень має забезпечуватися додатками, які можуть взаємодіяти.
Усім наведеним вимогам задовольняють спеціальні об’єкти — сокети (socket). Сокети створюються у межах певного комунікаційного домена (communication domain), який описує набір характеристик взаємодії. Сокет означає поняття комунікаційного вузла, який забезпечує приймання та передавання даних для процесу. Адресування сокетів, їхнє розташування, протоколи передавання даних можуть бути різними. Це описується в понятті комунікаційного домена. Сокети мають інтерфейс доступу до файлової системи UNIX та можуть бути адресовані цілим числом — дескриптором. На відміну від звичайних файлів, сокети — це віртуальний об’єкт, який існує доти, поки на нього посилається хоча б один з процесів.
Взаємодія з попереднім установленням з’єднання передбачає створення віртуального каналу поміж джерелом та одержувачем даних. Це позбавляє від необхідності ідентифікувати передавальну сторону у кожному пакеті даних. Ідентифікування відбувається на початковому етапі встановлення зв’язку, а потім зберігається для усіх пакетів, які належать даному віртуальному каналові.
І, врешті, передавання екстрених повідомлень передбачає їхнє доставляння поза нормальним потоком. Зазвичай ці повідомлення пов’язано з певними терміновими подіями, які потребують негайного реагування.
У BSD UNIX зреалізовані такі основні типи сокетів:
сокет дейтаграм (Datagram Socket), через який здійснюється теоретично ненадійне, незв’язане передавання пакетів;
сокет потоку (Stream Socket), через який здійснюється передавання потоку даних без зберігання меж повідомлень. Цей тип сокетів підтримує передавання екстрених повідомлень;
сокет пакетів (Packet Socket), через який здійснюється надійне передавання даних без дублювання з попереднім встановленням зв’язку. Межі повідомлень зберігаються;
сокет низького рівня (Raw Socket), через який здійснюється безпосередній доступ до комунікаційного протоколу.
Для того щоби незалежні процеси мали можливість взаємодіяти, для сокетів треба визначити простір імен. Ім’я сокета має сенс лише у рамцях комунікаційного домена, в якому його створено. Імена сокетів мають смисл адрес.