Načrtovanje in razvoj spletnih aplikacij

Internetni protokoli

HTTP

HTTP je komunikacijski protokol med odjemalci in strežniki in je namenjen dostopanju do objektov, ki so na voljo na spletnih strežnikih. Brskalnik pošlje zahtevo strežniku, strežnik zahtevo obdela in pošlje brskalniku odgovor.

Odjemalec HTTP (npr. spletni brskalnik) začne zahtevo tako, da vzpostavi TCP povezavo z izbranimi vrati na oddaljenem gostitelju (privzeta številka vrat je 80). HTTP strežnik na teh vratih pričakuje, da bo odjemalec poslal svoj zahtevek. Zahtevek GET / HTTP/1.1 na primer prosi za privzeto spletno stran na strežniku, čemur sledi MIME sporočilo, podobno kot pri elektronski pošti. To sporočilo vsebuje več obveznih in neobveznih podatkov za informiranje strežnika (podatek o gostitelju Host je na primer obvezen), čemur lahko sledi neobvezno polje poljubnih podatkov. Ko strežnik prejme tak zahtevek in morebitno sporočilo, na to odgovori na primer z 200 OK in lastnim sporočilom, katerega vsebina je na primer zahtevana datoteka, sporočilo o napaki ali pa kaka druga informacija.

HTTP metode

  • GET - najpogostejša metoda za pridobitev vsebine datoteke
  • HEAD - podobno kot GET, le da na to strežnik odgovori le z glavo datoteke. Uporabno za pridobivanje meta-oznak.
  • POST - podobno kot GET, samo da telo zahtevka vsebuje podatke, ki jih želimo sporočiti strežniku
  • PUT - uporablja se za pošiljanje datotek na ciljni spletni strežnik
  • DELETE - izbriše zahtevano datoteko iz strežnika
  • TRACE - uporablja se za diagnostiko, vrne zahtevek zato, da lahko odjemalec ugotovi ali so vmes dodatni strežniki, ki spreminjajo zahtevke
  • OPTIONS - vrne seznam HTTP zahtevkov, ki jih strežnik podpira (za preverjanje ali spletni strežnik deluje)
  • CONNECT - uporablja se pri spletnih posrednikih za vzpostavitev SSL tunela

Status HTTP

  • 1xx: informativne kode (npr. 100: Continue)
  • 2xx: uspešno (npr. 200: OK)
  • 3xx: preusmeritev (npr. 301: Moved Permanently - prestavljen dokument + vrne novi naslov)
  • 4xx: napake pri odjemalcu (npr. 400: Bad Request; 404: Not Found – ni dokumenta)
  • 5xx: napake na strežniku (npr. 500: Internal Server Error; 505 HTTP Version Not Supported)

HTTPS

HTTPS je zavarovana različica HTTP. HTTPS vse podatke med strežnikom in odjemalcem pošilja v šifrirani obliki in s tem zagotovi zaupnost sporočil med prenašanjem. HTTPS uporablja SSL in TLS za to, da zakodira in s tem zaščiti promet pred vmesnimi opazovalci. Ta komunikacijski protokol navadno uporablja vhod številka 443. SSL, ki je bil narejen za HTTP, je posebno primeren, saj omogoča zaščito tudi kadar prihaja informacija za kodiranje samo s strani strežnika.

DNS - Sistem domenskih imen

Vsaka naprava v internetu ima svoj IP naslov. Ker pa si ljudje lažje kot množico številk zapomnimo besede, napravam poleg IP naslovov dodelimo še imena. Imena dodelimo tudi organizacijskim enotam, kot npr. šolam, podjetjem, ustanovam... Tudi države in mednarodne skupine imajo dodeljena svoja imena.

Na internetu so skupine računalnikov ali uporabnikov povezani v domeno. Zapis domene je sestavljen iz imen, ki so ločena s piko. Imena so običajno smiselno izbrana. Tak npr. ime domene arnes.si pomeni, da je to domena organizacije Arnes v Sloveniji. Domeno organizacija ali posameznik lahko registrira pri registratorjih. Ali je domena prosta za registracijo ali ne, pa lahko poizvemo s storitvijo WHOIS.

DNS strežniki

Za povezavo med imeni in IP naslovi skrbijo DNS strežniki, ki so povezani v sistem DNS. Računalniki v omrežju dostopajo do DNS strežnikov, da iz imena spletne strani pridobijo IP naslov za komunikacijo z WWW strežnikom, na katerem je dosegljiva spletna stran.

V DNS svetu v grobem poznamo dva tipa DNS strežnikov:

  • avtoritativni strežnik
  • rekurzivni strežnik

