c:\temp\viijhbwftbdiwunnawqjivgev.doc
11.4.2005
1 Cvičení č. 4 Nespojovaná spolupráce – Modelování spolupráce klient - server pomocí telnetu, specifických portů a příkazů z jednotlivých protokolů. Ukázat efekt ukončení spojení v praxi. – Otevření záznamového souboru a zápis komunikace obou partnerů. Analýza záznamového (zachytávacího, protokolovacího) souboru. – Rozdíly v komunikaci pomocí verzí 0.9, 1.0 a 1.1. 1.1 Protokol HTTP 1.1.1 Chybné požadavky Get / HTTP/1.0 404 Not found Server: Netscape-Communications/1.1 Date: Thursday, 04-Nov-99 11:59:21 GMT Content-length: 207 Content-type: text/html <TITLE>Not Found
Not Found
The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it.
1.1.2 Správné požadavky 1.1.2.1 Telnet www.vse.cz#80 Záznamový soubor: capwww3 GET / Obdobně: http://www.cesnet.cz/ (CESNET) http://www.cuni.cz/pasnet (přesměrování na dec54.ruk.cuni.cz)
1.1.2.2 Telnet beta.vse.cz#80 GET / HTTP/1.0 GET /~pinkas/ HTTP/1.0 GET /~jjkastl/ HTTP/1.0
1.1.2.3 Telnet alfa.vse.cz#80 Soubor capalfa.htm – záznam alfa.vse.cz nb.vse.cz <TITLE>VSE - WWW na nb.vse.cz 1
www stránky s obrázky Absolutní URL
2
C:\Temp\VIIJHBWFTBDIWUNNAWQJIVGEV.doc
Vysoka skola ekonomicka v Praze
Informace z kateder
Cestina:
MS Windows ISO Latin2 Mac CZ PC Latin2 ASCII
Informace z jednotlivych fakult ci kateder:
Fakulta financi a ucetnictvi
Katedra verejnych financi ... KVF …
1.1.2.4 telnet nb.vse.c#80 GET /
proč chybějí obrázky? relativní URL, ruční oprava
1.1.3 Další metody protokolu HTTP HEAD Options trace POST PUT HEAD http://www.vse.cz/ HTTP/1.0 OPTIONS http://www.vse.cz/ HTTP/1.0 TRACE http://www.vse.cz/ HTTP/1.0 OPTIONS * HTTP/1.0 HEAD
URL je *, tj. dotaz na možnosti serveru jako GET, ale jen hlavičky
Výpis ze souboru access.log d:\Apache 146.102.64.219 - - [04/Apr/2002:16:55:36 +0200] "POST /cgi-bin/PridatDodavatele.pl HTTP/1.1" 200 294 "http://n412h02.vse.cz/~pinkas/texty/Dodavatel.htm" "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)" Výpis ze souboru access.log na beta.vse.cz v adresáři /var/log/httpd/access.log 146.102.64.219 - - [11/Apr/2002:11:37:12 +0200] "POST /ISO/.ladeni/cgi-bin/post.pl HTTP/1.0" 200 143
2
c:\temp\viijhbwftbdiwunnawqjivgev.doc
11.4.2005
[Tue Apr 09 19:27:28 2002] [error] [client 146.102.64.219] cgi-lib.pl: Unknown Content-type: application/x-www-form-urlencoded; charset=windows-1250 http://beta.vse.cz/ISO/.ladeni/cgi-bin/post.pl ( REMOTE_HOST: 146.102.64.219 REMOTE_PORT: 1058 HTTP/1.0 ) HOST: beta.vse.cz COOKIE: charset=windows-1250 PRAGMA: no-cache ACCEPT_LANGUAGE: cs,en;q=0.7,zh;q=0.3 CONNECTION: Keep-Alive ACCEPT: application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, */* USER_AGENT: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) CONTENT_TYPE: application/x-www-form-urlencoded CONTENT_LENGTH: 62 jmeno=%C8estm%EDr+%C8ech&ulice=%C8iho%9A%9D%2C+Na+b%EClidle+10 toCP1250
1.2 Přístup ke stránkám Gopheru telnet gopher.vse.cz#70 telnet alfa.vse.cz#70 1/kizi/iksy/BEZ nebo 1/kizi/iksy
diakritika
Gopher://beta.vse.cz:70/0GET /
http 0.9 – neexistuje http hlavička
Name=KIZI Type=1 Path=1/kizi Host=beta.vse.cz Port=70
adresář
Name=Takto vypadá menu pro Gopher Type=0 Path=0/menu Host=beta.vse.cz Port=70
soubor typu menu
1.3 Virtuální server Získání IP adresy serverů: – ping helpdesk.vse.cz a kumbal.vse.cz – GET http://helpdesk.vse.cz/ HTTP/1.0 – Host:kumbal.vse.cz
146.102.64.44
Virtuální servery WWW – oběma jménům odpovídá stejná IP adresu. Stránky jsou jiné, jestliže se pracuje v protokolu http 0.9, 1.0, 1.1. Př. – skripta J. Kastla: helpdesk.vse.cz Gopher://helpdesk.vse.cz:80/0GET /
http 0.9 – neexistuje http hlavička
Zkracování doménových adres: jedno slovo: kizi2 …kizi2.vse.cz Dva virtuální servery: kizi2.vse.cz plné jméno 3
4
C:\Temp\VIIJHBWFTBDIWUNNAWQJIVGEV.doc
Kizi2
nelze využít vně VŠE
telnet HELPDESK.VSE.CZ HTTP/1.0 nebo 1.1 o GET http://helpdesk.vse.cz/ HTTP/1.0 nebo GET / HTTP/1.0 Host: helpdesk.vse.cz o GET http://kumbal.vse.cz/ HTTP/1.0 nebo GET / HTTP/1.0 Host: kumbal.vse.cz http://fis/
bez cache64.vse.cz
1.4 Proxy server telnet httpcache.vse.cz#8080 GET http://helpdesk.vse.cz/ HTTP/1.0
připojení k proxy serveru požadavek na jiný server - úplné URL
telnet votrok.vse.cz#8080 obdobně Nastavení www prohlížeče: Manual proxy: http, ftp, socks, výjimky: doména vse.cz
1.5 Stavové informace a protokol http Uchovávání stavových informací – na dobu relace – trvale
1.5.1 Relace Vytvoření a ukončení relace. Metody vytváření a ukončení relací: automaticky, přihlášením a odhlášením, pomocí cookies, náhodných čísel a dynamických portů. Relace (session) – podle výkladového slovníčku GEIN Jestliže uživatel klikne v dialogovém oknu nebo na odkaz, pak odešle na server GEIN jednu zprávu. Server G musí rozpoznat, že se jedná o téhož návštěvníka. Jeho posloupnost kliknutí zaznamenává, aby pochopil, co nyní zamýšlíte. K opětnému rozpoznání uživatele zanechá G na počítači uživatele cookie, když takovou akci povolí www klient. Napadlo vás, že nikdy výslovně relaci neukončujete? Jistě, můžete počítač vypnout, ukončit www klienta, přejít z jedné stránky na druhou. Servery všech dalších www stránek nikdy nevědí, budete-li kdy pokračovat v práci na stejném serveru. Aby takové servery nemusely věčně čekat na své uživatele, bylo zavedeno časové omezení (time-out). Na G platí: jestliže během 30 min. nedojde k dalšímu kliknutí na stránce G, pak server předpokládá, že uživatel server opustil a server relaci ukončí. Aby nedošlo k narušení soukromí, záznamy jednotlivých relací se trvale neuchovávají. Čekací doba: v G znamená dvě věci. Čekání na další kliknutí v započaté relaci (30 min.). Druhé čekání označuje dobu, po kterou virtuální UDK server čeká na odpověď skutečných serverů. Po jejím vypršení oznámí, že nemá odpověď od katalogu xy. Užitečná definice relace (session) – podle Maslakowski, str. 73 Doba, po kterou mezi sebou dva počítače udržují spojení a přenášejí informace. Dočasné tabulky MySQL jsou příkladem objektu, který existuje jen po dobu relace (session). Zanikají po odpojení klienta. Zde i jinde (např. v nápovědě pro Lynx) je vysvětlena technika vytváření relací pomocí skrytých polí ve formulářích. Příklady pro Den21 zahrnují soubory .htm a .pl pro přihlášení (login) a udržování těchto 4
c:\temp\viijhbwftbdiwunnawqjivgev.doc
11.4.2005
hodnot i na dalších stránkách. Přihlášení s heslem není automatické a je povinné.
1.5.2 Cookies a jejich předávání Cookies se předávají pomocí hlaviček protokolu http. Předávání se řídí dokumenty RFC 2109 HTTP State Management Mechanism a RFC 2965. Server, chce-li, zahajuje relaci pomocí speciální http hlavičky Set-Cookie2. Klient, chce-li nabídku přijmout, odpoví rovněž speciální hlavičkou Cookie. Server ukončuje relaci zasláním hlavičky SetCookie2 header s hodnotou Max-Age=0. Hlavičky Set-Cookie2 mohou vystupovat v jedné odpovědi serveru spolu s jinými hlavičkami a totéž platí o hlavičce Cookie v odpovědi klienta.
RFC 2965 This document specifies a way to create a stateful session with Hypertext Transfer Protocol (HTTP) requests and responses. It describes three new headers, Cookie, Cookie2, and Set-Cookie2, which carry state information between participating origin servers and user agents. The method described here differs from Netscape's Cookie proposal [Netscape], but it can interoperate with HTTP/1.0 user agents that use Netscape's method.
PŘÍKLADY HLAVIČEK SET-COOKIE: http://beta.vse.cz/ISO/.head/semestr.vse.cz/ HTTP/1.1 302 Object moved Server: Microsoft-IIS/4.0 Date: Thu, 28 Mar 2002 10:02:55 GMT pragma: no-cache cache-control: no-cache Location: http://semestr.vse.cz/ekit_public/ Connection: Keep-Alive Content-Length: 155 Content-Type: text/html Expires: Wed, 27 Mar 2002 10:02:54 GMT Set-Cookie: ASPSESSIONIDQQQQGRIU=FPGKALHDDIGHJOALGPCJMAKA; path=/ Cache-control: private
Object moved Object Moved
This object may be found
here. http://beta.vse.cz/ISO/.head/www.nlk.anet.cz/
HTTP/1.1 302 Object moved Server: Microsoft-IIS/4.0 Date: Thu, 14 Feb 2002 17:53:44 GMT MicrosoftOfficeWebServer: 5.0_Pub Location: http://www.nlk.anet.cz/czech Content-Type: text/html Set-Cookie: ASPSESSIONIDQQGQGHXE=MNIMAOBANPPGPNECGLBEFIGD; path=/ Cache-control: private
Object moved Object Moved
This object may be found
here.
5
6
C:\Temp\VIIJHBWFTBDIWUNNAWQJIVGEV.doc
1.5.2.1 RFC 2965 HTTP State Management Mechanism October 2000 Kristol & Montulli/Standards Track/[Page 15] EXAMPLES Example 1 Most detail of request and response headers has been omitted. Assume the user agent has no stored cookies. 1.
User Agent -> Server
POST /acme/login HTTP/1.1 [form data] User identifies self via a form. 2. Server -> User Agent HTTP/1.1 200 OK Set-Cookie2: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme" Cookie reflects user's identity. 3. User Agent -> Server POST /acme/pickitem HTTP/1.1 Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme" [form data] User selects an item for "shopping basket". 4. Server -> User Agent HTTP/1.1 200 OK Set-Cookie2: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme" Shopping basket contains an item. 5. User Agent -> Server POST /acme/shipping HTTP/1.1 Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme"; Part_Number="Rocket_Launcher_0001"; $Path="/acme" [form data] User selects shipping method from form. 6. Server -> User Agent HTTP/1.1 200 OK Set-Cookie2: Shipping="FedEx"; Version="1"; Path="/acme" New cookie reflects shipping method. 7. User Agent -> Server POST /acme/process HTTP/1.1 Cookie: $Version="1"; 6
c:\temp\viijhbwftbdiwunnawqjivgev.doc
11.4.2005
Customer="WILE_E_COYOTE"; $Path="/acme"; Part_Number="Rocket_Launcher_0001"; $Path="/acme"; Shipping="FedEx"; $Path="/acme" [form data]
1.5.2.2 Identifikátor relace (SID) – veverka.vse.cz