HTTP (енгл. HyperText Transfer Protocol) је мрежни протокол који припада слоју апликације ОСИ референтног модела, представља главни и најчешћи метод преноса информација на вебу.[1] Основна намена овог протокола је испоручивање HTML докумената, тј. веб страница. HTTP је само један од интернет протокола. Развој и стандардизацију HTTP протокола надгледају W3C и Internet Engineering Task Force.

Развој HTTP-а је покренуо Тим Бернерс-Ли у CERN-у 1989. године и сажет је у једноставан документ који описује понашање клијента и сервера који користе прву верзију HTTP протокола која је названа 0.9.[2]

Та прва верзија HTTP протокола убрзо је еволуирала у разрађенију верзију која је била прва верзија према далекој будућој верзији 1.0.[3]

Развој раних HTTP захтева за коментаре (RFC) започео је неколико година касније и био је то координирани напор Радне групе за интернет инжењеринг (IETF) и WWW Конзорцијум (W3C), а рад се касније преселио на IETF.

HTTP/1 је финализован и потпуно документован (као верзија 1.0) 1996. године.[4] On je rазвиjen као верзија 1.1 1997. године, а затим су његове спецификације ажуриране 1999. и 2014. године.[5]

Његову безбедну варијанту под називом HTTPS користи више од 76% веб-сајтова.[6]

HTTP/2 је ефикаснији израз HTTP-ове семантике „на жици“ и објављен је 2015. године; користи га више од 45% веб локација;[7] сада га подржавају скоро сви веб прегледачи (96% корисника)[8] и главни веб сервери преко безбедности транспортног слоја (TLS) користећи проширење преговарањa протокола апликациonog слоја (ALPN)[9] где је потребан TLS 1.2 или новији протокол.[10][11]

HTTP/3 је предложени наследник HTTP/2;[12][13] користи га више од 20% веб локација;[14] сада га подржавају многи веб претраживачи (73% корисника).[15] HTTP/3 користи QUIC уместо TCP за основни транспортни протокол. Као и HTTP/2, он не застарева претходне главне верзије протокола. Подршка за HTTP/3 је прво додата у Cloudflare и Гугл кроуму,[16][17] и такође је омогућена у Мозила фајерфоксу.[18]

HTTP протокол уреди

HTTP је протокол за комуникацију између сервера и клијента, који функционише по принципу захтев/одговор. HTTP клијент, који је најчешће веб прегледач, иницира пренос података након што успостави TCP/IP везу с удаљеним веб-сервером на одређеном порту. Сервер константно ослушкује захтеве на одређеном мрежном комуникацијском порту (типично порт 80), чекајући да се клијент повеже и пошаље свој захтев. Захтев се састоји од основне HTTP команде (чија је синтакса прописана стандардом и која се састоји од назива команде, имена траженог документа и верзије подржаног HTTP-а) и заглавља које се састоји од одређеног броја редова текста који поближе одређују аспекте захтева.

Захтев клијента се обрађује на серверу и, у зависности од исправности захтева и могућности задовољавања истог, клијенту се шаље одговарајући одговор. Одговор се састоји од извештаја о статусу захтева (који се састоји од троцифреног кода и кратког дескриптивног текста статуса, нпр. 200 ОК) и од конкретног одговора, уколико је захтев могуће задовољити. Одговор се састоји од заглавља, које је исте синтаксе као и заглавље захтева и даје основне податке о природи одговора, и од евентуалног конкретног садржаја који се тражио у захтеву. У зависности од верзије HTTP протокола као и од заглавља захтева, веза се може након тога прекинути, а може се иста веза искористити за слање новог захтева, ради уштеде времена.

HTTP је протокол апликационог слоја дизајниран у оквиру пакета Интернет протокола. Његова дефиниција претпоставља основни и поуздан протокол транспортног слоја,[19] стога се обично користи Трансмисиони контролни протокол (TCP). Међутим, HTTP се може прилагодити да користи непоуздане протоколе као што је UDP, на пример у HTTPU и Једноставан протокол откривања сервиса (SSDP).

HTTP ресурси се идентификују и налазе на мрежи помоћу Униформног ресурсног локатора (URL), користећи шеме Униформних ресурсних идентификатора (URI) http и https. Као што је дефинисано у RFC 3986, URI су кодирани као хипервезе у HTML документима, тако да формирају међусобно повезане хипертекстуалне документе.

У HTTP/1.0 засебна веза са истим сервером се прави за сваки захтев за ресурсом.[20]

У HTTP/1.1 уместо тога TCP веза се може поново користити за више захтева за ресурсе (тј. HTML странице, оквири, слике, скрипте, табеле стилова итд.).[21][22]

HTTP/1.1 комуникације стога доживљавају мање кашњења, јер успостављање TCP веза представља знатне трошкове, посебно у условима великог саобраћаја.[23]

HTTP/2 је ревизија претходног HTTP/1.1 како би се одржао исти клијент-сервер модел и исте методе протокола, али са овим разликама у редоследу:

  • да се користи компримовани бинарни приказ метаподатака (HTTP заглавља) уместо текстуалног, тако да заглавља захтевају много мање простора;
  • да користите једну TCP/IP (обично шифровану) везу по приступном домену сервера уместо 2 до 8 TCP/IP веза;
  • да се користи један или више двосмерних токова по TCP/IP конекцији у којој се HTTP захтеви и одговори рашчлањују и преносе у малим пакетима да би се скоро решио проблем HOLB-а (блокирања зачеља линије).[note 1]
  • да би се додала могућност потискивања којом се омогућава серверској апликацији да шаље податке клијентима кад год су нови подаци доступни (без присиљавања клијената да повремено захтевају нове податке од сервера коришћењем метода анкетирања).[24]

