Wpis z mikrobloga

Cz 1. Co się dzieje gdy wejdziesz na stronę www?

Jest to pierwsza część tego cyklu w którym będziemy po kolei tłumaczyć co się dzieje behind the scenes gdy w przeglądarce wpisujesz adres www. By trochę uprościć, opiszemy co się dzieje na przykładzie adresu www.allegro.pl

1. Przeglądarka musi znać adres IP serwera by się z nim połączyć i pobrać stronę, czyli: zapytanie DNS

Dla przeglądarki www.allegro.pl to po prostu domena internetowa. Niestety by pobrać stronę, musi dowiedzieć się jaki adres IP ma komputer na którym uruchomiony jest serwer www. Służy do tego DNS czyli serwer nazw domenowych. W uproszczeniu jest to tabela która dla każdej domeny istniejącej w Internecie ma dopisany adres IP. W Internecie jest wiele DNSów, w swojej przeglądarce masz także możliwość ustawienia ich adresów (przykładowy adres serwera DNS to 8.8.8.8 należący do Google). Oznacza to, że zanim przeglądarka wykona żądanie do serwerów Allegro, musi najpierw wykonać zapytanie o ich adres do znanych sobie DNSów.

2. Mamy adres, pobieramy witrynę (czy na pewno?), czyli: zapytanie http GET

HTTP jest to najbardziej znany i najszerzej używany protokół internetowy. "Protokół" czyli pewien zestaw zasad, które mówią jak użytkownicy mają komunikować się z serwerami www. Protokół ten ma kilka rodzajów zapytań i najprostszym z nich jest zapytanie "GET", które oznacza po prostu "Daj mi dokument który znajduję się pod tym adresem"

Po wpisaniu www.allegro.pl i po odpytaniu DNSów o adresy IP serwerów, przeglądarka wysyła zapytanie GET bezpośrednio do serwera.

3. "To nie tutaj, to będzie tam!", czyli o kodach i przekierowaniach słów kilka
W odpowiedzi na zapytanie przeglądarki, serwer zwraca kod statusu zapytania. Jeżeli zapytanie przeglądarki było prawidłowe, to serwer zwraca kod o numerze 200. Jeżeli zapytanie było nieprawidłowe np. adres który podaliśmy nie istnieje, to serwer zwróci słynny kod 404. 

DYGRESJA: Ciekawym przykładem kodu jest kod nr 418 "I'm a Teapot" (Jestem czajniczkiem), który został zaproponowany jako standard z okazji prima aprilis w 1998. Był to kod za pomocą którego można było sterować czajnikiem :) Co ciekawsze, wszystkie popularne serwery www są w stanie taki kod zwrócić. Jak widać easter eggi występują nie tylko w grach ;)

W tym momencie serwer allegro zwraca nam kod 301 "Moved Permanently", czyli "Przeniesiony na zawsze". Protokół HTTP definiuje też tak zwane nagłówki http, w których i przeglądarka i serwer mogą podawać sobie przydatne informacje. I tak w nagłówku do odpowiedzi nr 301 znajduje się nowa lokalizacja strony. W tym wypadku serwer kieruje nas na "http://allegro.pl"

Idziemy więc do "http://allegro.pl". Czy to już? Niestety nie :) Serwer znów zwraca nam kod 301, tym razem podając za lokalizacje "https://allegro.pl"

4. Kłódeczka obok adresu www, czyli o tak zwanym "SSL"

Serwer allegro przekierował nas na zabezpieczoną wersję swojej strony, która używa protokółu https (s na końcu od "secured"), który jest tym samym co http, z tą różnicą, że wszystkie wiadomości wymieniane pomiędzy przeglądarką a serwerem są szyfrowane. To znaczy, że nawet jeśli ktoś będzie w stanie "podsłuchać" naszą komunikację z serwerem allegro, to i tak nic nie odczyta (np. naszych haseł przesyłanych do serwera podczas logowania). Powszechnie na ten mechanizm mówi się "SSL" jednak tak naprawdę SSL to stary protokół, który nie powinien być już używany, obecnie służy do tego TLS który jest następcą SSLa. Nazwa "SSL" jest ciągle stosowana jako określenie szyfrowania w http.

