Лекция 14
Socket – соединитель. Основные операционные среды (Unix, Windows) базируются в настоящее время на идеологии соединителей (Socket). Эта технология была разработана в университете г.Беркли (США) для системы Unix, поэтому соединители иногда называют соединителями Беркли (Berkeley sockets). Впервые идея соединителя была использована в системе 4.3 BSD Unix для организации сетевого ввода/вывода. Соединители реализуют механизм взаимодействия не только сетевых программ и процессов, но и программ и процессов внутри ЭВМ.
Технология соединителей поддерживает работу с любыми стеками протоколов. Набор операторов, поддерживающих работу соединителей, образует отдельную динамическую библиотеку (в Windows – WinSock).
В сетевых системах пара комбинаций IP-адресов и номеров портов однозначно определяет канал связи между двумя процессами в ЭВМ. Такая комбинация называется соединителем (socket). Номера портов могут и совпадать, так как относятся к разным машинам, но IP-адреса должны быть обязательно разными.
Процедура передачи данных с помощью сокетов.
На стороне сервера:
1. Создание сокета с указанием набора используемых протоколов (это может быть набор Internet, Unix, AppleTalk и т.д.) и конкретного протокола, с помощью которого будет производиться передача данных (TCP, UDP). Процедура – socket.
2. Присвоение созданному соединителю определенного IP-адреса и номера порта. Процедура – bind.
3. Переход в режим ожидания и подготовка соединителя к обработке потока запросов на соединение. При этом организуется очередь запросов. Процедура – listen.
4. Извлечение запросов на соединение из очереди и их обработка. Процедура accept. Если очередь запросов пуста, то accept блокирует программу до получения запроса на соединение. Для предотвращения блокирования можно предварительно с помощью процедуры Select убедиться, что очередь запросов не пуста, и только после этого вызвать процедуру accept. После прихода запроса на соединение создается дополнительный сокет для обмена данными с клиентом.
5. Обмен данными с клиентом через дополнительный сокет. Для отправки данных клиенту используетсяпроцедура Send, для получения данных от клиента – процедура Recv.
6. Выключение и закрытие дополнительного сокета (процедуры Shutdown и CloseSocket).
7. Переход к шагу 4.
На стороне клиента:
1. Создание сокета с указанием набора используемых протоколов (это может быть набор Internet, Unix, AppleTalk и т.д.) и конкретного протокола, с помощью которого будет производиться передача данных (TCP, UDP). Процедура – socket.
2. Формирование запроса на соединение с сервером с указанием его IP-адреса и номера порта. Процедура connect.
3. Обмен данными с сервером через слозданный сокет. Для отправки данных клиенту используетсяпроцедура Send, для получения данных от клиента – процедура Recv.
4. Выключение и закрытие сокета (процедуры Shutdown и CloseSocket).