Сети ЭВМ и телекоммуникации. Архитектура и сетевые технологии. Анкудинов Г.И - 141 стр.

UptoLike

Система Sockets ОС Unix
Система Sockets ОС Unix впервые появилась в версии 4.3 BSD UNIX (Berkley
Software Distribution UNIX). В ОС Windows используется Windows Sockets = WinSock.
Это удобный и универсальный механизм разработки сетевых распределенных
приложений:
Система Sockets ОС Unix не зависит от нижележащих сетевых протоколов и
технологий, так как основана на понятии коммуникационного домена
(Communication Domain). Каждый домен характеризуется способом именования
сетевых узлов и ресурсов, видом сетевых
соединений (надежные, дейтаграммные,
упорядоченные), способом синхронизации процессов и т. д.
Используется абстрактная конечная точка соединения сокет (socket=гнездо).
Сообщения уходят в сеть и принимаются из сети через сокеты. Каждый процесс
пользуется своим сокетом (сокеты могут быть на одной машине).
Сокет может иметь как высокоуровневое символьное имя (адрес), так и
низкоуровневое
, отражающее специфику адресации соответствующего домена.
Например, в домене Интернета используется низкоуровневое имя в виде пары (IP-
адрес, порт).
Для каждого домена могут быть сокеты различных типов, определяющих вид
взаимодействия (соединения):
дейтаграммные (datagram);
потоковые, обеспечивающие надежную доставку (stream).
Для работы с сокетами используются следующие примитивы (системные вызовы).
Создание сокета:
s=socket(domain, type, protocol),
где type
{TCP, UDP, …}.
Связывание сокета с адресом:
bind(s, addr, addrlen),
где addr – адрес узла, где расположен сокет, например addr=(IP-адрес, порт).
Связывание требуется только для приема сообщений.
Запрос клиента на установление соединения с удаленным сокетом:
connect(s, server_addr, server-addrlen).
После установления соединения сообщения могут передаваться в обоих направлениях.
Ожидание запроса на установление соединения:
listen(s, backlog),
где backlog – максимальное число запросов в очереди.
Принятие запроса на установление соединения:
snew= accept(s, client_addr, client_addrlen).