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