- •Державний комітет зв’язку та інформатизації України
- •Современные проблемы информационных сетей
- •Инструменты и ресурсы
- •Формат пакета ping.
- •Программа tracert в Windows.
- •Порядок вызова
- •Программа tcpdump (снифер) сетевой анализатор для поиска неисправностией в сети и отладки сетевых приложений.
- •Использование tcpdump
- •Выходная информация, формируемая tcpdump
- •Программа netstat
- •4. Интерфейсы
- •Маршрутная таблица
- •Статистика протоколов
- •Процессы
- •Типы процессов
- •Прикладные процессы
- •Атрибуты процессов
- •Реальный (rgid) и эффективный (egid) идентификаторы группы
- •Жизненный путь процесса
- •Сигналы
- •Взаимодействие между процессами
- •Организация каналов
- •Взаимодействие между процессами
- •Размер канала
- •Функции к разделу fifo
- •Пример приложения клиент-сервер, использующего fifo для обмена данными. Клиент посылает серверу сообщенияHello, а сервер выводит это сообщение на терминал.
- •Права доступа к объекту
- •Идентификаторы и имена в ipc
- •Tcp как потоковый протокол
- •Чтение длины записи
- •Функции разрешения имён
- •Преобразование имён хостов
- •Аккуратное размыкание соединение
- •Вызов shutdown
- •Алгоритм Найгла
- •Программная реализация архитектуры клиент – сервер
- •1.2 Разработка программ в архитектуре “клиент-сервер”
- •Заполнение адресной структуры и получение сокета
- •Привязка известного порта и вывод listen
- •Принятие соединения.
- •Обмен данными
- •Программный интерфейс сокетов
- •Сокеты во FreeBsd
- •Типы соединения
- •Адресация
- •Адресация Internet
- •Interface сокетов
- •Создание сокета
- •Програмныйинтерфейс сокетов
- •Поддержка различных типов сокетов в доменах
- •Пример использования сокетов
- •Sdl-описание протокола сеансового уровня эталонной модели взаимосвязи открытых систем
- •Основные понятия
- •Описание служб
- •Описание протоколов
- •Службы ядра сеансового уровня
- •Блок данных протокола
- •Ясо-описание протокола сеансового уровня
- •Разбиение блока сеансового протокола
- •Описание блока блк-дир
- •Описание блока блк-исп
- •Описание процессов дир и рдт
- •Описание процесса исп
Размер канала
В канале может находиться только определенное число байтов, прежде чем следующий вызов write будет заблокирован. Минимальный размер, определенный POSIK равен 512 байтов. Вызов write выполняется для канала неделимыми порциями и запись выполняется ядром за одну непрерывную операцию. Родительский выполняется в бесконечном цикле, а дочерний посылает сообщение родительскому, спрашивая канал и проверяя, поступили ли данные. Системный вызов fcntl устанавливает флаги F_SETFL и O_NONBLOCK
Функции к разделу fifo
Функция pipe(2)(создание канала)
Функция pipe(2) служит для создания однонаправленного (симплексного) канала (анонимного) обмена данными между двумя родственными процессами, т.к. только они имеют возможность получить доступ к одному и тому же каналу. После завершения работы канал уничтожается.
Функция имеет вид:
# include <unistd.h>
int pipe (int fildes[2]);
Функция возвращает два fd в массиве [ ], причем fildes[0] служит для чтения данных из канала, а fildes[1] для записи данных в канал.
Функция fcntl(2)( управление файловыми операциями в уже открытых файлах, заданных дескриптором файла filedes)
# include <fcntl/h> - в этом заголовочном файле определены целочисленные константы: O_RDONLY и O_WRONLY.
int fcntl (int fildes, int cnd,…) – установка и снятие блокировки на файл его часть, создание каналов FIFO.
Функция fcntl(2) выполняет действие cmd с файлом , а третий аргумент зависит от конкретного действия:
а). F_SETLK – установить блокирование записи файла. Структура flock описывает блокирование, и указатель на нее передается в качестве третьего аргумента. При невозможности блокирования fcntl(2) возвращается с ошибкой EACCESS или EAGAIN;
б)F_SETLKW – аналогично предыдущему, но при невозможности блокирования по причине уже существующих блокировок, процесс переходит в состояние сна, ожидая снятие блокировок.
W – ждать;
в). F_SETFL – задает режим записи данных в конец файла.
Функция printf – запись в стандартный вывод, форматизованный
Системный вызов unlink(2)удаляет файл, например, unlink(/tmp/usedfile).
Вызов возвращает 0 в случае успешного завершения и – 1 – в случае ошибки.
Системный вызов readкопирует произвольное число символов или байтов из файла в буфер ( в ASCII)
Системный вызов openоткрывает файл для чтения, записи или создает пустой файл.
Системный вызов close – закрывает файл, возвращает файл в случае успешного завершение и – 1 в случае ошибки:
# include <unistd.h>
int close (int filedes)
filedes=open (file,O_RDONLY);
.
.
.
close(filedes);
Системный вызов write – копирует данные из буфера программы, рассматриваемого как массив, во внешний файл. Как и read, имеет три аргумента: дескриптор файла filedes, указатеь на записываемые данные buffer и n – положительное число записываемых байтов.
# include <unistd.h>
ssize_t write (int filedes, const void *buffer,size_t n);
Функция pipe(2)(создание канала)
Функция pipe(2) служит для создания однонаправленного (симплексного) канала (анонимного) обмена данными между двумя родственными процессами, т.к. только они имеют возможность получить доступ к одному и тому же каналу. После завершения работы канал уничтожается.
Функция имеет вид:
# include <unistd.h>
int pipe (int fildes[2]);
Функция возвращает два fd в массиве [ ], причем fildes[0] служит для чтения данных из канала, а fildes[1] для записи данных в канал.