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.
|
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 ;-)
|
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.
|
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.
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.
|
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".
|
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")
|
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:
|
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ć. | Rys. 10. XT oraz serwery aplikacji. |
Rys. 11. Serwer X kontra serwer XS. |
Rys. 12. Jeden XS, wiele XT, a każdy XT ma na pokładzie serwer X. Lekko pokręcone? |
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.
|
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ą.
|
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: