IRCd (ang. Internet Relay Chat daemon) - program implementujący serwer IRC, działający jako demon. Ze względu na to, że nie przyjęła się jedna wersja protokołu komunikacyjnego IRC, często różne wersje IRCd nie są ze sobą kompatybilne.

IRCd realizuje kilka podstawowych funkcji umożliwiających funkcjonowanie sieci IRC:

  • przyjmuje i odbiera strumień informacji od wszystkich przyłączonych do niego aktualnie użytkowników IRC;
  • jeśli pracuje w sieci wieloserwerowej, realizuje przekazywanie i przyjmowanie strumienia informacji do oraz z innych serwerów;
  • przechowuje i na bieżąco uaktualnia listę użytkowników i kanałów.

Większość oprogramowania serwerów IRC jest oparta na wolnej licencji GNU General Public License, choć istnieją też wersje komercyjne. Jakkolwiek dostępne są wersje tego oprogramowania na wiele systemów operacyjnych, olbrzymia większość z nich działa pod systemami typu Unix (Linux, IRIX, FreeBSD itp).

Historia rozwoju i wersje IRCd edytuj

Pierwszy program implementujący serwer IRC został napisany przez Jarkko Oikarinena w 1989 r. Znany jest pod nazwą ircd. Pierwotna wersja ircd miała liczne wady, często się zawieszała i nie miała opracowanego skutecznego systemu wymiany danych między serwerami na skutek czego niemożliwe było skonstruowanie sieci liczącej więcej niż 3 serwery. Właściwy rozwój IRC zaczął się dopiero od IRCd 2.2+msa, który z pomocą Oikarinena napisał Markku Savela. Ówczesny IRC był pod wieloma względami odmienny od obecnie używanego. Na przykład kanały nie miały nazw tylko numery, a wybór kanału dokonywano na podstawie jego topicu, który wyświetlał się po użyciu komendy list.

Wersje 2.3-2.6 edytuj

Wersje od 2.3 do 2.5 były rozwijane przez ciągle spierających się z sobą właścicieli spontanicznie powstających serwerów IRC, co powodowało chaos w kodzie i ciągłe zmiany kierunku rozwoju tego oprogramowania. W tym czasie istniała w zasadzie tylko jednak sieć IRC, która miała charakter zupełnie otwarty. Każdy kto dał radę postawić serwer mógł się przyłączyć nim do pozostałych. Spowodowało to jednak, że topologia sieci była całkowicie chaotyczna i wiele osób stawiało serwery tylko po to aby uzyskać status operatora serwera i móc przejąć tym sposobem jakiś kanał. W 1990 r. powstała organizacja o nazwie EFnet, która ustanowiła pierwsze reguły określające zasady przyłączania kolejnych serwerów do sieci i narzucająca rodzaj kodeksu administratora, zakazującego mu pewnych działań. Grupa serwerów, które znalazły się poza EFnetem utworzyła A-net (Anarchy net), która jednak z powodu kompletnego chaosu i sporów, wkrótce zanikła.

Wersja IRCd 2.5 została gruntownie uporządkowana już w ramach EFnetu. Dodano w niej możliwość tworzenia kanałów posiadających nazwy tekstowe (pierwotnie jako znaku kanału używano "+" a nie "#") i wydłużono nazwy nicków do 8 znaków. Wzrastająca popularność EFnetu powodowała jednak, że sieć ta bardzo cierpiała na częste splity i trudności z zalogowaniem się do serwerów, gdyż tempo powstawania kolejnych serwerów było wolniejsze od wzrostu liczby użytkowników.

Wersja 2.7 i powstanie Undernetu edytuj

W trakcie pracy nad IRCd 2.7 w 1992 r., część właścicieli serwerów EFnetu zdecydowała się stworzyć odrębną sieć, początkowo tylko po to aby testować w niej nowe rozwiązania techniczne, nazbyt nowatorskie aby je od razu zaimplementować w EFnecie. Testowy IRCd uzyskał nazwę icru i był od tej pory rozwijany niezależnie. Ze względu na to, że nowa sieć zyskała sporą popularność, zdecydowano się jej nie zamykać po zakończeniu prac na IRCd 2.7. Undernet do dzisiaj ma charakter sieci "dla wtajemniczonych", w której testuje się rozmaite, techniczne nowinki. M.in. to właśnie w tej sieci wprowadzono po raz pierwszy serwis umożliwiający rejestrację kanałów i pseudonimów. W icru po raz pierwszy zaimplementowano też bramkę zwaną CSservice - umożliwiającą zarządzanie serwisami rejestrującym przez stronę WWW.

