HTTP (engl. HyperText Transfer Protocol) je mrežni protokol koji pripada sloju aplikacije OSI referentnog modela, predstavlja glavni i najčešći metod prenosa informacija na vebu.[1] Osnovna namena ovog protokola je isporučivanje HTML dokumenata, tj. veb stranica. HTTP je samo jedan od internet protokola. Razvoj i standardizaciju HTTP protokola nadgledaju W3C i Internet Engineering Task Force.

Razvoj HTTP-a je pokrenuo Tim Berners-Li u CERN-u 1989. godine i sažet je u jednostavan dokument koji opisuje ponašanje klijenta i servera koji koriste prvu verziju HTTP protokola koja je nazvana 0.9.[2]

Ta prva verzija HTTP protokola ubrzo je evoluirala u razrađeniju verziju koja je bila prva verzija prema dalekoj budućoj verziji 1.0.[3]

Razvoj ranih HTTP zahteva za komentare (RFC) započeo je nekoliko godina kasnije i bio je to koordinirani napor Radne grupe za internet inženjering (IETF) i WWW Konzorcijum (W3C), a rad se kasnije preselio na IETF.

HTTP/1 je finalizovan i potpuno dokumentovan (kao verzija 1.0) 1996. godine.[4] On je razvijen kao verzija 1.1 1997. godine, a zatim su njegove specifikacije ažurirane 1999. i 2014. godine.[5]

Njegovu bezbednu varijantu pod nazivom HTTPS koristi više od 76% veb-sajtova.[6]

HTTP/2 je efikasniji izraz HTTP-ove semantike „na žici“ i objavljen je 2015. godine; koristi ga više od 45% veb lokacija;[7] sada ga podržavaju skoro svi veb pregledači (96% korisnika)[8] i glavni veb serveri preko bezbednosti transportnog sloja (TLS) koristeći proširenje pregovaranja protokola aplikacionog sloja (ALPN)[9] gde je potreban TLS 1.2 ili noviji protokol.[10][11]

HTTP/3 je predloženi naslednik HTTP/2;[12][13] koristi ga više od 20% veb lokacija;[14] sada ga podržavaju mnogi veb pretraživači (73% korisnika).[15] HTTP/3 koristi QUIC umesto TCP za osnovni transportni protokol. Kao i HTTP/2, on ne zastareva prethodne glavne verzije protokola. Podrška za HTTP/3 je prvo dodata u Cloudflare i Gugl kroumu,[16][17] i takođe je omogućena u Mozila fajerfoksu.[18]

HTTP protokol uredi

HTTP je protokol za komunikaciju između servera i klijenta, koji funkcioniše po principu zahtev/odgovor. HTTP klijent, koji je najčešće veb pregledač, inicira prenos podataka nakon što uspostavi TCP/IP vezu s udaljenim veb-serverom na određenom portu. Server konstantno osluškuje zahteve na određenom mrežnom komunikacijskom portu (tipično port 80), čekajući da se klijent poveže i pošalje svoj zahtev. Zahtev se sastoji od osnovne HTTP komande (čija je sintaksa propisana standardom i koja se sastoji od naziva komande, imena traženog dokumenta i verzije podržanog HTTP-a) i zaglavlja koje se sastoji od određenog broja redova teksta koji pobliže određuju aspekte zahteva.

Zahtev klijenta se obrađuje na serveru i, u zavisnosti od ispravnosti zahteva i mogućnosti zadovoljavanja istog, klijentu se šalje odgovarajući odgovor. Odgovor se sastoji od izveštaja o statusu zahteva (koji se sastoji od trocifrenog koda i kratkog deskriptivnog teksta statusa, npr. 200 ОК) i od konkretnog odgovora, ukoliko je zahtev moguće zadovoljiti. Odgovor se sastoji od zaglavlja, koje je iste sintakse kao i zaglavlje zahteva i daje osnovne podatke o prirodi odgovora, i od eventualnog konkretnog sadržaja koji se tražio u zahtevu. U zavisnosti od verzije HTTP protokola kao i od zaglavlja zahteva, veza se može nakon toga prekinuti, a može se ista veza iskoristiti za slanje novog zahteva, radi uštede vremena.

HTTP je protokol aplikacionog sloja dizajniran u okviru paketa Internet protokola. Njegova definicija pretpostavlja osnovni i pouzdan protokol transportnog sloja,[19] stoga se obično koristi Transmisioni kontrolni protokol (TCP). Međutim, HTTP se može prilagoditi da koristi nepouzdane protokole kao što je UDP, na primer u HTTPU i Jednostavan protokol otkrivanja servisa (SSDP).

