- •Державний комітет зв’язку та інформатизації України
- •Современные проблемы информационных сетей
- •Инструменты и ресурсы
- •Формат пакета ping.
- •Программа tracert в Windows.
- •Порядок вызова
- •Программа tcpdump (снифер) сетевой анализатор для поиска неисправностией в сети и отладки сетевых приложений.
- •Использование tcpdump
- •Выходная информация, формируемая tcpdump
- •Программа netstat
- •4. Интерфейсы
- •Маршрутная таблица
- •Статистика протоколов
- •Процессы
- •Типы процессов
- •Прикладные процессы
- •Атрибуты процессов
- •Реальный (rgid) и эффективный (egid) идентификаторы группы
- •Жизненный путь процесса
- •Сигналы
- •Взаимодействие между процессами
- •Организация каналов
- •Взаимодействие между процессами
- •Размер канала
- •Функции к разделу fifo
- •Пример приложения клиент-сервер, использующего fifo для обмена данными. Клиент посылает серверу сообщенияHello, а сервер выводит это сообщение на терминал.
- •Права доступа к объекту
- •Идентификаторы и имена в ipc
- •Tcp как потоковый протокол
- •Чтение длины записи
- •Функции разрешения имён
- •Преобразование имён хостов
- •Аккуратное размыкание соединение
- •Вызов shutdown
- •Алгоритм Найгла
- •Программная реализация архитектуры клиент – сервер
- •1.2 Разработка программ в архитектуре “клиент-сервер”
- •Заполнение адресной структуры и получение сокета
- •Привязка известного порта и вывод listen
- •Принятие соединения.
- •Обмен данными
- •Программный интерфейс сокетов
- •Сокеты во FreeBsd
- •Типы соединения
- •Адресация
- •Адресация Internet
- •Interface сокетов
- •Создание сокета
- •Програмныйинтерфейс сокетов
- •Поддержка различных типов сокетов в доменах
- •Пример использования сокетов
- •Sdl-описание протокола сеансового уровня эталонной модели взаимосвязи открытых систем
- •Основные понятия
- •Описание служб
- •Описание протоколов
- •Службы ядра сеансового уровня
- •Блок данных протокола
- •Ясо-описание протокола сеансового уровня
- •Разбиение блока сеансового протокола
- •Описание блока блк-дир
- •Описание блока блк-исп
- •Описание процессов дир и рдт
- •Описание процесса исп
Адресация Internet
Во всех глобальных сетях применима адресация IP, который состоит из 4-х десятичных чисел, разделенных точками:
292.108.11.15
Сетевые вызовы UNIX не могут работать с IP-адресами в таком формате. На программном уровне IP-адреса хранятся в структуре in_addar.t предназначена процедура inet_addr:
#include <arpa/inet.h>
in_addr_t inet_addr(const char *ip_address);
Процедура inet_addr принимает IP адрес в форме строки вида 1.2.3.4. и возвращает адрес в виде структуры соответствующего типа. Если неверное задание формата IP адреса, то возвращаемое значение будет равно (in_addr_t)-1, например, in_addr_t server;
Server = inet_addr(“192.168.11.15”);
Для того, чтобы процесс мог ссылаться на адрес своего компьютера, в заголовочном файле :# include<netinet.h>определена постоянная INADDR_ANY, содержащая локальный адрес своего компьютера в формате in_addr_t.
Порты
Кроме адреса компьютера, клиентская программа должна иметь возможность подключения к нужному процессу. Серверный процесс ждет подключения к заданному номеру порта. Поэтому клиентский процесс должен выполнить запрос на подключение к определенному порту на заданном компьютере, т.е. дополнительно к номеру дома компьютера сообщить номер квартиры.
Для стандартных сервисов отводят известные номера портов по согласованию; dtr или rlogin.
Эти номера портов записаны в файле /exe/ services. Номера портов меньше 1024,считаются зарезервированными для системных процессов UNIX. Остальные доступны.
Interface сокетов
Для хранения информации об адресе и порте адресата существуют стандартная структуры. Обобщенная структура адреса сокета определяется в заголовочном файле <sys/socket.h>;struct sockaddr{
Sa_family_t safamily; /семейство адресов/
Char sa_data[ ]; /адрес сокета/
};
Эта структура называется обобщенным сокетом т.к. в действительности применяются различные типы сокетов в зависимости от того, используются ли они в качестве средства микропроцессорного взаимодействия на одном компьютере или для связи процессов через сеть.
Сокеты для связи через сеть имеют следующую форму.
#include <netinet/in.h>
struct sochadar_in{
sa_family_t sin_family; /семейство адресов/
in_port_t sin_port; /номер порта/
struct in_addr sin_addr; / IP адрес/
unsigned char sin_hero[8]; /поле выравнивания/
}
Создание сокета
При любых моделях связи клиент и сервер должны создать абонентские точки (transport end points), или сокеты, которые являются дескрипторами, использующими для установки связи между процессами в сети. Они создаются с помощью системного вызова socket.
#include <sys/cocker.h>
int socket(int domain, int type, int protocol);
Параметр domain определяет коммуникационный домен, в котором будет использоваться сокет. Домен AF_INET определяет , что будет использоваться домен INTERNET. Домен AF_UNIX используется при взаимодействии на одном ПК.
Параметр type определяет тип создаваемого сокета. Значение sock_sreah указывает на создание сокета для работы в режиме виртуальных соединений, а sock_dgram- для работы в режиме пересылок дейтограмм.
Параметр protocol определяет протокол, обычно он задается равным 0. По умолчанию sock_SIKEAM использует TCP, а socket dgram протокол и др.системный вызов sock возвращает неотрицательное целое число, которое является дескриптором файла сокета, т.е. является разновидностью обобщенного файла ввода/вывода UNIX.
Поддержка передачи экстренных сообщений происходит за счет доставки данных вне нормального потока. Взаимодействие с предварительным установлением соединения предлагает создание виртуального канала между источником и получателем данных, что избавляет от необходимости идентифицировать передающего сторону в каждом пакете данных.
Основные типы сокетов:
Сокет дейтограмм, через который осуществляется теоретически ненадежная, несвязная передача пакетов;
Сокет потока(stream socket),который осуществляет надежную передачу потока байтов без сохранения границ сообщений; обеспечивает передачу экстренных данных;
Сокет пакетов, через который осуществляется надежная последовательная передача данных без дублирования с предварительным установлением связи; границы сообщений сохраняются;
Сокет нужного уровня, через который осуществляется непосрелственный доступ к коммуникационному протоколу.
Для обеспечения вазможности взаимодействия между собой для сокетов должно быть определено пространство имен (адресов), которые имеют смысл только в рамках коммуникационного домена и определяют локальный адрес и локальный процесс, удаленный адрес и удаленный процесс.