Изучение методов разработки программного обеспечения для создания UDP сокетов и протоколов
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Введение
Чат - средство обмена сообщениями по компьютерной сети в режиме реального времени, а также программное обеспечение, позволяющее организовывать такое общение. Характерной особенностью является коммуникация именно в реальном времени или близкая к этому, что отличает чат от форумов и других медленных средств.
Существует несколько разновидностей программной реализации чатов:или веб-чаты. Такой чат выглядит как обычная веб-страница, где можно прочесть последние несколько десятков фраз, написанные участниками чата и модераторами. Страница чата автоматически обновляется с заданной периодичностью;
чаты, использующие технологию Adobe Flash. Вместо периодической перезагрузки страницы, между клиентом и сервером открывается сокет, что позволяет моментально отправлять или получать сообщения, расходуя меньше трафика;, специализированный протокол для чатов;
программы-чаты для общения в локальных сетях;
чаты, реализованные поверх сторонних протоколов (например чат, использующий ICQ);
чаты, работающие по схеме клиент-сервер, это позволяет использовать их в сетях со сложной конфигурацией, а также управлять клиентскими приложениями (например, Mychat, Jabber).
Разрабатываемая программа относится к чатам, предназначенным для общения в локальной сети, и имеет некоторые преимущества перед существующими аналогами (например, Vypress Chat, Intranet Chat):
программа может запускаться на различных операционных системах и платформах, т.к. написана на языке Java;
программа поддерживает шифрование личных сообщений на основе асимметричного алгоритма RSA.
1. Описание протокола
Протокол UDP (англ. User Datagram Protocol - протокол пользовательских датаграмм) - это транспортный протокол для передачи данных в сетях IP без установления соединения. Он является одним из самых простых протоколов транспортного уровня модели OSI.не гарантирует доставку пакета, поэтому аббревиатуру иногда расшифровывают как Unreliable Datagram Protocol (протокол ненадёжных датаграмм). Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных.
Первые 64 бита (8 байт) датаграммы (рис. 1.1) представляют собой UDP-заголовок, остальные биты - данные сообщения:
Рисунок 1.1 - Структура UDP пакета
Значение поля длина датаграммы указывает на длину всего UDP-сообщения, то есть, включая и UDP-заголовок. Измеряется в октетах (байтах).
Для вычисления максимальной длины данных в UDP-сообщении необходимо учесть, что UDP-сообщение в свою очередь является содержимым области данных IP-сообщения. Максимальная длина IP-сообщения (с учетом заголовка) равна 65535 октетов. Потому максимальная длина UDP-сообщения (за вычетом минимального IP-заголовка) равна 65535 ? 20 = 65515 октетов. Длина заголовка UDP-сообщения равна 8 октетам, следовательно, максимальная длина данных в UDP-сообщении равна 65515 ? 8 = 65507 октетов (рис. 1.2).
Рисунок 1.2 - Максимальный размер UDP сообщения
Недостаточная надёжность протокола может выражаться как в потере отдельных пакетов, так и в их дублировании. Протокол UDP не предусматривает стандартного механизма повторения передачи потерянных пакетов. UDP используется при передаче потокового видео, игр реального времени, а также некоторых других типов данных.
2. Описание выполняемой задачи
Разрабатываемая программа должна предоставлять пользователю следующие основные возможности:
писать в общий чат, видимый всеми другими пользователями;
видеть список всех участников общения на текущий момент (их ники, IP-адреса и общее количество);
менять свой ник;
вставлять в свои сообщения смайлы;
иметь возможность ручного (по нажатию кнопки) и автоматического (по таймеру) обновления списка пользователей в сет;
От разрабатываемой программы также требуется поддержка возможности установления с выбранным пользователем защищенного соединения.
Защищённое соединение подразумевает под собой один из способов асинхронного шифрования - алгоритм RSA. Главным преимуществом асинхронного шифрования перед синхронным шифрованием заключается в том, что в первом случае не требует защищённого канала связи между абонентами для передачи ключа расшифровки данных. Ключ для шифрования данных передаётся по не защищённому каналу, с помощью него происходит шифрование данных. Но чтобы расшифровать данные, необходим также закрытый ключ, который держится в секрете и никуда не передаётся.
3. Структура программы
Структурно-функциональная схема разрабатываемой программы представлена на рисунке 3.1.
Рисунок 3.1 - Структурно-функциональная схема программы
Сетевой модуль является основным модулем, организующим информационное взаимодействие с другими программами-клиентами. Этот модуль передаёт следующие команды:- эта команда обозначает, что передающий её клиент находится в сети. Нужна для обновления списков контактов клиентов. Посылается с определённым интервалом или же по команде пользователя.:room1:room2… - эта команда служит для оповещения сетевых клиентов о том, что пославший её клиент находится комнатах room1, room2 и т.д.:nick - команда служит для оповещения остальных сетевых клиентов о смене ника пользователя.- эта команда обозначает, что передающий её клиент выходит и?/p>