Сети и системы телекоммуникаций Интерфейс сокетов ИМКН УрФУ Сети и системы телекоммуникаций. Интерфейс сокетов План Место сокетов в моделях OSI и TCP/IP Сокеты Беркли Основные операции над сокетами Работа сокетов Пример на Python 2 Сети и системы телекоммуникаций. Интерфейс сокетов Место в моделях OSI и TCP/IP Сокеты, TCP и UDP относятся к транспортному уровню Сокеты — интерфейс транспортного уровня TCP и UDP — протоколы транспортного уровня 3 Сети и системы телекоммуникаций. Интерфейс сокетов Место в моделях OSI и TCP/IP Приложение Приложение Интерфейс сокетов Транспортный Интерфейс сокетов Протокол TCP Транспортный Сетевой Сетевой Сетевых интерфейсов Сетевых интерфейсов Хост 1 Хост 2 4 Сети и системы телекоммуникаций. Интерфейс сокетов Сокеты Беркли Сокеты впервые появились в ОС Berkeley UNIX 4.2 BSD (1983 г.) Сокеты — де-факто стандарт интерфейсов для транспортной подсистемы Различные варианты сокетов реализованы разных ОС и языках программирования в 5 Сети и системы телекоммуникаций. Интерфейс сокетов Сокеты Беркли Сокет в Unix — файл специального типа • В Unix все устройства представляются файлами Операции чтения и записи передают данные по сети в файл сокета • Отправитель записывает данные в файл сокета • Получатель читает данные из файла сокета • Передача данных по сети скрыта от программиста 6 Сети и системы телекоммуникаций. Интерфейс сокетов Операции сокетов Беркли Операция Назначение Socket Создать новый сокет Bind Связать сокет с IP-адресом и портом Listen Объявить о желании принимать соединения Connect Установить соединение Accept Принять запрос на установку соединения Send Отправить данные по сети Receive Получить данные из сети Close Закрыть соединение 7 Сети и системы телекоммуникаций. Интерфейс сокетов Клиент и сервер Взаимодействующие стороны сокетов Беркли: • Сервер • Клиент Сервер — работает (слушает) на известном IPадресе и порту и пассивно ждет запросов на соединение Клиент — активно устанавливает соединение с сервером на заданном IP и порту 8 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Сервер Клиент 9 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket Сервер Клиент 10 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket Сервер Клиент 11 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket Bind Сервер Клиент 12 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Bind Сервер Клиент 13 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Bind Listen Сервер Клиент 14 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Bind Listen Очередь для соединений Сервер Клиент 15 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Bind Listen Очередь для соединений Сервер Клиент 16 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Bind Listen Очередь для соединений Сервер Клиент 17 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Connect Bind Listen Очередь для соединений Сервер Клиент 18 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Bind Запрос на соединение Socket Connect Listen Очередь для соединений Сервер Клиент 19 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Bind Запрос на соединение Socket Connect Listen Accept Очередь для соединений Сервер Клиент 20 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Bind Запрос на соединение Socket Connect Listen Accept Очередь для соединений Копия сокета Сервер Клиент 21 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Connect Bind Listen Accept Очередь для соединений Копия сокета Сервер Соединение Клиент 22 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Bind Connect Listen Send Accept Очередь для соединений Копия сокета Сервер Соединение Клиент 23 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Bind Connect Listen Send Accept Receive Очередь для соединений Копия сокета Сервер Соединение Клиент 24 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Bind Connect Listen Send Accept Receive Close Очередь для соединений Копия сокета Сервер Соединение Клиент 25 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Socket 192.168.1.1:80 Socket Bind Connect Listen Send Accept Receive Close Очередь для соединений Копия сокета Сервер Клиент 26 Сети и системы телекоммуникаций. Интерфейс сокетов Работа сокетов Передача данных возможна, только установлено соединение клиент-сервер если При получении запроса от клиента создается копия сокета • Соединение устанавливается с копией Оригинальный сокет продолжает ждать запросы от других клиентов • Такой сокет не может принимать и передавать данные 27 Сети и системы телекоммуникаций. Интерфейс сокетов Пример на Python «Серверный» сокет Клиентский сокет Передача данных 28 Сети и системы телекоммуникаций. Интерфейс сокетов Python. Серверный сокет Создание сокета: serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) Привязка к IP-адресу: serversocket.bind(('192.168.0.1', 80)) «Прослушивание»: serversocket.listen(5) 29 Сети и системы телекоммуникаций. Интерфейс сокетов Python. Типы сокетов Протоколы сетевого уровня socket.AF_INET — IPv4 socket.AF_INET6 — IPv6 Протоколы транспортного уровня socket.SOCK_STREAM — TCP socket.SOCK_DGRAM — UDP Есть и другие типы, но они используются редко 30 Сети и системы телекоммуникаций. Интерфейс сокетов Python. Ожидание соединений while 1: #Принимаем соединение — создаем клиентский сокет (clientsocket, address) = serversocket.accept() #Создаем поток для обслуживания запроса клиента ct = client_thread(clientsocket) ct.run() 31 Сети и системы телекоммуникаций. Интерфейс сокетов Python. Клиентский сокет Создание сокета: clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) Установка соединения: clientsocket.connect(('192.168.0.1', 80)) 32 Сети и системы телекоммуникаций. Интерфейс сокетов Python. Передача данных Отправка данных: socket.send('Hello, world!') Получение данных: socket.recv(1024) # 1024 — размер буфера Закрытие сокета: socket.close 33 Сети и системы телекоммуникаций. Интерфейс сокетов Итоги Место сокетов в моделях OSI и TCP/IP Сокеты Беркли Основные операции над сокетами Работа сокетов Пример на Python 34 Сети и системы телекоммуникаций. Интерфейс сокетов Вопросы? 35