
- •Федеральное агентство по образованию
- •XDsl, рабочие частоты и расстояния ……………...…….……… 37
- •Основная литература
- •Лекция 1.Служба dhcp Windows 2003 Основные понятия
- •Установка и настройка сервера dhcp
- •Дополнительная литература
- •Лекция 2.Протокол tcp. Структура tcp-сегмента
- •Лекция 3. Протокол tcp. Схема взаимодействия партнеров tcp-соединения Этапы tcp-взаимодействия
- •Таймеры протокола тср
- •Активные подключения Имя Локальный адрес Внешний адрес Состояние
- •Лекция 4. Протокол udp
- •Формат udp-пакета
- •Применение протокола
- •Лекция 5. Программный интерфейс сокетов
- •Лекция 6. Web-серверы на основе iis Windows 2003 Основные понятия
- •Настройка Web-сервера для работы в сети
- •Стандартные протоколы и радиочастоты wlan
- •Ieee 802.11a-1999│ 54 Мбит/с │ 5 гГц
- •Ieee 802.11b-1999│ 11 Мбит/с │ 2,4 гГц
- •Ieee 802.11g-2003│ 54 Мбит/с │ 2,4 гГц
- •Топологии сетей wlan
- •Некоторые сведения о работе адаптеров wlan на физическом уровне
- •1* │ Код Баркера │ dbpsk │ Код Баркера │ dbpsk
- •2* │ Код Баркера │ dqpsk │ Код Баркера │ dqpsk
- •Дополнительная литература к лекциям 7- 9
- •Словарь терминов к лекциям 7- 9
- •Работа адаптеров wlan на канальном уровне
- •2 2 6 6 6 2 6 До 2312 байт 4
- •Скорость передачи данных в сети wlan
- •Присоединение станций к сети wlan
- •Безопасность wlan
- •30 │ До 2312 байт │ 4
- •Принципы работы, протоколы, скорости xDsl
- •Кодирование сигналов в линиях xDsl, рабочие частоты и расстояния
- •Дополнительная литература к лекциям 10 - 11
- •Словарь терминов к лекциям 10-11
- •Типовое оборудование xDsl
- •Основные схемы применения технологии xDsl
- •Введение в технологию acl
- •Стандартные списки доступа
- •Ip access-group номер acl in | out
- •Просмотр и редактирование acl
- •Дополнительная литература к лекциям 12 - 13
- •Расширенные списки доступа
- •Применение в правилах ключевого слова tcp
- •Применение в правилах ключевого слова udp
- •Применение в правилах ключевого слова icmp
- •Удаленный доступ в корпоративных сетях
- •Протокол ppp канального уровня
- •Формат кадра протокола ppp
- •Особенности передачи ррр-кадров на физическом уровне
- •Принципы организации протокола ррр
- •Протокол управления соединенением lcp
- •Аутентификация партнеров
- •Протокол управления шифрованием данных ррр-соединения
- •Ipcp - протокол управления инкапсуляцией ip-пакетов
- •Конфигурации сетей удаленного доступа
- •Схемы взаимодействия “клиент–сеть”
- •Схемы взаимодействия “сеть–сеть”
- •Дополнительная литература к лекциям 14 - 16
- •3. Технология adsl скоростного доступа к глобальным сетям по телефонным
- •Туннелирование и криптография – базовые принципы организации виртуальных частных сетей
- •Протокол общей инкапсуляции gre
- •Протокол туннелирования рртр
- •Средства построения сетей vpn
- •Схемы сетей vpn с протоколом рртр на основе ос
- •Дополнительная литература к лекции 17
Лекция 5. Программный интерфейс сокетов
Для доступа приложений к протоколам ТСР и UDPиспользуется прогаммный интерфейс сокетов. Интерфейс содержит около 20 процедур-функций, из которых рассмотрим 9 базовых. Данный раздел не преследует цель научить корректному программированию интерфейса, а предназначен для лучшего понимания взаимодействия программных и аппаратных средств протокола ТСР. По этой причине некоторые подробности описания функций пропущены.
Процедуры позволяют создать ТСР-соединение, передавать-принимать по нему данные, разорвать соединение. Каждая процедура имеет ряд входных и выходных аргументов. Входные аргументы необходимо указать в скобках при обращении к функции, выходной – после завершения работы процедуры будет присвоен самой функции. Среди выходных аргументов есть и коды возврата:
>= 0 – корректное завершение функции, выдача результата;
< 0 – ошибка завершения функции.
Рассмотрим вариант взаимодействия, при котором инициатор ТСР-соединения (“клиент”) устанавливает соединение с пассивной стороной (“сервером”), после чего обменивается с ним данными.
Описание функций программного интерфейса сокетов
socket (адресное семейство,тип,протокол) – получение номера сокета (целое >0) на локальной машине. Здесь
адресное семейство– указатель способа интерпретации адресов. ДляTCP/IP необходи-мо использовать параметрAF_INET;
тип – тип создаваемого сокета:SOCK_STREAMдля протокола ТСР илиSOCK_DGRAMдля передачи датаграмм по протоколуUDP;
протокол– определяется типом сокета, для ТСР необходимо использовать число 0.
Возвращенное значение socketназывается еще дескриптором сокета. Для удобства использования дескриптора возвращенное значение функции можно присвоить другой переменной, напримерs1:s1 =socket(...).
Функция socketлишь создает дескриптор, но не связывает его с конкретнымIP-адресом и номером порта. Для связывания есть функцииbindиconnect.
closesocket (сокет) – удаление указанного ненужного сокета и освобождение занятых им ресурсов. Здесь
сокет– дескриптор сокета.
bind (сокет,адрес сокета) – привязка указанного сокета к определенномуIP-адресу и номеру порта на локальной машине. Здесь
сокет– дескриптор, полученный с помощью функцииsocket;
адрес сокета – указатель на структуру, которая дляTCP/IPимеет вид
0 15 16 31
-
2
Номер порта (16 бит)
IP-адрес (32 бита)
При успешном выполнении утилиты ей возвращается число 0. Выполняется обычно на сервере, т.к. для него заранее известен номер порта, связанного с конкретным приложением сервера.
connect (сокет,адрес сокета) – запрос соединения с удаленным сервером. Здесь
сокет– дескриптор сокета, полученный на клиентской машине с помощью функцииsocket;
адрес сокета– указатель на структуру, аналогичную для функцииbind. В этой структуре должны быть указаны номер порта иIP-адресудаленногосервера.
При успешном выполнении утилиты, т.е. после установления соединения, ей возвращается число 0. Успешность зависит от того, выполнилась ли успешно парная функция acceptна удаленном сервере. Поскольку заранее это неизвестно клиенту, то функциюconnectнеобходимо выполнять в цикле, проверяя каждый раз возвращенное ей значение.
В дальнейшем, тот же дескриптор сокета клиент будет использовать в утилитахsend(...) иreseive(...) при обмене данными с удаленным сервером.
listen(сокет,n) – прослушивание на сервере порта и создание очереди для приема запросов соединения клиентов. Здесь
сокет– дескриптор сокета, полученный на сервере с помощью функцииsocket;
n– длина очереди (n= > 1), т.е. максимальное число принимаемых соединений.
При успешном выполнении утилиты ей возвращается число 0.
accept(сокет,адрес сокета) – установление соединения с клиентом, запрос которого поступил в очередь на сервере. Здесь
сокет– дескриптор сокета, полученный на сервере с помощью функцииsocket;
адрес сокета– указатель на структуру, аналогичную для функцииbind.
При успешном выполнении утилиты, т.е. после установления соединения, в указанную структуру будут возвращены номер порта и IP-адрес клиента, запросившего соединение, а самой переменнойacceptвозвращается дескриптор сокета клиента. Успешность зависит от того, выполнилась ли успешно парная функцияconnectна удаленном клиенте. Поскольку заранее это неизвестно серверу, то функциюacceptнеобходимо выполнять в цикле, проверяя каждый раз возвращенное ей значение.
Для удобства использования возвращенного дескриптора сокета клиента значение функ-ции можно присвоить другой переменной, например s2:s2 =accept(...). В дальнейшем, дескрипторs2 сервер будет использовать в утилитахsend(...) иreseive(...) при обмене данными с удаленным клиентом.
send(сокет,адрес буфера,b,флаги) – передача данных сервера вTCP-канал после установления ТСР-соединения с клиентом. Здесь
сокет– дескрипторs2 сокета (см. утилитуaccept);
адрес буфера– адрес буфера с данными для передачи их в канал ТСР. Буфер создается приложением;
b– количество байт в буфере;
флаги– указатели срочности данных и т.д. При обычной передаче в это поле записы-вается число 0.
При успешном выполнении утилиты целой переменной sendвозвращается число фактически переданных байтов.
send(сокет,адрес буфера,b,флаги) – передача данных клиента вTCP-канал после установления ТСР-соединения с сервером. Здесь
сокет– дескрипторs1 сокета (см. утилитуsocket).
Остальные параметры те же, что и в предыдущей команде send.
receive (сокет,адрес буфера,b,флаги) – прием данных сервером изTCP-канала после установления ТСР-соединения с клиентом. Здесь
сокет– дескрипторs2 сокета (см. утилитуaccept);
адрес буфера– адрес буфера, в который будут приниматься данные. Буфер создается приложением;
b– размер буфера (в байтах);
флаги– указатели срочности данных и т.д. При обычном приеме в это поле записы-вается число 0.
При успешном выполнении утилиты целой переменной receiveвозвращается число фактически принятых байтов. Функцияreceiveдолжна выполняться в цикле до получения всех данных.
receive (сокет,адрес буфера,b,флаги) – прием данных клиентом изTCP-канала после установления ТСР-соединения с сервером. Здесь
сокет– дескрипторs1 сокета (см. утилитуsocket).
Остальные параметры те же, что и в предыдущей команде receive.
close(сокет) – запрос на закрытиеTCP-соединения после завершения сеанса передачи данных. Здесь
сокет- дескрипторs1 сокета (см. утилитуsocket) при выдаче команды на клиенте;
сокет- дескрипторs2 сокета (см. утилитуaccept) при выдаче команды на сервере.
Схема использования процедур при взаимодействии
клиента с сервером
Клиент Сервер Пояснения
socket (...)socket (...) Фаза
bind (...) подготовки
listen(...) к соединению
accept(...) Ожидание поступления запросов от клиентов
connect (...) Фаза установления
ТСР-соединения (обмен тремя сегментами).
Состояние ТСР-соединения: Established
send(...)receive (...) Фаза
receive (...) send (...) обмена
. . . . . . данными
close(...)close(...) Фаза разъединения (обмен четырьмя сегментами)