Wersja 2.8 i Wielki Split edytuj

IRCd 2.8 był przełomową wersją, gdyż poza Undernetem, został on zaakceptowany przez wszystkie większe sieci IRC i prawie wszystkie późniejsze wersje IRCd wywodzą się z 2.8 i są z nią zazwyczaj wstecznie zgodne. Lista komend dopuszczalna w IRCd 2.8 stała się swoistym kanonem, który jest zaimplementowany we wszystkich klientach IRC. W ramach IRCd 2.8 wprowadzono dłuższe, 16-znakowe nazwy kanałów i nicków, przyjęto znak "#" jako wyróżnik zwykłych kanałów "!" dla kanałów szczególnie chronionych i "&" dla kanałów lokalnych - funkcjonujących tylko w ramach jednego serwera.

W 1996 nastąpił tzw. wielki split, który spowodował podzielenie się EFnetu na sieć głównie amerykańską (zwaną dalej EFnetem) oraz "resztę świata" (głównie Europę), która nazwała się IRCnetem, nawiązując tym do pierwotnej idei Oikarinena. W ramach IRCnetu ustalono dość ścisłe regulaminy dla właścicieli serwerów, oraz podjęto prace nad ustanowieniem "oficjalnej" specyfikacji protokołu IRC, co zaowocowało wydaniem serii dokumentów RFC, na podstawie których działa IRCnet. Pozostałe duże sieci IRC ignorują jednak RFC IRCnetu. W ramach IRCnetu ustanowiono oficjalną grupę programistów, którzy rozwijają w kontrolowany sposób IRCd, wypuszczając kolejne jego oficjalne wersje. W ramach IRCnetu rozwijana jest tzw. główna linia IRCd, która jest numerowana poczynając od 2.8, a więc 2.9, 2.10, 2.11 itd. Ta linia IRCd ma ściśle zdefiniowany protokół komunikacji między serwerami, który uniemożliwia przyłączanie do nich serwerów spoza tej serii.

IRCd-hybrid i pochodne edytuj

W EFnecie pozostawiono większą swobodę działania programistów. Powstały tam dwie odmiany IRCd 2.8 - 2.8+CS i 2.8+th, które funkcjonowały równolegle. Później, włączono do kodu 2.8-th pewne fragmenty CS i powstał w ten sposób IRCd-hybrid - który jest nadal rozwijany przez duży zespół programistów. IRCd-hybrid posiada nieco inny schemat flag niż "kanoniczny IRCd 2.8", umożliwia zaimplementowanie flagi tzw. "półopa" oraz posiada możliwość dołączania modułów zmieniających protokół komunikacji między serwerami oraz dodawanie do sieci różnych wariantów serwisów dodatkowych. IRCd-hybrid, mimo że wywodzi się z EFnetu, rozwija się w oderwaniu od konkretnej sieci, próbując ustanowić ponadsieciowy standard. Jego mutacje z różnymi modułami komunikacyjnymi i serwisowym są rozwijane w ramach samych sieci. m.in.:

  • IRCd-ratbox - obecnie zalecany IRCd EFnetu
  • IRCd-hyperion - na którym od 2005 do 2010 działała sieć freenode[1]
  • IRCd-bahamout - na którym działa DALnet

i wiele innych

Oprócz dwóch głównych historycznych linii rozwojowych IRCd, opartych na licencji GNU General Public License, istnieją też serwery IRC, które były tworzone od zera bez korzystania z kodu objętego tą licencją. Zalicza się do nich m.in.:

  • UnrealIRCd - prosty w konfiguracji i popularny w przypadku małych sieci serwer IRC.
  • IRCX - na którym działa korporacyjna sieć IRC Microsoftu i którą Microsoft oferuje też w wolnej sprzedaży
  • ConferenceRoom produkcji Webmaster Inc - komercyjna wersja IRC przeznaczona głównie do używania przez bramki WWW oparte na apletach Java, sprzedawana razem z narzędziami do tworzenia profesjonalnie wyglądających bramek IRC

