Кіріспе
IRC-ді іске асыратын серверлік бағдарламалық қамтамасыз ету. IRCd, Internet Relay Chat daemon-ның қысқартылған атауы, IRC протоколын іске асыратын серверлік бағдарламалық қамтамасыз ету болып табылады, бұл адамдарға Интернет арқылы бір-бірімен сөйлесуге (нақты уақытта мәтіндік хабарламалар алмасуға) мүмкіндік береді. Ол IRC арнасына қосылатын IRC ботынан өзгеше. Сервер IRC клиенттерінен келетін қосылыстарды TCP порттарының жиынтығы арқылы қабылдайды. Сервер IRC желісінің бір бөлігі болған жағдайда, ол басқа серверлермен/демондармен бір немесе бірнеше тұрақты байланысты сақтайды. "Ircd" термині бастапқыда тек бір ғана бағдарламалық жасақтаманы білдірген, бірақ кейін IRC демонының кез келген нұсқасына қатысты қолданылатын жалпы атауға айналды. Дегенмен, бастапқы нұсқасы әлі де сол атпен таралды және бұл мақалада осы екі мағынасы да қарастырылады.
An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol, enabling people to talk to each other via the Internet (exchanging textual messages in real time). It is distinct from an IRC bot that connects outbound to an IRC channel. The server listens to connections from IRC clients on a set of TCP ports. When the server is part of an IRC network, it also keeps one or more established connections to other servers/daemons. The term ircd originally referred to only one single piece of software, but it eventually became a generic reference to any implementation of an IRC daemon. However, the original version is still distributed under the same name, and this article discusses both uses.
Қосалқы нұсқалар
Жақында, ithildin, InspIRCd, csircd (сонымен қатар Крис Берренс жазған), ConferenceRoom, Microsoft Exchange Chat Service, WeIRCd немесе IRCPlus/IRCXPro сияқты бірнеше irc-демондары бастапқы кодтан жазылды. Бұл әрекеттер әртүрлі нәтижелерге жетті және қазіргі IRC әзірлеушілер қауымдастығынан үлкен күмәндануға тап болды. Әрбір жаңа IRCd протоколдың сәл өзгеше нұсқасын қолданады, соның салдарынан көптеген IRC клиенттері мен боттары мүмкіндіктерге қатысты ұстамдылық танытуға немесе серверге байланысты өз жұмысын өзгертуге мәжбүр болады. Мұндай өзгерістер көбінесе қолдану ыңғайлылығын, қауіпсіздікті, өкілеттіктерді бөлуді немесе қызметтермен интеграцияны жеңілдету үшін жасалады. Ең көп кездесетін және көзге түсетін айырмашылықтардың бірі – жартылай операторлық арна операторының статусын қосу немесе алып тастау (бұл RFC талаптарында қарастырылмаған).
Порттар
Ресми тағайындалған порт нөмірлері 194 ("irc"), 529 ("irc serv") және 994 ("ircs"). Дегенмен, бұл порттар артықшылықты диапазонға (0–1024) жатады, ал Unix сияқты жүйеде демон оларды ашу үшін тамыр құқықтарына ие болуы керек еді. Әртүрлі қауіпсіздік себептерімен бұрын мұндай жағдайға жол берілмейтін. IRCd процесі үшін ең көп қолданылатын порттар 6665-тен 6669-ға дейін, ал 6667 – тарихи тұрғыдан әдепкі порт саналады. Бұл порттарды тамыр құқықтары жоқ процестер де аша алады және олар кеңінен таралды.
Байланыстар
Бір мезгілде бірнеше мың пайдаланушыдан асатын үлкен IRC серверін іске қосу үшін көптеген TCP қосылымдарын ұзақ уақыт бойы ашық ұстау қажет. Көптеген ircd-лер көп жіпті болып келмейді, себебі кез келген әрекетке жаһандық деректерге қол жеткізу (кемінде оқу және мүмкін өзгерту) қажет. Сондықтан, ircd-лер үшін ең қолайлы платформалар – бір жіпте көптеген қосылымдарды тиімді басқаруға мүмкіндік беретін платформалар. Linux бұл мүмкіндікті 2.4.x нұсқасынан кейінгі ядроларда epoll арқылы ұсынады. FreeBSD (4.1 нұсқасынан бастап) және OpenBSD (2.9 нұсқасынан бастап) kqueue ұсынады. Solaris 7 нұсқасынан бері /dev/poll-ға ие, ал 10 нұсқасынан бастап IOCP (I/O Completion Ports) қолдауы бар. Windows NT 3.5 нұсқасынан бастап IOCP қолданысын жүзеге асырды. Бұл жаңа интерфейстердің әсері зор болуы мүмкін. IRCU әзірлеушілері бір сервердің нақты сыйымдылығын 10 000 пайдаланушыдан 20 000 пайдаланушыға дейін арттыруға қол жеткізгендерін мәлімдеді.
TLS (транспорттық қабатты қауіпсіздік)
Кейбір IRCd-лер Transport Layer Security немесе TLS-ті қолдайды, ал қолдамайтындар үшін SSL-ді Stunnel арқылы пайдалану мүмкін. TLS IRCd қосылымдары үшін бұл ресми емес, бірақ көбінесе қолданылатын порт – 6697. Соңғы кезде қауіпсіздік пен қолдануды жақсарту мақсатында әртүрлі клиенттер мен серверлерді жасаушылар STARTTLS стандарты деп аталатын стандартты әзірлеуді бастады, ол TLS және қарапайым мәтіндік қосылымдардың бір TCP портта қатар өмір сүруіне мүмкіндік береді.
IPv4 және IPv6
IRC-демондары IPv4-ті қолдайды, ал кейбіреулері IPv6-ны да қолдайды. Көбінесе, IRC-ге IPv6 және IPv4 қосылымдары арасындағы айырмашылық тек теориялық сипатта болады және қызмет екі протокол арқылы да шамамен бірдей жұмыс істейді.
Кластерлеу
Ірі IRC желілері көлденең масштабтау үшін бірнеше серверден құралады. Осы мақсаттар үшін IRC протоколына бірнеше қосымшалар бар.
P10
P10 протоколы – бұл серверден серверге байланыс үшін Internet Relay Chat протоколының кеңейтімі, оны Undernet Coder Committee өздерінің ircu серверлік бағдарламалық жасақтамасында қолдану үшін әзірледі. Ол IRCX және EFnet TS5/TS6 протоколдарымен мақсатына ұқсас және сәйкесінше, есімдердің қақтығысуын және желінің бөлінуі кезіндегі арналардың ауысуын басқару үшін есімдерге және арналарға уақыт белгісін қосады. Бұл протоколды қолданатын басқа IRC-лердің ішінде beware ircd де бар.
TS6
TS6 протоколы – бастапқыда ircd ratbox әзірлеушілері жасаған, серверлер арасындағы байланыс үшін Internet Relay Chat протоколының кеңейтімі. Ол түрлі IRC бағдарламалық қамтамасымен толықтырылды және TS6 протоколының дұрыс іске асырылған нұсқалары мүмкіндіктері әртүрлі болған жағдайда да, мүмкіндіктерді келісу арқылы бір-бірімен байланыса алады.
Жүпе
Серверді, арнаны немесе никнеймді жабу – аталған арнаны немесе никнеймді серверде немесе желіде, немесе аталған серверді желіде бұғаттау тәжірибесін білдіреді. Бұл терминнің пайда болуының бір мүмкін түсіндірмесі – оны опера Юпитердің атымен атаған, ол EFnet желісінде NickServ никнеймін бақылауға алды. EFnet NickServ сияқты қызметтерді ұсынбайды; Юпитер никнеймді өз бақылауына алды, себебі ол (басқа операторлармен бірге) никнеймдерге иелік етудің қажеті жоқ деп ойлады. Бүгінде EFnet басқа желілерде қызмет ретінде қолданылатын никнеймдерді қолданады. Никнеймді немесе серверді жабу белгілі бір идентификаторлардың бірегей екендігін пайдаланады; идентификаторды пайдалану арқылы басқа пайдаланушылардың оны пайдалануына кедергі келтіретін эксклюзивті құлыпқа ие болады. Ресми түрде санкцияланған жабулар сондай-ақ жабуды жүзеге асыру үшін қызметтерді немесе сервер конфигурациясы опцияларын пайдалана алады, мысалы, желіге зиян келтірмеу үшін бұзылған серверді жабу үшін. Іс жүзінде IRC операторлары қазір арналарды немесе никнеймдерді әкімшілік түрде қол жетімсіз ету үшін жабу конфигурацияларын қолданады. Арнаны жабу – арнаның серверге тән тыйым салуын білдіреді, яғни белгілі бір серверге қосылған кезде белгілі бір арнаға қосылу мүмкін болмайды, бірақ басқа серверлер пайдаланушыға арнаға қосылуға рұқсат беруі мүмкін. Бұл – проблемалық арналарға қол жеткізуді шектеудің бір жолы.
О-жол
O сызығы (көбінесе O: сызығы деп те жазылады; жергілікті операторларды қолдайтын IRC-серверлерде олардың O сызықтары кіші әріпті o: сызықтар деп аталады), «Операторлық сызықтан» қысқартылған және бастапқы IRC-сервердің сызық бойынша конфигурация файлынан туындаған, IRC-сервер конфигурация файлындағы кодтың бір жолы, ол қай пайдаланушылар IRC операторы бола алатынын және олар осы мәртебеге ие болғанда қандай рұқсаттар алатынын анықтайды. Атауы бастапқы IRC-сервердегі сызыққа қосылатын префикстен, үлкен O әрпінен алынған. O сызығы белгілі бір оператор үшін пайдаланушы атын, парольді, операторлық белгілерді және хост маскасының шектеулерін көрсетеді. Сервердің және желінің әкімшілік қажеттіліктеріне байланысты серверде көптеген O сызықтары болуы мүмкін. Операторлық белгілер операторға берілген рұқсаттарды сипаттау үшін қолданылады. Кейбір IRC операторлары желілік маршрутизацияға жауапты болуы мүмкін, ал басқалары желідегі зәбірленушілікке қарсы күреске жауапты болуы мүмкін, сондықтан олардың нақты рұқсаттарға деген қажеттілігі әртүрлі болады. Қол жетімді операторлық белгілер IRC-серверінің түріне байланысты кең ауқымда өзгеруі мүмкін. Әдетте, мүмкіндіктері кең IRC-серверлерінде операторлық белгілер көбірек, ал дәстүрлі IRC-серверлерінде аз болады. O сызығы сондай-ақ белгілі бір хост маскасы немесе IP-адресі бар пайдаланушылар ғана осы O сызығын пайдаланып IRC операторы мәртебесін ала алатындай етіп орнатылуы мүмкін. O сызығында хост маскаларын және IP-адрестерін пайдалану IP-адрестің өзгермеуін қажет етеді, бірақ қосымша қауіпсіздік қамтамасыз етеді.
G-сызығы
G желісі немесе жаһандық тоқтату желісі (сонымен қатар G:желісі деп жазылады) – бұл пайдаланушыға қолданылатын жаһандық желілік шектеу; бұл термин Undernet желісінен шыққан, бірақ DALnet желісінде AKill деп аталатын ұқсас түсінік қолданылды. G желілері кейде IRCd конфигурациялық файлында сақталады, бірақ кейбір желілер K желілерін IRC қызметтері арқылы басқарады және оларды өз қызметтерінің конфигурациялық файлдарында сақтауды жөн көреді. G желісі қойылған пайдаланушы IRC желісіне қосылуға тырысқанда, қызметтер немесе IRC демоны клиентті автоматты түрде ажыратып, көбінесе тыйым салу себебін түсіндіретін хабарламаны көрсетеді. G желілері – K желілерінің бір түрі, олардың жұмыс принципі бірдей, бірақ K желілері желідегі бір серверден ғана клиенттерді ажыратады. G желілері әдетте бір серверде K желісін алған, бірақ басқа сервер арқылы қосылып, желіні теріс пайдалануын жалғастыратын пайдаланушыға қолданылады. G желілері көбінесе өте қатаң шара ретінде қарастырылады және тек қайталап жасалған бұзушылықтар кезінде, егер құқық бұзушы пайдаланушымен кеңінен келісуге тырысқаннан кейін ғана қолданылады. Сондықтан, әсіресе ірі желілерде, оларды орнатуға жоғары дәрежедегі жаһандық IRC операторларына ғана рұқсат беріледі, ал K желілері, көбінесе жергілікті мәселе ретінде қарастырылады, желідегі жеке сервер операторларына беріледі. G желілері K желілерінен сәл өзгеше жұмыс істейді. G желілері әдетте *@IPaddress немесе *@host түрінде белгіленеді, біріншісі артықшылықты нұсқа. Егер *@host опциясы қолданылса, сервер пайдаланушы үшін кері DNS сұранысын жүргізіп, содан кейін қайтарылған хостты G желісі тізіміндегі хостармен салыстыруы керек. Бұл кешігуге әкеледі және егер DNS дұрыс нәтижелерді қайтармаса, тыйым салынған пайдаланушы желіге кіре алуы мүмкін.
Z-сызығы
Z сызығы немесе zap сызығы (сондай-ақ Z:сызығы деп жазылады) K сызығына ұқсас, бірақ клиенттің IP-адрестер диапазонына қолданылады және ерекше жағдайларда қолданылады деп есептеледі. Z сызығы пайдаланушы есімдерін (identd) немесе ашылған хост есімдерін тексеруді қажет етпейді, сондықтан оны пайдаланушыға қосылыс кезінде ешқандай дерек жібермей тұрып қолдануға болады. Сондықтан Z сызығы тиімдірек және көптеген пайдаланушыларды жабады, K сызығына немесе G сызығына қарағанда аз ресурстарды қолданады. Кейбір IRC-демондарда, мысалы ircd hybrid, бұл D сызығы (жабу сызығы) немесе X сызығы деп аталады. Z сызықтары кейде IRCd конфигурациялық файлында сақталады, бірақ IRC қызметтерін пайдаланатын кейбір желілер оларды өз қызметтерінің конфигурациялық файлдарында сақтағанды жөн көреді. Z сызығымен байланысты адам IRC желісіне қосылуға тырысқанда, қызметтер немесе IRC демоны клиентті автоматты түрде ажыратып, көбінесе жаба салу себебін түсіндіретін хабарламаны көрсетеді. Z сызықтары – K сызықтарының бір түрі, олар шамамен бірдей жұмыс істейді. Көптеген Z сызықтары желіге жалпы зиян келтірген адамдарға беріледі (кішкентай желілерде олар көбінесе жеке оқиғалар үшін беріледі). Z сызықтары K сызықтарынан сәл өзгеше жұмыс істейді. Z сызықтары әдетте *@IP немесе *@host түрінде орнатылады, біріншісі жақсы нұсқа. Z сызығы қосылатын пайдаланушыдан ident жауабын күтпейді, бірақ пайдаланушының IP-сі Z сызықтары тізімімен салыстырылғаннан кейін және сәйкестік табылғаннан кейін дереу қосылысты жабады. Егер *@host опциясы қолданылса, сервер пайдаланушы үшін кері DNS іздеуін жүргізіп, содан кейін алынған хостты Z сызықтары тізіміндегі хосттармен салыстыруы керек. Бұл кешігуге әкелуі мүмкін, немесе DNS дұрыс жауап бермесе, жабылған пайдаланушылар желіге кіре алады. Шындығында, *@host опциясы Z сызығын пайдалану мақсатына толыққанды қайшы келеді, сондықтан кейбір IRCd бағдарламалары *@IP-ден басқа ештеңеге рұқсат бермейді, IP бөлімінде бүкіл кіші желілерді жабу үшін жолдар (?,*) немесе CIDR префиксінің ұзындығы (мысалы, /8) рұқсат етіледі. K сызықтарынан (ол тек IRC клиенттеріне әсер етеді) тағы бір айырмашылық – егер IP жабылса, ештеңе, тіпті басқа серверлер де, осы IP-ден (немесе банмаскаға байланысты IP диапазонынан) қосыла алмайды. Z сызықтарын K сызықтары мен G сызықтарына қарағанда пайдаланудың бір артықшылығы – сервер немесе желі әкімшісінің көзқарасынан, Z сызығы K сызығына қарағанда аз трафик қолданады, себебі ол ident жауабын немесе DNS іздеуін күтпейді. Z сызығын K сызығына немесе G сызығына қарағанда пайдаланудың кемшілігі – бүкіл ISP-лерді және өте динамикалық IP-адрестерді жабу қиынырақ, бұл кейбір dialup және DSL қосылымдарында жиі кездеседі. Мысалы, егер желі әкімшісі барлық ISP example.com-ды жапқысы келсе (шамамен IP-адрестер диапазоны 68.0.0.0 – 68.255.255.255 және 37.0.0.0 – 38.255.255.255), G сызығы *@*example.com-ды қолдана алады, ал Z сызығы бірдей нәрсені істеу үшін *@37.*.*.*, *@38.*.*.* және *@68.*.*.* қажет болады. Z сызықтары жаһандық болуы мүмкін, онда олар GZ сызықтары деп аталады. GZ сызықтары Z сызықтары сияқты жұмыс істейді, бірақ олар желідегі барлық серверлерге таралады. Кейбір IRC-демондары Z сызықтарын басқа серверлермен бөлісу үшін де конфигурациялануы мүмкін.
Q-сызығы
Кейбір IRCd-де, мысалы UnrealIRCd-де, Q сызығы бір лақап атын немесе белгілі бір үлгіге сәйкес келетін кез келген лақап атты қолдануға тыйым салады. Бұл көбінесе қызмет лақап аттарын (мысалы, "X" немесе NickServ) немесе оператор емес пайдаланушылардың IRC операторларының лақап аттарын қолдануын тыйым салу үшін қолданылады. Кейбір IRC-демондары пайдаланушыны Q сызығын қолданғанда бірден ажыратуы мүмкін, ал басқалары лақап атын өзгертуге мәжбүрлейді немесе Q сызығына ілінген пайдаланушы қайта қосылғанға дейін ештеңе жасай алмайды. Ал ircd гибрид сияқты басқа IRCd-лер "RESV" ("резервтеу") командасын қолданады, статистика әрпі Q болып қалады. "RESV" командасы арнаны қолдануға да тыйым сала алады.