Sieci komputerowe i Internet cz. 4
Zgodnie z zapowiedzią zajmiemy się małymi sieciami prywatnymi. Ale zaczniemy od czegoś dużo większego. Według definicji, Internet to ogólnoświatowa sieć komputerowa. Sieć komputerowa, czyli komputery i połączenia między nimi.
A jeżeli na całym świecie są miliardy komputerów, to jak połączyć się z tym komputerem, z którym chcemy?
Oczywiście podając jego niepowtarzalny adres IP. Przykładowo, aby wejść na stronę sklepu AVT, możemy wpisać w okienku wyszukiwarki adres na przykład: 51.255.157.205 – rysunek 1. Z reguły nie znamy jednak adresu IP i wpisujemy „ludzkie nazwy”, w tym przypadku: sklep.avt.pl.
W różnych częściach świata są instytucje, które zajmują się przydzielaniem numerów adresów oraz powiązaniem ich z ustalanymi przez użytkowników „ludzkimi nazwami” – nazwami domenowymi. Jest to skomplikowany system zwany DNS (Domain Name System, system nazw domenowych). Takie dane są gromadzone w specjalnych komputerach, nazywanych serwerami nazw. My podajemy „ludzką nazwę”, adres domenowy, a któryś z pobliskich serwerów nazw sprawdza i przysyła odpowiedni numer-adres IP. I cała właściwa komunikacja między komputerami (hostami) opiera się na liczbach dwójkowych – adresach IP.
Elektronikowi szczegóły związane z DNS zupełnie nie są potrzebne. Musi on tylko wiedzieć, że w sieciach lokalnych nie ma serwera nazw, więc komunikacja musi opierać się na (lokalnych, prywatnych) adresach IP.
Adresy prywatne
W założeniach wszystko miało być proste: każdy komputer w publicznej sieci (Internecie) miał mieć własny adres – numer. Publiczny adres IP. Miał mieć…
Niestety, przy określaniu podstaw nikt nie przewidział, jak gwałtownie rozwinie się Internet. Wykorzystano adresy 32-bitowe, czyli liczby w zakresie 0…4294967295, więc do dyspozycji jest nieco ponad 4 miliardy adresów. Pierwotna koncepcja była prosta i logiczna: każdy chętny, kto chce dołączyć się do ogólnoświatowej sieci (Internetu), otrzyma od odpowiedniej instytucji adres-numer dla każdego swojego komputera – hosta. Już od początku Internetu wiedziano, że przewidywani wtedy użytkownicy to nie osoby prywatne, tylko uczelnie, instytuty i różne firmy, które mają u siebie wiele komputerów. Dlatego na początku przewidziano, że „większym i mniejszym” użytkownikom będzie się przydzielać nie „pojedyncze” adresy-numery, tylko „paczki” – całe grupy kolejnych adresów. „Paczki” większe lub mniejsze, z tak zwanych grup A, B, C. Z początku te „paczki adresów” przydzielano bardzo rozrzutnie, potem bardziej oszczędnie, dziś bardzo oszczędnie, ale nie będziemy omawiać szczegółów.
Nas interesuje to, że już od początku wydzielono pewne grupy adresów na potrzeby sieci lokalnych. Lokalnych, czyli takich, które albo w ogóle nie będą dołączone do ogólnoświatowego Internetu, albo będą dołączone w sposób „izolowany”, pośredni. Oto grupy adresów zarezerwowane tylko dla sieci lokalnych:
10.0.0.0 … 10.255.255.255
172.16.0.0 … 172.31.255.255
192.168.0.0 … 192.168.255.255
Mówiąc najprościej, w małych, domowych sieci LAN (Local Area Network) najczęściej wykorzystuje się „adresy prywatne” zaczynające się 192.168.x.x.
Zasadniczo daje to 65 tysięcy adresów (192.168.0.1 – 192.168.255.254), ale w grę wchodzi też tak zwana maska (pod)sieci. Najogólniej biorąc, wszystkie urządzenia w danej sieci mają „podobne” adresy IP. „Podobne” w tym sensie, że pierwsza część adresu jest taka sama dla wszystkich urządzeń w danej sieci (podsieci), a końcówka adresu określa dane urządzenie w tej (pod)sieci. I właśnie maska (pod)sieci określa, ile pierwszych bitów adresu IP stanowią „pierwszą część”, czyli numer sieci, a ile bitów „końcowych” stanowi numer urządzenia w danej sieci.
Możliwości są różne, ale w prywatnych sieciach LAN najczęściej trzy pierwsze bajty (24 bity) to numer sieci, a ostatni bajt (8 bitów) to numer urządzenia w sieci, czyli numer tak zwanego hosta. A to znaczy, że tak zwana maska (pod)sieci ma postać 255.255.255.0. Pierwsze 24 bity maski to jedynki, wskazujące, że są to bity numeru sieci. Osiem ostatnich bitów maski to zera i wskazuje to, że to jest numer urządzenia w danej sieci.
Dwa pierwsze bajty adresu IP małej sieci prywatnej to najczęściej 192.168. Trzeci bajt może mieć dowolną wartość 0…255, ale bardzo często ma on wartość 0 albo 1, niekiedy trochę wyższą. I te trzy bajty określają numer naszej sieci lokalnej.
Ostatni, czwarty bajt, to numer urządzenia (hosta). To liczba 1…254. Adresy 0 i 255 nie są przydzielane, bowiem 0 wykorzystujemy tylko dla informacji, gdy podajemy numer (pod)sieci, a 255 to tzw. adres rozgłoszeniowy „do wszystkich”.
Aby sprawdzić, jak to wygląda w domowej sieci lokalnej, w systemach Windows trzeba uruchomić program:
„Wiersz polecenia” (Start – uruchom, potem trzeba wpisać cmd i nacisnąć „enter”) – rysunek 2.
Otworzy się czarne okno, gdzie jak pokazuje rysunek 3, w wierszu polecenia należy wpisać:
ipconfig/all
Po naciśnięciu „enter” odczytasz informacje, w moim przypadku jak na rysunku 4.
Okazało się, że moja prywatna sieć ma numer 192.168.8.0, a komputer, na którym pisałem ten artykuł (host), ma numer 102, czyli jego pełny adres IP to 192.168.8.102, a jego adres MAC (adres MAC jego ethernetowej karty sieciowej) to 00-25-22-CC-A9-7B.
Także w małej domowej prywatnej sieci lokalnej każde „urządzenie internetowe” mające interfejs sieciowy (przewodowy – eternetowy albo bezprzewodowy Wi-Fi) otrzymuje niepowtarzalny prywatny adres IP, a adresy wszystkich urządzeń w tej sieci różnią się tylko wartością ostatniej części (liczby – bajtu) adresu IP. Wszystkim urządzeniom (hostom) dołączonym do sieci lokalnej zostają przydzielone prywatne adresy IP, albo automatycznie (DHCP), albo ręcznie. Potem w sposób znany tylko informatykom te logiczne adresy IP zostają powiązane ze „sprzętowymi” adresami MAC (protokół ARP) i sieć lokalna jest gotowa do pracy.
Prywatne, domowe sieci LAN z reguły „mają okno na świat” i mogą łączyć się z Internetem. Tym „oknem na świat” jest router (ruter) i jakiś modem przewodowo czy bezprzewodowo łączący Twoją sieć z dostawcą usług internetowych i Internetem. Jednak żeby nie komplikować obrazu, na razie pozostańmy przy sieciach lokalnych, które NIE mają połączenia z Internetem.
W takich małych, izolowanych, prywatnych, lokalnych sieciach LAN obowiązują te same podstawowe zasady, co w całym ogólnoświatowym Internecie: każde „urządzenie internetowe” (host) musi mieć swój niepowtarzalny numer IP, który zostaje powiązany z numerem MAC, ale z punktu widzenia użytkownika cała komunikacja odbywa się w oparciu o numery IP.
Prosta sieć LAN
Aby już na początku nie zaplątać się w szczegółach, załóżmy, że mamy do czynienia z archaiczną siecią komputerową w dawno przestarzałej wersji przewodowego standardu Ethernet, gdzie połączenia wykonane są nie za pomocą popularnej dziś skrętki, tylko przewodu koncentrycznego i gniazd współosiowych BNC. Każde urządzenie dołączone jest do naszej lokalnej sieci za pomocą archaicznej karty sieciowej z gniazdem BNC – przykład na fotografii 5.
W tej starej sieci lokalnej mamy dwa komputery stacjonarne, drukarkę, centralkę alarmową oraz kamerę sieciową (IP). W takim starym standardzie wszystkie urządzenia były dołączone do jednego wspólnego przewodu koncentrycznego, jak widać na rysunku 6. Ta sieć lokalna ma adres 192.168.1.0, a dołączone urządzenia (hosty) mają w tej sieci numery 5…9. Mają też swoje sprzętowe adresy MAC, ale ten szczegół pomijamy.
Zwróć uwagę, że w tej sieci nie ma ani „punktu centralnego”, ani „najważniejszego urządzenia” typu master. Urządzenia mają różne zadania i różne możliwości, ale są „równorzędne”.
Jeżeli chcielibyśmy za pomocą jednego z komputerów sprawdzić stan centralki alarmowej albo ją skonfigurować, to z tego komputera zostanie wysłane zapytanie – prośba o informacje, z podaniem adresu IP centralki, ale też IP komputera „zapytującego”. Oczywiście to zapytanie trafi do wszystkich urządzeń podłączonych do tej sieci, ale odpowiedzi udzieli tylko jedno, o podanym adresie IP – centralka alarmowa. W odpowiedzi znów znajdą się dwa adresy IP (centralki i komputera „zapytującego”), ale odpowiedź ta znów trafi do wszystkich urządzeń. Oczywiście odbierze i spożytkuje ją tylko komputer „zapytujący”.
W informatyce wprowadzono pojęcie klient – serwer dość odległe od naszej codzienności. Wbrew dość częstym wyobrażeniom, nie ma tu hierarchii i trudno mówić, kto jest ważniejszy. Są tylko różne role. Wielu osobom klient kojarzy się z petentem, kimś mało znaczącym, lekceważonym, potrzebującym. Natomiast komputerowy serwer często kojarzy się z serwerownią, czyli klimatyzowanym pomieszczeniem pełnym potężnych, kosztownych komputerów. Tymczasem serwer, nazwa wywodzącą się od pojęcia usługiwania, obsługiwania, serwisu, ma związek właśnie z odgrywaniem roli sługi. Klient (jakiś host, np. komputer) wysyła do serwera (do innego hosta, np. komputera) zapytanie (prośbę, żądanie), a serwer spełnia jego prośbę/żądanie. W praktyce można powiedzieć, że i klient, i serwer to jakieś programy działające na jakichś urządzeniach. Prostym przykładem klienta jest przeglądarka internetowa, która znakomicie radzi sobie także w sieci lokalnej.
W komputerze dołączonym do sieci lokalnej Ty wpisujesz w przeglądarkę adres IP: adres serwera (ściślej adres zasobu internetowego) i przeglądarka wysyła stosowne zapytanie do wskazanego serwera. Serwer grzecznie odpowiada – odsyła klientowi (przeglądarce) interesującą Cię zawartość. Ponieważ ma to być serwer sieciowy, internetowy, nazywamy go serwerem www.
Serwer (program obsługujący) może pracować na jakimś potężnym i kosztownym komputerze umieszczonym w serwerowni. Owszem, ale serwer, czyli program, może też być zrealizowany w pamięci jakiegoś stosunkowo małego mikroprocesora. W cyklu automatyki domowej Infinity (Andrzeja Pawluczuka) właśnie analizujemy serwer sieciowy zrealizowany na procesorze LPC2378. Serwer www można też zrealizować (mówimy raczej: postawić) z pomocą systemu Arduino (tak!).
Oprócz „podstawowego” programu, udostępniającego określone informacje – zasoby, serwer www musi spełniać wszystkie reguły obowiązujące w sieciach komputerowych, a więc musi mieć zaimplementowane wszystkie potrzebne protokoły stosu TCP-IP. W praktyce wcale nie jest to takie trudne, jak może się wydawać. Można skorzystać z „gotowców”, a w cyklu Infinity omawiamy właśnie szczegóły, jak to zrobić „gołymi rękami”.
Wracamy do naszej archaicznej sieci komputerowej z rysunku 6. Chcemy wiedzieć, jaki jest stan centralki alarmowej (albo chcemy ją przeprogramować). Do komunikacji komputer-centralka można byłoby napisać jakiś specjalny, dedykowany program (raczej dwa programy: klienta i serwera), ale zazwyczaj korzystamy z genialnego, uniwersalnego rozwiązania, jakim jest… przeglądarka www. Po stronie klienta nie musimy mieć żadnego dedykowanego programu dla centralki. Na komputerze otworzymy jakąkolwiek przeglądarkę, np. Firefox, Operę czy Microsoft Internet Explorer i po prostu wpiszemy lokalny adres IP naszej centralki, czyli w naszym przypadku 192.168.1.???. Przeglądarka internetowa to w sumie potężny program, który wyśle do naszej lokalnej, prywatnej sieci standardowe „internetowe” zapytanie, wykorzystując protokół HTTP. Będzie to żądanie czy prośba o przysłanie… strony internetowej, na której jest przedstawiony stan centralki. Taka strona internetowa może być zrealizowana w HTML, czyli w języku opisu stron, wykorzystującym tzw. znaczniki. Może zawierać tekst, jakieś rysunki, symbole graficzne czy nawet fotografie.
Prośba o przysłanie strony trafi do serwera www, czyli w centralce do programu, który potrafi ją zrealizować. Program w centralce stworzy więc stronę internetową z aktualnymi danymi i wyśle ją do klienta. Na podobieństwo tytułowych matrioszek, „właściwa informacja”, czyli (prościutka) strona www, stworzona w języku HTML, zostanie zapakowana w „większy pojemnik” (warstwa i protokół TCP), potem w jeszcze większy (warstwa i protokół IP), następnie w jeszcze większy pojemnik najniższej warstwy z dodatkowymi informacjami o adresie MAC. Taka paczka (szereg paczek) zostanie wysłana do sieci, odebrana przez wszystkie urządzenia, ale wykorzysta ją tylko komputer i przeglądarka, z której wysłane zostało zapytanie.
Klient – przeglądarka odbierze przysłane informacje i wyświetli je w postaci najprawdziwszej strony internetowej.
Podsumujmy: w dowolnej przeglądarce internetowej wpisujemy lokalny adres IP naszej centralki, a po chwili w odpowiedzi mamy na ekranie stronę internetową z potrzebnymi danymi. A jeżeli nasza sieć lokalna jest odpowiednio podłączona do Internetu (za pomocą routera), to stan naszej centralki możemy też sprawdzić z dowolnego miejsca na świecie (tylko oczywiście zamiast lokalnego adresu IP trzeba będzie wpisać coś innego).
Podkreślmy, że i sposób obsługi, i uzyskany efekt okazują się genialnie proste. Ale składające się na to działania są w sumie bardzo skomplikowane, bo zadanie realizujemy z wykorzystaniem protokołów (warstw stosu TCP-IP). W poszczególnych warstwach mamy różne protokoły. Z górnej warstwy aplikacji najczęściej wykorzystuje się protokół HTTP związany ze stronami internetowymi. W warstwie transportowej należy skorzystać z niezawodnego protokołu TCP, a nie z „jednokierunkowego” UDP. W warstwie sieciowej oczywiście wykorzystany będzie protokół IP, a niżej protokoły najniższej warstwy, między innymi eternetowy protokół 802.3 (w tym wypadku jakaś jego dość stara wersja).
I tu część Czytelników zapyta: po co taka komplikacja, jeżeli zamiast tak skomplikowanej, „warstwowej” sieci komputerowej można byłoby wykorzystać jakiś dużo prostszy sposób transmisji? Przecież centralkę alarmową można dołączyć do komputera albo przez łącze szeregowe RS-232, albo przez nowocześniejsze łącze USB. Owszem można i wiele centralek alarmowych ma taką możliwość.
Jednak dzięki wykorzystaniu sieci komputerowej po pierwsze do transmisji możemy wykorzystać standardowe, popularne, powszechnie dostępne urządzenia i oprogramowanie sieciowe, już istniejące w naszych domach i biurach. Po drugie zyskujemy ogromną elastyczność, bo kontrolę i obsługę możemy realizować za pomocą dowolnego komputera, tableta, smartfona. I nie trzeba żadnego specjalizowanego programu – wystarczy jakakolwiek przeglądarka internetowa. Po trzecie zyskujemy „wolność przestrzenną – geograficzną”, bo gdy nasza lokalna sieć jest (w odpowiedni sposób) dołączona do Internetu, to z naszą centralką możemy się komunikować z dowolnego miejsca na świecie.
Wtedy sytuacja się komplikuje i nie wystarczy podanie adresu prywatnego naszej sieci lokalnej. Jednak możliwe i w sumie dla użytkownika niemal bezproblemowe jest zrealizowanie łączności przez Internet.
Jeszcze raz powtarzam, że zagadnienia te nie są trudne, ale są nieprawdopodobnie obszerne i głównie to jest przeszkodą w zrozumieniu i wykorzystaniu sieci komputerowych. Dlatego w następnym artykule DR005 nadal będziemy się zajmować kolejnymi związanymi z tym szczegółami.
Piotr Górecki