
- •Сокеты
- •Цели и задачи
- •Понятие «Сокет»
- •Коммуникационный
- •Коммуникационные характеристики (1)
- •Коммуникационные характеристики (2)
- •BSD-сокеты
- •Дейтаграммный сокет
- •Потоковый сокет
- •Пакетный сокет
- •Сокет низкого уровня
- •Коммуникационные
- •AF_UNIX
- •AF_INET
- •Двунаправленный канал
- •Создание сокета
- •Поддержка различных типов сокетов в доменах
- •Поддержка различных протоколов
- •Привязка сокета
- •Структура sockaddr
- •Структура sockaddr_un
- •Структура sockaddr_in
- •Адреса сокетов в различных доменах
- •Преобразование различных форматов IP-адресов
- •Создание очереди входящих запросов
- •Прием входящего соединения
- •Установление
- •Получение данных
- •Отправка данных
- •Взаимодействие процессов с установлением соединения (UNIX)
- •Взаимодействие процессов без установления соединения (UNIX)
- •Взаимодействие процессов с установлением соединения (INET)
- •Сравнение различных систем межпроцессного взаимодействия
- •Планирование
- •Типы
- •Разделение времени
- •Планирование по наивысшему приоритету
- •Планирование по наивысшему приоритету
- •Планирование по наивысшему приоритету
- •Круговорот (1)
- •Круговорот (2)
- •Круговорот (3)
- •Модификации круговорота
- •Модификации круговорота
- •Очереди с обратной связью
- •Очереди с обратной связью
- •Очереди с обратной связью
- •Сравнение подходов
- •Многоуровневое планирование (1)
- •Многоуровневое планирование (2)
- •Планирование в Linux
- •Идеальная система
- •Реальная система
- •Две задачи планировщика
- •Случаи освобождения процессора
- •Очередь готовности
- •Политики планирования
- •Дескриптор процесса (некоторые поля)
- •Работа планировщика
- •Значения приоритетов
- •Некоторые особенности

Сокет низкого уровня
SOCK_RAW
Обеспечивает непосредственный доступ к коммуникационному протоколу.

Коммуникационные
домены
AF_UNIX (PF_UNIX)
AF_INET (PF_INET)
AF_INET6 (PF_INET6)
AF_NS (PF_NS)

AF_UNIX
Локальное межпроцессное взаимодействие в пределах единой ОС. Используются внутренние протоколы.

AF_INET
Взаимодействие процессов удаленных систем. Используется стек протоколов TCP/IP.

Двунаправленный канал
int socketpair(int domain, int type, int protocol, int sv[2]);
Создается двунаправленный канал, напоминающий два неименованных канала, направленных в противоположные стороны.

Создание сокета
int socket(int domain, int type, int protocol);
Создает сокет заданного типа в заданном домене. Протокол чаще всего выбирается по умолчанию.

Поддержка различных типов сокетов в доменах

Поддержка различных протоколов

Привязка сокета
int bind(int socket,
struct sockaddr * addr, int len);
Осуществляется привязка сокета к локальному адресу (получение сокетом имени). В некоторых случаях привязка происходит неявно.

Структура sockaddr
short sa_family;
char sa_data[14];