Systemy operacyjne i sieci komputerowe - laboratorium

Ćwiczenie: Protokoły sieciowe w systemie Unix

Autorzy: Grzegorz Czaplicki, Tomasz Toczyski

Wersja beta 11.05.2006. Wszelkie uwagi (np. znalezione błędy) wysyłać na adres Tomasz.Toczyski@isep.pw.edu.pl.

Wstęp

Niniejsze ćwiczenie ma na celu zapoznanie studenta z elementami niektórych protokołów sieciowych oraz narzędzi zaimplementowanych w systemie unixowym Solaris. Podstawowym środowiskiem pracy będzie terminal unixowy. Należy jednak pamiętać, że praktycznie wszystkie z omawianych tu narzędzi mają swoje odpowiedniki także w innych systemach operacyjnych - np. w MS Windows.

0. Protokoły komunikacyjne

Protokół jest zbiorem reguł, które ustalają formaty przesyłanych danych i normują ich transmisję, opisują również sposoby postępowania z komunikatami w wypadku błędu. By wymienić dane, komputery podłączone do sieci muszą korzystać z protokołów komunikacyjnych.

1. Protokół FTP

FTP (ang. File Transfer Protocol) jest protokołem typu klient-serwer, który umożliwia przesyłanie plików z i na serwer poprzez sieć TCP/IP.

Do komunikacji wykorzystywane są dwa połączenia TCP. Jedno z nich jest połączeniem kontrolnym, za pomocą którego przesyłane są np. polecenia do serwera, drugie natomiast służy do transmisji plików. Standardowym portem do inicjalizacji połączenia FTP jest port 21.

Składnia polecenia wygląda następująco:

	% ftp [opcje] [nazwa_serwera]

Przykład - połączenie z serwerm ftp.icm.edu.pl:

	% ftp ftp.icm.edu.pl

Serwer zapyta się o użytkownika oraz o hasło. Serwery publicznie dostępne (np. ftp.icm.edu.pl, który udostępnia oprogramowanie) umożliwiają logowanie się za pomocą użytkownika anonymous, którego jako hasło grzecznościowo podaje się własny adres e-mail. W takim przypadku użytkownik standardowo nie ma zbyt wielu praw i z reguły może tylko pobierać udostępnione dane.

Po nawiązaniu połączenia można korzystać z wielu komend, których lista jest wyświetlana po wpisaniu help. Poniżej są przedstawione niektóre z nich:

Można również tworzyć mkdir i usuwać rmdir katalogi, a także kasować delete, rm pliki, jeśli użytkownik ma odpowiednie prawa.

Będąc zalogowanym na odległej maszynie możemy również poruszać się po lokalnym systemie, używając następujących poleceń:

Większość poleceń lokalnych różni się od tych wykonywanych na zdalnej maszynie wykrzyknikiem na początku nazwy.

Niektóre polecenia, np. ls, dir oraz kasowania plików rm, delete występują zarówno w wersji znanej z systemu Unix, jak i MS-DOS, ale dzięki temu są one niezależne od systemu operacyjnego wykorzystywanego przez użytkownika oraz serwer FTP.

Ćwiczenia:

2. Protokół SCP

Podstawową wadą protokołu transmisji plików FTP jest brak wbudowanych mechanizmów bezpieczeństwa, a zwłaszcza szyfrowania transmisji. Zarówno nazwa użytkownika, hasło jak i dane, wędrując siecią narażone są na możliwość ich podsłuchania. Tej wady pozbawione są protokoły SCP (ang. secure copy). Jest to godna zalecenia metoda transmisji plików poprzez sieć Internet.

Obok programów - klientów scp i sftp posługujących się interfejsem tekstowym, powstało wiele programów pracujących w trybie graficznym. Jednym z nich jest program WinSCP pracujący w systemie MSWindows. Stabilną wersję 3.7.6 tego programu przeznaczoną do bezpośredniego uruchomienie (czyli bez instalacji) można ściągnąć ze składnicy SOURCEFORGE.

