From Wikipedia, the free encyclopedia
HTTP jeb hiperteksta transporta protokols[1] (angļu: HyperText Transfer Protocol) ir lietojumslāņa protokols, kas paredzēts datu apmaiņai starp tīmekļa serveriem un pārlūkprogrammām. Tas ir galvenais informācijas pārraides veids vispasaules tīmeklī. Tā sākotnējā funkcija bija veids, kādā publicēt un pārraidīt hiperteksta dokumentus (HTML lapas), bet tagad ar to var pārraidīt arī cita veida datus.
HTTP ir pieprasījuma/atbildes protokols starp klientiem un serveriem. Transakciju vienmēr sāk klients, izveidojot TCP/IP savienojumu uz servera noteiktu portu (80 pēc noklusējuma) un nosūtot pieprasījumu serverim. HTTP serveris, kurš klausās šo portu, gaida, ka klients nosūtīs pieprasījumu, piemēram, GET / HTTP/1.1
Pieprasījums var būt papildināts ar e-pasta stila MIME ziņojumu, kurš satur noteiktu skaitu informējošas galvenes virknes, kas apraksta dažādus pieprasījuma aspektus, aiz kā seko opcionāls ķermenis ar patvaļīgiem datiem. Pēc pieprasījuma virknes saņemšanas serveris atpakaļ nosūta atbildes virkni, piemēram, "200 OK" (pieprasījums izpildīts veiksmīgi), un savu ziņojumu, kura ķermenis satur pieprasīto failu, kļūdas paziņojumu vai citu informāciju.
HTTP 1.0 atšķiras no citiem uz TCP balstītiem protkoliem, piemēram FTP, ar to, ka savienojums tiek aizvērts tūlīt pēc pieprasījuma izpildes. Tas padara HTTP protokolu īpaši piemērotu vispasaules tīmeklim, kur lappuses bieži vien satur saites uz citiem serveriem. Savukārt HTTP 1.1 izmanto pastāvīgu TCP savienojumu — tādējādi pēc katra pieprasījuma nav jāveido jauns TCP savienojums.
HTTP ir bezstāvokļa protokols — gan serveris, gan klients neuztur savienojuma stāvokli — serveris nezina, vai klients ir saņēmis atbildi, klients pie timeout kļūdas nevar zināt, vai serveris ir apstrādājis pieprasījumu
Zemāk ir redzams saziņas piemērs starp HTTP klientu un HTTP serveri, kas darbojas uz www.google.lv 80. porta.
Klienta pieprasījums:
GET / HTTP/1.1 Host: www.google.lv
(papildināts ar rindas pārnesumu)
Servera atbilde:
HTTP/1.1 200 OK Content-Length: 3059 Server: GWS/2.0 Date: Sat, 11 Jan 2003 02:44:04 GMT Content-Type: text/html Cache-control: private Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.lv Connection: keep-alive
(papildināts ar rindas pārnesumu un Google sākumlapas HTML kodu)
HTTP 1.0 klients sūta pieprasījumu serverim un serveris sūta atbildi atpakaļ klientam. Pēc tā savienojums tiek izbeigts. Savukārt HTTP 1.1 atbalsta pastāvīgos savienojumus. Tas ļauj klientam nosūtīt pieprasījumu serverim, saņemt atbildi, un tad nosūtīt papildu pieprasījumus un saņemt papildu atbildes nekavējoties. Šo atkārtoto pieprasījumu laikā TCP savienojums netiek izbeigts, līdz ar to papildu datu plūsma TCP dēļ ir mazāka.
Klients sūta pieprasījumu serverim. Pieprasījums satur atslēgvārdu (verb) un pieprasītā resursa adresi (kā failsistēmas ceļu), un var saturēt papildu headerus (formātā nosaukums:vērtība), un vēl dažu atslēgvārdu (ne GET) gadījumā var saturēt datus. Servera atbilde satur atbildes kodu (cik veiksmīgi pieprasījums tika izpildīts), papildu headerus un var saturēt atbildes datus.
Visplašāk lietotie pieprasījumu veidi ir GET un POST, lielākā daļa serveru neko citu neatbalsta (vai arī jebko citu atslēdz drošības apsvērumu dēļ).
Tie ir 3ciparu skaitļi, kas satur informāciju, par to cik veiksmīgi izdevās izpildīt pieprasījumu:
Starp klientu un serveri var būt starpniekserveris (proxy). Tur izšķir 2 veidus:
Jebkurā gadījumā starpniekserveri cauri ejošajiem pieprasījumiem var pievienot papildu headerus.
Reverse proxy gadījumā starpniekserveris uzvedas kā parasts HTTP serveris, tikai pārsūta saņemtos pieprasījumus uz attiecīgo serveri, nevis apstrādā uz vietas (atskaitot pieprasījumus, kurus var atbildēt ar datiem no cache).
Forward proxy gadījumā HTTP pieprasījumiem jāsatur pilno URL, kas satur servera hostname, (nevis relatīvo, kā slēdzoties pa taisno). HTTPS gadījumā kients lieto CONNECT pieprasījumu, kas satur tikai servera hostname un starpniekserveris tad izveido TCP savienojumu, caur kuru darbina TLS. Šo metodi lieto arī, lai caur starpniekserveri dabūtu cauri ne-HTTP protokolus.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.