Кіріспе
Реалдық уақыт режиміндегі Интернет-чат және хабар алмасу протоколы
IRC (Internet Relay Chat) – жылдам хабар алмасуға арналған, мәтінге негізделген чат жүйесі. IRC топтық коммуникация үшін, «арналар» деп аталатын талқылау форумдарында жасалған, бірақ жеке хабарламалар арқылы жеке хабар алмасуға, сондай-ақ файлдарды бөлісуді қоса алғанда, чат және деректерді беруге де мүмкіндік береді. Интернет-релейлік чат мәтін түріндегі байланысты жеңілдету үшін қосымша деңгей протоколы ретінде іске асырылады. Чат процесі клиент-сервер желілік моделі бойынша жұмыс істейді. Пайдаланушылар веб-қосымша, жеке компьютерлік бағдарлама немесе үлкен бағдарламаның бір бөлігі ретінде IRC серверіне қосылады, ол үлкен IRC желісінің бөлігі болуы мүмкін. Қосылуға қолданылатын бағдарламалардың мысалдары: Mibbit, IRCCloud, KiwiIRC және mIRC. IRC қолдану 2003 жылдан бері үздіксіз төмендеп келеді, пайдаланушылардың 60 пайызын жоғалтты.
Тарих
IRC 1988 жылдың тамызында Jarkko Oikarinen Финляндиядағы Оулу университетінің OuluBox деп аталатын BBS-де MUT (MultiUser Talk) деп аталатын бағдарламаны алмастыру үшін құрылды, онда ол Ақпаратты өңдеу ғылымдары кафедрасында жұмыс істеді. Jarkko өзі басқаратын BBS бағдарламалық жасақтамасын кеңейтіп, Usenet стиліндегі жаңалықтарды, нақты уақыт пікірталастарын және ұқсас BBS мүмкіндіктерін қамтамасыз етуді жоспарлады. Ол алғашқыда әңгімелесу бөлігін жасады, оны достары Жирки Куоппала мен Юкка Пиль жазған кодты пайдаланып іске асырды. Алғашқы IRC желісі tolsun.oulu.fi деп аталатын бір серверде жұмыс істеді. Оикаринен BITNET желісінде жұмыс істейтін Bitnet Relay деп аталатын чат жүйесінен шабыттанды. Жирки Куоппала Оикариненді Оулу университетінен IRC кодын Оулудан тыс жерлерде де іске қосуға рұхсат сұрауға ынталандырды, және олар оны жариялағаннан кейін, Жирки Куоппала бірден тағы бір серверді орнатты. Осылайша алғашқы "IRC желісі" пайда болды. Оикаринен пайдаланушылар саны артып, басқа университеттер де осы жолға түскен кезде Хельсинки және Тампере университеттеріндегі достарына IRC серверлерін іске қосуға көмектесті. Осы кезде Оикаринен бағдарламасына BBS мүмкіндіктерінің қалғаны сыймайтынын түсінді. "Онда wildcard серверлік желі болды, сондықтан адамдар серверлерді қосып, есімдері соқтығысып жатты". "Eris Free Network", EFnet, Эрис машинасының IRC-ден Q-қапталғанын (Q – карантин үшін) бірінші рет жасады. Wumpus сөзімен айтқанда, бұрын да, Мысыр шығанағындағы соғыс кезінде осыған ұқсас жағдай болған. Осы және басқа да оқиғалардың чат-журналдары ibiblio архивінде сақталады.
Техникалық ақпарат
IRC – ашық протокол, ол TCP арқылы пайдаланушылардың клиентті серверге қосып IRC желілеріне қол жеткізуін қамтамасыз етеді. mIRC, HexChat және irssi сияқты көптеген клиенттік және бастапқы IRCd сияқты серверлік іске асырулар бар. Көптеген IRC серверлері пайдаланушылардан тіркелуді талап етпейді, бірақ қосылу үшін никнейм қажет. IRC бастапқыда қарапайым мәтіндік протокол болды. Алайда, де-факто стандарт IRC-ді 6667/TCP және жақын порттар нөмірлерінде (мысалы, TCP порттары 6660–6669, 7000) іске асыруды қадағалап, IRCd бағдарламалық жасақтамасын root құқықтарымен іске қосудан аулақ болу үшін белгіленді. Протокол символдардың 8 биттік екенін көрсеткен, бірақ мәтіннің кодировкасын нақтыламады. Бұл әртүрлі клиенттерді және/немесе платформаларды пайдаланатын пайдаланушылардың арасында қиындықтар тудыруы мүмкін. Бүгінгі күні қолданылатын клиент-серверлік IRC протоколдарының барлығы IRC2 серверінің irc2.4.0 нұсқасында іске асырылған және RFC 1459 құжаттамасында сипатталған протоколдан туындаған. RFC 1459 жарияланғаннан кейін, irc2.10 іске асырылымындағы жаңа мүмкіндіктер бірнеше қайта қарастырылған протокол құжаттарының (RFC 2810, RFC 2811, RFC 2812 және RFC 2813) жариялануына әкелді. Алайда, бұл протокол өзгерістері басқа іске асыруларда кеңінен қабылданбады. IRC протоколы бойынша көптеген спецификациялар жарияланғанымен, протокол өзгермелі болып қала беретіндіктен ресми спецификация жоқ. Көптеген клиенттер және аздаған серверлер жоғарыда аталған RFC-ге сілтеме ретінде қатаң түрде сүйенбейді. Microsoft 1998 жылы IRC-ге меншікті IRCX кеңейтімдерін жасады. Кейіннен IRCX қолдайтын бағдарламалық жасақтаманы таратуды тоқтатты, оның орнына MSNP-ні меншікті протокол ретінде әзірледі. IRC серверлері желісінің стандартты құрылымы – ағаш. Хабарламалар ағаштың қажетті тармақтары арқылы ғана бағытталады, бірақ желінің күйі барлық серверлерге жіберіледі және серверлер арасында жоғары деңгейде сенімділік бар. Алайда, бұл архитектурада бірқатар мәселелер бар. Бұзылған немесе қасақана зиян келтіретін сервер желіге елеулі зиян келтіруі мүмкін, ал құрылымдағы кез келген өзгерістер, қасақана болсын немесе негізгі желідегі жағдайлардың нәтижесінде болсын, желінің бөлінуіне және қосылуына әкеледі. Бұл желілік трафиктің артуына, пайдаланушыларға жалған қосылу/үзілу хабарламаларына және желіні бөлу кезінде пайдаланушылардың байланысының уақытша жоғалуына әкеледі. Үлкен желіге серверді қосу желіде үлкен өткізу қабілетінің жүктемесін және серверде үлкен жад жүктемесін білдіреді. Бірақ, орнатылғаннан кейін, әрбір хабарлама бірнеше алушыға мультикастқа ұқсас түрде жіберіледі, яғни әрбір хабарлама желілік байланыс арқылы бір рет өтеді. Бұл Simple Mail Transfer Protocol (SMTP) немесе Extensible Messaging and Presence Protocol (XMPP) сияқты мультикаст емес протоколдармен салыстырғанда артықшылық болып табылады. IRC демоны жергілікті желіде (LAN) пайдаланылуы мүмкін. Осылайша, IRC жергілікті желідегі адамдар арасындағы байланысты жеңілдету үшін қолданылуы мүмкін (ішкі байланыс).
Командалар мен жауаптар
IRC жолға негізделген құрылымға ие. Клиенттер серверге бір жолдық хабарламалар жібереді, осы хабарламаларға жауаптарды алады және басқа клиенттер жіберген кейбір хабарламалардың көшірмелерін алады. Көптеген клиенттерде пайдаланушылар командаларды "/" символымен бастап енгізе алады. Командаға байланысты, олар клиент тарапынан толыққанды орындалуы мүмкін немесе (әдетте клиент танымайтын командалар үшін) кейбір өзгерістермен серверге тікелей жіберіледі. Протоколдың ерекшелігіне байланысты, автоматтандырылған жүйелер жіберілген команданы оның жауабымен толық сенімділікпен дұрыс байланыстыра алмайды және шамалап болжауға бейім.
Каналдары
IRC сессиясында пайдаланушылар тобымен байланысудың негізгі тәсілі – арна арқылы. Желідегі арналарды IRC командасы LIST көмегімен қарауға болады, ол осы желіде +s немесе +p режимдері қойылмаған барлық қолжетімді арналарды тізімдейді. Пайдаланушылар JOIN командасын пайдаланып арнаға қосыла алады, көптеген клиенттерде ол /join #channelname түрінде қолжетімді. Қосылған арналарға жіберілген хабарламалар басқа барлық пайдаланушыларға жіберіледі. Басқа, сирек кездесетін арна түрлеріне операторлары жоқ, "модельсіз" арналар болып табылатын "+" арналар, сондай-ақ әдетте уақыт белгісі қойылмайтын желілерде уақыт белгісімен жазылатын "!" арналар жатады.
IRC операторлары
Сондай-ақ, жергілікті серверде немесе бүкіл желіде жоғары құқықтарды сақтайтын пайдаланушылар бар; оларды IRC операторлары деп атайды, кейде IRCops немесе Opers деп қысқартылады (арна операторларымен шатаспау керек). IRCd-ді іске асыру әртүрлі болғандықтан, IRC операторының берілген IRCd-дегі артықшылықтары да әртүрлі болады. RFC 1459 IRC серверлері, қызметтері және басқа клиенттер, соның ішінде боттар, оны белгілі бір IRC сессиясын анықтау үшін пайдалана алады. Хост маскасының форматы nick!user@host. Хост маскасы электрондық пошта мекенжайына ұқсас көрінеді, бірақ оны осымен шатастыруға болмайды. Nick бөлігі - бұл пайдаланушы таңдаған лақап аты және оны қосылған кезде өзгертуге болады. User бөлігі - бұл клиенттегі ident баяндаған пайдаланушы аты. Егер клиентте ident қолжетімді болмаса, клиент қосылған кезде көрсетілген пайдаланушы аты тильдамен префикстелгеннен кейін қолданылады. Host бөлігі - клиент қосылатын хост аты. Егер клиенттің IP-адресі сервер жарамды хост атына қарай анықтай алмаса, ол хост атының орнына қолданылады. Клиенттің IP-адресі немесе хост атын ашудың құпиялылық салдарынан кейбір IRC демондары InspIRCd немесе UnrealIRCd-тің "+x" режимі сияқты құпиялылық мүмкіндіктерін ұсынады. Бұл клиенттің IP-адресін хэштейді немесе клиенттің хост атының бір бөлігін жасырады, оны IRCops-тан басқа пайдаланушылар оқи алмайды. Пайдаланушылар қосымша анонимділікті қамтамасыз ету үшін хост маскасында көрсетілетін «виртуалды хостты» (немесе «vhost») сұрауы мүмкін. Кейбір IRC желілері, мысалы Libera Chat немесе Freenode, оларды пайдаланушының топқа немесе жобаға қатысты екенін көрсету үшін «күлдір» ретінде пайдаланады.
Қиындықтар
IRC-нің бастапқы дизайнындағы мәселелер: оның кеңейтілуіне шектеу келтіретін ортақ деректердің көп мөлшері, бірегей пайдаланушы идентификацияларының болмауы салдарынан лақап аттарының қақтығысы, циклдық маршрутизация арқылы желінің бөлінуінен қорғаудың жетіспеуі, кеңейтілудің нақты уақыт пайдаланушы ақпаратының болуы үшін құрбандығы, протоколдың нашарлығының зәулімдікке мүмкіндік беруі, хабар алмасудың ашық және оңтайландырылмауы және шифрлаудың жоқтығы еді. Бұл мәселелердің кейбіреулері қазіргі заманғы IRC-де шешілді.
Шабуылдар
IRC қосылымдары шифрланбаған болуы мүмкін және көбінесе ұзақ уақытқа созылады, сондықтан олар DoS/DDoS шабуылдары мен хакерлер үшін тартымды нысана болып табылады. Осы себепті, IRC желісінің басқару соғысы сияқты шабуылға ұшырамайтынына көз жеткізу үшін мұқият қауіпсіздік саясаты қажет. IRC желілері зиян келтіретін пайдаланушыларға немесе серверлерге K желісі немесе G желісі арқылы да әсер етуі мүмкін. Кейбір IRC серверлері қауіпсіздік мақсатында SSL/TLS қосылымдарын қолдайды. Бұл IRC пайдаланушыларының құпия сөздерін алу үшін пакеттерді ұстау бағдарламаларын пайдалануды тоқтатуға көмектеседі, бірақ IRC арналарының ашық сипатына байланысты осы шеңберден тыс пайдасы шамалы. SSL қосылымдары үшін клиент пен сервердің де қолдауы қажет (ол пайдаланушыдан SSL бинарларын және IRC клиентіне арналған жаңартуларды немесе модульдерді компьютерлеріне орнатуды талап етуі мүмкін). Кейбір желілер серверлер арасындағы қосылымдар үшін SSL қолданады және арнада тек SSL арқылы қосылған пайдаланушыларға ғана рұқсат беру үшін арнайы арна белгісін (+S сияқты) ұсынады, сонымен қатар SSL ұсынатын артықшылықтарды толық пайдалану үшін операторды ашық мәтінде анықтауға рұқсат бермейді. IRC көптеген интернеттік шабуылдарды сынау үшін алғашқы лаборатория ретінде қызмет етті, мысалы, жалған ICMP қол жеткізе алмайтын хабарламаларды пайдалану арқылы TCP негізіндегі IRC қосылымдарын бұзу (нукинг) – пайдаланушыларды қынжырту немесе басқаруды жеңілдету үшін.
Зорлық-зомбылықтың алдын алу
IRC-ті іске асырумен байланысты ең көп дау тудыратын техникалық мәселелердің бірі, ол осы күнге дейін сақталып келеді, – «Nick/Channel Delay» және «Timestamp» протоколдарының тиімділігі. Екі әдіс те қызмет көрсетуден бас тарту шабуылдарын шешу үшін жасалған, бірақ олар мүлдем басқаша көзқарастарды ұсынады. IRC протоколының бастапқы мәселесі екі сервер бөлініп, қайта қосылған кезде, желідегі екі жағы өз арналарын біріктіріп алатын. Егер пайдаланушы «бөлінген» серверге қосылып, екінші жақтағы арна бос болса және оператор мәртебесін алса, желі қайта біріккеннен кейін ол «біріктірілген» арнаның операторы болады. Егер пайдаланушы екінші жақтағы лақап атты алса, сервер қайта қосылғанда екі пайдаланушыны да жояды («лақап соқтығысуы»). Бұл жиі «жаппай жою» үшін қолданылып, операторлар жоқ «бос» арналарды құрады, осылайша зиянды әрекеттерге қарсы шаралар қабылдау мүмкін болмайды. IRC-де проблемалар туындатудан бөлек, бұл адамдарды IRC серверлеріне қарсы қызмет көрсетуден бас тарту шабуылдарын жасауға итермеледі, нәтижесінде желілер бөлінеді, оларды олар одан әрі теріс пайдаланатын. Nick delay (ND) және channel delay (CD) стратегиялары қайта қосылу мен лақап аттарын өзгертуді кешіктіру арқылы осы теріс пайдалануды болдырмауға бағытталған. Пайдаланушы тіркелгісінен шыққаннан кейін және лақап аты қолжетімді болғаннан кейін, немесе арнаның барлық пайдаланушылары шығып кеткеннен кейін (желілер бөлінген кезде жиі болатын жағдай), сервер белгілі бір уақыт өткенге дейін (кешігу) ешкімге сол лақап атты пайдалануға немесе сол арнаға қосылуға рұқсат бермейді. Бұл стратегияның мақсаты – егер желі бөлінген жағдайда да, зиянкес пайдаланушы лақап атты иелене алмайды немесе оператор мәртебесін ала алмайды, сондықтан лақап соқтығысуы немесе арнаның «біріктірілуі» болмайды. Бұл кейбір жағдайларда заңды пайдаланушыларға ыңғайсыздық тудыруы мүмкін, олар қайта қосылғаннан кейін қысқа мерзімге басқа атауды пайдалануға мәжбүр болуы мүмкін (астын сызу белгісін қосу жиі қолданылады). Timestamp протоколы – бұл nick/channel delay-ге балама, ол соқтығыстарды уақыт белгісіне негізделген басымдық арқылы шешеді. Желідегі әр лақап атқа және арнаға оның құрылған күні мен уақыты – уақыт белгісі тағайындалады. Желі бөлінген кезде әр жақтағы екі пайдаланушы бірдей лақап атты немесе арнаны пайдалана алады, бірақ екі жақ біріккенде, тек біреуі ғана сақталады. Лақап аттары үшін, timestamp бойынша жаңа пайдаланушы жойылады; арна соқтығысқанда, мүшелер (арнадағы пайдаланушылар) біріктіріледі, бірақ бөлінудің «жоғалған» жағындағы арна операторлары оператор мәртебесін жоғалтады. TS протоколы ND/CD-ге қарағанда әлдеқайда күрделі, дизайн және іске асыру тұрғысынан да, бірнеше түзетулерге қарамастан, кейбір іске асыруларда әлі де «десинхронизация» (бір желідегі екі сервер желінің қазіргі күйі туралы келіспейді) және «жоғалған» жақтың рұқсат еткенінен артық жұмсақтыққа мүмкіндік беру сияқты проблемалар бар. Мысалы, TS протоколының бастапқы нұсқаларында, пайдаланушылар жоғалған арнада тыйым салу немесе басқа режимдерді орнатқан жағдайда, олар оператор мәртебесін жоғалтқан болса да, бұл режимдер біріктірілген кезде сақталмайтын. Кейбір қазіргі TS негізделген IRC серверлері террористік әрекеттерді одан әрі шектеу үшін timestamp-пен қатар ND және/немесе CD формаларын да қолданады. Көптеген желілер қазір timestamp әдісін қолданады. Timestamp және ND/CD арасындағы келіспеушіліктер EFnet желісінен бірнеше серверлердің бөлініп, жаңа IRCnet желісін құруына себеп болды. Бөлінгеннен кейін EFnet TS протоколына көшті, ал IRCnet ND/CD қолданды. IRCnet ircd-нің соңғы нұсқаларында, сондай-ақ TS6 протоколын пайдаланатын ircd-лерде (Charybdis сияқты), ND кеңейтілді/SAVE деп аталатын механизммен ауыстырылды. Бұл механизм әрбір клиентке IRC серверіне қосылған кезде бірегей идентификатор (UID) тағайындайды. Бұл идентификатор санмен басталады, ол лақап аттарында қолданылмайды (бірақ кейбір ircd-лер, атап айтқанда IRCnet және InspIRCd, клиенттерге лақап ретінде өздерінің UID-ін пайдалануға мүмкіндік береді). Егер бірдей лақап аты бар екі клиент желінің әртүрлі жақтарынан қосылса («лақап соқтығысуы»), соқтығысты бірінші байқаған сервер екі клиентті де лақап аттарын UID-іне өзгертуге мәжбүр етеді, осылайша екеуі де ажыратылмайды. IRCnet-те лақап аты да біршама уақытқа (ND) бұғатталады, екі клиенттің де бастапқы лақап атына қайта оралуына жол бермейді, осылайша қайтадан соқтығысудың алдын алады.
Боттар
IRC-де боттарды қолданудың ең көп таралғаны – IRC қызметтерін ұсыну немесе арна ішінде белгілі бір мүмкіндіктерді іске қосу, мысалы, чат негізіндегі ойынды ұйымдастыру немесе сыртқы оқиғалар туралы хабарлау. Дегенмен, кейбір IRC боттары қызметтен тоқтату, спам тарату немесе әрекет ету сияқты қастандық шабуылдар жасау үшін пайдаланылуы мүмкін.
Қақпашы
Серверде демон ретінде іске қосылып, тұрақты прокси ретінде жұмыс істейтін бағдарлама BNC немесе баунсер деп аталады. Оның мақсаты – IRC серверімен байланысты сақтап, сервер мен клиент арасында релелік қызмет атқару немесе қарапайым прокси ретінде жұмыс істеу. Егер клиент желілік байланысын жоғалтса, баунсер байланысты үзілмей сақтап, барлық трафикті кейінірек жеткізу үшін архивке сақтайды, соның арқасында пайдаланушы серверге қосылысын бұзбай IRC сессиясын қайта бастай алады. Сонымен қатар, баунсер сияқты әсерге қол жеткізу үшін IRC клиентін (әдетте мәтіндік, мысалы Irssi) пайдаланушы ssh арқылы қосылатын үнемі қосулы серверде іске қосуға болады. Бұл ssh функционалдығы ғана бар, бірақ IRC клиенті орнатылмаған құрылғылардың IRC-ге қосылуына және IRC сессияларын бөлісуге мүмкіндік береді. IRC клиенті ssh байланысы жабылғанда тоқтамауы үшін, оны GNU Screen немесе tmux сияқты терминал мультиплексоры ішінде іске қосуға болады, осылайша IRC желісіне үздіксіз байланыста болып, пайдаланушыға қызықты арналардағы әңгімелерді тіркеуге немесе арнаның желіде болуын сақтауға мүмкіндік береді. Осы жүйеге негізделген 2004 жылы Smuxi деп аталатын клиент-серверлік IRC клиенті іске қосылды.
Іздеу жүйелері
Пайдаланушыға IRC-де іздегенін табуға көмектесетін көптеген іздеу жүйелері бар. Әдетте іздеу жүйесі екі бөліктен тұрады: "артқы бөлік" (немесе "тараушы/құбылаушы") және алдыңғы "іздеу жүйесі". Артқы бөлік (тараушы/веб-құбылаушы) – іздеу жүйесінің негізгі бөлігі. Ол IRC серверлерін қарау арқылы және олар арқылы жіберілетін ақпаратты индекстеуге жауапты. Индекстелген ақпарат көбінесе тек арна мәтінінен (ашық арналарда көпшілікке көрсетілетін мәтін) тұрады. Ақпарат сақтау әдісі әдетте MySQL немесе Oracle сияқты реляциялық деректер базасы болып табылады. Алдыңғы "іздеу жүйесі" – деректер базасына қолданушы интерфейсі. Ол пайдаланушыларға іздеген деректерін алу үшін индекстелген ақпараттың деректер базасын іздеу мүмкіндігін ұсынады. Мұндай алдыңғы бөліктегі іздеу жүйелері көптеген бағдарламалау тілдерінде жазылуы мүмкін. Көптеген іздеу жүйелерінің өз тараушысы болады, ол IRC-ді қарау және деректерді индекстеу үшін жауапты жеке қосымша; бірақ кейбіреулері "пайдаланушыға негізделген" индекстеушілер болып табылады. Соңғылары пайдаланушыларға өздерінің IRC клиентіне "қосымшаны" орнатуға сенеді; бұл қосымша пайдаланушының қай арнада болса да, сол арна туралы ақпаратты деректер базасына жібереді. Көптеген пайдаланушылар көптеген IRC клиенттеріне енгізілген журналдау мүмкіндіктерін пайдаланып, өздерінің жеке іздеу жүйелерін жасады. Бұл іздеу жүйелері көбінесе боттар ретінде іске асырылады және белгілі бір арнаға немесе байланысты арналар тобына арналған.
Таңба кодтамасы
IRC әлі күнге дейін 7 биттік ASCII репертуарынан тыс таңбаларды қалай беру керектігіне қатысты жалпыға бірдей қабылданған стандартты шартқа ие емес. IRC серверлері әдетте клиенттен клиентке хабарларды байт тізбегі ретінде жібереді, таңбаларды түсіндірмей немесе қайта кодтамайды. IRC протоколы (мысалы, MIME немесе HTTP сияқты) таңба кодтау опцияларын жариялау және келіссөз жүргізу механизмдерін қамтамасыз етпейді. Осының салдарынан, тиісті таңба кодегін таңдау жауапкершілігі клиентке жүктеледі. Іс жүзінде IRC арналары көбінесе тиісті тілдік қауымдастықтардағы операциялық жүйелерде (әсіресе Unix-тің туындыларында) қолданылатын бірдей таңба кодтамаларын пайдаланды: 7 биттік дәуір: IRC-нің бастапқы күндері, әсіресе скандинавиялық және фин тілдеріндегі пайдаланушылар арасында ISO 646 ұлттық нұсқалары басым таңба кодтамалары болды. Бұл кодтар ASCII емес таңбаларды, мысалы, Ä Ö Å ä ö å сияқтыларын 0x5B 0x5C 0x5D 0x7B 0x7C 0x7D кодтық позицияларында (US ASCII: [ \ ] { | }) кодтайды. Сондықтан осы кодтар лақап аттарында әрқашан рұқсат етіледі. RFC 1459 бойынша, лақап аттарындағы { | } символдары тиісінше [ \ ] символдарының кіші әріптерімен теңестірілуі керек. Техникалық тұрғыдан алғанда, IRC өзі файлдарды беру механизмдерін қамтамасыз етпейді; файлдарды бөлісу IRC клиенттері арқылы жүзеге асырылады, әдетте, Тікелей Клиенттен Клиентке (DCC) протоколын қолданады, онда файлдарды беру клиенттер арасындағы жеке хабарламалар алмасу арқылы келісіледі. IRC клиенттерінің көпшілігі DCC файлдарын беруді қолдайды, сондықтан файлдарды бөлісу IRC-нің ажырамас бөлігі болып саналады. Алайда, осы протоколдың кең таралған қолданысы кейде DCC спамына да алып келеді. DCC командалары сондай-ақ әрекеттерді орындау үшін, мысалы, серверден ажылу немесе клиенттен шығу үшін осал клиенттерді пайдалану үшін қолданылды.
7 bit era: In the early days of IRC, especially among Scandinavian and Finnish language users, national variants of ISO 646 were the dominant character encodings. These encode non ASCII characters like Ä Ö Å ä ö å at code positions 0x5B 0x5C 0x5D 0x7B 0x7C 0x7D (US ASCII: [ \ ] { | }). That is why these codes are always allowed in nicknames. According to RFC 1459, { | } in nicknames should be treated as lowercase equivalents of [ \ ] respectively. Technically, IRC provides no file transfer mechanisms itself; file sharing is implemented by IRC clients, typically using the Direct Client to Client (DCC) protocol, in which file transfers are negotiated through the exchange of private messages between clients. The vast majority of IRC clients feature support for DCC file transfers, hence the view that file sharing is an integral feature of IRC. The commonplace usage of this protocol, however, sometimes also causes DCC spam. DCC commands have also been used to exploit vulnerable clients into performing an action such as disconnecting from the server or exiting the client.