====== Laboratorium, TIiM, HTTP ====== ===== Wprowadzenie ===== Każde z poleceń posiada bogady opis dostępny po uruchomieniu: man polecenie gdzie ''polecenie'' jest nazwą polecenia. Poniżej podano przydatne albo niezbędne polecenia do wykonania ćwiczeń: * ''firefox'' * ''telnet'' * ''nc'' * ''sed'' * ''curl'' (opcjonalnie) ===== Ćwiczenia ===== ==== Ćwiczenie 0 ==== Uruchom Firefox/IceWeasel. Zainstaluj rozszerzenie LiveHTTP Headers (menu: Narzędzia/Dodatki). * a) Otwórz dowolną stronę. * b) Zobacz nagłowki HTTP: Prawy przycisk na zawartości strony, wybierz: Pokaz informacje o stronie, nastepnie zakladka Headers. * c) Otwórz panel wyświetlający nagłówki: Alt-L (albo menu: Widok/Panel Boczny/LiveHTTPHaders). * d) Wczytaj dowolną stronę, prześledź informacje wyświetlane w bocznym panelu. ==== Ćwiczenie 1 ==== Używając telnet zobacz jaki jest nagłówek oraz zawartość strony pod adresem: http://home.agh.edu.pl/~wojnicki/. ==== Ćwiczenie 2 ==== Czy dostęp do zasobu http://home.agh.edu.pl/~wojnicki/ może być realizowany poprzez protokół HTTP 1.1, czy tylko HTTP 1.0? Przetestuj. ==== Ćwiczenie 3 ==== Sprawdź, jaki typ odpowiedzi zwraca serwer przy zadaniu dostepu do zasobu http://google.com/. Co znaczy ten kod? ==== Ćwiczenie 4 ==== Używając metody GET zapytaj wyszukiwarkę Google o wyrazy: Informatyka Stosowana, wiedząc że wyrazy powinny być przekazane jako wartość atrybutu 'q' (np. zapytanie o haslo //pies// powinno wygladać następująco: http://www.google.pl/search?q=pies ) * a) Uzyj ''telnet''. Jezeli google zamyka połączenie (timeout) użyj ''nc'' zamiast ''telnet'', oraz umieść zapytanie w pliku: nc google.com 80 < plik_z_zapytaniem albo: cat plik_z_zapytaniem | nc google.com 80 Podpowiedź: przeczytaj ''man nc'' * b) Użyj przeglądarki (np. firefox). ==== Ćwiczenie 5 ==== Zbadaj co zwraca ''HEAD'' dla http://home.agh.edu.pl/wojnicki/. Porównaj z ''HEAD'' dla http://home.agh.edu.pl/~wojnicki/. Zwróć uwagę na nagłówek ''Location'' oraz status odpowiedzi serwera. ==== Ćwiczenie 6 ==== Zbadaj co zwraca ''GET'' dla http://home.agh.edu.pl/~wojnicki/pic/me.jpg. Jaki jest typ danych zasobu? ==== Ćwiczenie 7 ==== Ile żądań (zapytań) mozna przesłać za pomocą jednego połączenia w przypadku HTTP/1.0 a ile w przypadku HTTP/1.1? Wypróbuj na dowolnie wybranym serwerze i zasobie. ==== Ćwiczenie 7.5 ==== Pobierz zasób http://paw.agh.edu.pl za pomocą HTTP/1.0. Operację ponów dla HTTP/1.1. Czy odpowiedzi są takie same? Dlaczego? ==== Ćwiczenie 8 ==== Używając ''nc'' (netcat) i przekierowania standardowego wejscia/wyjscia pobierz zawartość witryny http://home.agh.edu.pl/~wojnicki/ i umieść w pliku w1.html. Zapytanie HTTP można umieścić w pliku: nc ..... < plik_z_zapytaniem bądź też użyć echo oraz mechanizmu pipe: echo -e 'GET .... \n\n' | nc .... ==== Ćwiczenie 8.5 ==== Nadobowiązkowe. Netcat może również nasłuchiwać i odbierać połączenia na wskazanym porcie. Dzięki temu w prosty sposób można np. przesyłać dowolne informacje pomiędzy węzłami w sieci. Np. chcąc przesłać prosty komunikat, na węźle docelowym (''charon.kis.agh.edu.pl'') należy uruchomić netcat w trybie nasłuchiwania, powiedzmy na porcie 1234: nc -l 1234 Na węźle nadającym, można przesłać np. komunikat: Hello: echo Hello | nc charon.kis.agh.edu.pl 1234 Oczywiście nic nie stoi na przeszkodzie, aby przesłać tą metodą dowolne dane np. pliki. ==== Ćwiczenie 9 ==== Używając np. ''sed'' oraz wyrażeń regularnych usuń wszystkie znaczniki HTML z pliku w1.html, a wynik umieść w pliku w2.html. Podpowiedzi: * a) Niezbędny fragment składni edytora liniowego sed: sed 's/zrodlo/cel/g' znajduje ciąg znaków 'zrodlo' oraz zastępuje go ciągiem znaków 'cel'. Ciąg 'zrodlo' może być wyrażeniem regularnym. * b) Utwórz wyrażenie regularne (man regex) pasujące do znacznika HTML: znak '<', dowolny ciąg znaków z wyjątkiem '>', znak '>'. * c) Użyj w/w wyrażenia jako 'zrodlo' dla sed, 'cel' powinien byc pustym łańcuchem znaków. ==== Ćwiczenie 10 ==== Wykonaj ćwiczenie 9 używając mechanizmu potoków (pipe): echo .... | nc ... | sed ... | less Gratulacje, właśnie zbudowałeś(aś) swoją własną przeglądarkę WWW ;) **Uwaga:** W przypadku ćwiczenia 9 i 10 można dostać "dodatkowy punkt" - za rozwiązanie na zajęciach, albo nadesłanie rozwiązania mailem na adres prowadzącego nie poźniej niż do północy następnego dnia po zajęciach. Jeden punkt może zawarzyć na ocenie końcowej :-)