Avtoritativni strežnik ima podatke o domeni, rekurzivni strežnik pa zna najti podatke o domeni. Za vsako domeno naj bi bilo več avtoritativnih strežnikov. Avtoritativni strežniki nastopajo v dveh vlogah:

  • gospodar (ang. Master) - domenski strežnik, ki ima osnovno kopijo podatkov o domeni
  • suženj (angl. Slave) - domenski strežnik, ki ima kopijo podatkov o domeni (kopijo dobi iz "master" strežnika)

Priporočljivo je, da poleg "master" strežnika, obstaja vsaj še en "slave" strežnik, ki je po možnosti na kakšni drugi lokaciji.

Način delovanja DNS

Domenski prostor je drevesna struktura, ki se deli na domene.

Drevesna struktura domenskega prostora

Drevesna struktura domenskega prostora

Domene poimenujemo različno, glede na položaj v drevesu:

  • . - korenska (angl. root) domena
  • .it, .at, .si, .com - vrhnje domene
  • nsa-splet.si, arnes.si - domeni
  • webmail.arnes.si - poddomena

Tipi DNS zapisov

Pomembne kategorije podatkov, shranjene na DNS vsebujejo:

  • A - zapis (angl. Address record) preslika ime gostitelja v 32-bitni naslov IPv4
  • AAAA - zapis ali (angl. IPv6 address record) preslika ime gostitelja v 128-bitni naslov IPv6
  • CNAME - zapis (angl. Canonical Name record) naredi alias domene, domena s privzetim imenom (angl. aliased domain) dobi vse poddomene in zapise DNS originalne domene
  • MX - zapis (angl. Mail eXchange record) preslika domensko ime v spisek strežnikov (angl. mail exchange) za to domeno
  • PTR - zapis (angl. PoinTeR record) preslika naslov IPv4 v kanonično ime oz. vzdevek (angl. canonical name) za tega gostitelja
  • NS - zapis (angl. Name Server record) preslika domensko ime na spisek strežnikov DNS določenih za to domeno
  • SOA - zapis (angl. Start of Authority record) določi strežnik DNS, ki zagotavlja določene informacije o internetni domeni, elektronski pošti domenskega administratorja, domensko serijsko številko, in različne števce, ki osvežujejo področje
  • SRV (angl. Generalized Service Location record)
  • TXT - zapis dovoljuje administratorjem, da vstavijo poljuben tekst v zapis DNS, npr. komentarje in zapiske

Primer DNS iskanja

Ko v spletni brskalnik vtipkamo npr. www.nsa-splet.si, se zgodijo naslednje DNS poizvedbe:

  1. računalnik vpraša rekurzivni DNS strežnik, ki ga imate nastavljenega za internetno povezavo, po ustreznih zapisih za www.nsa-splet.si
  2. rekurzivni strežnik posreduje zahtevo avtoritativnim strežnikom za . (root)
  3. . (root) strežniki vrnejo spisek DNS strežnikov za .si
  4. rekurzivni strežnik nato posreduje zahtevo na avtoritativne strežnike za .si
  5. avtoritativni strežniki za .si vrnejo spisek avtoritativnih strežnikov za nsa-splet.si
  6. rekurzivni strežnik nato posreduje zahtevo avtoritativnim strežnikom za nsa-splet.si
  7. ker avtoritativni strežniki za nsa-splet.si vedo odgovor na naše vprašanje oz. poizvedbo, vrnejo rekurzivnemu strežniku ustrezne podatke (www.nsa-splet.si je alias za nsa-splet.si, ki ima IP naslov 193.9.21.187)
  8. rekurzivni strežnik računalniku posreduje odgovor, ki ga je dobil (www.nsa-splet.si je alias za nsa-splet.si, ki ima IP naslov 193.9.21.187)

V praksi ni nujno, da pride do vseh teh poizvedb, saj si rekurzivni strežniki za nekaj časa zapomnijo odgovor, ki so ga dobili z avtoritativnih strežnikov. Za koliko časa si zapomnijo odgovor, je odvisno od različnih nastavitev.

FTP

FTP - protokol za prenos datotek (angl. File transfer protocol) je programski standard za prenos datotek med računalniki z različnimi operacijskimi sistemi. Spada v aplikacijsko raven internetnega nabora protokolov.

FTP je 8-bitni protokol vrste strežnik-odjemnik in lahko prenaša datoteke brez dodatne obdelave, kot sta npr. uuencode ali MIME. FTP ima zelo dolgo latenco, kar pomeni, da je čas med oddajo zahtevka za prenos in dejanskim začetkom prenašanja podatkov lahko precejšen. FTP zahteva tudi prijavni postopek.

