- •Лабораторна робота № 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
- •Лістинг програми обліку трафіку
2.3 Приклад використання сокета
Взаємодію поміж процесами за допомогою сокетів можна продемонструвати на прикладі домена UNIX. Функціональність розподіленої системи у цьому разі полягає в тому, що клієнт надсилає серверові повідомлення, сервер переспрямовує його клієнтові, який і виводить його після отримання на термінал, оскільки у домені UNIX сокети дейтаграм практично не відрізняються від сокетів потоку. Як адресу сервера можна зазначити ім’я файла ./echo.server й припустити, що клієнти знають цю адресу. Сервер зв’язує створений сокет з цією локальною адресою і в такий спосіб реєструється в системі. З цього моменту він готовий до приймання та опрацьовування повідомлень. Сервер починає нескінченний цикл, очікуючи на повідомлення від клієнтів та блокуючись на виклику recvfrom(2). При отриманні повідомлення сервер надсилає його клієнтові, за допомогою виклику sendto(2). У додатку наведено програми серверної та клієнтської сторін. Клієнт створює сокет дейтаграм та зв’язує його зі своєю унікальною адресою, що зумовлюється унікальністю імені файла. Оскільки водночас можуть працювати кілька клієнтів, виникає проблема отримання унікального імені. Для її розв’язання використовується функція mktemp(3c), яка дозволяє за заданим шаблоном /tmp/clnt.XXXX та на підставі ідентифікатора поточного процесу отримати унікальне ім’я на заміну символів ХХХХ. Зв’язування сокета дозволяє при відправлянні неявно зазначати його “адресу відправника”, тому сервер може повернути повідомлення. У додатку Б (Лістинг1 та Лістинг 2) наведено вихідні тексти програм, що вони зреалізовують взаємодію поміж процесами, яка грунтується на сокетах дейтаграм у домені UNIX.
3 Контрольні запитання
1 Які комунікаційні характеристики забезпечують сокети?
2 Які основні типи сокетів зреалізовано в BSD UNIX?
3 Який системний виклик створює сокет та який він має опис?
4 Що таке комунікаційні домени та які домени Ви знаєте?
5 Який зв’язок існує поміж комунікаційними доменами та підтримуваними ними сокетами?
6 Якими параметрами схарактеризовується кожний комунікаційний канал?
7 Які системні виклики використовуються на серверному та клієнтському боці при створенні віртуального каналу з попереднім встановленням з’єднання?
8 Які системні виклики використовуються на серверному та клієнтському боці за взаємодії, яка грунтується на дейтаграмах?
9 Яку довжину і формати мають адреси сокетів у різних доменах?
10 Яку адресу слід обирати для сервера й чому?
4 Домашнє завдання
1 Коротко відповісти на контрольні запитання у письмовому вигляді.
2 Переписати тексти клієнтської та серверної частин програми, яка зорганізовує взаємодію процесів за протоколом UDP, та коментарі до них; тексти програм наведено у додатку Б (Лістинг1 та Лістинг2).
5 Лабораторне завдання
1 Підімкніться до комп’ютера під керуванням ОС UNIX за допомогою telnet (“Пуск\Виконати\telnet ip”, де ip — адреса машини під керуванням UNIX).
2 Після підімкнення введіть ім’я (login) та пароль (password) згідно з таблицею 5.1.
Таблиця 5.1 — Імена та паролі
login |
st1 |
st2 |
st3 |
st4 |
st5 |
st6 |
st7 |
st8 |
st9 |
password |
st1 |
st2 |
st3 |
st4 |
st5 |
st6 |
st7 |
st8 |
st9 |
login |
st11 |
st12 |
st13 |
st14 |
st15 |
st16 |
st17 |
st18 |
st19 |
password |
st11 |
st12 |
st13 |
st14 |
st15 |
st16 |
st17 |
st18 |
st19 |
3 Створіть текстові файли socketserver.c та socketclient.c, вихідні тексти програм цих файлів розміщено в додатку Б (Лістинг1 та Лістинг2).
4 Відкомпілюйте програми та створіть об’єктні файли:
сс -о socketserver socketserver.c
та
сс -о socketclient soketclient.c
5 Якщо все пройшло успішно, на першому терміналі запустіть виконуваний файл ./socketserver, а на другому — ./socketclient.
6 Спостерігайте з’явлення повідомлення на клієнтському боці.
7 Змініть текст повідомлення на своє прізвище, ім’я та побатькові.
8 Знову відкомпілюйте програми та виконайте пункти 4...6 даного завдання.
9 Змоделюйте ситуацію в такий спосіб, щоби серверна частина програми видала поодинці усі повідомлення про помилки.
10 Змоделюйте ситуацію в такий спосіб, щоби клієнтська частина програми видала поодинці усі повідомлення про помилки.
11 Поясніть, як Ви досягли результату й які причини є джерелами кожної помилки.
12 Зробіть висновки й запишіть їх до протоколу.