HTTP resursi se identifikuju i nalaze na mreži pomoću Uniformnog resursnog lokatora (URL), koristeći šeme Uniformnih resursnih identifikatora (URI) http i https. Kao što je definisano u RFC 3986, URI su kodirani kao hiperveze u HTML dokumentima, tako da formiraju međusobno povezane hipertekstualne dokumente.

U HTTP/1.0 zasebna veza sa istim serverom se pravi za svaki zahtev za resursom.[20]

U HTTP/1.1 umesto toga TCP veza se može ponovo koristiti za više zahteva za resurse (tj. HTML stranice, okviri, slike, skripte, tabele stilova itd.).[21][22]

HTTP/1.1 komunikacije stoga doživljavaju manje kašnjenja, jer uspostavljanje TCP veza predstavlja znatne troškove, posebno u uslovima velikog saobraćaja.[23]

HTTP/2 je revizija prethodnog HTTP/1.1 kako bi se održao isti klijent-server model i iste metode protokola, ali sa ovim razlikama u redosledu:

  • da se koristi komprimovani binarni prikaz metapodataka (HTTP zaglavlja) umesto tekstualnog, tako da zaglavlja zahtevaju mnogo manje prostora;
  • da koristite jednu TCP/IP (obično šifrovanu) vezu po pristupnom domenu servera umesto 2 do 8 TCP/IP veza;
  • da se koristi jedan ili više dvosmernih tokova po TCP/IP konekciji u kojoj se HTTP zahtevi i odgovori raščlanjuju i prenose u malim paketima da bi se skoro rešio problem HOLB-a (blokiranja začelja linije).[note 1]
  • da bi se dodala mogućnost potiskivanja kojom se omogućava serverskoj aplikaciji da šalje podatke klijentima kad god su novi podaci dostupni (bez prisiljavanja klijenata da povremeno zahtevaju nove podatke od servera korišćenjem metoda anketiranja).[24]

Primer uredi

Primer jednog zahteva za dokument od strane klijenta:

GET /index.html HTTP/1.1
Host: www.example.com

Primer odgovora na HTTP zahtev:

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
...

Tri tačke označavaju sadržaj traženog dokumenta.

HTTPS je verzija HTTP protokola koja koristi algoritam SSL/TLS za zaštitu sadržaja zahteva i odgovora od eventualnog prisluškivanja. Ovaj protokol obično koristi port 443.

Lokacija HTTP (i HTTPS) dokumenata se određuje pomoću URL adrese.

Istorija uredi

 
Tim Berners-Li

Termin hipertekst je skovao Ted Nelson 1965. u projektu Ksanadu, što je zapravo bilo inspirisano vizijom Vanevara Buša iz 1930-ih o sistemu „memeks“ za pronalaženje informacija i upravljanje zasnovanog na mikrofilmima, opisanom u njegovom eseju iz 1945. godine „Kako možemo da mislimo“. Tim Berners-Li i njegov tim u CERN-u su zaslužni za izum originalnog HTTP-a, zajedno sa HTML-om i pripadajućom tehnologijom za veb server i korisnički interfejs klijenta koji se zove veb pretraživač. Berners-Li je prvi put predložio projekat „WorldWideWeb” 1989. godine, sada poznat kao World Wide Web.

Prvi veb server je pokrenut 1990. godine.[25][26] Korišćeni protokol je imao samo jedan metod, odnosno GET, koji bi zahtevao stranicu sa servera.[27] Odgovor sa servera je uvek bila HTML stranica.[2]

Pregled HTTP prekretničkih verzija uredi

Verzija Godina uvođenja Trenutni status
HTTP/0.9 1991 Zastarelo
HTTP/1.0 1996 Zastarelo
HTTP/1.1 1997 Standard
HTTP/2 2015 Standard
HTTP/3 2020 Nacrt

Vidi još uredi

Napomene uredi

  1. ^ U praksi, ovi tokovi se koriste kao višestruke TCP/IP podveze za multipleksiranje istovremenih zahteva/odgovora, čime se u velikoj meri smanjuje broj stvarnih TCP/IP veza na strani servera, sa 2..8 po klijentu na 1, i omogućava mnogo više klijenata koji se mogu simultano uslužiti.

