Сокеты

advertisement
Сети и системы телекоммуникаций
Интерфейс сокетов
ИМКН УрФУ
Сети и системы телекоммуникаций. Интерфейс сокетов
План
Место сокетов в моделях 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
Download