Narzędzia użytkownika

Narzędzia witryny


pl:jitw:lab_jitw_http

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.

  • a) Otwórz dowolną stronę.
  • b) Zobacz nagłowki HTTP (ctrl+shift+i albo menu: Tools/Web Developer/Toggle Tools, potem: Network, wybierz żądanie z listy, włącz Raw headers (po prawej stronie))

Ć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 )

  • 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 .... \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:

  • 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 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. :-)

pl/jitw/lab_jitw_http.txt · ostatnio zmienione: 2021/01/08 14:09 (edycja zewnętrzna)