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