Apie HTTP protokolą

Pasaulinis voratinklis (www) pamažu virsta visuotiniu laukimu ("wait"). Duomenų paketai kartais apsuka Žemę bent pora kartų, kad pasiektų kaimyniniame pastate esantį adresatą.

HTTP, - tai hyperteksto perdavimo protokolas, www pagrindas. Tačiau šis pavadinimas klaidina, - jis iš tikro yra duomenų perdavimo protokolas, leidžiantis efektyviai panaudoti nuorodas.

Galimi trys HTTP operacijų tipai

1. Tiesioginis, kai realizuojamas tiesioginis kliento (pvz., peržiūros programos) ir serverio, (pvz., WWW) TCP ryšis. Kas vyksta jo metu, galite paskaityti atskirai.

2. Panaudojant papildomus (tarpinius) serverius. Galimi trys atvejai:


             +----------+  HTTP užklausa         +----------+  HTTP užklausa +----------+
proxy        :          : -------------> +-------+ Papil-   : -------------> :          :
(surinkėjas) : Klientas :                : Proxy : domas    :                : Serveris :
             :          : <------------> +-------+ serveris : <------------> :          :
             +----------+   TCP ryšys            +----------+   TCP ryšys    +----------+



             +----------+  HTTP užklausa +----------+          HTTP užklausa  +----------+
gateway      :          : -------------> : Papil-   +--------+ -------------> :          :
(tiltas)     : Klientas :                : domas    : gateway:                : Serveris :
             :          : <------------> : serveris +--------+ <------------> :          :
             +----------+   TCP ryšys    +----------+            TCP ryšys    +----------+




             +----------+               HTTP užklausa                +----------+
tunel        :          : -----------------------------------------> :          :
(tunelis)    : Klientas :                +----------+                : Serveris :
             :          : <------------> : tunelis  : <------------> :          :
             +----------+   TCP ryšys    +----------+   TCP ryšys    +----------+


"Proxy" veikia klientų pusėje ir jų užklausas perduoda serveriui. Tai gali būti ir lokalaus tinklo ekranas ("firewall"), kuriam serveris turi "prisistatyti", kad galėtų bendrauti su surinkėju, kuris priima tik tuos atsakymus, kurie praėjo pro filtrą. Kitu atveju, kai valdomos skirtingos kliento ir serverio HTTP versijos, "proxy" atlieka vertėjo paslaugas.

"Gateway" (tiltas) klientui prisistato, lyg jis ir būtų tikrasis serveris. Per jį kiti serveriai, neturintys tiesioginio ryšio su klientu, gali perduoti informaciją. Naudojant kaip ekraną ("firewall"), prisistatyti turi klientas (o ne serveris, kaip "proxy" atveju), kuris po to (jei užklausa patenkinama) prileidžiamas prie serverio. Kitu atveju, tai ryšio palaikymas su serveriu, nedirbančio HTTP protokolu, pvz., FTP ar "Gopher".

"Tunelis" paprasčiausiai tėra jungtis tarp dviejų TCP ryšių. HTTP paketai keliauja nepakitę. Jie naudojami, kai tarp kliento ir serverio yra tarpinis serveris, o kita nesvarbu.

3. Trečiasis HTTP operacijų tipas - "kašė", t.y. ankstesnių užklausų ir atsakymų įsiminimas.


+----------+  HTTP užklausa +----------+ Pradinė HTTP užklausa  +----------+
:          : -------------> : Kašės    : ---------------------> :          :
: Klientas :                : serveris :                        : Serveris :
:          : <------------> :          : <--------------------> :          :
:          :   TCP ryšys    :          :        TCP ryšys       :          :
:          :                :          :                        :          :
:          : <------------  :          : <--------------------  :          :
+----------+   Atsakymas    +----------+   Pradinis atsakymas   +----------+

Jei užklausa sutampa su kuria nors, saugoma "kašės" serveryje, - iškart siunčiamas atsakymas. "Kašė" gali būti tiek kliento, tiek serverio pusėje. Ne visas tranzakcijas galima įsiminti, - ir tai gali valdyti tiek klientas, tiek serveris.

HTTP pranešimai būna dviejų tipų: užklausa ir atsakymas. Galimi veiksmai;
GET - užklausa informacijos gavimui;
POST - užklausa prijungtos esybės, vietoje nurodyto adreso, paėmimui;
PUT - užklausa prijungtos esybės paėmimui ir padėjimui nurodytu adresu;
DELETE - užklausa nurodyto resurso pašalinimui.

Atsakymas gali būti HTML esybė. Jame taip pat turi būti numatytas klaidos kodas ir t.t. Šiek tiek apie tai galite paskaityti jau minėtame straipsnelyje Unix komandinės eilutė