Klik

Żyjemy w przewrotnym świecie.

Albo inaczej: żyjemy w świecie, w którym widzimy tylko duże rzeczy. Widzimy drzewo, ale nie widzimy komórek, procesów fotosyntezy, choć widzimy spadające jesienią liście. Widzimy samochód, ale nie widzimy cylindrów i małych eksplozji. Możemy ugotować fantastyczną kolację przy świetle żarówki bez świadomości ukierunkowanego przepływu elektronów, nalać garnek wody i nie musieć dumać nad skomplikowanym systemem kanalizacji.

Nie jest to wada. To zaleta. Dzięki temu możemy koncentrować się na rzeczach, które są dla nas ważne, a kto jest chętny, ten bez problemu może poznać te wszystkie detale składające się na otaczający nas świat. No, może nie wszystkie. Zawsze jest jeszcze jedna niewiadoma odłożona przez nasz gatunek na jutro.

Przez lata, które spędziłem przy komputerze, pojąłem, jak bardzo niewiele wiem i jak mało potrafię. Okazało się, że brakuje mi zębatki sprawiającej, że człowiek staje się kompletnym umysłem ścisłym. Tak znalazłem swoją niszę - uwielbiam opowiadać o komputerach i wszystkich przyległych włościach. Nie językiem techniki. Językiem techniki wszystkie te rzeczy zostały już opisane przez ludzi dużo bardziej kompetentnych. Językiem prostoty, pozbawionym protekcjonalnego tonu, który czasem wyziera z kart zapisywanych przez papieży technologii.

Wiem, że nie jesteście głupi. Nigdy nie szukaliście tej wiedzy albo nigdy nie spotkaliście kogoś, kto lubi o tym opowiadać.

To się świetnie składa. Nazywam się Emil i opowiem Wam o kliknięciu.

Klik.

Ile razy dziennie klikacie w odnośnik zamieszczony na stronie internetowej? Pewnie setki razy. Czy zastanawialiście się, ile rzeczy musi się wydarzyć pomiędzy kliknięciem a wyświetleniem nowej strony? Gdybyście mieli zgadywać? Trzy? Pięć?

Nieskończenie wiele. Przynajmniej teoretycznie - każdy proces można podzielić na mniejsze procesy, aż dojdziemy do absurdalnego momentu, w którym w kliknięcie odnośnika wliczymy ruch fotonów z ekranu i elektronów w przewodach. Na szczęście będziemy tu mówić o komputerach, więc zatrzymamy się raczej na metrach niż mikronach.

Prześledzimy proces, który powtarza się dziennie miliardy razy. A zaczniemy…

Od biurka

Masz więc swój komputer. Czy też tablet. Może nawet telefon. Urządzenie nie jest ważne. Sieć jest jak ulica - jak długo posiadasz pojazd i prawo jazdy, nic nie stoi na przeszkodzie, abyś się po niej poruszał.

Masz więc swoje urządzenie i widzisz stronę internetową wyświetlającą się w przeglądarce. Rodzaj przeglądarki i system operacyjny, pod którego kontrolą działa przeglądarka, nie mają znaczenia. To nie jest kompletna prawda, ale nie jest to też kompletne kłamstwo, a na potrzeby naszych rozważań wszystkie różnice w przeglądarkach to tylko jeden krok przed liczeniem elektronów w kablu.

Czym jest przeglądarka? To program, którego zadaniem jest czytanie dokumentów porozrzucanych po sieci i interpretowanie ich zgodnie z wolą autorów w taki sposób, by całość zgrała się w coś, co rozumiemy jako stronę.

Przez całe lata doświadczaliście różnych przeglądarek: telewizora, radia, tego programu, którym oglądacie zdjęcia z wakacji. Najczęściej używaną przez Was przeglądarką jest Wasz organizm. Zmysły i mózg. Nawet teraz robicie dokładnie to, co przeglądarka. Rozkodowujecie dokument, który zawiera umówione znaki (standard!) i interpretujecie go w sens. Kiedy trafiacie na zdanie zakończone wykrzyknikiem, przerabiacie je w głowie na głośny krzyk lub wzburzenie, zależnie od kontekstu. Na tej samej zasadzie przeglądarka wie, kiedy tekst pogrubić, gdzie dać obrazek i najważniejsze: w którym miejscu zrobić odnośnik i dokąd ma on prowadzić, bo…

