Od dawna zastanawiałem się nad sposobem, w jaki Linux kontaktuje się z użytkownikiem. Jak wiadomo Linux (Unix) to "system sieciowy". Wyrażenie to jest tak ogólne, że nie oddaje bezpośrednio sensu. Do tego początkujący użytkownik systemu Linux (Unix) słyszy, że za realizację np. graficznego interfejsu użytkownika odpowiedzialny jest 'serwer X'. Jaki serwer? Gdzie on jest? Jeżeli jest serwer, to gdzie jest klient? Co nim jest?
 
Postanowiłem odpowiedzieć na te i inne pytania, a przede wszystkim nieco uporządkować terminologię. Zapraszam do lektury.
 
Spróbujmy sobie odpowiedzieć na pytanie, czym jest aplikacja. Myślę, że najprościej będzie uznać, że jest ona wymiennikiem informacji. Wymienia informacje z innymi aplikacjami, ze światem zewnętrznym.

images/stories/20070509_SerwerX/640_580x420_rys1_wymienniki_informacji.jpg

Rys. 1 Aplikacje A1 ... A4 w wirtualnym świecie PC.

Na początek spróbuję scharakteryzować podstawowe typy związków między aplikacjami (wymiennikami informacji). Są co najmniej dwa typy takich związków:

- związek klient - serwer (CS),
- związek rówieśnik - rówieśnik (PP = Peer to Peer).
 
Zajmijmy się na początku pierwszym rodzajem związku, czyli CS, na przykładzie wyższej uczelni technicznej ;-)
- klientami (C) są w większości ubodzy studenci,
- serwerem (S) jest tradycyjnie źle opłacany wykładowca akademicki.
 
Klienci (studenci) studiują, czyli utrzymują związek (np. w postaci indeksu) z serwerem (politechniką). Coś od niej chcą, czytaj wykształcenie lub / i dyplom ukończenia. Politechnika, czyli wykładowcy, wykazują zachowanie bierne. To pojawienie się studentów wymusza ze strony wykładowców akcję. Oczywiście jest to pewne uproszczenie, bo wykładowca (serwer) potrafi zainicjować spotkanie ze studentami (klientami), np. ogłaszając termin kolokwium, nawet wobec niechęci czy wręcz sprzeciwu studentów. Wydaje się więc, że w zasadzie jedynym kryterium odróżniającym w relacji CS serwer od klienta jest liczność. Studentów (klientów) jest wielu (n), wykładowca (serwer) jest jeden, przy czym w naszych realiach n zawsze jest za duże w stosunku do możliwości percepcyjnych i organizacyjnych wykładowcy. Być może dodatkowym kryterium jest też możliwość przyznawania pewnych uprawnień czy priorytetów przez serwer (wykładowcę). Np. tylko wykładowca (serwer) ma prawo wpisać do indeksu ważną ocenę.
 
Warto w tym momencie uświadomić sobie dosłowne znaczenie zwrotu "serwer". "Serwer", czyli coś (lub ktoś), kto serwuje, czyli służy :-) 
 
Podsumujmy:
- S jest bierny, oczekuje na zainteresowanie ze strony C,
- S potrafi wysłać wiadomości do wszystkich C,
- tylko S potrafi nadawać flagi C,
- S jest jeden, C jest wiele (n). 
 
Związek typu PP charakteryzuje relacje rówieśnicze. W naszym przykładzie będą to związki między studentami. Ponieważ dobrze wiemy, na czym one polegają, nie omówię ich bliżej zaznaczając, że każdy ze studentów może być dla drugiego zarówno serwerem jak i klientem. Pomijamy inne stany, w jakich potrafią się znaleźć studenci ;-)

 
images/stories/20070509_SerwerX/640_580x420_rys2_wymienniki_CS_PP.jpg

Rys. 2. Stosunki między aplikacjami. 

 

Przejdźmy do koncepcji tzw. sieci. Sieć to związek wielu wymienników informacji połączonych ze sobą liniami transmisyjnymi. Ważne, by sobie uświadomić abstrakcyjne rozdzielenie wymienników informacji. By nieco przybliżyć sobie to pojęcie można przyjąć, że wymienniki informacji leżą od siebie w znacznej odległości, np. setek kilometrów.

 
images/stories/20070509_SerwerX/640_580x420_rys3_sieci_CS_PP.jpg