Reference uredi

  1. ^ Fielding, Roy T.; Gettys, James; Mogul, Jeffrey C.; Nielsen, Henrik Frystyk; Masinter, Larry; Leach, Paul J.; Berners-Lee, Tim (jun 1999). Hypertext Transfer Protocol – HTTP/1.1. IETF. doi:10.17487/RFC2616 . RFC 2616. 
  2. ^ a b Tim Berner-Lee (1991-01-01). „The Original HTTP as defined in 1991”. www.w3.org (na jeziku: engleski). World Wide Web Consortium. Pristupljeno 2010-07-24. 
  3. ^ Tim Berner-Lee (1992). „Basic HTTP as defined in 1992”. www.w3.org (na jeziku: engleski). World Wide Web Consortium. Pristupljeno 2021-10-19. 
  4. ^ In RFC 1945. That specification was then overcome by HTTP/1.1.
  5. ^ RFC 2068 (1997) was obsoleted by RFC 2616 in 1999, which was likewise replaced by RFC 7230 in 2014.
  6. ^ „Usage Statistics of Default protocol https for websites”. w3techs.com. Pristupljeno 2021-11-03. 
  7. ^ „Usage Statistics of HTTP/2 for websites”. w3techs.com. Pristupljeno 2021-11-02. 
  8. ^ „Can I use... Support tables for HTML5, CSS3, etc”. caniuse.com. Pristupljeno 2021-11-02. 
  9. ^ „Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension”. IETF. jul 2014. RFC 7301 . 
  10. ^ Belshe, M.; Peon, R.; Thomson, M. „Hypertext Transfer Protocol Version 2, Use of TLS Features”. Arhivirano iz originala 15. 07. 2013. g. Pristupljeno 2015-02-10. 
  11. ^ Benjamin, David. „Using TLS 1.3 with HTTP/2”. tools.ietf.org (na jeziku: engleski). Pristupljeno 2020-06-02. „This lowers the barrier for deploying TLS 1.3, a major security improvement over TLS 1.2. 
  12. ^ Bishop, Mike (2. 2. 2021). „Hypertext Transfer Protocol Version 3 (HTTP/3)”. tools.ietf.org (na jeziku: engleski). Pristupljeno 2021-04-07. 
  13. ^ Cimpanu, Catalin. „HTTP-over-QUIC to be renamed HTTP/3 | ZDNet”. ZDNet (na jeziku: engleski). Pristupljeno 2018-11-19. 
  14. ^ „Usage Statistics of HTTP/3 for websites”. w3techs.com. Pristupljeno 2021-11-02. 
  15. ^ „Can I use... Support tables for HTML5, CSS3, etc”. caniuse.com. Pristupljeno 2021-11-02. 
  16. ^ Cimpanu, Catalin (26. 9. 2019). „Cloudflare, Google Chrome, and Firefox add HTTP/3 support”. ZDNet. Pristupljeno 27. 9. 2019. 
  17. ^ „HTTP/3: the past, the present, and the future”. The Cloudflare Blog (na jeziku: engleski). 2019-09-26. Pristupljeno 2019-10-30. 
  18. ^ „Firefox Nightly supports HTTP 3 - General - Cloudflare Community”. 2019-11-19. Arhivirano iz originala 06. 06. 2020. g. Pristupljeno 2020-01-23. 
  19. ^ „Overall Operation”. RFC 2616. p. 12. sec. 1.4. doi:10.17487/RFC2616 . RFC 2616. 
  20. ^ „Overall Operation”. RFC 1945. pp. 6–8. sec. 1.3. doi:10.17487/RFC1945 . RFC 1945. 
  21. ^ „Connection Management: Connection”. RFC 7230, HTTP/1.1: Message Syntax and Routing. pp. 51–52. sec. 6.1. doi:10.17487/RFC7230 . RFC 7230. 
  22. ^ „Connection Management: Persistence”. RFC 7230, HTTP/1.1: Message Syntax and Routing. pp. 52–53. sec. 6.3. doi:10.17487/RFC7230 . RFC 7230. 
  23. ^ „Classic HTTP Documents”. W3.org. 1998-05-14. Pristupljeno 2010-08-01. 
  24. ^ „HTTP/2 Protocol Overview”. RFC 7540, Hypertext Transfer Protocol Version 2 (HTTP/2). p. 5. sec. 2. doi:10.17487/RFC7540 . RFC 7540. 
  25. ^ „Invention Of The Web, Web History, Who Invented the Web, Tim Berners-Lee, Robert Cailliau, CERN, First Web Server”. LivingInternet (na jeziku: engleski). Pristupljeno 2021-08-11. 
  26. ^ Berners-Lee, Tim (1990-10-02). „daemon.c - TCP/IP based server for HyperText”. www.w3.org. Pristupljeno 2021-08-11. 
  27. ^ Berners-Lee, Tim. „HyperText Transfer Protocol”. World Wide Web Consortium. Pristupljeno 31. 8. 2010. 

Literatura uredi

Spoljašnje veze uredi