IRCd
Z Wikipedii
IRCd (en. Internet Relay Chat daemon) - podstawowe oprogramowanie serwerów IRC. IRCd jest demonem programowym umożliwiającym funkcjonowanie sieci IRC. Ze względu na to, że nie przyjęła się ogólna, oficjalna wersja protokołu IRC, różne wersje IRCd nie są z sobą często kompatybilne.
Program ten realizuje kilka podstawowych funkcji:
- 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 z i do 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 GPL, choć istnieją też komercyjne jego wersje. 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).
Spis treści |
[edytuj] Historia rozwoju i wersje IRCd
Pierwotny demon serwerowy 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, który został napisany przez Markku Savela z pomocą Oikarinena. IRC z tamtych czasów był pod wieloma względami zupełnie różny od tego, który znany jest obecnie. Np: 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.
[edytuj] Wersje 2.3-2.6
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 zmany 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ądowana 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.
[edytuj] Wersja 2.7 i powstanie Undernetu
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żlwiają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.
[edytuj] Wersja 2.8 i Wielki Split
IRCd 2.8 był przełomową wersją demona, 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 ingorują 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.
[edytuj] IRCd-hybrid i pochodne
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żliwa 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-rathbox - obecnie zalecany IRCd EFnetu
- IRCd-hyperion - na którym działa Freenode
- IRCd-bahamout - na którym działa DALnet
i wiele innych
Oprócz tych dwóch głównych historycznych linii rozwojowych IRCd, które wszystkie są oparte na licencji GPL, istnieją też demony IRC, które były tworzone od zera bez korzystania z kodu objętego tą licencją. Zalicza się do nich m.in:
- UnrealIRCd i QuakeIRCd - na których działa QuakeNet
- 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.
[edytuj] Schemat rozwojowy IRCd
Schemat rozwojowy IRCd wywodzącego się od pierwotnego demona 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-rathbox IRCd-hyperion IRCd-bahamout wiele innych... (EFnet) (Freenode) (DALnet)
[edytuj] Lista znanych IRCd
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.0.4 | 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.1.8 | 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 |
[edytuj] Bibliografia
- Grzegorz Popczyk, Marek Wyszyński, IRC w systemach UNIX i Windows, Wydawnictwo Helion, 1997, ISBN 83-86718-73-0
- Marianne Pyra, IRC, Wydawnictwo Helion, 1997, ISBN 83-86718-65-X
- IRCd-hydrid history na oficjalnej stronie projektu IRCd-hybbrid
- IRCd FAQ na oficjalnej stronie IRCnetu
- Daniel Stenberg, History of IRC
- Mandar "Mmmm" Mirashi, The history of Undernet