Rys. 3. Sieć aplikacji. 
 

 

 
 
Spróbujmy teraz, wiedząc już, co to jest sieć oraz jakie mamy rodzaje związków między wymiennikami informacji, zastosować te pojęcia do opisu przykładu studenta grającego na komputerze w ulubioną durną grę. Przedstawmy najważniejsze składniki:
- student (człowiek?),
- konsola,
- komputer.
 
Hm... a co to jest konsola? Umówmy się, że konsolą będziemy nazywać urządzenia wejścia i wyjścia. Zupełnie po ludzku, a jednocześnie klasycznie, urządzeniami wejścia będą klawiatura i mysz, a urządzeniem wyjścia będzie monitor. 
images/stories/20070509_SerwerX/640_280x210_rys4_konsola.jpg

Rys. 4. Zestaw komputerowy.
images/stories/20070509_SerwerX/640_280x210_rys5_konsola_wewy.jpg

Rys. 5. Konsola, czyli urządzenia wejścia / wyjścia.
 W pliku konfiguracyjnym "X serwera" zamiast słowa konsola używana jest, moim zdaniem niefortunna, nazwa "DISPLAY" (ang. wyświetlacz, ekran). Niestety musimy zapamiętać, że w komunikatach przesyłanych przez "X serwer" "DISPLAY" nie oznacza tylko ekranu, lecz ogólnie urządzenia wejścia-wyjścia.
 
Przyjrzyjmy się teraz hasłu "komputer". Przyjmijmy, że z punktu widzenia informatyki są to:
- aktualnie uruchomiona aplikacja (durna gra),
- potencjalnie zbiór wielu innych aplikacji (inne durne gry, zwany system operacyjny), które teraz nie są uruchomione.
 
images/stories/20070509_SerwerX/640_580x420_rys6_konsola_aplikacje.jpg

Rys. 6. Konsola i wybrane aplikacje. 

 

Dokonajmy teraz szybkiego podstawienia pojęć:
- studenta potraktujmy jako klienta komputera, 
- w miejsce konsoli (urządzeń wejścia-wyjścia) podstawmy "X serwer",
- w miejsce durnej gry podstawmy "X klienta",
- w miejsce systemu operacyjnego i innych aplikacji podstawmy "zbiór aplikacji", czyli "zbiór X klientów".
 
images/stories/20070509_SerwerX/640_580x420_rys7_serwerX.jpg

Rys. 7. Serwer X (i jego klienci). 

Widzimy już teraz, że pomiędzy przykładową durną grą, a konsolą mamy związek klient-serwer. Klient, czyli durna gra, nic nie zrobi bez pośrednictwa konsoli. X serwer przesyła do klienta (gry) informację o tym, jakie klawisze klawiatury zostały wciśnięte, jakie ruchy myszą zostały wykonane. W odpowiedzi klient (gra) przesyła do monitora kolejne  krwawe sceny.

 
Przypomnijmy sobie zawartość pliku 'xorg.conf' zarządzającego pracą "X serwera". Są tam ustawienia dotyczące konsoli - sposobu wyświetlania czcionek, rozdzielczości karty graficznej, rodzaju klawiatury itp. itd. Ma to niewiele wspólnego z funkcją serwera. Niefortunna nazwa "X serwer" jednak pozostaje. Moim zdaniem "X serwer" to nic innego jak "zarządca konsoli", a raczej 'zarządca urządzeń wejścia-wyjścia'.
 
Cała zabawa pomiędzy "X serwerem" oraz klientami polega w skrócie na tym, że:
-  S ("X serwer" = zarządca konsoli = urządzeń we/wy) musi zaakceptować aplikację C klienta (np. sprawdzić, czy połączenie jest bezpieczne, czy aplikacja posiada odpowiednie uprawnienia),
- aplikacja C (klient) musi przekierować wyjście na konsolę, (a konkretnie na monitor)
  
