1.2.3 HTTP
Definice komunikace mezi WWW serverem a WWW klientem. Ve verzi 0.9 - co nejjednodušší. Verze 1.0 přidává podporu vyrovnávací paměti a inspiruje se protokolem el. pošty a MIME. |
Popis |
Klient naváže spojení se serverem prostřednictvím nějakého transportního protokolu (obvykle TCP) a položí mu dotaz. Server na něj odpoví. Pak obvykle uzavře spojení. Takováto komunikace je často označována jako bezstavový protokol (komunikace) neboť server o klientech ví pouze v "krátkém" okamžiku dotazu a odpovědi. Častým způsobem komunikace je komunikace s využitím nepřímého spojení mezi serverem a klientem prostřednictvím nějakého prostředníka. |
Komunikace |
Proxy - od klienta obdrží URL dekóduje jej a dotáže se serveru. Odpověď serveru předá klientovi. Často se využívá při přístupu odstíněných počítačů např. firewallem. Gateway - slouží jako prostředník pro překlad HTTP do jiného protokolu. Např. e-mail - zaslání požadavku na server přes e-mail - převedení do http - obdržení odpovědi v http - převedení do e-mail a odeslání klientovi. Proxy Cache - proxy s vyrovnávací pamětí - ukládá často používané stránky a klient pak nepřistupuje k těmto stránkám přímo u serverů, ale získává je z "paměti" proxy serveru. |
Prostředníci |
Dotaz - první řádek + hlavičky + prázdný řádek + tělo dokumentu první řádek - metoda + lokátor + verze HTTP - nejčastější metodou je GET a POST (post má tělo - údaje z formulářů), lokátor - objekt na serveru, kterého se dotaz týká hlavičky - název + : + hodnota - př. User-Agent: Mozila/4.76 [en] (WinNT; I) Odpověď - první řádek + hlavičky + prázdný řádek + tělo dokumentu první řádek - id protokolu + stavový kód + vysvětlení - př. HTTP/1.1 200 OK - dotaz vyřízen kladně hlavičky - název + : + hodnota - př. Server: IIS/2.0, Content-type: text/html |
Dotaz a odpověď |
Např.
Content-type - MIME typ předávaných dat |
Hlavičky |
SAMOSTATNÝ ÚKOL 3 |
|
|
V příkazovém řádku napište telnet gis.vsb.cz 80 a do vytvořeného spojení zašlete následující text (takový zasílá WWW serveru prohlížeč MSIE 6.0): GET / HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Accept-Language: cs Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) Host: 158.196.143.23:80 Connection: Keep-Alive Výstup, který obdržíte si uložte do souboru, k pozdější analýze na tutorialu. |
Zaslání požadavku na WWW server, obdržení odpovědi |
SAMOSTATNÝ ÚKOL 4 |
|
|
Pokud zvládáte programování v jazyce Java, můžete se pokusit o zprovoznění serveru, který vypíše obsah požadavku WWW klienta do systémového výstupu. Zde je kód serveru: import java.io.*; import java.net.*; import java.util.*; class SimpleThread extends Thread { Socket s; int id; public SimpleThread(String str, Socket ss, int cid){ super(str); s = ss; id=cid; } public void run() { try { DataInputStream dis = new DataInputStream(s.getInputStream()); String header; //ctení streamu z klienta while ((header = dis.readLine())!= null) { System.out.println(header); } } catch (IOException e) { System.out.println("Chyba cteni z klienta: " + e); } } } public class MyServer { public static void main(String args[]) { int iii=1; ServerSocket ser = null; Socket s = null; try { ser = new ServerSocket(2255); } catch (IOException e) { System.out.println("chyba Serveru: " + e); } while (true) { try { System.out.println("Starting Thread"); s = ser.accept(); new SimpleThread(new Integer(iii).toString(), s, iii).start(); iii++; } catch (IOException e) { System.out.println("chyba zapis: " + e); //System.exit(0); } } } } V prohlížeči zadejte adresu http://127.0.0.1:2255/. Výstup, který na straně serveru obdržíte srovnejte s textem v předchozím úkolu. |
Přijetí požadavku WWW klienta. |