…adresy w Internecie

Każda kasta broni swoich sekretów przed niewtajemniczonymi. Dzięki temu reprezentanci kasty mogą komunikować się w taki sposób, aby postronny słuchacz nie wiedział, o czym mowa między członkami, i zachowują władzę nad grupą.

Parafrazując cytat z Clarke: „Odpowiednio skomplikowany akronim jest nieodróżnialny od magii”.

URI (Universal Resource Indicator) i URL (Universal Resource Location) to kolejne trzyliterowe akronimy, które tak ukochaliśmy w naszej branży. Dla Was to po prostu adres, czyli miejsce, w którym znajdziecie się po kliknięciu odnośnika.

„Adres” to bardzo dobre słowo. Ma odniesienie do świata poza ekranem komputera. Jeżeli adresowaliście kiedyś kopertę, to wiecie, że wpisywany tam tekst ma pewien format. Ulica, numer budynku, numer lokalu, miasto, kraj i kod pocztowy. To dotyczy również adresów w Internecie. Stąd “U” w naszym trzyliterowcu: uniwersalny. Każdy adres w Internecie składa się przynajmniej z dwóch części: protokołu (z jaką usługą się łączymy) i nazwy domeny. Co i skąd.

Większość adresów, z którymi się spotkacie, ma format:

http://domena/dokument lub
https://domena/dokument