Пример уреди

Пример једног захтева за документ од стране клијента:

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

Пример одговора на HTTP захтев:

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
...

Три тачке означавају садржај траженог документа.

HTTPS је верзија HTTP протокола која користи алгоритам SSL/TLS за заштиту садржаја захтева и одговора од евентуалног прислушкивања. Овај протокол обично користи порт 443.

Локација HTTP (и HTTPS) докумената се одређује помоћу URL адресе.

Историја уреди

 
Тим Бернерс-Ли

Термин хипертекст је сковао Тед Нелсон 1965. у пројекту Ксанаду, што је заправо било инспирисано визијом Ваневара Буша из 1930-их о систему „мемекс“ за проналажење информација и управљање заснованог на микрофилмима, описаном у његовом есеју из 1945. године „Како можемо да мислимо“. Тим Бернерс-Ли и његов тим у CERN-у су заслужни за изум оригиналног HTTP-а, заједно са HTML-ом и припадајућом технологијом за веб сервер и кориснички интерфејс клијента који се зове веб претраживач. Бернерс-Ли је први пут предложио пројекат „WorldWideWeb” 1989. године, сада познат као World Wide Web.

Први веб сервер је покренут 1990. године.[25][26] Коришћени протокол је имао само један метод, односно GET, који би захтевао страницу са сервера.[27] Одговор са сервера је увек била HTML страница.[2]

Преглед HTTP прекретничких верзија уреди

Верзија Година увођења Тренутни статус
HTTP/0.9 1991 Застарело
HTTP/1.0 1996 Застарело
HTTP/1.1 1997 Стандард
HTTP/2 2015 Стандард
HTTP/3 2020 Нацрт

Види још уреди

Напомене уреди

  1. ^ У пракси, ови токови се користе као вишеструке TCP/IP подвезе за мултиплексирање истовремених захтева/одговора, чиме се у великој мери смањује број стварних TCP/IP веза на страни сервера, са 2..8 по клијенту на 1, и омогућава много више клијената који се могу симултано услужити.

Референце уреди

  1. ^ Fielding, Roy T.; Gettys, James; Mogul, Jeffrey C.; Nielsen, Henrik Frystyk; Masinter, Larry; Leach, Paul J.; Berners-Lee, Tim (јун 1999). Hypertext Transfer Protocol – HTTP/1.1. IETF. doi:10.17487/RFC2616 . RFC 2616. 
  2. ^ а б Tim Berner-Lee (1991-01-01). „The Original HTTP as defined in 1991”. www.w3.org (на језику: енглески). World Wide Web Consortium. Приступљено 2010-07-24. 
  3. ^ Tim Berner-Lee (1992). „Basic HTTP as defined in 1992”. www.w3.org (на језику: енглески). World Wide Web Consortium. Приступљено 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. Приступљено 2021-11-03. 
  7. ^ „Usage Statistics of HTTP/2 for websites”. w3techs.com. Приступљено 2021-11-02. 
  8. ^ „Can I use... Support tables for HTML5, CSS3, etc”. caniuse.com. Приступљено 2021-11-02. 
  9. ^ „Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension”. IETF. јул 2014. RFC 7301 . 
  10. ^ Belshe, M.; Peon, R.; Thomson, M. „Hypertext Transfer Protocol Version 2, Use of TLS Features”. Архивирано из оригинала 15. 07. 2013. г. Приступљено 2015-02-10. 
  11. ^ Benjamin, David. „Using TLS 1.3 with HTTP/2”. tools.ietf.org (на језику: енглески). Приступљено 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 (на језику: енглески). Приступљено 2021-04-07. 
  13. ^ Cimpanu, Catalin. „HTTP-over-QUIC to be renamed HTTP/3 | ZDNet”. ZDNet (на језику: енглески). Приступљено 2018-11-19. 
  14. ^ „Usage Statistics of HTTP/3 for websites”. w3techs.com. Приступљено 2021-11-02. 
  15. ^ „Can I use... Support tables for HTML5, CSS3, etc”. caniuse.com. Приступљено 2021-11-02. 
  16. ^ Cimpanu, Catalin (26. 9. 2019). „Cloudflare, Google Chrome, and Firefox add HTTP/3 support”. ZDNet. Приступљено 27. 9. 2019. 
  17. ^ „HTTP/3: the past, the present, and the future”. The Cloudflare Blog (на језику: енглески). 2019-09-26. Приступљено 2019-10-30. 
  18. ^ „Firefox Nightly supports HTTP 3 - General - Cloudflare Community”. 2019-11-19. Архивирано из оригинала 06. 06. 2020. г. Приступљено 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. Приступљено 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 (на језику: енглески). Приступљено 2021-08-11. 
  26. ^ Berners-Lee, Tim (1990-10-02). „daemon.c - TCP/IP based server for HyperText”. www.w3.org. Приступљено 2021-08-11. 
  27. ^ Berners-Lee, Tim. „HyperText Transfer Protocol”. World Wide Web Consortium. Приступљено 31. 8. 2010. 

Литература уреди

Спољашње везе уреди