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).
@MeritumApp: przejrzałem waszą apkę i muszę powiedzieć, że przypomniał mi się wypok sprzed kilku lat. Dlatego błagam was, nie idźcie w stronę polityki lewej lub prawej. Dodajcie też możliwość logowania przez google+
Dużo jest requestów, żeby nie było polityki ale i też żeby była i nad tą kwestią się mocno zastanawiamy. Ostatecznie chcemy ją dodać, jednak zastanawiamy się jak ograniczyć jej negatywny wpływ. Być może opcja komentarzy nie będzie pod nimi dostępna. Kto będzie chciał subskrybować konkretny kanał to będzie to robił.
Aczkolwiek póki co trzymamy się wersji, że jeśli ma być polityka, to jedynie taka trzymająca się
I rzućcie okiem na apkę trojmiasto.pl, wydaje mi się, że to jedna z lepszych jeśli chodzi o ux.
A jeśli już o politykę. Jeśli ma być, to blokowanie komentarzy będzie złym pomysłem, wtedy wyjdą wam zwykłe przedruki z pap, ale z drugiej strony byście musieli zatrudnić całą armię modów żeby ogarnąć tę całą wojnę. Chyba że
@MeritumApp: to zależy, większość stron, które regularnie odwiedzam nie ma dedykowanych aplikacji. Z apek dostarczających różnoraki kontent mam wypok, trojmiasto.pl, guardian i reddita, ale tego ostatniego rzadko odwiedzam ostatnio. Strony to: imperiumromanum, tabletowo, smartage, antyczny.blog, ciekawostkihistoryczne i anetaniezajac. Czasem tez focus historia. Gdyby były one dostępne w jednej apce, to pewnie bym z niej korzystał.
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.
@MeritumApp: to nie jest prawdą -- tworzymy wtedy furtkę dla ataków MitM (atakujący kontroluje zarówno serwer podszywający się pod "allegro", jak i pod "serwer zaufany"). Weryfikacja odbywa się całkowicie offline -- albo razem z przeglądarką rozsyłane są dane dotyczące głównych organizacji
@katoda: Tak masz racje, to jest duuży skrót myślowy, być może zbyt duży bo minął się z prawdą. Chodziło tutaj o zapytanie do OCSP albo zbadanie listy CRL czy inne podobne mechanizmy, które mogą być częścią walidacji chaina. W ogóle cały artykuł zakłada, że nie istnieje żaden cache czy prefetch (dlatego np. te przekierowania są w ogóle wspomniane, inaczej byłyby scachowane) i trzeba także zbadać certyfikat gdzie indziej. Dzięki za
@MeritumApp: @katoda: Pewnie autor chciał opisać OCSP stapling ale to tez służy do czego innego. Ogólnie jest sporo nieścisłości w tym artykule.
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.
Powinno byc "Służy do tego DNS czyli system nazw domenowych
@TwojStaryToKorniszon: bzdura. DNSy na poziomie resolvera systemowego to jedno a drugie to to ze kazda aplikacja nie musi z niego korzystac i moze uzyc dowolnej metody rozwiazywania nazw.
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
Komentarz usunięty przez autora
» http www.allegro.pl -v --follow
GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Dlatego błagam was, nie idźcie w stronę polityki lewej lub prawej.
Dodajcie też możliwość logowania przez google+
@MeritumApp: bzdura
DNS konfigurje się dla połączenia sieciowego a nie dla przeglądarki
Dużo jest requestów, żeby nie było polityki ale i też żeby była i nad tą kwestią się mocno zastanawiamy. Ostatecznie chcemy ją dodać, jednak zastanawiamy się jak ograniczyć jej negatywny wpływ. Być może opcja komentarzy nie będzie pod nimi dostępna. Kto będzie chciał subskrybować konkretny kanał to będzie to robił.
Aczkolwiek póki co trzymamy się wersji, że jeśli ma być polityka, to jedynie taka trzymająca się
I rzućcie okiem na apkę trojmiasto.pl, wydaje mi się, że to jedna z lepszych jeśli chodzi o ux.
A jeśli już o politykę. Jeśli ma być, to blokowanie komentarzy będzie złym pomysłem, wtedy wyjdą wam zwykłe przedruki z pap, ale z drugiej strony byście musieli zatrudnić całą armię modów żeby ogarnąć tę całą wojnę. Chyba że
Swoją drogą. Jak preferujesz przeglądać takie treści, wchodzisz przez przeglądarkę czy wolisz apkę?
Z apek dostarczających różnoraki kontent mam wypok, trojmiasto.pl, guardian i reddita, ale tego ostatniego rzadko odwiedzam ostatnio.
Strony to: imperiumromanum, tabletowo, smartage, antyczny.blog, ciekawostkihistoryczne i anetaniezajac. Czasem tez focus historia. Gdyby były one dostępne w jednej apce, to pewnie bym z niej korzystał.
U nas @IMPERIUMROMANUM wrzuca treści, @Kakergetes od antyczny.blog też jest, chociaż ostatnio mniej aktywny :).
@MeritumApp: to nie jest prawdą -- tworzymy wtedy furtkę dla ataków MitM (atakujący kontroluje zarówno serwer podszywający się pod "allegro", jak i pod "serwer zaufany").
Weryfikacja odbywa się całkowicie offline -- albo razem z przeglądarką rozsyłane są dane dotyczące głównych organizacji
Powinno byc "Służy do tego DNS czyli system nazw domenowych