Zróbmy teraz z  naszego układu "X serwer" i "X klient" sieć, czyli wstawmy pomiędzy nie linie transmisyjne. Róbmy to jednak stopniowo. Zacznijmy od dobrze nam znanego przykładu, który nazwiemy "stacją roboczą":
1. Stacja robocza (XW = "X Workstation")

 
X serwer (zarządca urządzeń wejścia-wyjścia) oraz wszyscy klienci serwera X znajdują się na tej samej maszynie (pececie).  "X serwer" i "zbiór X klientów" są od siebie w pomijalnie małej odległości. Jest jeden X serwer. 
images/stories/20070509_SerwerX/640_580x420_rys8_XWorkstation.jpg

Rys. 8. XWorkstation. 
 

 

2. X Terminal (XT)

 
XT to nic innego jak XW komunikujący się ze  zdalnymi X klientami. Problem pojęciowy polega na tym, że zdalni X klienci z logicznego punktu widzenia są SERWERAMI dla X klientów lokalnych. Mamy więc taki układ:
 
images/stories/20070509_SerwerX/640_580x420_rys9_XTerminal.jpg

Rys. 9. X Terminal (XT). 

 

 
 
Różnica pomiędzy XW i XT polega na przeniesieniu części aplikacji poza łącze transmisyjne lub o łącze transmisyjne. Od tej pory zdalnych X klientów będziemy oznaczać jako XS. Jak widać nieścisłość terminologiczna powoduje, że  X klienci lokalni znaleźli się między dwoma serwerami: z jednej strony konsola, czyli X serwer, a z drugiej aplikacje pełniące rolę serwerów (XS). Cóż, przyjedzie nam jakoś z tym żyć. 
images/stories/20070509_SerwerX/640_580x420_rys10_XTerminal_serweryzdalne.jpg

Rys. 10. XT oraz serwery aplikacji. 

 

images/stories/20070509_SerwerX/640_580x420_rys11_serwerX_XS.jpg

Rys. 11. Serwer X kontra serwer XS.

images/stories/20070509_SerwerX/640_580x420_rys12_serwerX_wieleXS.jpg

Rys. 12. Jeden XS, wiele XT, a każdy XT ma na pokładzie serwer X. Lekko pokręcone? 
W najprostszym przypadku jest jeden XT i jeden XS, łatwo jednak przejść do wyobrażenia sobie wielu XT łączących się z tym samym XS. W ten oto sposób uzyskujemy obraz dobrze nam znanej sieci. Przykład praktyczny: studenci grający w tą samą grę sieciową wymieniający informację za pomocą jednego serwera sieciowego.
 
 
3. Ubogi terminal (ang. Dumb Terminal)

 
Ubogi terminal (w skrócie: DT) od strony sprzętowej nadal przypomina PC, ale nie ma już tej funkcjonalności. Nie jest w stanie realizować tych samych zadań co  XW. W zasadzie wszystko, co ma "na pokładzie" to aplikacja pozwalająca na zdalne dołączenie się do XS, ewentualnie składująca lokalnie dane.
 
images/stories/20070509_SerwerX/640_580x420_rys13_DumbTerminal.jpg

Rys. 13. Dumb Terminal. 

 
4. Terminal bezdyskowy (ang. Diskless Terminal) 

 
Diskless Terminal to w zasadzie sama konsola. Wszystkie aplikacje X klienckie ściąga sobie przez sieć. Po załączeniu zasilania specjalna część BIOS-u łączy się z XS i ściąga aplikacje, które umożliwią użytkownikowi pracę zdalną.
 
images/stories/20070509_SerwerX/640_580x420_rys14_DisklessTerminal.jpg

Rys. 14. Diskless Terminal. 
 
 
Podsumowanie: 
Porównajmy teraz rysuneczek nr 14 z nr 8. Tak oto koncepcja sieci odsunęła nam wszystkie aplikacje od konsoli.
 
Po co komu Diskless Terminal? Bo jest bardzo cichy i tańszy od XT, przynajmniej teoretycznie. Jeżeli mamy zamkniętą sieć lokalną, bez dostępu do internetu i wydajne łącze, to dlaczego nie? W biurze panuje cisza, nie psują się twarde dyski, ludzie oddają się pracy, hehe.
 
Czego i Państwu życzę. 
 
Lektura uzupełniająca:

Komentowanie za pomocą rozszerzenia JComments zostało wyłączone. Zapraszam do dodawania komentarzy za pomocą aplikacji Disqus.