Analiza HTTP za pomocą Wireshark

Http Analysis Using Wireshark



Co to jest HTTP?

Po pierwsze cała pełna forma HTTP to HyperText Transfer Protocol. HTTP to protokół warstwy aplikacji w modelu ISO lub TCP/IP. Zobacz poniższy obrazek, aby dowiedzieć się, który protokół HTTP znajduje się w warstwie aplikacji.







HTTP jest używany przez Sieć WWW (w.w.w) i określa, w jaki sposób wiadomości są formatowane i przesyłane przez przeglądarkę. Tak więc HTTP definiuje reguły, jakie działania należy podjąć, gdy przeglądarka otrzyma polecenie HTTP. A także HTTP definiuje zasady przesyłania polecenia HTTP w celu pobrania danych z serwera.



Na przykład, gdy wprowadzisz adres URL w przeglądarce (Internet Explorer, Chrome, Firefox, Safari itp.), faktycznie wysyła polecenie HTTP do serwera. A serwer odpowiada odpowiednim poleceniem.



Metody HTTP:

Istnieje kilka zestawów metod dla HTTP/1.1 (to jest wersja HTTP)





GET, HEAD, POST, PUT, DELETE, CONNECT, OPTION and TRACE.

Nie będziemy wchodzić w szczegóły każdej metody, zamiast tego dowiemy się o metodach, które są dość często spotykane



DOSTWAĆ: Żądanie GET pyta o dane z serwera WWW. Jest to główna metoda pobierania dokumentów. Zobaczymy jeden praktyczny przykład tej metody.

POCZTA: Metoda POST jest wykorzystywana, gdy wymagane jest przesłanie danych na serwer.

HTTP to Wiresahark:

Spróbujmy czegoś praktycznego, aby zrozumieć, jak działa HTTP ?

Więc w tym przykładzie pobierzemy alice.txt (Plik danych obecny na serwerze) z gaia.cs.umass.edu serwer.

Zestawy:

  1. Otwórz adres URL http://gaia.cs.umass.edu/wireshark-labs/alice.txt [Znamy pełny adres URL do pobrania pliku alice.txt] w przeglądarce komputera.
  2. Teraz widzimy pobrany plik w przeglądarce. Oto zrzut ekranu

  1. Równolegle przechwytujemy pakiety w Wireshark.

Wymiana pakietów HTTP w Wireshark:

Zanim przejdziemy do HTTP, powinniśmy wiedzieć, że HTTP używa portu 80 i TCP jako protokołu warstwy transportowej [TCP wyjaśnimy w innym temacie dyskusji].

Zobaczmy teraz, co dzieje się w sieci, gdy wstawimy ten adres URL i wciśniemy enter w przeglądarce.

Oto zrzut ekranu dla

Uzgadnianie trójstronne TCP ——-> HTTP OK ——-> Dane TCP [zawartość alice.txt] ——->

HTTP-OK

Zobaczmy teraz, co znajduje się w pakietach HTTP GET i HTTP OK.

Uwaga: Wymiany TCP wyjaśnimy w innym temacie dyskusji.

POBIERZ HTTP:

Po zakończeniu trójstronnego uzgadniania TCP [pakiety SYN, SYN+ACK i ACK] wysyłane jest żądanie HTTP GET do serwera i oto ważne pola w pakiecie.

1. Metoda żądania: POBIERZ ==> Pakiet to HTTP GET .

2. Żądaj identyfikatora URI: /wireshark-labs/alice.txt ==> Klient prosi o plik alice.txt znajdujący się w katalogu /Wireshark-labs

3.Poproś o wersję: HTTP/1.1 ==> Jest to wersja HTTP 1.1

4.Zaakceptuj: tekst/html, aplikacja/xhtml+xml, obraz/jxr, */* ==> Informuje serwer o typie pliku, który może zaakceptować [przeglądarka po stronie klienta]. Tutaj klient oczekuje pliku alice.txt, który jest typem tekstowym.

5. Zaakceptuj język: pl-PL ==> Akceptowany standard językowy.

6. Użytkownik-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) jak Gecko ==> Typ przeglądarki po stronie klienta. Nawet jeśli korzystaliśmy z Internet Explorera, ale widzimy to zawsze/maksymalny czas, mówi Mozilla

7. Zaakceptuj kodowanie: gzip, spuścić powietrze ==> Akceptowane kodowanie po stronie klienta.

8. Gospodarz: gaia.cs.umass.edu ==> To jest nazwa serwera WWW, na który klient wysyła żądanie HTTP GET.

9. Połączenie: Utrzymuj przy życiu ==> Połączenie kontroluje, czy połączenie sieciowe pozostaje otwarte po zakończeniu bieżącej transakcji. Typ połączenia jest podtrzymywany.

Oto zrzut ekranu dla pól pakietów HTTP-GET

HTTP OK:

Po pomyślnym wysłaniu danych TCP [zawartość pliku alice.txt] do klienta wysyłany jest protokół HTTP OK i oto ważne pola w pakiecie.
1. Wersja odpowiedzi: HTTP / 1.1 ==> Tutaj serwer również w wersji HTTP 1.1
2. Kod statusu: 200 ==> Kod statusu wysłany przez serwer.
3. Zwrot odpowiedzi: ok ==> Fraza odpowiedzi wysłana przez serwer.

Tak więc z 2 i 3 otrzymujemy 200 OK, co oznacza, że ​​żądanie [HTTP GET] powiodło się.

4. Data: niedz., 10 lut 2019 06:24:19 GMT ==> Aktualna data , czas w GMT kiedy HTTP GET został odebrany przez serwer.
5. Serwer: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.10 Perl/v5.16.3 ==> Szczegóły serwera i wersje konfiguracji.
6.Ostatnia modyfikacja : sobota, 21 sierpnia 2004 14:21:11 GMT ==> Data i godzina ostatniej modyfikacji pliku alice.txt.
7.ETag: 2524a-3e22aba3a03c0 ==> ETag wskazuje, że zawartość nie jest zmieniana w celu wspomagania buforowania i poprawy wydajności. Lub jeśli zawartość uległa zmianie, etags są przydatne, aby zapobiec wzajemnemu nadpisywaniu się równoczesnych aktualizacji zasobu.
8. Zakresy akceptacji: bajty ==> Bajt to jednostka używana na serwerze dla treści.
9. Długość treści: 152138 ==> Jest to całkowita długość pliku alice.txt w bajtach.
10. Utrzymaj przy życiu: limit czasu=5, max=100 ==> Zachowaj parametry.
11. Połączenie: Utrzymać przy życiu ==> Połączenie kontroluje, czy połączenie sieciowe pozostaje otwarte po zakończeniu bieżącej transakcji. Typ połączenia jest podtrzymywany.
12. Typ treści: Zwykły tekst; zestaw znaków=UTF-8 ==> Typ zawartości [alice.txt] to tekst, a standardem zestawu znaków jest UTF-8.

Oto zrzut ekranu dla różnych pól pakietu HTTP OK.

Więc teraz wiemy, co się stanie, gdy zażądamy dowolnego pliku znajdującego się na serwerze WWW.

Wniosek:

HTTP to prosty protokół aplikacji, z którego korzystamy na co dzień w naszym życiu. Ale nie jest to bezpieczne, więc wdrożono protokół HTTPS. To S oznacza bezpieczeństwo. Dlatego tak maksymalna nazwa serwera WWW zaczyna się od http s://[nazwa witryny] . Oznacza to, że cała komunikacja między Tobą a serwerem jest szyfrowana. W przyszłości przeprowadzimy oddzielną dyskusję na temat tego HTTPS.