Krótka instrukcja obsługi programu WinSCP

Po uruchomieniu programu winscp376.exe pojawi się następujący ekran:

Przykładowo, aby się mieć dostęp do swojego katalogu na koncie wydziałowym, wpisujemy w rubrykę "Host name" nazwę "login.ee.pw.edu.pl". W rubrykę "User name" wpisujemy swój login unixowy, a w rubrykę "Password" skojarzone z nim hasło.

Po wpisaniu powyższych danych możemy wcisnąć przycisk "Login" i program będzie się próbował połączyć z serwerem. Po pomyślnym połączeniu powinno się pojawić następujące okienko:

Lewy panel w powyższym okienku przedstawia zawartość jednego z katalogów lokalnych. Prawy panel prezentuje zawartość naszego katalogu domowego na koncie wydziałowym. Od tej chwili możemy dokonywać transferów plików pomiędzy zasobami lokalnymi, a naszym katalogiem na koncie wydziałowym. Obsługa programu jest bardzo zbliżona do wielu innych programów typu "Commander". Osoby, które znają już jeden z tego typu programów, nie powinny mieć kłopotów z korzystaniem z WinSCP.

Program WinSCP umożliwia wykonywanie wszystkich podstawowych operacji na plikach (zarówno w obrębie lokalnego oraz zdalnego komputera): kopiowanie lub przenoszenie plików, tworzenie katalogów, zmiany nazw, usuwanie plików lub katalogów oraz zmiana uprawnień do plików na zdalnym komputerze.

Większość operacji można wykonać przy pomocy klawiszy funkcyjnych opisanych na dolnej belce okna programu. Wszelkie operacje wykonywane są wyłącznie w aktywnym panelu, a w przypadku operacji kopiowania i przenoszenia - z panelu aktywnego do nieaktywnego. Opearcje kopiowania i przenoszenia można również wykonywać myszką korzystając z techniki "ciągnij i upuść".

Powyżej paneli znajdują się dwa małe poziome okienka umożliwiające wybór bieżącego katalogu na lokalnym i zdalnym komputerze. Po prawej stronie każdego z nich znajduje się zestaw ikon służących do zmiany bieżącego katalogu na katalog nadrzędny, katalog główny (root), katalog domowy oraz do odświeżenia zawartości panelu. Nazwy plików i katalogów ukrytych wyświetlane są w kolorze szarym (przypomnienie: w systemie Unix jako ukryte traktuje się te pliki, których nazwa zaczyna się od kropki). Linki symboliczne na zdalnym komputerze oznaczane są podobnie jak skróty w systemie Windows - poprzez umieszczenie w lewym dolnym rogu ikony pliku, miniaturowego kwadratu z symbolem strzałki.

Ćwiczenia:

Uwagi uzupełniające:

Jakby ktoś chciał korzystać z WinSCP na swoim komputerze osobistym, to może pobrać z Internetu wersję instalacyjną tego programu, którą można znaleźć wchodząc na stronę projektu WinSCP.

Powyższy rozdział zaprezentował działanie programu WinSCP, czyli aplikacji działającej w systemie MSWindows i wykorzystującej protokół SCP do bezpiecznego transferu plików poprzez sieć. Protokół SCP jest wykorzystywany w wielu innych aplikacjach, np. w systemach typu Unix/Linux jest polecenie scp, którego składnia jest zbliżona do standardowego polecenia kopiowania, czyli cp. W niniejszym ćwiczenia nie będziemy testować polecenia scp, ale osobom korzystającym z linii poleceń systenów Unix/Linux proponujemy zapoznać się z tym przydatnym poleceniem samodzielnie (instrukcja polecenia scp powinna się pojawić po wpisaniu polecenia man scp).

3. Protokół HTTP

