c:\temp\viijhbwftbdiwunnawqjivgev.doc 11.4.25 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í.9, 1. a 1.1. 1.1 Protokol HTTP 1.1.1 Chybné požadavky Get / HTTP/1. 44 Not found Server: Netscape-Communications/1.1 Date: Thursday, 4-Nov-99 11:59:21 GMT Content-length: 27 Content-type: text/html <TITLE>Not Found</TITLE><H1>Not Found</H1> 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#8 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#8 GET / HTTP/1. GET /~pinkas/ HTTP/1. GET /~jjkastl/ HTTP/1. 1.1.2.3 Telnet alfa.vse.cz#8 Soubor capalfa.htm záznam alfa.vse.cz nb.vse.cz <HTML> <HEAD> <TITLE>VSE - WWW na nb.vse.cz</title> </HEAD> www stránky s obrázky Absolutní URL 1
2 C:\Temp\VIIJHBWFTBDIWUNNAWQJIVGEV.doc <body background="http://www.vse.cz/images/vse_logo.jpg"> <IMG ALIGN=LEFT SRC="http://nb.vse.cz/smallvse.GIF"><H1>Vysoka skola ekonomicka v Praze</H1> <HR SIZE=6 ALIGN=CENTER><BR><BR> <Center><H1>Informace z kateder</h1></center> <P> <HR> Cestina: <A HREF="http://nb.vse.cz/win/"><img src=http://nb.vse.cz/flag_cz3.gif border=>ms Windows</a> <A HREF="http://nb.vse.cz/iso/"><img src=http://nb.vse.cz/flag_cz3.gif border=>iso Latin2</a> <A HREF="http://nb.vse.cz/mac/"><img src=http://nb.vse.cz/flag_cz3.gif border=>mac CZ</a> <A HREF="http://nb.vse.cz/852/"><img src=http://nb.vse.cz/flag_cz3.gif border=>pc Latin2</a> <A HREF="http://nb.vse.cz/"><img src="http://nb.vse.cz/flag_us3.gif" border=>ascii</a> <hr><p> <H2>Informace z jednotlivych fakult ci kateder:</h2> <H3><IMG SRC="http://nb.vse.cz/r_hand.gif" ALT="">Fakulta financi a ucetnictvi</h3> <IMG SRC="http://nb.vse.cz/nv.gif"> <A HREF="http://nb.vse.cz/kvf/">Katedra verejnych financi... KVF</A><BR> 1.1.2.4 telnet nb.vse.c#8 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. OPTIONS http://www.vse.cz/ HTTP/1. TRACE http://www.vse.cz/ HTTP/1. OPTIONS HTTP/1. HEAD URL je, tj. dotaz na možnosti serveru jako GET, ale jen hlavičky Výpis ze souboru access.log d:\apache 146.12.64.219 - - [4/Apr/22:16:55:36 +2] "POST /cgi-bin/pridatdodavatele.pl HTTP/1.1" 2 294 "http://n412h2.vse.cz/~pinkas/texty/dodavatel.htm" "Mozilla/4. (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.12.64.219 - - [11/Apr/22:11:37:12 +2] "POST /ISO/.ladeni/cgi-bin/post.pl HTTP/1." 2 143 2
c:\temp\viijhbwftbdiwunnawqjivgev.doc 11.4.25 [Tue Apr 9 19:27:28 22] [error] [client 146.12.64.219] cgi-lib.pl: Unknown Content-type: application/x-www-form-urlencoded; charset=windows-125 http://beta.vse.cz/iso/.ladeni/cgi-bin/post.pl ( REMOTE_HOST: 146.12.64.219 REMOTE_PORT: 158 HTTP/1. ) HOST: beta.vse.cz COOKIE: charset=windows-125 PRAGMA: no-cache ACCEPT_LANGUAGE: cs,en;q=.7,zh;q=.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. (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+1 tocp125 1.2 Přístup ke stránkám Gopheru telnet gopher.vse.cz#7 telnet alfa.vse.cz#7 1/kizi/iksy/BEZ nebo 1/kizi/iksy Gopher://beta.vse.cz:7/GET / diakritika http.9 neexistuje http hlavička Name=KIZI Type=1 Path=1/kizi Host=beta.vse.cz Port=7 Name=Takto vypadá menu pro Gopher Type= Path=/menu Host=beta.vse.cz Port=7 adresář soubor typu menu 1.3 Virtuální server Získání IP adresy serverů: ping helpdesk.vse.cz a kumbal.vse.cz 146.12.64.44 GET http://helpdesk.vse.cz/ HTTP/1. Host:kumbal.vse.cz 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.9, 1., 1.1. Př. skripta J. Kastla: helpdesk.vse.cz Gopher://helpdesk.vse.cz:8/GET / http.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. nebo 1.1 o GET http://helpdesk.vse.cz/ HTTP/1. nebo GET / HTTP/1. Host: helpdesk.vse.cz o GET http://kumbal.vse.cz/ HTTP/1. nebo GET / HTTP/1. Host: kumbal.vse.cz http://fis/ 1.4 Proxy server telnet httpcache.vse.cz#88 GET http://helpdesk.vse.cz/ HTTP/1. bez cache64.vse.cz připojení k proxy serveru požadavek na jiný server - úplné URL telnet votrok.vse.cz#88 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 3 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 (3 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.25 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 219 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 Set- Cookie2 header s hodnotou Max-Age=. 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. 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 32 Object moved Server: Microsoft-IIS/4. Date: Thu, 28 Mar 22 1:2: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 22 1:2:54 GMT Set-Cookie: ASPSESSIONIDQQQQGRIU=FPGKALHDDIGHJOALGPCJMAKA; path=/ Cache-control: private <head><title>object moved</title></head> <body><h1>object Moved</h1>This object may be found <a HREF="http://semestr.vse.cz/ekit_public/">here</a>.</body> http://beta.vse.cz/iso/.head/www.nlk.anet.cz/ HTTP/1.1 32 Object moved Server: Microsoft-IIS/4. Date: Thu, 14 Feb 22 17:53:44 GMT MicrosoftOfficeWebServer: 5._Pub Location: http://www.nlk.anet.cz/czech Content-Type: text/html Set-Cookie: ASPSESSIONIDQQGQGHXE=MNIMAOBANPPGPNECGLBEFIGD; path=/ Cache-control: private <head><title>object moved</title></head> <body><h1>object Moved</h1>This object may be found <a HREF="http://www.nlk.anet.cz/czech">here</a>.</body> 5
6 C:\Temp\VIIJHBWFTBDIWUNNAWQJIVGEV.doc 1.5.2.1 RFC 2965 HTTP State Management Mechanism October 2 6 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 2 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 2 OK Set-Cookie2: Part_Number="Rocket_Launcher_1"; 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_1"; $Path="/acme" [form data] User selects shipping method from form. 6. Server -> User Agent HTTP/1.1 2 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";
c:\temp\viijhbwftbdiwunnawqjivgev.doc 11.4.25 7 Customer="WILE_E_COYOTE"; $Path="/acme"; Part_Number="Rocket_Launcher_1"; $Path="/acme"; Shipping="FedEx"; $Path="/acme" [form data] 1.5.2.2 Identifikátor relace (SID) veverka.vse.cz <FRAMESET rows="57," framespacing="" border="" frameborder=""> <FRAME SRC="Buttons.html?SID=7844-JOrcpc6s3AisKPc7KZGH&" NAME="Contents" SCROLLING=NO NORESIZE TOPMARGIN= MARGINWIDTH= MARGINHEIGHT= FRAMEBORDER= target="obsah"> <FRAME SRC="Mailbox/INBOX.html?SID=7844-JOrcpc6s3AisKPc7KZGH" NAME="obsah" SCROLLING=auto NORESIZE TOPMARGIN= MARGINWIDTH= MARGINHEIGHT= FRAMEBORDER=> COOKIES PODLE PWS VÝKLADOVÝ SLOVNÍK Prostředek, pomocí kterého může u protokolu HTTP server nebo skript udržovat informace na pracovní stanici klienta. Cookies jsou malé textové soubory uložené v prohlížeči uživatele serverem WWW. Obsahují informace o uživateli, například identifikační číslo, heslo, způsob nakupování na serveru WWW a počet jeho návštěv daného serveru. Server WWW má k informacím v souborech cookies přístup při každém připojení uživatele k tomuto serveru. PREF ID=67fcd2446dfce3b2:TM=99479672:LM=99479672 google.com/ 2618878336 32111634 4717496 29426424 VŠE charset windows-125 vse.cz/ 9549788 2961547 243159264 29382216 kvk_cookie1 1111 www.ubka.uni-karlsruhe.de/ 22595168 35167 3541763296 29477124 cookie_check "true" www.devshed.com/server_side/zope/intro/
8 C:\Temp\VIIJHBWFTBDIWUNNAWQJIVGEV.doc 3378255872 3795568 657787776 2948369 NLS_LANGUAGE cs,cs,czech REPUBLIC 4113558528 2954532 2454719328 294817 Datenbank: Bibliotheksverbund Bayern Ausgeführte Funktion: SUCHE Lokale Identifikationsnummer=11434 Fehler bei der Kontrolle der Programmsitzung bei der Initialisierung(1). Ihre aktuelle Programmsitzung ist nicht mehr gültig: Der Zugriff auf die Kontrolldatei war nicht möglich.. Die Verbindung wurde wegen einer Zeitüberschreitung abgebrochen. Es wurde kein gültiges Kennwort benutzt. 8
c:\temp\viijhbwftbdiwunnawqjivgev.doc 11.4.25 RFC 2965 HTTP State Management Mechanism October 2 User chooses to process order. 8. Server -> User Agent HTTP/1.1 2 OK Transaction is complete. The user agent makes a series of requests on the origin server, after each of which it receives a new cookie. All the cookies have the same Path attribute and (default) domain. Because the request-uris all path-match /acme, the Path attribute of each cookie, each request contains all the cookies received so far. 9