Struktura web adresa i pristup internet stranicama
Uvod
S obzirom na to da se već neko vreme u člancima bavimo izradom web sajtova i srodnim temama, smatramo da je više nego uputno da se konačno pozabavimo i 'anatomijom web adresa', kao i pozadinskim procesima koji se odvijaju pošto korisnik pokuša da otvori određenu stranicu na internetu.
Pre svega, da 'odgonetnemo' samu skraćenicu URL, sa kojom ste se verovatno susreli mnogo puta do sada (i koja je od značaja za praćenje ostatka članka).
URL (Uniform Resource Locator), predstavlja jedinstvenu adresu internet stranice, ili bilo koje druge vrste dokumenta (tj. 'resursa') na određenom serveru, i upravo su sastavni delovi URL-a, glavna tema kojom ćemo se baviti u prvom delu članka.
U drugom delu, bavićemo se DNS sistemima koji (u mrežnom saobraćaju), posreduju između klijenata i servera ....
Ukratko o primerima
Da bismo se što bolje upoznali sa delovima URL-a, koristićemo 'izmišljene' web adrese koje po svojoj strukturi odgovaraju URL-ovima sa kakvima se susrećemo svakodnevno.
Kao glavni primer, koristićemo sledeći (fiktivni) URL:
.... koji ćemo "rastaviti" na delove (koje ćemo potom detaljno analizirati).
Gornji URL sastoji se iz sledećih delova:
- protokol -
https://
- domen -
www.autodelovi.rs
- putanja -
pretraga.php
- upit -
?proizvodjac=vw&model=golf
.... i u pitanju su delovi URL-a koji se u praksi sreću često (to jest, svakodnevno).
Međutim, uvešćemo i pomoćni primer:
.... budući da se u web adresama povremeno sreću i dodatni delovi (koji su iz glavnog primera izostavljeni zarad očuvanja preglednosti): *
Na delove adrese kojih nema u glavnom primeru ....
- port -
:443
- fragment -
#gde_kupiti
.... takođe ćemo se detaljnije osvrnuti u zasebnim odeljcima.
Delovi URL-a
Pošto smo u prethodnom odeljku već nabrojali delove URL-a, prelazimo na 'disekciju' ....
Protokol
Početni deo adrese, "protokol", * definiše osnovni način komunikacije između klijenta tj. browsera, i servera, u smislu konkretnog formata za razmenu podataka.
Poznatiji internet protokoli su:
- HTTP - prenos hiperteksta
- HTTPS - prenos hiperteksta uz korišćenje enkripcije (zaštita podataka)
- FTP - prenos datoteka u izvornom obliku
- mailto - protokol za slanje elektronske pošte (uz korišćenje enkripcije)
Jednostavno rečeno, struktura podataka koji se razmenjuju pri učitavanju internet stranice (HTTP ili HTTPS), različita je od formata koji se koristi za razmenu elektronske pošte (mailto), ili za neposredno preuzimanje datoteka (ftp).
U članku o osnovnim web jezicima već ste imali priliku da se upoznate sa HTML-om (protokoli HTTP i HTTPS); protokol FTP podrazumeva slanje datoteka u izvornom obliku, a protokol mailto (za slanje elektronske pošte), ima svoj poseban format, različit od oba prethodno navedena formata.
U (fiktivnom) URL-u koji koristimo kao primer, protokol je HTTPS (prenos hiperteksta uz korišćenje enkripcije).
Domen
U praktičnom smislu, moglo bi se reći da je upravo domen, deo URL-a koji u očima većine korisnika interneta predstavlja pravu adresu sajta.
U glavnom primeru, URL sadrži sledeći domen:
Navedeni domen sastoji se iz tri dela:
- generički domen najvišeg nivoa (.rs)
- naziv domena (autodelovi)
- poddomen (www)
Generički domen najvišeg nivoa i naziv domena, predstavljaju obavezne delove, po kojima se raspoznaju domeni (tj. sajtovi), dok poddomen može i izostati pri zadavanju URL-a.
Da budemo precizni, kombinacija naziva i generičkog domena najvišeg nivoa, predstavlja način za raspoznavanje sajtova, pa tako (recimo), domeni autodelovi.rs
i autodelovi.com
mogu upućivati na dva skroz različita sajta (iza kojih stoje skroz različita preduzeća ili pojedinci) - bez obzira na to što sajtovi naizgled imaju isti naziv.
Verujemo da čitaoci intuitivno prepoznaju i podrazumevani poddomen www
(koji koristimo u glavnom primeru), međutim, o poddomenima ćemo diskutovati nešto detaljnije u nastavku, a za sada ćemo samo napomenuti da poddomen predstavlja način da se određeni sadržaji na sajtu kategorizuju na pregledniji način.
Generički domen najvišeg nivoa (TLD - Top Level Domain)
Domen najvišeg nivoa označava (makar u teoriji), kategoriju sajta, namenu sajta, ili određeni vid povezanosti internet stranice sa nekom državom (i zvaničnim jezikom date države).
Da bismo bolje razumeli sve što smo prethodno naveli, pogledajmo neke od najpopularnijih TLD-ova:
- .com - internacionalni TL domen namenjen komercijalnim preduzećima
- .net - internacionalni TL domen namenjen mrežama povezanih sajtova
- .org - internacionalni TL domen namenjen neprofitnim organizacijama
- .edu - internacionalni TL domen namenjen obrazovnim ustanovama
- .rs .it .fr (i sl) - nacionalni domeni koji impliciraju povezanost sadržaja sajtova, sa određenom državom (tj. geografskom teritorijom), u smislu jezika koji se na sajtovima koriste i usluga koje sajtovi nude.
U praksi, sve ipak funkcioniše na način koji je (bar ponešto) 'slobodniji'.
Registracija TL domena .com
, .net
i .org
je otvorena, to jest, dostupna i privatnim licima (ne samo registrovanim organizacijama), a sajtovi sa nacionalnim domenima često su internacionalnog karaktera (u primeru iz gornje napomene, sadržaj turističkih sajtova, ne mora biti namenjen "domaćim" turistima).
Budući da prethodno navedene smernice u vezi sa TL domenima nisu (u potpunosti) obavezujuće, reklo bi se da onda (kao takve) nemaju preveliki značaj, ali (srećom), u većini situacija ipak ima "nekakvog reda": poznatije organizacije koje drže do svog renomea, najčešće se uklapaju u prvobitno navedenu šemu, a privatna lica uglavnom takođe uvažavaju standarde (tj. ne "iskaču" previše).
Sa druge strane, neka pravila (kako i dolikuje), sasvim su striktna, i stoga - za razliku od prethodno navedenih domena najvišeg nivoa (.com
, .net
i .org
) - TLD .edu
nije dostupan "bilo kome", već samo registrovanim obrazovnim ustanovama, a TLD .co
(koji se koristi u kombinaciji sa nacionalnim domenom, u smislu, .co.rs
), dostupan je samo registrovanim organizacijama.
Ukratko: domen autodelovi.rs
može zakupiti "bilo ko", dok je domen autodelovi.co.rs
dostupan samo zvanično registrovanim preduzećima.
Domen autodelovi.edu.rs
deluje veoma čudno, ali, ako bi zaista postojala akreditovana obrazovna ustanova sa navedenim nazivom .... tehnički je izvodljivo.
Naziv domena
Naziv domena je niska po kojoj se sajt prepoznaje i razlikuje od ostalih sajtova koji su registrovani pod istim generičkim domenom najvišeg nivoa (u primeru koji koristimo, osnovni naziv domena je "autodelovi").
Međutim (kao što smo već nagovestili), nije obavezno u pitanju niska po kojoj se sajt razlikuje od doslovno svih sajtova, već je za nedvosmisleno raspoznavanje sajtova potrebno koristiti kombinaciju naziva i generičkog domena najvišeg nivoa.
Poddomen
Poddomen je deo domena koji stoji na početku i, po potrebi, omogućava bolju organizaciju (dopadljivije i lakše pamtljive web adrese), uz upućivanje na određene delove sajta.
Podrazumevani poddomen je www
, * a u primeru sajta sa auto-delovima, mogli bismo preko poddomena uvesti sledeće nivoe organizacije:
www.autodelovi.rs
- osnovna verzija sajtaen.autodelovi.rs
- verzija sajta na engleskom jezikumobile.autodelovi.rs
- verzija sajta za mobilne uređaje (ako bi takva vrsta organizacije bila bolja od korišćenja tehnika responzivnog web dizajna)blog.autodelovi.rs
- blog sa člancima o izboru auto-delova, održavanju automobila i sl.
Port
U mrežnom saobraćaju, termin "port" (koji se u domaćoj literaturi, ponekad prevodi i kao 'kapija'), označava kanal za preusmeravanje mrežnog saobraćaja u okviru jednog domena.
Praktično, u pitanju je svojevrsna "podadresa", na koju se (hardverskim ili softverskim putem), preusmeravaju klijentski zahtevi koji u okviru URL-a sadrže odrednicu za "port" (www.adresa.com:80
i sl).
Različiti protokoli tipično koriste različite portove, ali (recimo), HTTP saobraćaj gotovo uvek se obavlja preko porta :80
, HTTPS saobraćaj preko porta :443
i sl (to jest, za svaki protokol tipično postoji podrazumevani port).
Ukoliko server koristi podrazumevani port za određeni protokol, broj porta se može izostaviti pri zadavanju adrese (i upravo to je razlog zašto navođenje portova nije uobičajeno u svakodnevnoj mrežnoj komunikaciji).
Putanja
Putanja, kao deo URL-a, omogućava pristup specifičnom sadržaju na serveru, međutim, iako su nekada stvari bile prilično jednostavne po pitanju toga šta 'putanja' (kao deo URL-a), zapravo označava, u sadašnjem trenutku je situacija nešto komplikovanija - ali i zanimljivija.
Na starijim serverima (i serverima koji funkcionišu na 'starinski' način), * putanja, kao deo URL-a, predstavlja (doslovno) putanju koja vodi do traženog direktorijuma (tj. foldera) ili datoteke na serveru, posmatrano u odnosu na koreni direktorijum servera (koji se pri zadavanju adresa u HTML datotekama obeležava kosom crtom "/"). **
Ako se unese sledeća putanja (koja se prosleđuje serveru koji je podešen na prethodno opisani način) ....
.... server će unutar direktorijuma blog
(koji se nalazi direktno unutar korenog direktorijuma servera), tražiti datoteku odrzavanje_guma.html
.
Na modernim web serverima (koji koriste moderna softverska rešenja za dinamičko isporučivanje sadržaja, kao što su Laravel, Express.Js, Django, Flask i sl), stvari funkcionišu na drugačiji način, što znači da putanja kao što je (recimo) /clanci/izbor_zimskih_guma
- ne podrazumeva pristup stranici izbor_zimskih_guma.html
ili izbor_zimskih_guma.php
, koje se nalaze u direktorijumu clanci
(na serveru).
Umesto direktnog traženja datoteka sa HTML sadržajem, zadata putanja je 'nalog' serveru, da pripremi i isporuči sadržaj koji odgovara unetoj putanji (u konkretnom primeru - članak o izboru zimskih guma). Opšta HTML struktura stranice definiše se dinamički, preko šablona, a zatim se šabloni popunjavaju sadržajem lokalnih datoteka sa servera (čija se putanja na serveru najverovatnije ne poklapa sa putanjom iz URL-a), ili, još češće - šabloni se popunjavaju podacima iz baze podataka.
Upit
Kao poslednji deo URL-a, * web stranici se preko adrese može proslediti upit (naravno, upit je moguće proslediti, ali, nije zagarantovano da će server na svaki upit odgovoriti na očekivani način).
Upit počinje znakom "?", posle čega slede parametri.
Parametri upita
Parametri upita su posebno formatirani parovi niski koje se spajaju znakom =
(a ako je takvih parova više, međusobno se 'razdvajaju' znakom &
(ampersend)).
Podsetimo se adrese sa početka članka:
Adresa sadrži sledeće delove upita:
- proizvodjac=vw
- model=golf
.... koji praktično predstavljaju parametre pretrage.
Parametri pretrage su spojeni znakom &
(ampersend) i svaki od dva parametra sadrži ključ i vrednost (ključevi su proizvodjac
i model
, a vrednosti su vw
i golf
).
Fragment
Kao što smo na početku nagovestili, fragment je deo URL-a koji se u određenim okolnostima pojavljuje na kraju, i odnosi se na 'unutrašnje linkove'.
Na početku smo naveli adresu: https://blog.autodelovi.rs:443/clanci/izbor_zimskih_guma#gde_kupiti
, a fragment je deo URL-a posle znaka #
, preko koga se browser upućuje, ne samo na konkretnu stranicu, već, na konkretan odeljak stranice.
(Nije teško zamisliti članak o izboru zimskih guma, i deo članka u kome su navedene prodavnice auto-opreme.)
Biće još lakše ako (ponovo) razmotrimo i konkretan primer, i stoga, ukoliko na kraj URL-a koji odgovara članku koji trenutno čitate, unesete fragment #fragment
(što odgovara id-u podnaslova trenutnog odeljka), tako da puna adresa postane ....
.... browser će otvoriti trenutni članak i direktno se prebaciti (tj. 'skrolovati'), na odeljak o fragmentima.
IP i DNS - Pristup sadržajima na internetu
Na kraju, razmotrićemo šta se tačno dešava kada se preko adresne linije browsera pozove određeni URL (recimo, adresa kao što je www.autodelovi.rs
), odnosno, sagledaćemo kako zapravo funkcioniše mehanizam koji korisnike "vodi do sajta"?
Pre svega, web serveri ne koriste adrese u obliku URL-a, već, numeričke IP adrese (IP = Internet Protocol), specifično formatirane grupe cifara, razdvojene tačkama.
Ako (na primer), sledeća IP adresa ....
.... odgovara URL-u http://www.autodelovi.rs
, pristup sajtu je (naravno) moguć i u slučaju da se adresa direktno unese u "brojčanom" obliku (u smislu - ako se u adresno polje browsera unese 125.117.21.214
- sajt će se otvoriti).
Međutim, iako (iz perspektive programera), IP adrese ponekad veoma dobro dođu (i zabavno je koristiti ih :)), u većini svakodnevnih situacija, IP adrese ni izdaleka nisu praktične.
Budući, dakle, da korisnici najčešće ne unose IP adrese kada pristupaju sajtovima, već unose URL-ove, i pri tom računari krajnjih korisnika nisu opremljeni registrom koji je u stanju da upari desetine miliona URL-ova i IP adresa (zapravo, veći broj stotina miliona), razume se da mora postojati 'nekakav' posrednički mehanizam.
"Posrednički mehanizam" naziva se DNS (skraćeno od "Domain Name System") i, uz pomalo uprošćavanja, može se reći da je u pitanju sistem specijalizovanih, međusobno povezanih DNS servera, * čija je svrha: prevođenje adresa koje ljudi razumeju (www.autodelovi.rs
), u adrese koje računari razumeju (125.117.21.214
).
Još jednostavnije, DNS je svojevrstan "telefonski imenik Interneta", čiji bismo princip funkcionisanja mogli opisati (u kraćim crtama), na sledeći način:
- korisnik u adresnu liniju unosi adresu u obliku potpunog ili "skraćenog" URL-a (recimo da je korisnik uneo adresu
autodelovi.rs
) - browser po potrebi dodaje prefiks
http://
(ukoliko korisnik nije uneo punu adresu) - DNS serveru se prosleđuje zahtev za pronalaženje servera koji odgovara domenu
autodelovi.rs
(i uspostavljanje komunikacije preko protokola HTTP) - DNS server proverava da li domen
autodelovi.rs
postoji (za primer ćemo uzeti da domen postoji, dok - ukoliko domen ne postoji - jednostavno se vraća poruka o grešci) - pošto je domen
autodelovi.rs
uspešno pronađen, DNS server povezuje browser klijenta sa IP adresom125.117.21.214
- što predstavlja IP adresu servera na kome se sajt zapravo nalazi (pri čemu je ustanovljeno i to da server koristi protokol HTTPS, umesto 'običnog' HTTP protokola) - započinje komunikacija putem protokola HTTPS, između klijenta i servera
125.117.21.214
(i učitavanje HTML sadržaja koji odgovara naslovnoj stranici sajta)
Za kraj ....
Komplikovanijim odlikama DNS sistema, ovoga puta se nismo bavili (ostavićemo to ipak za neku drugu priliku), ali, iskreno se nadamo da smo ovakvim člankom uspeli da vam pomognemo u rešavanju (bar nekih) "misterija Internet saobraćaja".
U bliskoj budućnosti, pozabavićemo se i načinom funkcionisanja protokola HTTP (u jednom od sledećih članaka), a - do tada - uživajte u ostalim člancima na sajtu 185.119.88.133
. :)