TLS służy nie tylko do szyfrowania. TLS pozwala także potwierdzić autentyczność serwera. Dzięki temu mamy pewność, że serwer allegro jest faktyczne serwerem allegro a nie czymś co się próbuje pod niego podszyć, by wykraść nasze hasła. Robi się to poprzez wydawanie tak zwanych certyfikatów, które zawsze mają "termin ważności". Dlatego czasami możecie zauważyć, że przeglądarka mówi wam, że połączenie jest niezaufane, to najprawdopodobniej dlatego, że certyfikat wygasł i trzeba poprosić o nowy. No właśnie... kogo poprosić?

Aby mieć certyfikat, trzeba go dostać od "zaufanego" źródła. Zaufanego to znaczy takiego któremu ufa i właściciel serwera i któremu ufa przeglądarka.

Gdy allegro ma taki certyfikat, przeglądarka musi go zweryfikować właśnie w tym zaufanym źródle. Wykonuje więc specjalne zapytanie do serwera zaufanego. Innymi słowy wykonuje się tak zwana walidacja certyfikatu.

To już koniec pierwszej części. Mamy już za sobą 4 punkty, a jeszcze nawet nie pobraliśmy strony w html! Wykonaliśmy za to aż 4 zapytania pośrednie (1 do DNSa, 2 do allegro, ale zakończone przekierowaniami i 1 do zaufanego serwera w celu walidacji certyfikatu).

-----------------------------------------
Autor @Emandero
Śledź jego kanał "iStein" w aplikacji Meritum : https://play.google.com/store/apps/details?id=com.meritum

Znasz się dobrze w jakiejś dziedzinie? Chcesz zostać autorem w Meritum? Napisz na PW.

#meritum #gruparatowaniapoziomu #technologia #it #ciekawostki
MeritumApp - Cz 1. Co się dzieje gdy wejdziesz na stronę www?

Jest to pierwsza czę...

źródło: comment_BQGD88PTZBtwCP3behSITCv3KYSgZ1vK.jpg

Pobierz
  • 52
  • Odpowiedz
@MeritumApp: 301 to jeden z możliwych przekierowań. Dość powszechnym też jest 302. Różnica polega na tym, że 301 to przekierowanie permanentne - zapamiętaj bo zawsze będę pod tym adresem. 302 to tymczasowe.
Dodatkowo nie zawsze jest w odpowiedzi 200. Czasami mamy 304 (Not Modified) - informacje przekazane przez przeglądarke i porównanie zasobów na serwerze i gdy zgodne (daty wygasania, eTagi) to serwer zwróci 304 i oznacza to, że przeglądarka wyświetli
  • Odpowiedz
@MeritumApp : sorry, ale podstawowy błąd odnośnie pkt 1.
System na początku próbuje rozwiązać nazwę używając /etc/hosts w unixach, lub c:\windows\system32\drivers\etc\hosts w windowsach, a dopiero jeśli nie znajdzie tam informacji to zaczyna odpytywać serwery DNS.
  • Odpowiedz
@MeritumApp, @Emandero sorry, ale

Gdy allegro ma taki certyfikat, przeglądarka musi go zweryfikować właśnie w tym zaufanym źródle. Wykonuje więc specjalne zapytanie do serwera zaufanego. Innymi słowy wykonuje się tak zwana walidacja certyfikatu.

to bezedura. Weryfikacja certyfikatu nie polega na łączeniu się z żadnym magicznym serwerem, a na sprawdzeniu, czy CA podpisujące certyfikat jest na lokalnej liście zaufanych. Chyba nie muszę mówić jak łatwo byłoby zDOSować pół internetu, gdyby
  • Odpowiedz
@pop-corn: co rozumiesz przez "udowodnienie tożsamości"? Jak dla mnie wystarczające jest to, że mogę posługiwać się nazwą domeny (poprzez przedstawienie certyfikatu + udowodnienie posiadania klucza prywatnego)
  • Odpowiedz
@MeritumApp:

Dużo brakuje. Szyfrowanie już poruszone :)
A skąd wiemy jakie konkretnie DNSy odpowiadają za konfigurację domeny (SOA na serwerze dns odpowiedzialnym za konfigurację)? W jaki sposób jest rozwiązywana nazwa i w końcu sprawdzany adres IP. Fajnie byłoby wspomnieć o serwerach dns rootowych globalnych, ale i dla ccTLD jaką jest domena .pl , czyli NASK i jego serwery rootowe.
  • Odpowiedz
@Emandero: HTTP najpowszechniej używanym protokołem internetowym? Chyba nie, ja to bym jako najpowszechniejszy protokół intenetowy wskazał... Protokół Internetowy (IP) ( ͡° ͜ʖ ͡°)
  • Odpowiedz