Введение
Чтобы позволить на отдельно взятом компьютере многим процессам одновременно использовать коммуникационные возможности транспортного уровня, на каждом хост-компьютере предоставляется порты. Вместе с адресами сетей и хост-компьютеров на коммуникационном уровне Internet они образуют сокет.
Каждое соединение уникальным образом идентифицируется парой сокетов. Таким образом, любой сокет может одновременно использоваться во многих соединениях. [1]
Со́кеты (англ. socket — разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.
Следует различать клиентские и серверные сокеты. Клиентские сокеты грубо можно сравнить с конечными аппаратами телефонной сети, а серверные — с коммутаторами. Клиентское приложение (например, браузер) использует только клиентские сокеты, а серверное (например, веб-сервер, которому браузер посылает запросы) — как клиентские, так и серверные сокеты.
Интерфейс сокетов впервые появился в BSD Unix. Программный интерфейс сокетов описан в стандарте POSIX.1 и в той или иной мере поддерживается всеми современными операционными системами.
1 Анализ предметной области
1.1 Сокеты
1.1.1 Принципы сокетов
Каждый процесс может создать слушающий сокет (серверный сокет) и привязать его к какому-нибудь порту операционной системы (в UNIX непривилегированные процессы не могут использовать порты меньше 1024). Слушающий процесс обычно находится в цикле ожидания, то есть просыпается при появлении нового соединения. При этом сохраняется возможность проверить наличие соединений на данный момент, установить тайм-аут для операции и т.д.
Каждый сокет имеет свой адрес. ОС семейства UNIX могут поддерживать много типов адресов, но обязательными являются INET-адрес и UNIX-адрес. Если привязать сокет к UNIX-адресу, то будет создан специальный файл (файл сокета) по заданному пути, через который смогут сообщаться любые локальные процессы путём чтения/записи из него (см. Доменный сокет Unix). Сокеты типа INET доступны из сети и требуют выделения номера порта.
Обычно клиент явно подсоединяется к слушателю, после чего любое чтение или запись через его файловый дескриптор будут передавать данные между ним и сервером. [3]
Основные методы сокетов представлены в таблице 1.
Таблица 1 – основные методы сокетов
2 Постановка задачи
Целью выполнения данной работы является разработка сетевого приложение строгой аутентификации пользователей в компьютерной сети на основе многоразовых паролей. Для повышения безопасности пользовательских данных, пароли в базе данных, которая содержит необходимую информацию о пользователях, однозначно из идентифицирующую, должны храниться в хешированном виде. Целевой операционной системой, в которой необходимо выполнять разработанное программное обеспечение, является операционная система семейства Windows корпорации Microsoft. Языком программирования, на котором необходимо выполнить поставленную задачу, является язык программирования С# платформы Microsoft .NET. Версия платформы допускается на выбор. В качестве среды разработки необходимо воспользоваться IDE Visual Studio, версия которой так же допускается на выбор исполнителя.
Задача курсовой работы – изучение такого вида аутентификации как аутентификация на основе многоразовых паролей с использованием потоковых сокетов, направленное на углубление теоретической базы и совершенствование навыков практической разработки программного обеспечения клиент-серверной архитектуры.
3 Моделирование и реализация ПО
3.1 Архитектура ПО и протокол взаимодействия клиента и сервера.
Для того чтобы выполнить поставленную задачу, необходимо создать 2 приложения – серверное и клиентское.
Оба приложения должны быть запущены одновременно, поскольку работа системы основана на их взаимодействии. Однако, без запущенного клиента сервер не должен прерывать свою работу, поскольку необходимо «прослушивать» порты на факт появления клиентского запроса.
Разрабатываемое программное обеспечение (ПО) соответствует клиент-серверной архитектуре. В качестве клиента в системе выступает клиентское приложение с графическим интерфейсом, которое формирует запросы на аутентификацию и регистрацию, а в качестве серверной – приложение-сервер, которое получает, обрабатывает эти запросы и дает ответ клиенту о результатах.
Протокол взаимодействия клиента с сервером представлен на рисунке 3.1.
Заключение
Целью выполнения данной работы была разработка сетевого приложение строгой аутентификации пользователей в компьютерной сети на основе многоразовых паролей.
Задачей курсовой работы было изучение такого вида аутентификации как аутентификация на основе многоразовых паролей с использованием потоковых сокетов, направленное на углубление теоретической базы и совершенствование навыков практической разработки программного обеспечения клиент-серверной архитектуры.
В результате выполнения курсовой работы были закреплены навыки в разработке программного обеспечения строгой аутентификации на основе многоразовых паролей, были углублены знания о протоколе передачи TCP/IP.
Скриншоты программы
1. Интернет ресурс, Статья «Понятие сокет и порт». URL: http://bourabai.ru/lan/35.html
2. Интернет ресурс, Статья «Сокет (программный интерфейс)». URL: https://goo.gl/ybtehq
3. Интернет ресурс, Статья «Сетевое программирование documentation». URL: http://lecturesnet.readthedocs.io/net/low-level/ipc/socket/intro.html
4. Интернет ресурс, Статья «TCP». URL: https://ru.wikipedia.org/wiki/TCP
5. Вильямсон Х. Универсальная библиотека программиста - СПб.: ПИТЕР, 2001
6. С.Г. Баричев, В.В. Гончаров, Р.Е. Серов, Основы современной криптографии, 2-е издание, Москва, "Горячая линия - Телеком", 2002.
7. Кнут Д. Искусство программирования. Т. 2. Получисленные алгоритмы. третье издание. М.: МЦНМО, 1999.