IRC сеть и возможные методы ее реализации | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №18 (360) апрель 2021 г.

Дата публикации: 28.04.2021

Статья просмотрена: 315 раз

Библиографическое описание:

Лобашевская, В. А. IRC сеть и возможные методы ее реализации / В. А. Лобашевская. — Текст : непосредственный // Молодой ученый. — 2021. — № 18 (360). — С. 33-35. — URL: https://moluch.ru/archive/360/80465/ (дата обращения: 19.12.2024).



В статье дается краткое описание IRC (Internet relay chat) протокола и его особенностей. Описываются возможные программные решения для реализации собственного IRC сервера.

Ключевые слова: IRC, network, архитектура, internet relay chat, разработка.

IRC сеть

IRC (англ. Internet relay chat) — протокол прикладного уровня, работающий по модели Клиент/Сервер, для обмена в основном текстовыми сообщениями между пользователями (клиентами).

Был разработан в 1988 году. В виду простоты технической реализации был очень популярным средством общения в 90-е 00-е годы — более миллиона пользователей по всему миру [6]. В настоящее время популярен в качестве средства отправки/приема сообщения ботами в ботнетах (например в сети интернет-вещей).

Интересно, что международная спецификация протокола появилась не одновременно с первоначальной версией, а лишь в 1993 году (RFC 1459 [1]). В 2000 году она была дополнена RFC 2810, 2811, 2812, 2813 [2–5]. Данные спецификации не определяют строгий стандарт реализации протокола, а дают лишь общее (хоть и подробное) описание структуры и общих принципов работы IRC сети.

Архитектура IRC сети

Структурная схема IRC сети представлена на рисунке 1.

Структурная схема IRC сети

Рис. 1. Структурная схема IRC сети

Серверы — это основа IRC сети. Они обеспечивают точку, к которой клиенты могут подключаться, чтобы общаться друг с другом, и точку для подключения других серверов. Таким образом формируется IRC сеть. Единственная сетевая конфигурация, разрешенная для серверов IRC — это конфигурация связующего дерева (spanning-tree), где каждый сервер действует как центральный узел для остальной части сети, которую он видит. Важно заметить, что при такой конфигурации в сети запрещены петли из соединений серверов [1; 2].

Клиент — это все, что подключается к серверу, но не другой сервер. Каждый клиент отличается от других клиентов уникальным никнеймом. Длина никнейма четко задается в RFC 1459 (9 символов). Другие особенности никнейма можно узнать в соответствующем разделе RFC [1].

Важной особенностью IRC сети является необходимость всех серверов иметь следующую информацию обо всех клиентах: настоящее имя хоста на котором работает клиент, имя пользователя клиента на этом хосте, и сервер, к которому подключен клиент.

Прием/передача сообщений внутри сети

Сообщение в IRC — это команда, состоящая максимум из трех основных частей: префикса (необязательно), команды и параметров команды (которых может быть до 15). Команда должна быть либо валидной командой IRC, либо трехзначным числом, представленным в тексте ASCII.

Один-к-одному. Обычно общение один-к-одному осуществляется только клиентами, поскольку большая часть трафика сервер-сервер не является результатом взаимодействия серверов только друг с другом. Чтобы предоставить клиентам безопасные средства общения друг с другом, требуется, чтобы все серверы могли отправлять сообщение ровно в одном направлении по связующему дереву, чтобы достичь любого клиента. Путь доставляемого сообщения — это кратчайший путь между любыми двумя точками связующего дерева.

Один-ко-многим. Основная цель IRC — предоставить форум, который позволяет легко и эффективно общаться со многими клиентами. IRC имеет несколько средств для достижения этой цели: отправка сообщения списку пользователей, отправка в канал (группу пользователей), отправка конкретному хосту/маске. Подробнее о каналах и списках пользователей можно прочитать в RFC 2811 [3].

Клиент-к-клиенту. Не существует класса сообщений, который позволил бы отправить сообщение другому клиенту напрямую.

Клиент-к-серверу. Большинство команд, которые приводят к изменению информации о состоянии какой-либо части IRC сети (например, членство в канале, режим канала, статус пользователя и т. д.), отправляются на все серверы по умолчанию, и это распределение не может быть изменено клиентом.

