IRC

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

IRC (англ. Internet Relay Chat) — сервіс Інтернет, який надає користувачам можливість спілкування шляхом надсилання текстових повідомлень багатьом людям з усього світу одночасно (в режимі реального часу). Аналогію можна знайти у радіо на коротких хвилях, навіть використовується аналогічне поняття англ. channel (канал, хвиля).

Надруковане на комп'ютері користувача повідомлення стає видимим всім користувачам на тому ж каналі. Користувач може приєднатися до вже наявного каналу або налаштувати свій. Користувач може створити свій особистий канал тільки для себе і буквально однієї-двох людей. Так само, як і у короткохвильовиків, користувач може присвоїти собі унікальний «позивний» («нік», «псевдонім», англ. nick).

Протокол IRC створив у 1988 році фінський вчений і програміст Яркко Ойкарінен (фін. Jarkko Oikarinen).[1]

Опис IRC[ред.ред. код]

IRC-клієнт, який підключився до кількох каналів на двох різних IRC-серверах

При підключенні до серверу IRC користувач бачить список доступних каналів, у кожний з яких (або відразу в декілька) він може «увійти» (підключитися). Каналом є віртуальна «кімната», в якій можуть знаходитися декілька користувачів. Всі повідомлення, що видаються в канал, видно всім користувачам, які знаходяться на цьому ж каналі. Кожен канал має свою назву і, як правило, певну тему для обговорення. Після «входу» на канал користувач може бачити, що пишуть інші учасники каналу, а також може сам писати повідомлення. Тема, що обговорюється на каналі, зазвичай випливає з його назви (наприклад, канал #wikipedia-ru).

Різні сервери можуть об'єднуватися (лінкуватися) в мережу з єдиним простором імен користувачів і каналів. Великі світові IRC-мережі налічують у своєму складі сотні серверів. Аварійний тимчасовий розрив IRC-мережі на дві частини називається netsplit'ом (сплітом).

IRC надає можливість як групового, так і приватного спілкування. Для групового чату в IRC призначені канали, на яких користувачі можуть збиратися та вести спілкування.

Оператори IRC-мережі керують роботою серверів та мережі в цілому. Як правило, в IRC-мережах на операторів теж встановлюються обмеження на рівні правил мережі, мережевого етикету або навіть на рівні IRCd/IRC-сервісів.

Технічні деталі[ред.ред. код]

Команди[ред.ред. код]

Більшість команд, які вводяться в командну консоль, відрізняються від тих, які передаються по мережі. Ось команди, визначені в RFC 2812:

  • NICK username — змінює нік учасника на зазначене параметром username.
  • OPER username password — видає права оператора користувачеві, використовуючи відповідний O:Line.
  • QUIT — від'єднує користувача від сервера.
  • JOIN channels [keys] — приєднується до каналів channels використовуючи відповідні ключі keys якщо канал має режим +k. Канали в списку розділяються комами.
  • JOIN 0 — покинути всі канали.
  • PART channels [:message] — покинути канали channels, використовуючи message. Якщо message містить прогалини, то перед ним ставиться :.
  • MODE channel /username modes — змінює режими каналу channel (потрібні права оператора каналу) або користувача username (більшість серверів дозволяють змінювати свої режими тільки самим користувачам). Modes — рядок у форматі +flags-flags params.
  • TOPIC channel [:message] — змінює тему на message. Якщо не вказано параметр message, то повертає тему каналу.
  • NAMES [channel] — повертає список користувачів на каналі, або, якщо канал не вказано, у всій мережі..
  • LIST [pattern] — повертає всі канали. Якщо встановлено шаблон pattern, то повертаються тільки канали, що збігаються з ним
  • INVITE user channel — запрошує user на канал channel.
  • KICK channels users [:reason] — викидає користувачів users з каналів channels. Можливо вказати причину reason.
  • PRIVMSG channel /user:message — посилає повідомлення message на канал channel або користувачу user.
  • NOTICE channel /user:message — аналог PRIVMSG. Згідно з RFC 2812, на NOTICE ніколи не може бути автоматичних відповідей.
  • WALLOPS text — посилає текст всім користувачам з режимом +w.
  • WHOIS <nick[,nick,nick,...]> — показує інформацію про даного користувача.

Режими каналів[ред.ред. код]

Оператори каналу можуть задавати різні режими каналів за допомогою команди MODE. У RFC 2811 визначені такі режими:

  • +O user — позначає творця каналу. Не повинен змінюватися вручну (відсутня в багатьох реалізаціях).
  • +o user — позначає оператора каналу.
  • +v user — дає користувачеві право говорити на модерується каналах (див. + m).
  • +a — анонімний канал. Імена всіх користувачів ховаються як anonymous!anonymous@anonymous (відсутня в багатьох реалізаціях).
  • +m — тільки користувачі з прапорами +o, +h, або +v можуть посилати в нього повідомлення.
  • +n — тільки що знаходяться на каналі користувачі можуть посилати в нього повідомлення.
  • +p/+s —- канал ховається в усіх відповідях сервера якщо користувач не знаходиться на цьому каналі.
  • +t — тему каналу можуть змінювати тільки оператори.
  • +l limit — обмежує кількість користувачів на каналі числом limit.
  • +k key — встановлює ключ (пароль) на канал key.
  • +i — на канал можна увійти тільки за запрошенням (invite).
  • +b — вивести список банів +b на каналі. Доступний всім користувачам.
  • +b mask — забороняє доступ до каналу користувачів, що збігаються з маскою mask.
  • +e mask — дозволяє користувачам, що потрапляють під маску mask, заходити на канал незалежно від режимів +b.
  • +I mask — дозволяє користувачам, що потрапляють під маску mask, заходити на канал незалежно від режиму +i.
  • +c — оформлення тексту на каналі заборонено (не визначено в RFC).

Режими користувачів[ред.ред. код]

  • +i — невидимий користувач.
  • +s — отримувати повідомлення сервера.
  • +w — отримувати wallops.
  • +o — оператор сервера. Для отримання повинна використовуватися команда OPER.

CTCP[ред.ред. код]

CTCP — це особливий тип повідомлень. Повідомлення CTCP виглядають так:

PRIVMSG target :\001command [arguments]\001

target — це канал або користувач, якому надсилається повідомлення, \001 — це бінарний символ 0x01, command — це команда CTCP, arguments — аргументи команди. Основні команди:

  • PING — повертає аргументи назад.
  • VERSION — повертає версію клієнта.
  • USERINFO — повертає інформацію про користувача.
  • CLIENTINFO — повертає інформацію про клієнта.
  • SOURCE — повертає джерело, звідки можна завантажити клієнт.
  • TIME — повертає час на комп'ютері користувача.
  • ACTION — емулює дію (команда /me).

Відповідь на CTCP-запит приходить в наступному вигляді:

NOTICE target :\001command [arguments]\001

Документи RFC[ред.ред. код]

Основним документом, що визначає протокол IRC, є RFC 1459 - Internet Relay Chat Protocol. Пізніше були розроблені ще кілька документів, що доповнюють стандарт:

  • RFC 2810 — Internet Relay Chat: Architecture
  • RFC 2811 — Internet Relay Chat: Channel Management
  • RFC 2812 — Internet Relay Chat: Client Protocol
  • RFC 2813 — Internet Relay Chat: Server Protocol

Відомі IRC-мережі[ред.ред. код]

Серед міжнародних мереж популярні:

У названих мережах найбільш вживаною мовою спілкування є англійська. Існують і мережі, основна мова яких відрізняється від англійської, зокрема російськомовні мережі: <! - Дані netsplit.de за останні 2 місяці, оновлено 19.05.2009 ->

Історія питання[ред.ред. код]

Перші російськомовні канали виникли ще в 1990-х роках у міжнародних мережах, таких як DALnet і IRCNet. Спочатку, під впливом UNIX-культури, було прийнято кодувати літери російського алфавіту в KOI-8. Приблизно з 1995 року почався приплив користувачів Windows, які найчастіше взагалі не мали поняття, що таке кодова сторінка, і не робили різниці між кирилицею та Windows-1251. Дане протиріччя викликало багато конфліктів, включаючи холівари. В ті часи Стихійно виникла домовленість: питання про кодуваннях віддали у відання конкретних каналів. Це було дуже незручно для користувачів, проте на той момент іншого виходу не було. Частково, саме ця проблема стимулювала приблизно з 2000-го посилене формування окремих російськомовних мереж, де питання кодування могли б вирішуватися централізовано.

Ніки[ред.ред. код]

Історично використання букв кирилиці в ніках було неможливо. Однак деякі сучасні сервери дозволяють це робити. Чи вважати літери кирилиці, візуально схожі на букви латиниці, тієї ж самої буквою? Якщо вважати, то які саме і як саме? Різні мережі мають різну політику щодо всього цього.

UTF-8 — за і проти[ред.ред. код]

Прихильники інтернаціоналізації зазвичай вважають UTF-8 перспективним кодуванням для всіх мов, включаючи російську. Слід однак відзначити, що одна буква кирилиці в UTF-8 займає два байти, що створює деяке додаткове навантаження на мережі й обмежує максимальну довжину одного повідомлення. За стандартом, повідомлення IRC не може мати довжину більше 510 байтів, з яких власне на текст припадає ніяк не більше 499 (за нереалістично завищеною оцінкою). Отже, відправити в одному повідомленні більше 249 російських букв виявляється неможливо. Обмеження розміру повідомлень викликає ще одну неприємність: при спробі перевищити встановлену межу сервер обрізає повідомлення. Якщо зріз пройде посередині російської букви (тобто буде передано перший її байт, але відкинутий другий), то вийшла, послідовність байтів перестане, з точки зору UTF-8, бути правильною рядком. Ряд клієнтів (наприклад, Xchat або mIRC) відобразять таке повідомлення як 8-бітне (наприклад, в Latin-1 або Windows-1251), що зробить його повністю нечитабельним і займе, до того ж, багато місця на екрані.

Єдиної безперечною перевагою використання UTF-8 для кодування російської мови є можливість вільно цитувати тексти на інших мовах, а також використовувати екзотичні символи на зразок «→» і «☺». До того ж, будучи клієнтом IRC-мережі, в якій UTF-8 прийнятий повсюдно, можна буде спілкуватися відразу на багатьох мовах, не піклуючись про технічне поданні літер. Поки, проте, невідомі багатомовні мережі, явно обмовляють необхідність використання тільки UTF-8, що використовують UTF-8 як внутрішнє кодування, або яким-небудь іншим чином упорядковують кодування символів клієнтами.

Див. також[ред.ред. код]

Примітки[ред.ред. код]

Посилання[ред.ред. код]


Інтернет Це незавершена стаття про Інтернет.
Ви можете допомогти проекту, виправивши або дописавши її.