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)Uruchom Firefox.
Używając telnet zobacz jaki jest nagłówek oraz zawartość strony pod adresem: http://home.agh.edu.pl/~wojnicki/.
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.
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?
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 )
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
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.
Zbadaj co zwraca GET
dla http://home.agh.edu.pl/~wojnicki/pic/me.jpg. Jaki jest typ danych zasobu?
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.
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?
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 ....
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.
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.
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
Istnieje wiele innych pożytecznych narzędzi dla protokołu HTTP np. curl
, wget
. Poczytaj, sprawdź w działaniu.