Przeglądarka i serwer WWW wykorzystują do komunikacji protokół HTTP (Hyper Text Transfer Protocol). Aplikacje pracujące z protokołem HTTP wykonują trzy podstawowe operacje: poszukują zasobów, pobierają dane oraz wyświetlają dodatkowe informacje. W celu odnalezienia danego obiektu w sieci WWW program przesyła informacje o identyfikatorze URL poszukiwanego obiektu za pośrednictwem protokołu HTTP. Jeśli poszukiwanie zakończy się sukcesem, to rozpoczyna się pobieranie danych - również przy użyciu protokołu HTTP. Program otrzymuje też wiadomość o statusie transakcji. Protokół HTTP umożliwia przekazanie informacji zarówno o wynikach poszukiwania obiektu, jak i jego transmisji. Połączenia w protokole HTTP są tworzone na czas wykonania pojedynczej operacji. W momencie, gdy zostanie ona zakończona, serwer automatycznie przerywa połączenie. Jeśli zajdzie potrzeba pobrania nowej strony - tworzone jest nowe połączenie z serwerem. Taka pojedyncza operacja nazywana jest transakcją. Obecnie niektóre serwery podtrzymują połączenie, tzn. nie przerywają go bezpośrednio po wysłaniu żądanych danych, domyślając się, że klient za chwilę zażąda danych dodatkowych, dotyczących np. plików z prezentowaną na stronie grafiką.

Transakcja w protokole HTTP dzieli się na cztery etapy:

  1. Utworzenie połączenia - tworzone jest połączenie TCP/IP (port nr 80) z serwerem WWW
  2. Wysłanie żądania - zazwyczaj jest to żądanie pobrania pliku z serwera WWW
  3. Odpowiedź serwera - serwer wysyła komunikat z odpowiedzią, zawierający kod statusu oraz ew. dane
  4. Zakończenie połączenia - przerwanie przez serwer połączenia TCP/IP

Przykład - utworzenie połączenia z serwerem www.ee.pw.edu.pl:

W celu utworzenia połączenia posługujemy się poleceniem

	% telnet www1.ee.pw.edu.pl 80

Następnie żądamy pobrania pliku index.html posługując się poleceniem

	GET http://www1.ee.pw.edu.pl/index.php HTTP/1.0

Ostatni fragment powyższego polecenia HTTP/1.0 oznacza wersję protokołu.

(Uwaga: Aby polecenie protokołu HTTP zostało zaakceptowane, musi być zakończone sekwencją znaków "powrotu karetki"(CR) i "wysunięcia strony"(LF). Można to uzyskać wciskając Enter, a natępnie Ctrl-J po wprowadzeniu polecenia.)

Jako odpowiedź dostaniemy kod pliku index.php.

Ćwiczenie:

4. DNS

Host to komputer podłączony do Internetu lub innej sieci używającej protokołu TCP/IP i posiadający unikalny adres IP.

Hosty identyfikują się za pomocą adresów IP. Jednak adresy IP są trudne do zapamiętania przez ludzi i głównie z tego powodu został wprowadzony system nazw domen DNS (ang: Domain Name System), który kojarzy nazwy domen z odpowiadającymi im adresami IP.

Do konwersji nazw DNS na adresy IP i vice-versa służy polecenie host.

Polecenie host służy także do innych celów - np. do znajdowania hosta, który obsługuje daną domenę jako serwer poczty.

Przykład:

	% host www.ee.pw.edu.pl

Wpisując to polecenie dostaniemy numer IP serwera www Wydziału Elektrycznego.

(Uwaga: Nie we wszystkich konfiguracjach systemu zmienna środowskowa PATH jest ustawiona wystarczająco, żeby powyższe wpisanie uruchomiło komendę host. Jeśli komenda host się nie uruchomi bezpośrednio, to należy wpisać pełną ścieżkę dostępu do tego polecenia, czyli /usr/sbin/host. Analogiczna uwaga może też się tyczyć poleceń z dalszej części istrukcji.)

Ćwiczenie:

5. Konfiguracja TCP/IP

Ponieważ TCP/IP jest niezależne od dolnej warstwy fizycznej, adresy IP nie są implementowane w sprzęcie, lecz w oprogramowaniu sieciowym. W odróżnieniu od adresów Ethernet, które są określone wewnątrz kart sieciowych, administrator przypisuje adresy TCP/IP do każdego interfejsu.

