"Cześć, Amigo!"
"Cześć, Bilaabo!"
– O czym nowym mi dziś opowiesz?
„Wiele rzeczy. Ale na początek myślę, że omówimy pracę z siecią i Internetem. Zainteresowany?”
„Tak. Internet galaktyczny jest super fajny”.
„Dobrze, ale zacznijmy od historii. Na początku XXI wieku sytuacja wyglądała tak…”
„Każdy komputer podłączony do Internetu miał unikalny numer. Był to zwykły 4-bajtowy numer. Nazywa się to adresem IP”.
„Ale ludzie mają słabą pamięć i mają trudności z zapamiętaniem czegoś takiego jak 2108458776, więc często zapisują każdy bajt osobno”.
„Jeśli podzielimy czterobajtową liczbę 2108458776 na osobne bajty, otrzymamy 125.172.135.24. Jak zapewne pamiętasz, każdy bajt składa się z 8 bitów i może zawierać liczby od 0 do 255”.
„Więc tak piszemy numer?”
„Tak. Po prostu łatwiej (ludziom) zapamiętywać czterobajtowe liczby, gdy są zapisane w ten sposób”.
„Tak się złożyło, że wybór użycia tylko 4 bajtów wkrótce spłatał im okrutnego figla. Liczba urządzeń podłączonych do Internetu rosła tak szybko, że wkrótce ich zabrakło”.
– Jak oni to obeszli?
„Zrobili to, co zwykle robią ludzie”.
„Opracowali nowy standard adresów IP i z dumą nazwali go IPv6”.
„W przeciwieństwie do normalnego adresu IP (zwanego IPv4), który używa 4 bajtów do utworzenia unikalnego numeru, nowy standard używa 16”.
„Pomyśl tylko, ludzie nie byli w stanie zapamiętać 10 cyfr w zwykłej liczbie (jak 2108458776), więc musieli podzielić je na 4 części, ale potem pomyśleli o użyciu liczb składających się z 16 bajtów”.
– Tak, czasami ludzie są dziwni.
„Tak. Ludzie są ludźmi”.
„To powiedziawszy, wyszli z kłopotliwej sytuacji”.
„Zmęczyło ich zapamiętywanie liczb i postanowili zastąpić je słowami”.
„Jak to? Czy możesz podać mi przykład?”
„Oczywiście, web.mail.com , google.com , new.books.amazon.com ,…”
„Ten rodzaj nazwy nazywa się domeną”.
„Aby ten Internet działał poprawnie, utworzyli specjalną tabelę o nazwie Domain Name System (DNS), która przechowuje adresy IP każdej nazwy domeny”.
"Oto jak to działa."
1) Użytkownik wprowadza adres w przeglądarce, na przykład web.mail.com .
2) Przeglądarka uzyskuje dostęp do DNS i używa nazwy domeny, aby uzyskać adres IP.
3) Na ten adres IP wysyłane jest żądanie z wymaganym adresem URL.
– To nie wygląda na bardzo proste.
„Ale to podejście ma kilka zalet:”
„ 1) Ludziom łatwo jest zapamiętać imiona, które można zwerbalizować”.
" 2) Nazwy domen można budować hierarchicznie, dodając subdomeny na początku nazwy. Dokładnie tak, jak nazwa pakietu w Javie."
„ 3) Jeśli potrzebujesz zmienić adres IP serwera WWW, wystarczy zmienić rekord DNS, a wszystko będzie działać tak, jak wcześniej — użytkownicy nie muszą pamiętać nowego adresu”.
„DNS wygląda mniej więcej tak:”
Nazwa domeny | adres IP |
---|---|
poczta. com | 128.35.36.189 |
web.mail.com | 145.12.17.13 |
nowa.poczta.com | 192.155.15.3 |
google.com | 92.117.151.100 |
google.com | 193.168.0.1 |
docs.google.com | 217.12.222.1 |
… |
"Ma sens."
„W każdym razie domena to nazwa komputera, ale nie potrzebujemy komputera — potrzebujemy tego, co jest na komputerze. Do tego służą adresy URL”.
„Początkowo adres URL był w rzeczywistości łączem do pliku na innym komputerze. Na przykład:”
Przykład |
---|
http://info.codegym.cc/user/info/profile.html _ _ _ _ |
Opis |
http to protokół komunikacji klient-serwer info.codegym.cc to nazwa domeny komputera user/info/profile.html to ścieżka do pliku na komputerze |
„Na samym początku rozwoju sieci serwer WWW mógł używać adresu URL tylko do obsługi plików, które gdzieś przechowywał. Adres URL był w rzeczywistości globalną ścieżką do pliku: nazwa komputera + ścieżka”.
„Później, gdy serwery internetowe zaczęły same generować pliki, adresy URL nieco się zmieniły i stały się żądaniem do serwera WWW. Dodano również parametry żądania”.
„Dziś rzadko można zobaczyć rozszerzenie pliku na końcu adresu URL. „Nowoczesny adres URL to po prostu unikalny link z parametrami. Bardziej przypomina wywołanie metody niż globalną ścieżkę do pliku”.
„Klasyczny nowoczesny adres URL wygląda tak:”
Analizowanie adresu URL |
---|
http://codegym.cc/alpha/api/contacts ? _ _ _ _ identyfikator użytkownika=13&filtr=brak&strona=3 |
Opis części adresu URL |
codegym.cc to nazwa domeny — unikalna nazwa (adres) komputera w Internecie |
http to protokół komunikacji klient-serwer |
alpha/api/contacts to żądanie serwera WWW lub żądanie strony internetowej na serwerze |
userid=13 & filter=none & page=3 to ciąg z parametrami żądania |
„Tak, pamiętam. Niedawno mówiłeś mi o adresach URL”.
— I o portach też. Posłużyłeś się przykładem apartamentowca.
„Lepiej byłoby mi powiedzieć, co to jest„ http ”. Widzę wszędzie napisane „protokół”, ale nie jestem pewien, co to jest”.
„OK. Powiem ci bez zbędnych ceregieli”.
„ HTTP oznacza protokół przesyłania hipertekstu i służy do przesyłania hipertekstu ” .
„Co to jest hipertekst?”
„To HTML”.
„Z grubsza mówiąc, protokół to zestaw reguł komunikacji. Opisuje żądania, które mogą być wysyłane do serwera WWW, w jakim formacie oraz w jaki sposób serwer WWW powinien odpowiadać”.
„Krótko mówiąc, sytuacja jest taka. Między klientem a serwerem przesyłane są zwykłe pliki tekstowe lub, jak kto woli, duże fragmenty tekstu ” .
„ Żądanie przychodzi do serwera, a serwer odpowiada na każde żądanie”.
„Oto przykłady takiej prośby i odpowiedzi:”
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5… – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.
„Pierwszy wiersz to rzeczywiste żądanie. Poniżej znajdują się dodatkowe parametry żądania, znane również jako„ pola nagłówka ”.
„A oto przykład odpowiedzi:”
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8 – This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.
„Chciałbym zwrócić waszą uwagę na dwie rzeczy:”
„Po pierwsze, bez względu na to, o co prosisz, wygląda to na żądanie pliku do serwera. Nie ma znaczenia, czy plik znajduje się na serwerze, czy serwer generuje go w odpowiedzi na żądanie”.
„Po drugie, sam plik jest wysyłany jako część odpowiedzi HTTP . Innymi słowy, na początku odpowiedzi serwera widzimy dodatkowe dane, a następnie treść obsługiwanego pliku ” .
„Jakie to interesujące! Nie jestem pewien, czy wszystko zrozumiałem. Przeczytam to później”.
„Och, chcę ci powiedzieć o jeszcze jednej małej, ale interesującej rzeczy: ciasteczkach”.
"Co to są?"
„Zgodnie z protokołem HTTP pliki cookie to małe informacje, które serwer wysyła do klienta w celu przechowywania na kliencie. I są odsyłane z powrotem do serwera w ramach kolejnych żądań ” .
— A jaki to ma sens?
„Załóżmy, że użytkownik loguje się na stronie głównej serwisu WWW. Serwer tworzy obiekt sesji na serwerze dla tego użytkownika, a unikalny numer sesji jest wysyłany do klienta jako plik cookie. Podczas kolejnego żądania klienta do serwer, ten numer sesji wraz z innymi plikami cookie zostanie odesłany do serwera. Oznacza to, że serwer może rozpoznać użytkownika, który wysłał nowe żądanie."
"Jakie interesujące!"
„Tak. Kiedy napiszesz własne serwlety, przyjrzymy się bliżej temu tematowi. Ale na razie zróbmy sobie przerwę”.
"Cokolwiek powiesz."
GO TO FULL VERSION