Принимаем соединение – создаем клиентский сокет

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