Do przypisania adresu sieciowego do danego interfejsu służy polecenie ifconfig. Dodatkowo należy każdy adres dodać do tablicy rutingu, do tego celu służy komenda route.

Polecenie ifconfig przypisuje lub sprawdza konfiguracyjne wartości interfejsu sieciowego. Polecenie to jest używane do nadawania każdemu interfejsowi adresu IP, maski podsieci i adresu rozgłoszeniowego.

Polecenia route można używać do dodawania lub usuwania elementów w tablicy rutowania, lub wyświetlenia tablicy rutingu.

Polecania ifconfig i route są wykorzystywane przede wszystkim przez administratora w celu ustawienia konfiguracji sieciowej komputera. Użytkownicy nie będący administratorami nie mają możliwości zmieniania ustawień sieciowych komputera, więc większość opcji poleceń ifconfig i route jest dla nich niedostępna. Mogą oni jedynie wyświetlać aktualne ustawienia. Przykładowo opcja -a polecenia ifconfig służy do wypisania listy wszystkich interfejsów sieciowych wraz z ich parametrami.

Ćwiczenie:

Uwaga: Na większości systemów jest zaimplementowany interfejs skojarzony z adresem 127.0.0.1 - tzw. "loopback", który nie jest związany z żadnym urządzeniem fizycznym, natomiast jest odpowiedzialny za komunikację wewnątrz komputera.

5. Polecenie ping

Polecenie ping służy do sprawdzania, czy dany host w sieci jest osiągalny z naszego komputera i pozwala także na zmierzenie czasów odpowiedzi.

W systemie Solaris wywołanie

 % ping host

spowoduje wyświetlenie komunikatu host is alive w przypadku, gdy uzyskano odpowiedź od danego hosta. Gdy nie uzyskano odpowiedzi w wymaganym czasie, to wyświetlany jest komunikat no answer from host.

Natomiast wywołanie polecenia

 % ping -s host
spowoduje, że co jakiś czas (co 1 sekundę) wysyłany jest do hosta pakiet kontrolny i podawany jest na ekran czas odpowiedzi dla każdego pakietu kontrolnego..

Ćwiczenia:

6. Polecenie traceroute

Polecenie traceroute podaje drogę, jaką przebywa dany pakiet przed osiągnięciem hosta docelowego.

Przykład:

	% traceroute ftp.uu.net

Powinien wyświetlić się następujący komunikat:

	traceroute to ftp.uu.net (192.48.96.9), 30 hops max, 40 byte packets
	 1  wazniak8.pwr.wroc.pl (156.17.8.30)  2 ms  2 ms  1 ms
	 2  wroc-gwb.pwr.wroc.pl (156.17.254.33)  3 ms  3 ms  2 ms
	 3  waw-wroc.nask.waw.pl (193.59.200.41)  72 ms  280 ms  226 ms
	 4  193.59.201.10 (193.59.201.10)  352 ms  81 ms  158 ms
	 5  192.121.154.81 (192.121.154.81)  994 ms *  1394 ms
	 6  icm-dc-1.icp.net (192.121.154.234)  1809 ms  1433 ms  937 ms
	 7  192.157.65.227 (192.157.65.227)  1421 ms  1240 ms  997 ms
	 8  Falls-Church4.VA.ALTER.NET (137.39.43.97)  974 ms  907 ms  1108 ms
	 9  IBMpc01.UU.NET (137.39.8.20)  1146 ms  1528 ms  4960 ms
	10  ftp.UU.NET (192.48.96.9)  1299 ms  3333 ms  2581 ms

7. Polecenie netstat

Polecenie to wyświetla aktywne połączenia protokołu TCP; porty, na których komputer nasłuchuje; statystykę sieci Ethernet; tabelę rutingu protokołu IP oraz inne parametry połączeń sieciowych

Ćwiczenia:


Valid HTML 4.01 Transitional