i wiele innych.

Schemat rozwojowy IRCd edytuj

Schemat rozwojowy IRCd wywodzącego się od oryginału Oikarinena można przedstawić następująco:

    ircd (Oikarinen, 1989)
                 |
                IRCd 2.2 (Oikarinen, Savela, 1990)
                 |
                IRCDd 2.2-2.5 (liczni, spontaniczni deweloperzy, 1990-1993)
                 |
                IRCDd 2.5+ (EFnet team, 1992-1993)
                 |
                IRCDd 2.6-2.7 (EFNet team, 1993-1995) → icru 2.1-2.7 (Undernet team, 1992-)
                 |
                IRCd 2.8 (wersja EFNet, 1996) → IRCd 2.8-2.11 (IRCNet, 1996-) 
                 |
                IRCd 2.8+CS (Comstud, 1995) i IRCd 2.8+th (Taner, 1995) 
                                        |
                IRCd-hybrid2 (Jon 'Rodder' Lusky i Diane 'Dianora' Bruce, 1996) → IRCd-hybrid 3-7
                       |                |               |            |
                   IRCd-ratbox     IRCd-hyperion  IRCd-bahamout    wiele innych...
                    (EFnet)           (Freenode)       (DALnet)

Lista znanych IRCd edytuj

IRCd Twórcy/Obsługiwana sieć Źródło Język programowania Pierwsze wydanie Ostatnie wydanie Licencja udostępniana
Bahamut DALnet DreamForge i Hybrid C 2002 bahamut-1.8(03) GPL
chaosircd Roman Senn napisane od zera C 2003 ? GPL
ConferenceRoom WebMaster Incorporated Od zera C++ 1996 ConferenceRoom/3.0 komercyjny
dancer-ircd Freenode (obecnie porzucony) Hybrid 6 C ? (zastąpiony przez hyperion-ircd) GPL
DreamForge IRCd DALnet (obecnie porzucony) ? C ? (Wymieniony na bahamuta) GPL
Microsoft Exchange Microsoft IRCX C (Theorised) 1997 (~6.0.6249.0 / Service Pack 3 ?) komercyjny
hyperion-ircd Freenode hybrid6-dancer-ircd C 2002 hyperion-1.0.2(230) GPL
ignitionServer The Ignition Project Pure-IRCD (VB6 version) Visual Basic 2004 ignitionServer-0.3.6-P1.20050515 GPL
InspIRCd ChatSpike, Brain, Craig, et al. Od zera C++ 2002 InspIRCd-1.2.00 GPL
IRCD IRCnet oryginalny ircd C 1988 irc2.11.1p1 GPL
IRCD-Hybrid IRCD-Hybrid Development Team irc2.8 (IRCD) C ? ircd-hybrid-7.2.1 ?
ircd-ratbox EFnet 2.8/hybrid C ? ircd-ratbox-2.2.9 GPL
ircu Undernet Coder Committee irc2.7 (IRCD) C 1993 ircu2.10.12.04 GPL
IRCXpro Server IRCXpro, Microsoft IRCPlus Visual Basic ? ? komercyjny
Nefarious IRCu Evilnet Development, AfterNET ircu2 C 2004 u2.10.11.07+Nefarious(0.4.0)+[1.347] GPL
PTlink IRC Server PTlink IRC Software ircd-hybrid6 C 2001 (v.6) Hybrid6/PTlink6.19.6 GPL
QuakeIRCd QuakeNet developement team UnrealIRCd C 1997 QuakeIRCd-1.8 GPL
UnrealIRCd UnrealIRCd Team DreamForge C 1999 Unreal3.2.5 GPL
UltimateIRCd ShadowRealm Creations DreamForge C ? UltimateIRCd(Tsunami)-3.0(01) GPL

Przypisy edytuj

  1. Historia freenode. [dostęp 2015-12-15]. [zarchiwizowane z tego adresu (2006-11-04)]. (ang.).

Bibliografia edytuj