Sieci komputerowe © Jerzy Skurczyński Instytut Matematyki Uniwersytetu Gdańskiego Gdańsk, 2002 r.
Literatura: 1. Ch. Brenton, Projektowanie sieci wieloprotokołowych (t. I, II), Exit, 1995. 2. D.E. Comer, Sieci komputerowe i intersieci, WNT, 2001. 3. C. Hunt, TCP/IP. Administracja sieci, RM, 1998. 4. K. Nowicki, J. Woźniak, Przewodowe i bezprzewodowe sieci LAN, Oficyna Wydawnicza Politechniki Warszawskiej, 2002. 5. C.E. Spurgeon, Ethernet - podręcznik administratora, RM, 2000. 6. R. Stevens, Programowanie zastosowań sieciowych w systemie Unix, WNT, 1996. 7. A.S. Tanenbaum, Rozproszone systemy operacyjne, PWN, 1997. 8. A.S. Tanenbaum, Sieci komputerowe, Helion, 2004. 9. A. Wolisz, Podstawy lokalnych sieci komputerowych (t. I – sprzęt sieciowy), WNT, 1990.
1. CELE I KORZYŚCI Z ŁĄCZENIA KOMPUTERÓW W SIECI Współdzielenie zasobów Zasobami są wszystkie części składowe (fizyczne i abstrakcyjne) systemu komputerowego, o których udostępnianiu użytkownikowi decyduje system operacyjny. Do zasobów zaliczamy między innymi: - moc obliczeniową procesora; - pojemność pamięci operacyjnej; - pojemność pamięci zewnętrznych; - urządzenia zewnętrzne (drukarki, skanery, ...).
Zwykle zasoby rozumiemy w sposób abstrakcyjny, dostrzegając je przez pryzmat usług, jakie oferuje system operacyjny, np. w jednoprocesorowym systemie wielodostępnym poszczególnym procesom przydzielane są procesory wirtualne, w przypadku zbyt małej pamięci operacyjnej większa jej ilość może być symulowana przez przestrzeń wymiany na dysku - uzyskujemy wtedy wirtualną przestrzeń adresową, na dużym dysku mogą być wydzielone fragmenty widziane jako dyski wirtualne (dyski logiczne) itp. Zwykły użytkownik systemu komputerowego nie mając uprawnień administratora i odpowiednich programów narzędziowych na ogół nie ma możliwości dowiedzenia się, jakie są parametry fizyczne systemu z którym współpracuje - ma do czynienia wyłącznie z maszyną wirtualną.
W przeciętnym komputerze osobistym „czas życia” jego procesora (licząc od chwili zakupu do chwili zniszczenia) jest efektywnie wykorzystywany w mniej niż jednym procencie ! Podobnie wygląda wykorzystanie innych zasobów - np. pliki z programami na dysku mogłyby być używane przez wiele osób bez potrzeby tworzenia oddzielnych kopii dla każdego komputera. Współdzielenie zasobów systemu komputerowego jest bardzo korzystne ekonomicznie - elementy systemu zazwyczaj „starzeją się moralnie” dużo szybciej, niż ulegają zużyciu lub uszkodzeniu, więc należy starać się je jak najintensywniej eksploatować.
2) Komunikacja Sieć komputerowa jest bardzo dogodnym medium komunikacyjnym. Umożliwia łączność pomiędzy poszczególnymi osobami (poczta elektroniczna, programy zastępujące telegraf i telefon), w obrębie grup osób („telekonferencje”), zastępuje tablice ogłoszeń (strony domowe - widoczne w obrębie całego Internetu). W przypadku dużej przepustowości łącz umożliwia nawet transmisję dźwięku i obrazu w czasie rzeczywistym (może więc zastępować radio i telewizję). Dużą część danych przesyłanych w sieciach komputerowych stanowią dane, które nie są przeznaczone do bezpośredniego odbioru przez ludzi (zakodowane transakcje bankowe, cyfrowe sygnały zdalnego sterowania, rozdzielone dane do dużych obliczeń naukowych lub technicznych prowadzonych współbieżnie na wielu komputerach).
W przypadku zastosowań komunikacyjnych istotną rzeczą jest standaryzacja formy przesyłanych informacji. Różne systemy komputerowe mogą mieć różne procesory - dysponujące rejestrami o różnych długościach i różnych uszeregowaniach bajtów, odmienne systemy operacyjne wykorzystujące różnie zorganizowane systemy plików oraz różne urządzenia zewnętrzne (w szczególności karty sieciowe i modemy). Aby komputery mogły się ze sobą skutecznie porozumiewać, muszą dysponować: a) wspólnym systemem adresowania; b) wspólnym formatem przesyłanych ciągów bitów. Efektem prac standaryzacyjnych są protokoły komunikacyjne specyfikujące (na różnych poziomach abstrakcji) sposoby przesyłania informacji pomiędzy komputerami. Protokoły są zaimplementowane w postaci oprogramowania, jak również w postaci norm technicznych określających np. rodzaje i maksymalne długości przewodów, charakterystyki nadawanych sygnałów elektrycznych itp. W przypadku łączenia ze sobą sieci komputerowych o odmiennych protokołach potrzebne jest odpowiednie „oprogramowanie tłumaczące” z jednego protokołu na drugi i na odwrót.
3) Niezawodność W niektórych dziedzinach zastosowań niezawodność działania jest szczególnie istotna (służba zdrowia, kierowanie ruchem lotniczym, obronność, ...). W tych dziedzinach komputery powinny w razie awarii być w stanie przejmować wzajemnie swoje funkcje (co najwyżej przy niewielkim pogorszeniu wydajności pracy). W tego rodzaju zastosowaniach istotne jest: a) zwielokrotnianie danych (plików, a czasem nawet zawartości pamięci operacyjnej); b) zwielokrotnianie łącz (tak, aby nie było łącz krytycznych); c) istnienie pewnych rezerw mocy obliczeniowej procesorów; d) zastępcze źródło (czasowego) zasilania.
4) Uzyskiwanie łącznych mocy obliczeniowych nieosiągalnych dla pojedynczych komputerów Obecnie istnieją już komputery wieloprocesorowe (nawet zawierające tysiące procesorów), ale cały czas istnieje bariera technologiczna ograniczająca liczbę procesorów w pojedynczym komputerze. Nie ma natomiast praktycznie żadnych barier ograniczających możliwości łączenia komputerów w sieci (sieć działa nieco wolniej, niż pojedynczy komputer, ale przy umiejętnym rozdzieleniu podzadań na poszczególne współpracujące ze sobą komputery może nie mieć to dużego znaczenia). Przykład: analiza sygnałów z Kosmosu przy użyciu wielu indywidualnych komputerów podłączonych do Internetu. Wiele klasycznych zastosowań sieci komputerowych wiąże się z więcej niż jedną spośród wyżej omówionych korzyści (wielodostępne rozproszone bazy danych, programy do zdalnej współpracy, zdalna dydaktyka, sieciowe gry komputerowe ...).
2. SIECIOWE SYSTEMY OPERACYJNE Sieciowy system operacyjny to taki, który ma wbudowane mechanizmy komunikacji z innymi komputerami o takim samym systemie (lub posiadającymi kompatybilne oprogramowanie). Programy użytkowe oparte na funkcjach komunikacyjnych systemu operacyjnego oferują różnego rodzaju usługi - np. umożliwiają korzystanie z systemu plików na innym komputerze, mogą zlecać wykonanie na nim pojedynczych procedur lub nawiązywać z nim trwałą łączność (otwierać sesję). Klasycznym przykładem systemu sieciowego jest Unix (udostępnia wszystkie w/w usługi). System oferujący jedynie zdalny dostęp do swojego systemu plików nazywany jest serwerem plików.
Rozproszony system operacyjny to taki sieciowy system operacyjny, który działając w pewnej liczbie komputerów połączonych w sieć sprawia na ich użytkownikach wrażenie, że pracują na jednym (dużym, wielodostępnym) komputerze. Własność uwalniania użytkowników systemu sieciowego od potrzeby świadomości (szczegółów technicznych) aspektów komunikacji wewnątrz sieci nazywamy przezroczystością (transparency). Istnieją różne rodzaje przezroczystości, np.: przezroczystość położenia zasobów przezroczystość zwielokrotniania przezroczystość awarii przezroczystość działań równoległych Ostatni rodzaj przezroczystości (dotyczący programistów, a nie zwykłych użytkowników komputerów) jest algorytmicznie najtrudniejszy do uzyskania.