Сервер-к-серверу. Большинство сообщений между серверами транслируется на все другие серверы. Исключением является например сообщение к конкретному пользователю, которое доставляется кратчайшим путем, т. е. имеет строгую последовательность промежуточных серверов.

Особенности реализации собственного IRC сервера

При реализации собственного IRC сервера главными вопросами являются способ хранения данных обо всей IRC сети на одном сервере, а также логика приема-обработки-отправки сообщений.

Хранение данных. Необходимо выделить сущности, которые предстоит хранить на сервере и сгруппировать их удобным способом. В IRC это сущности, которые могут подключаться к серверу (другие сервера, и клиенты) и взаимосвязи между этими сущностями (какие клиенты в каких состоят каналах, подключены ли к серверу локально и т. д.). Также возможно хранение метаданных об этих сущностях и взаимосвязях.

Подключения к серверу. Легко заметить, что каждое локальное подключение в программе будет обладать своим собственным идентификатором — номером сокета. При обнаружении нового подключения можно связать его сокет со всеми серверами в подключившейся подсети. При таком подходе, когда нужно будет отправить сообщение конкретному пользователю, мы сможем узнать сокет подсети в котором находится адресат и отправить сообщение в этом направлении.

Взаимосвязи между элементами на сервере хранятся в виде любой структуры данных, которая может хранить в себе ссылки на конкретные элементы. Например для хранения информации о том, какие пользователи к каким принадлежат каналам, можно использовать двусвязный список. Операции добавления и удаления элементов у этой структуры данных имеет сложность вычисления O(1).

Прием и отправка сообщений. Как было сказано выше, сообщения приходят и отправляются на конкретные сокеты. Для эффективной обработки сообщений и написания читаемого программного кода предлагается использовать паттерн объектно ориентированного проектирования «Команда». Суть его заключается в организации обратного вызова к классу, который включает в себя класс-отправитель, и создании структуры, в которой класс-отправитель и класс-получатель не зависят друг от друга напрямую. Другими словами, предлагается реализацию каждой команды вынести в отдельную сущность, которая будет каким-либо образом изменять внутреннее состояние сервера, а сам сервер будет создавать и запускать необходимые команды.

Литература:

  1. J. Oikarinen, D. Reed Internet Relay Chat Protocol — Текст: электронный // RFC 1459, 1993. — URL: https://tools.ietf.org/html/rfc1459 (дата обращения 17.03.2021)
  2. C. Kalt Internet Relay Chat: Architecture — Текст: электронный // RFC 2810, 2000. — URL: https://tools.ietf.org/html/rfc2810 (дата обращения 17.03.2021)
  3. C. Kalt Internet Relay Chat: Channel Management — Текст: электронный // RFC 2811, 2000. — URL: https://tools.ietf.org/html/rfc2811 (дата обращения 17.03.2021)
  4. C. Kalt Internet Relay Chat: Client Protocol — Текст: электронный // RFC 2812, 2000. — URL: https://tools.ietf.org/html/rfc2812 (дата обращения 17.03.2021)
  5. C. Kalt Internet Relay Chat: Server Protocol — Текст: электронный // RFC 2813, 2000. — URL: https://tools.ietf.org/html/rfc2813 (дата обращения 17.03.2021)
  6. Internet Relay Chat — Текст: электронный // Википедия свободная энциклопедия. — URL: https://en.wikipedia.org/wiki/Internet_Relay_Chat (дата обращения 19.03.2021)
Основные термины (генерируются автоматически): IRC, RFC, сервер, клиент, сеть, связующее дерево, ASCII, друг, список пользователей, структурная схема.


Ключевые слова

архитектура, разработка, Network, IRC, internet relay chat

Похожие статьи

Технология ASP.NET MVC

В статье рассматривается проектирование архитектуры приложений ASP.NET MVC. Авторы описывают теоретические основы ASP.NET MVC, которые необходимы для разработки web-приложений платформы.NET Framework.

RESTful системы: основные принципы и применение

В этой статье речь пойдет о наиболее часто встречающейся архитектуре REST.