Oba adresy opisują domyślne metody dostarczania dokumentów do okna Waszej przeglądarki. Właściciel serwisu może umieścić tekst przed nazwą domeny w celu łatwiejszego zarządzania stroną (np. http://m.gazeta.pl to mobilna wersja serwisu dostępnego pod adresem http://gazeta.pl), format jednak pozostaje ten sam. Po nazwie domeny następuje nazwa dokumentu, czyli co konkretnie otrzymamy. Tu też nie ma żadnych reguł poza tymi, które ustali właściciel serwisu. Znaczenie tej części adresu omówimy w późniejszych punktach.

Skoro wiemy już, jak wygląda adres, to czas na na następny krok.

Komputery nie lubią abecadła

Komputer to nie tylko nazwa, ale także główne zadanie urządzenia. Komputer to maszyna licząca. Dlatego też komputerowi dużo łatwiej posługiwać się cyframi niż literami. Wszystko, co „wkładamy” do naszego komputera, prędzej czy później stanie się ciągiem liczb. Tak też dzieje się z adresem linka, który kliknęliśmy.

Domeny są adresami dla ludzi. Ludzie nie mają problemu z zapamiętaniem „gazeta.pl”, „wp.pl” czy „facebook.com”. Kiedy wpisujemy adres w przeglądarce, pyta ona system operacyjny o numeryczną reprezentację tego adresu.

Siedzicie ze znajomymi w knajpie. Komponujecie długie zamówienie, które kelner zapisuje sobie w notatniku. Następnie kelner przechodzi do kuchni i woła „Na piątkę, trzy, siedem bez jedenaście i siedem razy dwa”. Kucharz potakuje i po pewnym czasie na stół trafiają zamówione dania. Napisy w menu są dla Was, numeracja jest dla ludzi odpowiedzialnych za dostarczenie wam jedzenia. W Internecie tak samo, tylko nie trzeba zostawiać napiwku!

Wyboiste drogi

Internet to sieć sieci. Jak rosyjska laleczka-matrioszka. Twoja sieć w domu czy biurze to część Internetu. Mała część. Trochę większą laleczką jest sieć operatora dostarczającego sygnał do Waszego domu lub biura. Dalej są sieci łączące miasta, kraje i kontynenty.

Ideą, która leżała u podstaw budowy Internetu, była decentralizacja. Oznacza to, że nie ma jednego miejsca, które byłoby sercem Internetu. To teoretycznie sprawia, że awaria w jednym miejscu nie zakłóca pracy reszty sieci. Co więcej, operator ma możliwość wybrania alternatywnej trasy tak, aby ominąć część, która uległa awarii. Tak jak z remontami dróg. Jeżeli główna ulica jest zamknięta, nadal jest szansa, że dojedziesz w pożądane miejsce. Może to zająć więcej czasu, małe ulice mogą się zakorkować ze względu na wzmożony ruch, ale cel zostanie osiągnięty.

Chyba że masz pecha i zamknięta ulica nie ma alternatywnych ścieżek. W Internecie odpowiednikiem takiej ulicy są miejsca, do których nie można doprowadzić wielu połączeń - rozległe stepy Australii czy kable leżące na dnie oceanu mają często tylko jedną nitkę łączącą użytkowników z siecią. Zdarzały się już sytuacje, w których całe kontynenty traciły kontakt ze światem z powodu przecięcia oceanicznego przewodu. Mimo to Internet w obrębie kraju czy kontynentu funkcjonował nadal.

Wyobraźmy sobie, że wszystkie wyjścia z Polski na świat zostają odcięte. Wielu ludzi mogłoby się nie zorientować, że w ogóle cokolwiek się stało, gdyż wszystkie systemy znajdujące się w Polsce działałyby bez większego problemu. Nie byłoby natomiast szansy na połączenie się z usługami znajdującymi się poza granicami kraju.

Gdyby jednak znalazł się bohater, który pochwyciwszy przewód w zęby przepłynąłby Bałtyk do Norwegii i tam, padając z wycieńczenia na plaży, zawołał – „Podłączcie!” – a oni by podłączyli, to każdy operator mógłby powiedzieć swoim serwerom: „Wszystko, co nie nasze, Norwegom oddamy”, a cały ruch „do świata” popłynąłby do Skandynawii, a stamtąd dalej, we właściwe miejsca.

Wróćmy do naszego kliknięcia. Skoro już przeglądarka dowiedziała się od systemu operacyjnego, pod jakim numerycznym adresem znajduje się serwer obsługujący dany serwis, wysyła do niego zapytanie o dokument. Zapytanie to trafia do systemu operacyjnego, który zajmuje się przesyłaniem danych. Wprost z komputera żądanie trafia do pierwszego urządzenia w Waszej sieci. Może to być modem kablowy, który zostawił Wam operator telewizji, może to być router, access point (bezprzewodowy punkt dostępowy) lub po prostu gniazdko w ścianie (choć to znaczy, że pierwsze urządzenie znajduje się gdzieś w budynku i jest własnością operatora). Pierwsze urządzenie wie, gdzie leży następne. I tak po nitce do kłębka. Zapytanie opuszcza Wasz dom, sieć operatora i pewnie zmierza w kierunku sieci, w której znajduje się serwer utrzymujący serwis.

Im więcej urządzeń po drodze, tym „dalej” do strony. W Internecie „dalej” nie jest koniecznie tożsame z odległością geograficzną. Jeżeli grasz z sąsiadem w grę online, to mimo dzielącej Was niewielkiej odległości w budynku, dane biegnące po przewodach mogą po drodze odwiedzać Gdańsk, a nawet inny kraj.

Serwery

Dochodzimy do momentu, w którym serwer zarejestruje Wasze kliknięcie. Zanim jednak dotrzemy do tego zdarzenia - zatrzymajmy się na chwilę. Ciągle piszę o serwerach, a i Wy pewnie o nich słyszeliście. Czym jest ten serwer? Ogólnie można powiedzieć, że serwer to komputer, którego zadaniem jest świadczenie usługi dostępnej przez sieć. Z uwagi na to zadanie jest on zwykle włączony bez przerwy, w dzień, w nocy, w weekendy, a nawet w święta oznaczone w kalendarzu na czerwono.

Serwer to nic innego jak całodobowa knajpa, w której serwuje się konkretne menu. Wchodzimy o dowolnej porze dnia i nocy, zamawiamy „Pocztę elektroniczną z frytkami”. Na rogu znajduje się druga knajpa, która nie serwuje tego samego, ale można tam dostać fantastyczny „Serwis społecznościowy w galarecie”. Niektóre serwery są jak sieci fast-foodów - wiele identycznie wyglądających knajp z takim samym menu. Po co komu tyle identycznych serwerów? Dzięki temu można obsłużyć więcej ludzi, którzy otrzymują te same produkty, choć w innych lokalizacjach.

Dobrze. Wróćmy do naszego kliknięcia. Żądanie dociera wreszcie do właściwego serwera, a on odczytuje to, co ma dostarczyć. Kiedyś wystarczało, że serwer odnalazł odpowiedni plik i odesłał go do Waszej przeglądarki. Te czasy skończyły się wraz z rozwojem Internetu i powstaniem coraz bardziej skomplikowanych systemów dostępnych w sieci.

Dlatego też tu nie kończy się praca serwera odpowiedzialnego za stronę. Przekazuje on wasze zapytanie niżej, do języka programowania, który zajmuje się poskładaniem danych tak, aby odzwierciedlały to, czego oczekiwaliście, klikając w odnośnik.

Wrócimy na chwilę do poprzednio omawianego tematu adresów w Internecie. Ta część adresu, która znajduje się po nazwie domeny, mówi serwerowi, a później językowi programowania, co trzeba zwrócić.

Wyobraźmy sobie serwis, w którym publikujecie zdjęcia z wakacji. Jest on dostępny pod adresem fantastycznezdjeciazwakacji.pl – kiedy już zarejestrujecie się w serwisie, Wasze zdjęcia dostępne są pod adresem:

fantastycznezdjeciazwakacji.pl/user/emil

W tym przykładzie emil to nazwa, pod którą się zarejestrowałem, a users mówi językowi programowania, w jaki sposób ma przygotować informacje. Jeżeli wyślę Wam e-mailem odnośnik do pojedynczego zdjęcia, z którego jestem bardzo dumny, nasz hipotetyczny adres mógłby wyglądać następująco:

fantastycznezdjeciazwakacji.pl/gallery/emil/3745

Tym razem informujemy serwer obsługujący nasz skład fotografii, że chcemy pokazać galerię (gallery) użytkownika emil, a konkretnie zdjęcie o identyfikatorze 3745.

Proste? Niestety, mogę poruszać się tylko w sferze gdybań, gdyż to, jak wygląda ta druga część adresu, zależy wyłącznie od autorów serwisu. Ten przykład ma Wam tylko uświadomić, jakie dane mogą mieć wpływ na wynik tego, co otrzymacie w oknie przeglądarki.

Teraz przyjrzymy się tej enigmatycznej liczbie 3745. Mówiłem już, że komputery lubią liczby? A serwer to taki długodystansowiec wśród komputerów. Większość serwisów używa baz danych do składowania i przetwarzania informacji. Wasze zdjęcia, wpisy i liczba kliknięć w „Lubię to” siedzą gdzieś w bazie danych.

W bazie danych? A co to za nowe cholerstwo?

Baza danych to archiwum, które zatrudnia szalonych archiwistów. Mają oni masywne głowy i zwinne nóżki. Wystarczy, że zapytasz takiego o listę zdjęć wgranych do serwisu pomiędzy zeszłym piątkiem a wczoraj, których nazwy zaczynają się na literę „A”, a on wróci z kompletem informacji, zanim zdążysz mrugnąć. Informacje w bazie danych są poukładane przez autorów tak, aby całość była logiczna i korespondowała ze strukturą serwisu. Strukturę dzielimy na tabelki, które grupują informacje o jednym typie danych (np. tabelka użytkownicy zawiera użytkowników, tabelka zdjęcia zawiera informacje o zdjęciach), a sama tabelka składa się z pól. Pole zawiera nazwę, dzięki której możemy odnieść się do konkretnych informacji, oraz samą wartość.

Każdy, kto widział arkusz kalkulacyjny (np. w Excelu), może sobie z łatwością wyobrazić tabelkę jako taką właśnie serię kolumn. Proszę tylko, żebyście nigdy nie nazywali Waszego arkusza bazą danych. A już z pewnością nie mówcie, że to ja Wam tak wytłumaczyłem. Są ludzie, którzy wytropiliby mnie na końcu świata i doprowadzili do mojej śmierci. To nie są żarty. My traktujemy bazy danych bardzo serio!

Zobaczmy, jakby mogły wyglądać tabelki w naszym hipotetycznym serwisie.

Użytkownicy [
 identyfikator,
 użytkownik,
 email,
 hasło
]

Galeria [
 identyfikator,
 użytkownik,
 zdjęcie,
 data,
 tytuł

]

Słowo przed nawiasami kwadratowymi to nazwa tabelki, a w nawiasach są nazwy pól. Język programowania potrafi komunikować się z bazą danych. Otrzymuje od niej wszystkie niezbędne informacje. Popatrzmy na adres z wcześniejszego przykładu:

fantastycznezdjeciazwakacji.pl/gallery/emil/3745 

Język programowania mówi do bazy tak:

Podaj mi takie zdjęcie z tablicy Galeria, które należy do użytkownika emil i ma identyfikator 3745, oraz jego datę i tytuł

Gdybyśmy chcieli zobaczyć listę wszystkich zdjęć i kiedy zostały wykonane, zapytalibyśmy bazę danych:

Podaj mi zdjęcia z tablicy Galeria, które należą do użytkownika emil

Słówko o identyfikatorach, skoro już tak głęboko zabrnąłem w temat baz danych (lubię bazy danych, ale o tym już wspominałem). Identyfikator to liczba, którą baza danych dodaje do każdego wpisu. Jest zwykle o jeden większa niż poprzedni identyfikator w tej samej tabeli. Tak więc emil, jako pierwszy użytkownik serwisu ze zdjęciami, otrzyma identyfikator równy 1, następny, który się zarejestruje, otrzyma 2, i tak dalej. To samo ze zdjęciami w tabeli Galeria - moje pierwsze dwa otrzymają kolejno 1 i 2, natomiast pierwsze zdjęcie drugiego użytkownika otrzyma 3, gdyż jest trzecie.

Czemu to służy? Jak już pisałem, komputery lepiej radzą sobie z wartościami numerycznymi i szybciej odnajdą zdjęcie o identyfikatorze 3745 niż zdjęcie o konkretnej nazwie. Poza tym w grę wchodzi też unikalność. Użytkownik może mieć sto zdjęć o nazwie „superimpreza.jpg”, ale baza musi wiedzieć, że są to różne pliki. Dlatego posługuje się identyfikatorami.

Tak jak w przypadku adresów, struktura i sposób poukładania danych w bazie zależy tylko i wyłącznie od jej autora. Czasem obraca się to przeciw twórcy, bo źle poukładane dane mogą znacząco wpłynąć na szybkość (powolność) usługi, a nawet jej stabilność.

Powtórzmy tę część: serwer otrzymuje żądanie i przekazuje je do języka programowania, który odpowiada za ostateczny wygląd dostarczonej strony, a także pobiera dane z bazy danych i wstawia je w odpowiednie miejsca. Teraz pozostaje ostatni krok…

Odpowiedź

Po skończeniu operacji po stronie serwera przeglądarka otrzymuje sformatowany dokument i wyświetla go w swoim oknie. Taka trywialna operacja potrafi zaangażować dziesiątki urządzeń i serwerów. Często sam zapominam, jak wiele musi się wydarzyć pomiędzy kliknięciem a otrzymaniem wyniku. Jeszcze bardziej imponuje to, że cała procedura nie zajmuje zwykle więcej niż przysłowiowe mrugnięcie okiem (mrugnięcie oka to czterysta milisekund) i gdyby nie ograniczenia w szybkości transferów i mocy obliczeniowej komputera, na którym zainstalowano przeglądarkę, to nie bylibyście świadkami „przeładowywania się” podstron.

Jeszcze raz

Z przeglądarki w sieć, siecią po świecie w poszukiwaniu serwerów, serwery do języka progamowania, język do bazy, baza do języka, język do serwera i serwer do przeglądarki.

Mam nadzieję, że wyjaśniłem choć trochę proces, którego jesteście nieświadomymi uczestnikami każdego dnia. Może to spowoduje, że nie będziecie pisać do Emilów tego świata brzydkich e-maili podczas awarii. Rzeczy, które wydają się być banalnie proste na pierwszy rzut oka, mogą być skomplikowane.

Za udział wzięli

Tekst

Emil Oppeln-Bronikowski, emil@bronikowski.com

Kurekta

Szprota, Kaja Mikoszewska

Okładka

Piotr Klimek

PDF

Klik (A4), Klik (A5)