Spis treści

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ń:

Ćwiczenia

Ćwiczenie 0

Uruchom Firefox.

Ć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://home.agh.edu.pl/~wojnicki (Uwaga: brak '/' na końcu adresu jest ważny!). Co znaczy ten kod?

Ćwiczenie 4

Używając metody GET i wersji protokołu 1.1 zapytaj wyszukiwarkę Google o wyrazy: Informatyka, 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&nord=1 )

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

Ć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 .... \r\n\r\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:

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.

Ć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 zaważyć na ocenie końcowej :-)

Ćwiczenie 11

Istnieje wiele innych pożytecznych narzędzi dla protokołu HTTP np. curl, wget. Poczytaj, sprawdź w działaniu. :-)