Исследование влияния замещения протокола IPv4 протоколом IPv6 на формирование таблицы маршрутизации протоколом OSPF в ядре сети провайдер

Данная статья является частью исследования на тему «Методики внедрения сетевого протокола IPv6 в сетях провайдеров».

Архитектура Serverless

Serverless Architecture возникла как смена парадигмы в современной разработке программного обеспечения, революционизирующая способы проектирования, развертывания и масштабирования приложений. В этой статье исследуются фундаментальные концепции бессер...

Сравнение протоколов динамической маршрутизации

В статье автор сравнивает протоколы динамической маршрутизации для дальнейшего решения задачи по оптимизации маршрутизации в высоконагруженных сетях.

Анализ архитектуры SDN

В данной статье представлен анализ архитектуры SDN, рассмотрены ее возможности в виртуализации серверов и систем хранения данных.

Механизмы управления контентом в организации

В статье дана информация об управлении контентом в организации. Раскрыты понятия контента и базовые принципы Enterprise content management.

Обзор основных технологий контент-менеджмент системы Adobe Experience Manager

В представленной работе рассматриваются основные технологии контент-менеджмент системы Adobe Experience Manager: их возможности и схема взаимодействия. Данные основываются на открытых источниках документации технологий Apache Foundation, а так же офи...

Справочник ресурсов для размещения на корпоративном сайте

В статье рассматривается пример программной части справочника ресурсов с применением интернет-технологий. Приведены диаграммы вариантов использования, последовательностей и блоков. Рассмотрены особенности функционирования справочника ресурсов. Описан...

Перспективы проектирования бизнес-архитектуры в цепочке поставок с использованием технологии блокчейн

Настоящая статья призвана показать общие перспективы реализации бизнес-архитектуры с использованием технологии блокчейн в цепочке поставок в рамках проекта (внедрение блокчейн технологии в сети снабжения в колумбийском контексте). Сперва будет дано к...

Похожие статьи

Технология ASP.NET MVC

В статье рассматривается проектирование архитектуры приложений ASP.NET MVC. Авторы описывают теоретические основы ASP.NET MVC, которые необходимы для разработки web-приложений платформы.NET Framework.

RESTful системы: основные принципы и применение

В этой статье речь пойдет о наиболее часто встречающейся архитектуре REST.

Исследование влияния замещения протокола IPv4 протоколом IPv6 на формирование таблицы маршрутизации протоколом OSPF в ядре сети провайдер

Данная статья является частью исследования на тему «Методики внедрения сетевого протокола IPv6 в сетях провайдеров».

Архитектура Serverless

Serverless Architecture возникла как смена парадигмы в современной разработке программного обеспечения, революционизирующая способы проектирования, развертывания и масштабирования приложений. В этой статье исследуются фундаментальные концепции бессер...

Сравнение протоколов динамической маршрутизации

В статье автор сравнивает протоколы динамической маршрутизации для дальнейшего решения задачи по оптимизации маршрутизации в высоконагруженных сетях.

Анализ архитектуры SDN

В данной статье представлен анализ архитектуры SDN, рассмотрены ее возможности в виртуализации серверов и систем хранения данных.

Механизмы управления контентом в организации

В статье дана информация об управлении контентом в организации. Раскрыты понятия контента и базовые принципы Enterprise content management.

Обзор основных технологий контент-менеджмент системы Adobe Experience Manager

В представленной работе рассматриваются основные технологии контент-менеджмент системы Adobe Experience Manager: их возможности и схема взаимодействия. Данные основываются на открытых источниках документации технологий Apache Foundation, а так же офи...

Справочник ресурсов для размещения на корпоративном сайте

В статье рассматривается пример программной части справочника ресурсов с применением интернет-технологий. Приведены диаграммы вариантов использования, последовательностей и блоков. Рассмотрены особенности функционирования справочника ресурсов. Описан...

Перспективы проектирования бизнес-архитектуры в цепочке поставок с использованием технологии блокчейн

Настоящая статья призвана показать общие перспективы реализации бизнес-архитектуры с использованием технологии блокчейн в цепочке поставок в рамках проекта (внедрение блокчейн технологии в сети снабжения в колумбийском контексте). Сперва будет дано к...

Задать вопрос