SMTP

SMTP protokol (angl. Simple Mail Transfer Protocol) skrbi za prenos elektronske pošte od pošiljateljevega računalnika do prejemnikovega strežnika. Včasih je tudi za pošiljanje elektronske pošte (za povezavo naprave in SMTP strežnika) potrebno uporabniško ime in geslo. SMTP je enostaven protokol, zato ima hudo omejitev, da prenaša lahko samo znake, zapisane v 7-bitni ASCII kodi. Kako pa potem lahko prenašamo z elektronsko pošto tudi

MIME

Dodatek MIME (angl. Multipurpose Internet Mail Extension) omogoča, da z elektronsko pošto prenesemo tudi dodatke, kot npr. besedilo, ki vsebuje znake č, š, ž, slike, zvok, video, programe.

POP3

POP3 protokol je namenjen prenosu elektronske pošte iz strežnika na prejemnikov računalnik. Z uporabo uporabniškega imena in gesla dostopa do strežnika in prenese na računalnik vso prispelo pošto. Protokol ima kar nekaj pomanjkljivosti: ne zna prenesti samo naslovov sporočil, ne moremo organizirati pošte na strežniku, ne moremo preveriti vsebine pred prenosom.

IMAP

IMAP (angl. Internet Mail Access Protocol) je internetni protokol na aplikacijskem sloju, ki se uporablja za dostop do e-pošte na oddaljenem strežniku iz osebnega računalnika. IMAP je ustvaril leta 1986 Mark Crispin, kot moderno alternativo zelo razširjenemu protokolu POP. Obstajajo določene razlike med njima, najbolj značilna je, da privzeto IMAP pušča pošto na strežniku, POP pa jo po odjemu izbriše.

IMAP protokol omogoča rokovanje s skladiščem pošte na strežniku, zna prenesti samo naslove sporočil, omogoča organizacijo pošte na strežniku in preverbo vsebine poštnega sporočila že pred prenosom na prejemnikov računalnik.

IRC

IRC (angl. Internet Relay Chat) je angleški izraz za spletni klepet, ki je eden od načinov skupinskega sporočanja in sporazumevanja na Internetu.

IRC je prosti protokol, ki uporablja za nadzor prenosa prtokol TCP, včasih pa tudi TLS. Za povezavo v omrežje se moramo z odjemalcem povezati na enega izmed mnogih strežnikov (najbolj znani slovenski je irc.arnes.si). Večina strežnikov ne zahteva registracije, vendar mora uporabnik pred prijavo vseeno nastaviti uporabniško ime.

Strežniki so povezani v omrežja s topologijo drevesa. Obstaja več omrežij, npr. freenode, DalNet, EFNet, IrcNET, OFTC, Quakenet. IRC omogoča prenos preprostega besedila, kar pomeni, da ga je mogoče uporabljati z enostavnim omrežnim protokolom, kot je telnet, ki uporablja 7-bitni nabor znakov ASCII (izjemoma 8-bitni). Kljub temu uporablja spremenjeni nabor ASCII znakov, ki med drugim omogoča tudi zapis šumnikov. Sporočila v IRC-u se prenašajo kot bloki, to pomeni, da se znaki ne prenesejo neposredno ob tipkanju, ampak je za to treba pritisniti Enter.

SSH

SSH (angl. Secure Shell) je protokol za upravljanje računalnika na daljavo. Podobno funkcijo ima tudi Telnet, vendar je Secure Shell varnejši, saj pošlje odjemalcu geslo v kriptirani obliki.

SSH deluje po načelu javnega in zasebnega ključa tako, da najprej strežniku pošlje javni ključ, s katerim je kriptirano in poslano geslo SSH. Ko SSH-strežnik prejme zakriptirano geslo, ga dekriptira s pomočjo svojega zasebnega ključa. Če se gesli ujemata, SSH-strežnik uporabnika spusti naprej in ta lahko prične z delom na računalniku. Po pregledu gesel SSH preveri tudi, če ima uporabnik pravico uporabljati konzolo. Za uporabo SSH-ja so potrebni posebni odjemalci.

V Linux sistemih je SSH-odjemalec vgrajen serijsko. Do njega je moč dostopati s konzolskim ukazom ssh (ssh [uporabniško_ime@]cilj). Na operacijskem sistemu Windows pa sta najbolj razširjena dva programa:

  • Putty - ne potrebuje namestitve, primeren je za uporabo na javnih računalnikih, npr. šola, služba, knjižnica
  • SSH TectiaTM Client - potrebuje namestitev