Skip to content
Snippets Groups Projects
Commit 04c3f7d5 authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

15 pos for lab1

parent 06799c77
No related branches found
No related tags found
No related merge requests found
Pipeline #122 passed with stage
in 4 minutes and 45 seconds
......@@ -38,7 +38,10 @@ jak zostały wysłane.
na jego _niezawodność_, te bajty mogą być dzielone, łączone, ogólnie mogą dziać się z nimi po drodze
różne rzeczy. Jeśli wyślemy pakiet TCP o treści **Ala ma kota**, to niekoniecznie właśnie taki pakiet
dojdzie do nadawcy. Mogą dojść do niego na przykład dwa pakiety - **Ala m**, oraz po jakimś czasie
dopiero **a kota**.
dopiero **a kota**. Nie mniej jednak, wszystko, czego wysłanie zostało zlecone, dojdzie
w takiej kolejności. Jeśli TCP odbierze _nowsze_ dane, nie mając _starszych_, będzie
"udawał" że ich nie ma, dopóki nie odbierze tych starszych. Nie nadaje się więc do
zastosowań, gdzie _stare_ pakiety po prostu nie są nam już potrzebne (np. wideokonferencje).
Z jednej strony więc rozpatrując TCP dostajemy pewne gwarancje, których sama warstwa sieciowa (w której)
działa tu IP, nam nigdy nie da, ale tracimy kontrolę nad swoimi pakietami. Pakiety mogą być
......@@ -48,6 +51,7 @@ Po prostu są to ciągi bajtów.
Z tego też powodu należało wymyślić sposób, jak zaznaczyć że jeden pakiet protokołu wyższej warstwy
(np. takie zdanie) się kończy, a drugi zaczyna. Możliwe rozwiązania są trzy:
1. Będziemy na początku wysyłać jak długi jest pakiet, a dopiero potem pakiet.
2. Umówimy się, że jakiś znak (bajt) będzie rozdzielał pakiety.
3. Umówimy się, że każdy pakiet będzie miał identyczną, z góry znaną długość.
......@@ -112,6 +116,7 @@ W pierwszej linii zawarto tzw. metodę HTTP oraz wersję protokołu. Następnie
Czy przy użyciu PuTTY mógłbyś użyć protokołu HTTP/2.0? Dlaczego?
Gdy to zrobisz, uruchom PuTTY. Istotne są trzy pola:
* **Host Name** - nazwa docelowej strony. W twoim przypadku wpisz tu **$http_hostname$**
* **Port** - port, z którym będziemy się łączyć. Wpisz odpowiedni
* **Connection type** - w niektórych protokołach maszyna musi nam pomóc (np. bo są szyfrowane). HTTP
......@@ -155,12 +160,11 @@ ta widoczna jest na pasku, obok nazwy karty. Jest to nazwa zwyczajowa, czyli je
przeglądarka stwierdzi istnienie takiego zasobu, to użyje go (chyba że twórca
strony zażyczył sobie inaczej).
Pobierz *favicon.ico* z $http_hostname$.
Pobierz favicon.ico z $http_hostname$.
Zanotuj typ MIME odpowiedzi, oraz całą sesję HTTP.
Jaki kod odpowiedzi otrzymałeś? Znajdź
kolegę/koleżankę z innym kodem.
Zanotuj jego/jej numer zadania.
Jaki kod odpowiedzi otrzymałeś? Znajdź kolegę/koleżankę
z innym kodem. Zanotuj jego/jej numer zadania.
Serwer HTTP może więc przesyłać różne typy plików. Klient również może to zrobić.
Musi on skorzystać jedynie z metody umożliwiającej przesłanie tzw. _ciała_. Wykorzystywane
......@@ -179,13 +183,104 @@ dobrze zrozumieć protokół.
Wymień 3 rzeczy, które również można zrobić za pomocą
PuTTY, oraz nazwę protokołu, który tą rzecz umożliwi.
# Zadania dodatkowe
# DNS jako protokół binarny UDP
Wyprzedzając zastrzeżenia - DNS może również działać za pomocą TCP. Jest jednak
pewien problem - do samego zestawienia połączenia TCP wymaga 3 pakietów, do przesłania
odpowiedzi i zapytania 4 (1 na dane, 1 na potwierdzenie odbioru), a do rozłączenia
się aż 4. Ze względów wydajności najczęściej stosuje się do niego więc UDP.
Odpowiedzi zamieść w sprawozdaniu.
UDP to drugi najczęściej wykorzystywany protokół warstwy transportowej korzystający
z IP. Jest on protokołem bezpołączeniowym - czyli możemy do każdego wysłać pakiet
UDP i nie musi się on go spodziewać. Pakiety UDP mogą jednak być:
1. Najnowszym kodem błędu HTTP jest 451. Co on oznacza? Skąd taka wartość (i dlaczego)?
2. HTTP w szyfrowanym wydaniu nazywa się HTTPS. Co zmieniono w protokole? Spróbuj narysować
jego model ISO OSI. Czym różni się od zwykłego HTTP?
* dostarczane nie po kolei
* duplikowane (wysyłasz jeden, dostajesz dwa)
* gubione
Podobnie jak TCP wykorzystuje on porty. Tutaj jednak programista wysyła całe
pakiety (czyli ciąg bajtów o ustalonej długości), a po drugiej stronie odbiera
również te same pakiety. Nie są one modyfikowane, jak w TCP, ale mogą podlegać
wcześniej wymienionym zjawiskom. Programista **musi o tym pamiętać**.
Ponieważ nie wymaga on pamiętania zestawionych połączeń, jest bardziej wydajny
od TCP. Dlatego też zastosowano go w protokole DNS, służącym zasadniczo do zamiany
nazw domen postaci **wp.pl** na adresy postaci **212.77.98.9**. Ma on jeszcze
kilka innych zastosowań, o tym później.
DNS przypisuje nazwie domeny listę par _typ rekordu + wartość_. Jedna domena może mieć
kilka różnych rekordów. Zazwyczaj będzie zawierać adres serwera DNS, który jest
odpowiedzialny za jej obsługę, adres IP, adres serwera e-mail, oraz dodatkowe informacje.
Jest to protokół binarny, nie możemy więc wpisywać go ręcznie. Musimy użyć klienta
DNS. System Windows ma wbudowanego klienta o nazwie **nslookup**.
Otwórz linię poleceń Windows. Wywołaj narzędzie **nslookup**. W jego linii poleceń
wydaj polecenie **help**. Przeczytaj uważnie i zrozum je.
Ustaw nslookup, aby udzielał wyczerpujących (exhaustive) informacji
o debugowaniu.
Ustal adres IP $http_hostname$. Zanotuj odpowiedź nslookup.
Czy odpowiedź była autorytatywna? Co to oznacza? Jaki
adres miał serwer DNS, który rozpatrzył Twoje zapytanie?
Serwery DNS zazwyczaj pracują w trybie rekursywnym, tj. jeśli nie wiedzą,
to się dowiedzą, i dopiero odeślą zapytanie. Wymaga to od nich większej pracy,
ale klient ma swoją odpowiedź. **nslookup** pozwala wyłączyć ten tryb.
Wyłącz tryb rekursywny w nslookup. Zapisz polecenie.
Wymyśl jakąś nazwę domeny, z której ten komputer nie korzystał
od uruchomienia. Zapisz przebieg sesji (exhaustive debug).
Z jakim serwerem/serwerami DNS skontaktował się nslookup? Dlaczego?
Co to za serwery? Kto za nie odpowiada?
DNS może również przechowywać inne informacje na temat tej domeny. Służą do
tego po prostu inne typy rekordów. Wykaz takich typów można znaleźć w sieci
Internet.
Jaki typ rekordu odpowiada za to, który serwer DNS odpowiada za daną
domenę?
Wykonaj takie zapytanie, aby otrzymać odpowiedź autorytatywną. Zanotuj
wydane polecenia i odpowiedź.
Dlaczego ta odpowiedź jest autorytatywna?
Rekord *MX* służy do ustalenia, gdzie nadać pocztę, zaadresowaną pod konkretny
adres. Mając adres `stefan@example.com` zapytamy się o *MX* domeny `example.com`,
a później serwer obsługujący nasze konto pocztowe spróbuje tam dostarczyć
korespondencję.
Domeny można kupować. Służą do tego specjalne agencje, tzw. _registrarzy_. Po
uiszczeniu opłaty rejestracyjnej, oraz dorocznej abonamentowej, domena jest _nasza_.
Możemy wtedy decydować, co znajdzie się w wpisach DNS tej domeny. Na przykład,
kupując `example.org` możemy zadecydować, co będzie w wpisach `inna.example.org`.
Jeśli chcemy domenę od kogoś kupić, musimy poznać jego tożsamość. Zazwyczaj możemy
dokonać tego za pomocą usługi WHOIS.
Do kogo należy domena $http_hostname$?
Podaj adres strony WHOIS z której korzystałeś, oraz całość odpowiedzi.
Niekiedy dane te nie są dostępne. Wtedy można skontaktować się z registrarem,
i poprosić o kontakt do tej osoby, lub przekazanie jej naszego kontaktu.
Dlaczego przy domenach .pl do umieszczenia danych osoby fizycznej
wymagana jest jej zgoda, a jeśli właścicielem jest firma, to już nie?
# Zadania dodatkowe
Wykonaj je, jeśli masz czas. Odpowiedzi zamieść w sprawozdaniu.
1. Najnowszym kodem błędu HTTP jest 451. Co on oznacza? Skąd taka wartość (i dlaczego)?
2. HTTP w szyfrowanym wydaniu to HTTPS. Co zmieniono w protokole w stosunku do HTTP? Jak ułatwiono sobie tu życie za pomocą enkapsulacji i model ISO OSI?
3. Czy oprócz TCP i UDP istnieją jakieś inne protokoły warstwy transportowej korzystające z IP? Jakie? Co robią?
4. W jaki sposób botnety i złośliwe oprogramowanie wykorzystują DNS? Po co im to?
5. Co to jest Sender Policy Framework? Z jakiego mechanizmu DNS korzysta?
6. Co to jest NASK? Jaką rolę spełnia w administracji domenami `.pl`?
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment