SIK07b.rs

Sieci Komputerowe

Protokoły FTP, HTTP, SMTP *

FTP

FTP jest to protokół transferu plików (File Transfer Protocol), który umożliwia ich wymianę między serwerem, a klientem w obydwie strony. Większość protokołów w celu nawiązania połączenia wykorzystuje jeden port, jednak FTP różni się pod tym względem, ponieważ wykorzystuje on dwa porty. Port o numerze 21, tak zwany port kontrolny, służący do nawiązania połączenia z serwerem FTP oraz port o innym numerze do przesyłania danych. Klient FTP inicjuje połączenie na porcie 21. Następnie przeprowadzana jest procedura uwierzytelniania użytkownika. Kiedy klient prosi o dane, serwer otwiera nowe połączenie korzystając z wybranego portu o innym numerze.

FTP jest protokołem tekstowym (w związku z czym nie zabezpieczonym przed podsłuchiwaniem).

Z serwerem FTP możemy komunikować się za pomocą surowego protokołu ftp:

Lub za pomoca nakładki, czyli systemowo dostępnego polecenia ftp

Podejście wykorzytujące jeden port do kontroli a osobny port do przesyłania danych jest przestarzałe. Powoduje w praktyce to, że wyniki wywołania komend takich jak ls są przesyłane jako dane. Może to powodować błędy w postaci takiej, że połączenie zostaje nawiązane jednakże nie możemy wykonać określonej komendy FTP. Domyślnie (w tak zwanym aktywnym trybie) połączenie jest ustanawiane przez wysyłającego do odbiorcy. W tym wypadku wynik wykonania komendy ls zostaje przesłany przez serwer który ustanawia z klientem połączenie na losowym porcie. W praktyce w dzisiejszych czasach w przypadku Firewalli oraz sieci prywatnych (NAT) komunikacja taka nie może być nawiązana (np. ponieważ klient blokuje porty). Rozwiązaniem jest korzystanie z tzw. trybu pasywnego ftp, gdzie wszystkie połączenia są inicjowane przez klienta.

W związku z czym z laboratoriów łączymy się używając polecenia

ftp -p *adres_serwera*

Zadanie (2 pkt)

W pliku Plik1 znajduje się log komunikacji pomiędzy klientem a serwerem ftp

Podaj porty na których zachodziła komunikacja oraz listę komend ftp podaną przez użytkownika.

Wykorzystując podejrzane dane na temat użytkownika i hasła połącz się na serwer ftp prowadzącego i załóż tam katalog o nazwie ImieNazwisko (podając w tym miejscu swoje dane). Załącz do tego katalogu dowolny mały plik o rozszerzeniu txt.

Uwaga! możesz też użyć oprogramowania FileZilla (co jest poniekąd prostsze).

Zadanie (1 pkt)

Połącz się na konsoli z serwerem FTP. Sprawdź, czy przesłanie w FTP binarne zajmuje więcej czasu niż tekstowe? Wykonać odpowiedni eksperyment na serwerze (podaj wykorzystane komendy) i opisz jego wynik.

HTTP

HTTP(Hyper Transfer Protocol) jest protokołem odpowiedzialnym za przesyłanie w Internecie stron WWW. Portem zarezerwowanym dla HTTP jest 80 port TCP HTTP jest wykorzystywany do przekazywania różnych zasobów, a nie tylko plików. Zasób jest jakimś fragmentem informacji, która może być zidentyfikowana przez adres URL. Najczęstszym rodzajem zasobów jest plik, ale może być to także dynamicznie generowany wynik kwerendy, wyjście skryptu CGI, dokument, który jest dostępny w kilku językach, czy coś innego. Podobnie jak większość protokołów sieciowych, HTTP używa modelu klient-serwer: klient HTTP otwiera połączenie i wysyła komunikat żądania do serwera HTTP, serwer następnie zwraca komunikat odpowiedzi , zwykle zawierający zasób, o który został poproszony. Po dostarczeniu odpowiedzi, serwer zamyka połączenie i co najważniejsze nie przechowuje żadnych informacji o połączeniu między transakcjami.Pozwala to znacznie zmniejszyć obciążenie serwera, jednak jest kłopotliwe w sytuacji, gdy np. trzeba zapamiętać konkretny stan dla użytkownika, który wcześniej łączył się już z serwerem. Najczęstszym rozwiązaniem tego problemu jest wprowadzenie mechanizmu ciasteczek.

Opis pól nagłówków HTTP można znaleźć np tutaj:

Przykład nagłówka:

echo -e "HEAD http://www.staff.amu.edu.pl/~mw/index.html HTTP/1.0\n\n" | nc www.staff.amu.edu.pl 80 | less

Zadanie (1 pkt)

W pliku Plik2 znajduje się log komunikacji pomiędzy klientem a serwerem

Odpowiedz na pytania: Jaki jest domyślny port na którym działa protokół HTTP? Na jakim serwerze (dystrybucji) umieszczona jest strona www.staff.amu.edu.pl/~mw/index.html? Z jakiego systemu i z jakiej przeglądarki dokonywano zapytań?

Zadanie (1 pkt)

Podaj pełną listę metod HTTP.

Zadanie (1 pkt)

Czy są statusy HTTP? Który numer statusu odpowiada za informacje, że server nie jest dostępny, który odpowiada komunikatowi "OK"?

Poniżej znajduje się kod w języku Python służący do wywoływania metod HTTP:

import httplib

conn = httplib.HTTPConnection("mw.home.amu.edu.pl")
conn.request("GET", "/students.html")
r1 = conn.getresponse()
print r1.status, r1.reason
data1 = r1.read()
print data1

conn.request("HEAD", "/students.html")
r1 = conn.getresponse()
print r1.status, r1.reason

Zapisz na dysku jako np. http.py i uruchom w terminalu (CMD) poprzez:

python http.py

Zadanie (2 pkt)

Wykonaj metodę GET z przesłaniem danych i metodę POST na adresie

podając jeden parametr o nazwie indeks i wartośći Twojego numeru indeksu. Odpowiedz jaka jest różnica między przesyłaniem parametrów metodami GET/POST?

Przykład użycia GET i POST(wymaga importu urllib):

Sprawdź czy Ci się udało wchodząc na:

SMTP

SMTP - protokół komunikacyjny opisujący sposób przekazywania poczty elektronicznej w Internecie.

SMTP to względnie prosty, tekstowy protokół, w którym określa się co najmniej jednego odbiorcę wiadomości (w większości przypadków weryfikowane jest jego istnienie), a następnie przekazuje treść wiadomości. Demon SMTP działa najczęściej na porcie 25. Łatwo przetestować serwer SMTP przy użyciu programu telnet.

Aby połączyć się z serwerem SMTP wystarczy wpisać jego adres i port:

nc smtp.wmi.amu.edu.pl 25

Opis komend smtp można znaleźć pod adresem:

Po polsku:

Zadanie (2 pkt)

Korzystając z serwera smtp.wmi.amu.edu.pl wyślij na adres mw@wmi.amu.edu.pl mail z adresu dziekan@wmi.amu.edu.pl w temacie umieszczając swoje imię i nazwisko. Data maila ma być z roku 2020!

W ramach testowania rozwiązania możesz zalogować się na własną skrzynkę na https://poczta.wmi.amu.edu.pl/ i tam wpierw przesyłać do siebie wiadomości.