SK Moduł 12: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 29: | Linia 29: | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd4.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd4.png|thumb|500px]] | ||
|valign="top"|Simple Mail Transfer Protocol służy tylko i wyłącznie do przesyłania poczty między komputerami. Nie specyfikuje on systemu pocztowego wysyłającego ani odbierającego, nazw użytkowników, sposobu przechowywania informacji przez serwery pocztowe, wielkości przesyłki, liczby przesyłek. Są to najczęściej parametry konfigurowane przez administratorów serwerów pocztowych i nie mają nic wspólnego z protokołem SMTP jako takim. | |valign="top"|Simple Mail Transfer Protocol służy tylko i wyłącznie do przesyłania poczty między komputerami. Nie specyfikuje on systemu pocztowego wysyłającego ani odbierającego, nazw użytkowników, sposobu przechowywania informacji przez serwery pocztowe, wielkości przesyłki, liczby przesyłek. Są to najczęściej parametry konfigurowane przez administratorów serwerów pocztowych i nie mają nic wspólnego z protokołem SMTP jako takim. | ||
Standard SMTP określa jedynie format komunikatów wymienianych przez maszynę nadającą przesyłkę i odbierającą ją. Komunikaty te są przesyłane w postaci czytelnych tekstów ASCII, co pozwala na komunikację dowolnych serwerów pocztowych bazujących na dowolnych systemach operacyjnych. Zestaw znaków ASCII jest bardzo prosty i znany większości użytkowników. Standardowa procedura | Standard SMTP określa jedynie format komunikatów wymienianych przez maszynę nadającą przesyłkę i odbierającą ją. Komunikaty te są przesyłane w postaci czytelnych tekstów ASCII, co pozwala na komunikację dowolnych serwerów pocztowych bazujących na dowolnych systemach operacyjnych. Zestaw znaków ASCII jest bardzo prosty i znany większości użytkowników. Standardowa procedura wysyłania listu opiera się na utworzeniu połączenia TCP ze zdalną maszyną i oczekiwaniu aż ta przyśle komunikat: 220 <nazwa maszyny> ESMTP server ready. Dalej następuje, np.: | ||
HELO <nazwa maszyny wysyłającej> | HELO <nazwa maszyny wysyłającej> | ||
Linia 46: | Linia 46: | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd5.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd5.png|thumb|500px]] | ||
|valign="top"|SMTP nie przewiduje przesyłania danych w kodzie innego typu niż ASCII. Aby umożliwić dołączanie do listów poczty elektronicznej plików różnego rodzaju aplikacji, IETF (ang.Internet Engineering Task Force) zdefiniowała rozszerzenie SMTP zwane MIME (ang. Multipurpose Internet Mail Extensions). Umożliwia ono zakodowanie dowolnego typu danych w ASCII. Dzięki temu, przy pomocy SMTP można przesyłać w listach różnego rodzaju załączniki. | |valign="top"|SMTP nie przewiduje przesyłania danych w kodzie innego typu niż ASCII. Aby umożliwić dołączanie do listów poczty elektronicznej plików różnego rodzaju aplikacji, IETF (ang.Internet Engineering Task Force) zdefiniowała rozszerzenie SMTP zwane MIME (ang. Multipurpose Internet Mail Extensions). Umożliwia ono zakodowanie dowolnego typu danych w ASCII. Dzięki temu, przy pomocy SMTP można przesyłać w listach różnego rodzaju załączniki. | ||
Dane zakodowane przez MIME w nagłówkach zawierają informację konieczną do ich zdekodowania. W szczególności jest w nich zawarty typ zakodowanych danych, sposób kodowania oraz wersja MIME. List zawiera również podobnego typu informacje, aby umożliwić przesyłanie danych | Dane zakodowane przez MIME w nagłówkach zawierają informację konieczną do ich zdekodowania. W szczególności jest w nich zawarty typ zakodowanych danych, sposób kodowania oraz wersja MIME. List zawiera również podobnego typu informacje, aby umożliwić przesyłanie danych dowolnego typu. Przykład przesyłki zawierającej załącznik przedstawiony jest na slajdzie. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 53: | Linia 53: | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd6.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd6.png|thumb|500px]] | ||
|valign="top"|Jak widać, w nagłówku listu jest umieszczona informacja o użyciu MIME w wersji 1.0 oraz o tym, że list składa się z kilku części (Content-Type: multipart/mixed). | |valign="top"|Jak widać, w nagłówku listu jest umieszczona informacja o użyciu MIME w wersji 1.0 oraz o tym, że list składa się z kilku części (Content-Type: multipart/mixed). | ||
Każda z nich może być zakodowana w innym formacie, co również przedstawia | Każda z nich może być zakodowana w innym formacie, co również przedstawia przykład. Standard MIME wymaga od aplikacji używania pary identyfikatorów, rozdzielonych znakiem "/" w nagłówku Content-Type. Pierwszy identyfikator, oprócz przedstawionego w przykładzie, informuje o typie danych. Możliwe są następujące typy: | ||
text - tekst, | text - tekst, | ||
image - obrazy typu GIF, JPEG, BMP, itd | image - obrazy typu GIF, JPEG, BMP, itd; | ||
audio - dane audio, | audio - dane audio, | ||
video - dane video, | video - dane video, | ||
application - dane programu, | application - dane programu, | ||
message - list poczty elektronicznej. | message - list poczty elektronicznej. | ||
Drugi identyfikator natomiast definiuje dokładniej, jakiego typu są to dane. Standard MIME wymusza również, aby dany typ danych zawierał konkretne | Drugi identyfikator natomiast definiuje dokładniej, jakiego typu są to dane. Standard MIME wymusza również, aby dany typ danych zawierał konkretne "podtypy", np. dane audio nie mogą w podtypie zawierać gif. | ||
Dla przedstawionego w przykładzie typu multipart, oprócz danych mixed IETF przewidział inne typy danych: | Dla przedstawionego w przykładzie typu multipart, oprócz danych mixed IETF przewidział inne typy danych: | ||
alternative - wiele typów | alternative - wiele typów kodowania tych samych danych, | ||
parallel - gdy pojedyncze części powinny być oglądane wspólnie, np. audio i video, | parallel - gdy pojedyncze części powinny być oglądane wspólnie, np. audio i video, | ||
digest - gdy przesyłka zawiera zbiór innych listów, np. fragment archiwum jakiejś listy dyskusyjnej. | digest - gdy przesyłka zawiera zbiór innych listów, np. fragment archiwum jakiejś listy dyskusyjnej. | ||
Linia 70: | Linia 70: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd7.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd7.png|thumb|500px]] | ||
|valign="top"|Dostarczanie przesyłek poczty elektronicznej odbywa się w następujący sposób. Nadawca tworzy list a następnie łączy się przy pomocy swojego klienta pocztowego (MUA - ang. Mail User Agent) z serwerem (MTA - ang. Mail Transfer Agent), który go wyśle. Jeżeli połączenie się nie uda, to list nie jest wysyłany. Najczęściej program wysyłającego umieszcza go w swojej lokalnej kolejce listów oczekujących na wysłanie. Po ustalonym czasie lub przy próbie wysłania kolejnego listu i nawiązaniu połączenia z serwerem, wszystkie listy oczekujące na wysłanie zostaną przekazane do serwera. Przykład konfiguracji klienta poczty przedstawia slajd. | |valign="top"|Dostarczanie przesyłek poczty elektronicznej odbywa się w następujący sposób. Nadawca tworzy list, a następnie łączy się przy pomocy swojego klienta pocztowego (MUA - ang. Mail User Agent) z serwerem (MTA - ang. Mail Transfer Agent), który go wyśle. Jeżeli połączenie się nie uda, to list nie jest wysyłany. Najczęściej program wysyłającego umieszcza go w swojej lokalnej kolejce listów oczekujących na wysłanie. Po ustalonym czasie lub przy próbie wysłania kolejnego listu i nawiązaniu połączenia z serwerem, wszystkie listy oczekujące na wysłanie zostaną przekazane do serwera. Przykład konfiguracji klienta poczty przedstawia slajd. | ||
Serwer pocztowy gromadzi listy do wysłania w zdefiniowanych kolejkach. Po umieszczeniu przesyłki w kolejce, serwer nawiązuje połączenie z odległym serwerem pocztowym. Na podstawie informacji w nagłówkach listu, lokalny serwer wie, w jakiej domenie DNS znajduje się adresat. Dzięki temu oraz rekordom MX systemu DNS może ustalić nazwę i adres IP maszyny obsługującej pocztę elektroniczną w domenie adresata. Po ustaleniu adresu IP próbuje nawiązać połączenie TCP z odległą maszyną. Jeśli się to uda, przesyła wiadomość do tej maszyny i po potwierdzeniu jej odebrania likwiduje kopię przesyłki w lokalnej kolejce. | Serwer pocztowy gromadzi listy do wysłania w zdefiniowanych kolejkach. Po umieszczeniu przesyłki w kolejce, serwer nawiązuje połączenie z odległym serwerem pocztowym. Na podstawie informacji w nagłówkach listu, lokalny serwer wie, w jakiej domenie DNS znajduje się adresat. Dzięki temu oraz rekordom MX systemu DNS może ustalić nazwę i adres IP maszyny obsługującej pocztę elektroniczną w domenie adresata. Po ustaleniu adresu IP próbuje nawiązać połączenie TCP z odległą maszyną. Jeśli się to uda, przesyła wiadomość do tej maszyny i po potwierdzeniu jej odebrania likwiduje kopię przesyłki w lokalnej kolejce. | ||
Linia 89: | Linia 89: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd9.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd9.png|thumb|500px]] | ||
|valign="top"|W ramach jednej sesji serwer POP3 pracuje kolejno w kilku trybach. Zaraz po nawiązaniu połączenia znajduje się w trybie autoryzacji. Przejście do następnego trybu następuje, gdy klient pomyślnie przejdzie proces identyfikacji -- poda prawidłową nazwę użytkownika i hasło. Serwer wówczas uzyskuje prawo do przeczytania | |valign="top"|W ramach jednej sesji serwer POP3 pracuje kolejno w kilku trybach. Zaraz po nawiązaniu połączenia znajduje się w trybie autoryzacji. Przejście do następnego trybu następuje, gdy klient pomyślnie przejdzie proces identyfikacji -- poda prawidłową nazwę użytkownika i hasło. Serwer wówczas uzyskuje prawo do przeczytania zawartości skrzynki użytkownika. Po przeczytaniu informuje o liczbie wiadomości w skrzynce i przechodzi do trybu transakcyjnego. Po przesłaniu wiadomości ze skrzynki serwer czeka na komendę QUIT. Po jej otrzymaniu przechodzi do trybu odświeżania informacji na serwerze. W tym trybie aktualizowana jest informacja o przeczytanych bądź nieprzeczytanych wiadomościach w skrzynce użytkownika oraz zwalniane są uprzednio zajęte zasoby systemu. Następnie serwer zamyka połączenie TCP. | ||
Przed wejściem w tryb transakcyjny serwer POP3 blokuje dostęp do skrzynki, aby ochronić ją przed modyfikacją zanim serwer przejdzie do trybu odświeżania informacji o skrzynce. | Przed wejściem w tryb transakcyjny serwer POP3 blokuje dostęp do skrzynki, aby ochronić ją przed modyfikacją zanim serwer przejdzie do trybu odświeżania informacji o skrzynce. | ||
Po otwarciu skrzynki serwer POP3 przypisuje każdej wiadomości numer (zaczynając od 1) oraz sprawdza wielkość każdej z nich w bajtach. Gdy serwer zmienia tryb pracy na transakcyjny, jest wyświetlana informacja o liczbie wiadomości i ich łącznej wielkości. Prezentuje to przykład na slajdzie. | Po otwarciu skrzynki serwer POP3 przypisuje każdej wiadomości numer (zaczynając od 1) oraz sprawdza wielkość każdej z nich w bajtach. Gdy serwer zmienia tryb pracy na transakcyjny, jest wyświetlana informacja o liczbie wiadomości i ich łącznej wielkości. Prezentuje to przykład na slajdzie. | ||
Linia 103: | Linia 103: | ||
dele <numer_wiadomości> - usuwa wiadomość o podanym numerze, | dele <numer_wiadomości> - usuwa wiadomość o podanym numerze, | ||
noop - serwer nic nie robi, odpowiada +OK, | noop - serwer nic nie robi, odpowiada +OK, | ||
rset - jeśli jakiekolwiek wiadomości były zaznaczone jako | rset - jeśli jakiekolwiek wiadomości były zaznaczone jako "usunięte" znaczniki usunięcia są cofane, | ||
top <numer_wiadomości> <liczba> - komenda może dotyczyć tylko wiadomości nie oznaczonych jako skasowane. Serwer odpowiada liczbą linii (począwszy od nagłówka) wskazanej wiadomości, | top <numer_wiadomości> <liczba> - komenda może dotyczyć tylko wiadomości nie oznaczonych jako skasowane. Serwer odpowiada liczbą linii (począwszy od nagłówka) wskazanej wiadomości, | ||
uidl - <numer_wiadomości> - serwer odpowiada unikalnym numerem wiadomości. Numer ten jest zawsze stały niezależnie od sesji. Służy programom klientów do rozróżnienia, które wiadomości są nowe, a które były już wcześniej odczytane. W przypadku nie podania numeru wiadomości serwer przedstawia identyfikatory dla wszystkich wiadomości w skrzynce, | uidl - <numer_wiadomości> - serwer odpowiada unikalnym numerem wiadomości. Numer ten jest zawsze stały niezależnie od sesji. Służy programom klientów do rozróżnienia, które wiadomości są nowe, a które były już wcześniej odczytane. W przypadku nie podania numeru wiadomości serwer przedstawia identyfikatory dla wszystkich wiadomości w skrzynce, | ||
Linia 115: | Linia 115: | ||
|valign="top"|Protokół ten został zdefiniowany w dokumencie RFC1730. Jego uaktualnienie zawiera RFC3501. Przedstawione poniżej omówienie odnosi się do wersji 4 protokołu IMAP. Poprzednie, 2 i 2bis, są raczej rzadko używane. | |valign="top"|Protokół ten został zdefiniowany w dokumencie RFC1730. Jego uaktualnienie zawiera RFC3501. Przedstawione poniżej omówienie odnosi się do wersji 4 protokołu IMAP. Poprzednie, 2 i 2bis, są raczej rzadko używane. | ||
Podobnie jak POP3, protokół IMAP pozwala użytkownikom na zdalny dostęp do swoich skrzynek pocztowych na serwerach, ich modyfikowanie, przeszukiwanie, tworzenie folderów, ustawianie flag. Nie pozwala na wysyłanie wiadomości poczty elektronicznej. | Podobnie jak POP3, protokół IMAP pozwala użytkownikom na zdalny dostęp do swoich skrzynek pocztowych na serwerach, ich modyfikowanie, przeszukiwanie, tworzenie folderów, ustawianie flag. Nie pozwala na wysyłanie wiadomości poczty elektronicznej. | ||
Klient pocztowy użytkownika, podobnie jak w poprzednim przypadku, musi nawiązać połączenie TCP z serwerem IMAP, port 143. Przed każdą komendą klient generuje dla niej identyfikator tzw. tag, np. A0001. Do serwera wysyłana jest cała komenda poprzedzona tym identyfikatorem. W przypadku wystąpienia błędu serwer odpowiada komunikatem BAD i podaje identyfikator komendy, która błąd | Klient pocztowy użytkownika, podobnie jak w poprzednim przypadku, musi nawiązać połączenie TCP z serwerem IMAP, port 143. Przed każdą komendą klient generuje dla niej identyfikator tzw. tag, np. A0001. Do serwera wysyłana jest cała komenda poprzedzona tym identyfikatorem. W przypadku wystąpienia błędu serwer odpowiada komunikatem BAD i podaje identyfikator komendy, która spowodowała błąd. W przeciwnym przypadku serwer zwraca OK. Jest jeszcze jeden rodzaj komunikatu - NO - zwracany przez serwer, gdy wystąpi błąd nie związany z formatem komendy lub protokołem. Komendy wysyłane do/lub z serwera są w postaci normalnego tekstu. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 138: | Linia 138: | ||
LOGOUT - rozłączenie. | LOGOUT - rozłączenie. | ||
Są to jedyne trzy komendy, które klient może wydać serwerowi w każdym stanie. Przedstawia to przykład na slajdzie. | Są to jedyne trzy komendy, które klient może wydać serwerowi w każdym stanie. Przedstawia to przykład na slajdzie. | ||
Po otwarciu sesji TCP z serwerem klient protokołu IMAP znajduje się w pierwszym z wymienionych trybów pracy. Przebywając w nim może wydać serwerowi komendę AUTHENTICATE lub LOGIN. Komendy te mogą mieć kilka różnych argumentów, które określają sposób autoryzacji użytkownika. Jeśli serwer obsługuje wybrany sposób autoryzacji, to rozpoczyna wysyłanie serii zapytań do klienta. Każde z tych zapytań musi zaczynać się od +. Komunikaty są kodowane przy użyciu kodowania BASE64. Jeśli klient chce przerwać proces autoryzacji | Po otwarciu sesji TCP z serwerem klient protokołu IMAP znajduje się w pierwszym z wymienionych trybów pracy. Przebywając w nim może wydać serwerowi komendę AUTHENTICATE lub LOGIN. Komendy te mogą mieć kilka różnych argumentów, które określają sposób autoryzacji użytkownika. Jeśli serwer obsługuje wybrany sposób autoryzacji, to rozpoczyna wysyłanie serii zapytań do klienta. Każde z tych zapytań musi zaczynać się od +. Komunikaty są kodowane przy użyciu kodowania BASE64. Jeśli klient chce przerwać proces autoryzacji, to wysyła do serwera znak *. Oprócz samego procesu autoryzacji serwer może negocjować z klientem sposób zabezpieczenia tej sesji. Jeśli obie strony zgodzą się na stosowanie wybranego mechanizmu ochrony sesji, to jest on stosowany do każdego komunikatu wymienianego między serwerem a klientem. Nie ma jednak wymagań na to, które z metod autoryzacji muszą być obsługiwane przez serwer, jak również wymagań stosowania określonych sposobów zabezpieczania sesji. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 155: | Linia 155: | ||
<n> RECENT - liczba nowych wiadomości od czasu ostatniego jej czytania, | <n> RECENT - liczba nowych wiadomości od czasu ostatniego jej czytania, | ||
OK [UIDVALIDITY <n>] - unikalny identyfikator skrzynki; jest on stały dla wszystkich sesji. Serwer może modyfikować tylko jedną skrzynkę na raz. Zmiana skrzynki powoduje, że poprzednia przestaje być dostępna. Jeśli wybrana skrzynka również okaże się niedostępna, to serwer nie będzie operował na żadnej skrzynce czekając znowu na komendę SELECT. Po wydaniu komendy SELECT skrzynka jest otwarta w trybie read-write. | OK [UIDVALIDITY <n>] - unikalny identyfikator skrzynki; jest on stały dla wszystkich sesji. Serwer może modyfikować tylko jedną skrzynkę na raz. Zmiana skrzynki powoduje, że poprzednia przestaje być dostępna. Jeśli wybrana skrzynka również okaże się niedostępna, to serwer nie będzie operował na żadnej skrzynce czekając znowu na komendę SELECT. Po wydaniu komendy SELECT skrzynka jest otwarta w trybie read-write. | ||
EXAMINE - działa tak samo jak SELECT ale otwiera skrzynkę w trybie read-only, | EXAMINE - działa tak samo jak SELECT, ale otwiera skrzynkę w trybie read-only, | ||
CRATE - tworzy nową skrzynkę o nazwie podanej jako argument, | CRATE - tworzy nową skrzynkę o nazwie podanej jako argument, | ||
DELETE - usuwa skrzynkę o podanej nazwie, | DELETE - usuwa skrzynkę o podanej nazwie, | ||
Linia 170: | Linia 170: | ||
Pierwszym argumentem zazwyczaj jest katalog ze skrzynkami pocztowymi. Drugi wyszukuje skrzynki zgodnie z maską; możliwe jest podawanie wzorców np, "%", który oznacza skrzynkę o dowolnej nazwie w katalogu podanym jako argument pierwszy, | Pierwszym argumentem zazwyczaj jest katalog ze skrzynkami pocztowymi. Drugi wyszukuje skrzynki zgodnie z maską; możliwe jest podawanie wzorców np, "%", który oznacza skrzynkę o dowolnej nazwie w katalogu podanym jako argument pierwszy, | ||
LSUB - komenda działa tak samo jak LIST z tym, że brane są pod uwagę tylko skrzynki oznaczone jako aktywne, | LSUB - komenda działa tak samo jak LIST z tym, że brane są pod uwagę tylko skrzynki oznaczone jako aktywne, | ||
APPEND - zapisuje do wskazanej skrzynki podany argument tesktowy (wiadomość) | APPEND - zapisuje do wskazanej skrzynki podany argument tesktowy (wiadomość). | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 194: | Linia 194: | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd17.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd17.png|thumb|500px]] | ||
|valign="top"|Z punktu widzenia użytkownika, najważniejszą funkcją oferowaną przez serwery IMAP, jest możliwość dokładnego zarządzania wiadomościami na serwerze oraz możliwość szybkiego ich odbierania. W przeciwieństwie do serwerów POP3, serwery IMAP mogą wysyłać klientowi tylko nagłówki wiadomości bez ich treści. Dla użytkowników łączących się z siecią przez zwykłe modemy jest to ogromne udogodnienie. Mogą od razu kasować niechciane wiadomości bez przesyłania ich na swój lokalny komputer. Użytkownicy mogą sortować nadchodzące przesyłki i zapisywać je do różnych skrzynek zgodnie ze zdefiniowanymi przez siebie regułami. | |valign="top"|Z punktu widzenia użytkownika, najważniejszą funkcją oferowaną przez serwery IMAP, jest możliwość dokładnego zarządzania wiadomościami na serwerze oraz możliwość szybkiego ich odbierania. W przeciwieństwie do serwerów POP3, serwery IMAP mogą wysyłać klientowi tylko nagłówki wiadomości bez ich treści. Dla użytkowników łączących się z siecią przez zwykłe modemy jest to ogromne udogodnienie. Mogą od razu kasować niechciane wiadomości bez przesyłania ich na swój lokalny komputer. Użytkownicy mogą sortować nadchodzące przesyłki i zapisywać je do różnych skrzynek zgodnie ze zdefiniowanymi przez siebie regułami. | ||
Inną zaletą korzystania z serwerów IMAP jest możliwość rozsyłania wiadomości w grupie użytkowników bez potrzeby obciążania serwera pocztowego. Wystarczy, że zapisze on wiadomość w podanej skrzynce, którą będą mogli wybrać użytkownicy tej grupy w konfiguracji swoich klientów IMAP. W przypadku serwera POP3 konieczne w takim wypadku jest rozesłanie wiadomości do wszystkich użytkowników. W konfiguracji klienta POP3 można też stworzyć dodatkowe konto u każdego klienta w grupie a klientom kazać odbierać pocztę również z tych dodatkowych kont. Jest to jednak rozwiązanie bardziej złożone niż w protokole IMAP. | Inną zaletą korzystania z serwerów IMAP jest możliwość rozsyłania wiadomości w grupie użytkowników bez potrzeby obciążania serwera pocztowego. Wystarczy, że zapisze on wiadomość w podanej skrzynce, którą będą mogli wybrać użytkownicy tej grupy w konfiguracji swoich klientów IMAP. W przypadku serwera POP3 konieczne w takim wypadku jest rozesłanie wiadomości do wszystkich użytkowników. W konfiguracji klienta POP3 można też stworzyć dodatkowe konto u każdego klienta w grupie, a klientom kazać odbierać pocztę również z tych dodatkowych kont. Jest to jednak rozwiązanie bardziej złożone niż w protokole IMAP. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 201: | Linia 201: | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd18.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd18.png|thumb|500px]] | ||
|valign="top"|Przesyłanie plików przez użytkowników jest jedną z najczęściej wykonywanych operacji. Stanowią one znaczną część ruchu w sieciach komputerowych. | |valign="top"|Przesyłanie plików przez użytkowników jest jedną z najczęściej wykonywanych operacji. Stanowią one znaczną część ruchu w sieciach komputerowych. | ||
Protokoły do tego używane zapewniają dostęp do plików na innych komputerach dwiema drogami: albo przez kopiowanie (FTP, SCP) albo jako dostęp zintegrowany z systemem operacyjnym gdzie operacje dostępu do zdalnych plików są dla użytkownika niewidoczne (NFS, CIFS). W obu jednak przypadkach protokoły muszą uwzględniać prawa dostępu do pliku (nie zawsze zapisywane w ten sam sposób jak w systemie lokalnym), różnice w nazwach plików, różnice w reprezentacjach binarnych (choć czasami konwersja formatów powodowałaby utratę danych i jest niemożliwa). | Protokoły do tego używane zapewniają dostęp do plików na innych komputerach dwiema drogami: albo przez kopiowanie (FTP, SCP) albo jako dostęp zintegrowany z systemem operacyjnym, gdzie operacje dostępu do zdalnych plików są dla użytkownika niewidoczne (NFS, CIFS). W obu jednak przypadkach protokoły muszą uwzględniać prawa dostępu do pliku (nie zawsze zapisywane w ten sam sposób jak w systemie lokalnym), różnice w nazwach plików, różnice w reprezentacjach binarnych (choć czasami konwersja formatów powodowałaby utratę danych i jest niemożliwa). | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 207: | Linia 207: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd19.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd19.png|thumb|500px]] | ||
|valign="top"|FTP (ang. File Transfer Protocol był pierwszym z protokołów przeznaczonych specjalnie do transferu plików. Aby z niego korzystać, użytkownik musi mieć program klienta. Program klienta oferuje użytkownikowi dostęp interakcyjny. Program ten łączy się ze wskazanym serwerem FTP, próbując otworzyć sesję TCP na porcie 21. Przed wykonaniem jakichkolwiek operacji przesłania danych do lub z serwera, użytkownik musi podać identyfikator w postaci nazwy użytkownika i hasła. | |valign="top"|FTP (ang. File Transfer Protocol) był pierwszym z protokołów przeznaczonych specjalnie do transferu plików. Aby z niego korzystać, użytkownik musi mieć program klienta. Program klienta oferuje użytkownikowi dostęp interakcyjny. Program ten łączy się ze wskazanym serwerem FTP, próbując otworzyć sesję TCP na porcie 21. Przed wykonaniem jakichkolwiek operacji przesłania danych do lub z serwera, użytkownik musi podać identyfikator w postaci nazwy użytkownika i hasła. | ||
Serwer i klient FTP używają odrębnego połączenia do przesyłania danych sterujących oraz odrębnych połączeń do transmisji każdego z czytanych lub zapisywanych plików z osobna. Połączenie sterujące jest otwarte tak długo jak trwa sesja FTP. Wszystkie komendy wysyłane do serwera oraz jego odpowiedzi są przesyłane w kodzie ASCII (tak samo jak w przypadku SMTP, POP3, IMAP). | Serwer i klient FTP używają odrębnego połączenia do przesyłania danych sterujących oraz odrębnych połączeń do transmisji każdego z czytanych lub zapisywanych plików z osobna. Połączenie sterujące jest otwarte tak długo jak trwa sesja FTP. Wszystkie komendy wysyłane do serwera oraz jego odpowiedzi są przesyłane w kodzie ASCII (tak samo jak w przypadku SMTP, POP3, IMAP). | ||
Do transmisji danych wykorzystywany jest protokół UDP. Klient lokalnie używa dowolnego, numeru portu niezajętego przez inną aplikację. Wysyła do serwera jego numer i czeka, aż serwer wybierze swój port. Następnie klient otwiera połączenie ze wskazanym portem i transmituje dane. Jest to tzw. tryb active pracy klienta. Serwer może również do tego celu użyć zastrzeżonego numeru portu TCP - 20. Alternatywą trybu active jest passive. W trybie tym to serwer pracuje tylko i wyłącznie na porcie 20. | Do transmisji danych wykorzystywany jest protokół UDP. Klient lokalnie używa dowolnego, numeru portu niezajętego przez inną aplikację. Wysyła do serwera jego numer i czeka, aż serwer wybierze swój port. Następnie klient otwiera połączenie ze wskazanym portem i transmituje dane. Jest to tzw. tryb active pracy klienta. Serwer może również do tego celu użyć zastrzeżonego numeru portu TCP - 20. Alternatywą trybu active jest passive. W trybie tym to serwer pracuje tylko i wyłącznie na porcie 20. | ||
Linia 217: | Linia 217: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd20.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd20.png|thumb|500px]] | ||
|valign="top"|Sieciowy system plików (ang. Network File System) został opracowany przez firmę Sun Microsystems. System ten zapewnia użytkownikowi | |valign="top"|Sieciowy system plików (ang. Network File System) został opracowany przez firmę Sun Microsystems. System ten zapewnia użytkownikowi "przezroczysty" dostęp do plików i programów położonych na innych komputerach. Konieczne do tego jest jedynie uruchomienie serwera NFS oraz wyposażenie użytkownika w program klienta. | ||
Klient może wysyłać do serwera polecenia otwarcia, zapisania, odczytania pliku. Serwer sprawdza czy użytkownik, który wysyła te polecenia ma prawo do wykonania tych operacji. Informacje o tym są pobierane przez serwer na podstawie identyfikatora użytkownika, który albo istnieje w lokalnych dla serwera plikach konfiguracyjnych (np. /etc/passwd i musi być identyczny na stacji użytkownika i serwerze w systemach UNIX) albo są dostępne przez serwisy takie jak NIS lub NIS+ (ang. Network Information Service). | Klient może wysyłać do serwera polecenia otwarcia, zapisania, odczytania pliku. Serwer sprawdza czy użytkownik, który wysyła te polecenia ma prawo do wykonania tych operacji. Informacje o tym są pobierane przez serwer na podstawie identyfikatora użytkownika, który albo istnieje w lokalnych dla serwera plikach konfiguracyjnych (np. /etc/passwd i musi być identyczny na stacji użytkownika i serwerze w systemach UNIX) albo są dostępne przez serwisy takie jak NIS lub NIS+ (ang. Network Information Service). | ||
Oprócz tego serwer określa z jakimi prawami udostępniane są wskazane w konfiguracji zasoby. W szczególności może zabronić wykonywania programów z ustawionym bitem SUID [*] . | Oprócz tego serwer określa z jakimi prawami udostępniane są wskazane w konfiguracji zasoby. W szczególności może zabronić wykonywania programów z ustawionym bitem SUID [*]. | ||
Projektanci NFS oparli ten protokół o dwa wcześniej opracowane protokoły: RPC (ang. Remote Procedure Call) oraz XDR (ang. eXternal Data Representation). Mechanizm RPC daje możliwość | Projektanci NFS oparli ten protokół o dwa wcześniej opracowane protokoły: RPC (ang. Remote Procedure Call) oraz XDR (ang. eXternal Data Representation). Mechanizm RPC daje możliwość podzielenia kodu aplikacji na kod serwera i klienta. Programista może wydzielić wybrane funkcje jako odległe i wskazać to kompilatorowi. Kompilator wówczas dołącza odpowiednie kody procedur RPC w trakcie kompilacji programu. RPC ukrywa przed programistą wszelkie szczegóły protokołów. Dzięki temu jest chętnie wykorzystywany do budowy systemów rozproszonych. Program klient wywołując zdalną procedurę sam tworzy odpowiedni rodzaj komunikatu i wysyła go do serwera. Nawiązanie połączenia jest zupełnie niewidoczne dla użytkownika. | ||
Drugi z protokołów, XDR, daje możliwość przekazywania danych w środowisku heterogenicznym bez konieczności ich konwersji do odpowiednich typów standardów sprzętowych. Jego główną zaletą jest automatyczna konwersja formatów danych między klientami a serwerami systemu NFS. | Drugi z protokołów, XDR, daje możliwość przekazywania danych w środowisku heterogenicznym bez konieczności ich konwersji do odpowiednich typów standardów sprzętowych. Jego główną zaletą jest automatyczna konwersja formatów danych między klientami a serwerami systemu NFS. | ||
|} | |} | ||
Linia 228: | Linia 228: | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd21.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd21.png|thumb|500px]] | ||
|valign="top"|SCP (ang. Secure Copy) jest usługą najczęściej interpretowaną jako fragment oprogramowania SSH (opisanego w dalszej części). Wynika to stąd, że usługa ta jest instalowana w systemach przy okazji uruchamiania tego serwisu. Można z niej jednak korzystać bez instalacji całego SSH. W chwili obecnej dostępne są programy SCP działające zarówno w środowisku Windows (WinSCP, pscp) jak i wszelkiego typu systemach UNIX. Slajd przedstawia przykład działania programu WinSCP. | |valign="top"|SCP (ang. Secure Copy) jest usługą najczęściej interpretowaną jako fragment oprogramowania SSH (opisanego w dalszej części). Wynika to stąd, że usługa ta jest instalowana w systemach przy okazji uruchamiania tego serwisu. Można z niej jednak korzystać bez instalacji całego SSH. W chwili obecnej dostępne są programy SCP działające zarówno w środowisku Windows (WinSCP, pscp) jak i wszelkiego typu systemach UNIX. Slajd przedstawia przykład działania programu WinSCP. | ||
W | W swoim działaniu, z dotychczas wymienionych usług, SCP najbardziej przypomina FTP. Oferuje mechanizm autoryzacji użytkownika przed wykonaniem operacji odczytu lub zapisu plików. W przeciwieństwie jednak do FTP, SCP nie używa dwóch odrębnych kanałów do komunikacji i transferu danych. Poza tym nie pracuje w trybie interaktywnym z użytkownikiem, choć niektóre programy np. WinSCP pozwalają na to. To, co wyróżnia SCP, to stosowanie mechanizmów kryptograficznych przy wymianie danych między serwerem a klientem. Najczęściej są to te same mechanizmy, które oferuje SSH, gdyż to właśnie ta usługa jest wykorzystywana do zestawiania sesji, wymiany kluczy między serwerem a klientem, ustalaniu parametrów transmisji (kompresja przesyłanych danych lub jej brak, częstotliwość wymiany klucza). | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 240: | Linia 240: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd23.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd23.png|thumb|500px]] | ||
|valign="top"|Protokół ten umożliwia użytkownikowi zestawienie sesji TCP między dwoma odległymi systemami. Na jednym z nich musi pracować proces serwera TELNET. Użytkownik musi być wyposażony w program klienta. Użytkownik może wskazać serwer TELNET | |valign="top"|Protokół ten umożliwia użytkownikowi zestawienie sesji TCP między dwoma odległymi systemami. Na jednym z nich musi pracować proces serwera TELNET. Użytkownik musi być wyposażony w program klienta. Użytkownik może wskazać serwer TELNET podając jego nazwę lub numer IP. Serwer przeprowadza autoryzację użytkownika. W tym celu musi on podać nazwę użytkownika i hasło. Jednak przesyłane dane, pomiędzy klientem i serwerem, nie są w żaden sposób zabezpieczone przed podsłuchem. | ||
Po nawiązaniu sesji TCP klient przesyła do serwera informacje o wszystkich naciśniętych klawiszach. Zwrotnie przyjmuje znaki, które przysłał serwer i wyświetla je na terminalu użytkownika. Ponieważ serwer TELNET | Po nawiązaniu sesji TCP klient przesyła do serwera informacje o wszystkich naciśniętych klawiszach. Zwrotnie przyjmuje znaki, które przysłał serwer i wyświetla je na terminalu użytkownika. Ponieważ serwer TELNET musi obsługiwać wiele sesji jednocześnie, zazwyczaj jeden proces serwera oczekuje na nowe połączenia na porcie 23 TCP. Dalej przekazuje on obsługę połączenia tworzonemu w tym celu procesowi podrzędnemu. Dla użytkownika, po nawiązaniu sesji przy pomocy TELNET, praca z odległym systemem przebiega w sposób przypominający pracę na lokalnej konsoli. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 260: | Linia 260: | ||
Najbardziej złożoną częścią protokołu TELNET jest możliwość negocjacji opcji. Dzięki nim połączenie może być rekonfigurowane np. z trybu half-duplex do trybu full-duplex lub też określony zostaje rodzaj terminalu użytkownika. Najczęściej używane opcje zawiera tabela na slajdzie. | Najbardziej złożoną częścią protokołu TELNET jest możliwość negocjacji opcji. Dzięki nim połączenie może być rekonfigurowane np. z trybu half-duplex do trybu full-duplex lub też określony zostaje rodzaj terminalu użytkownika. Najczęściej używane opcje zawiera tabela na slajdzie. | ||
Opcje są negocjowane na zasadzie zgłaszania próśb. Strona odbierająca prośbę (komunikat WILL X) o użycie danej opcji albo ją akceptuje (komunikat DO X) albo odrzuca (komunikat DON'T X). Mechanizm ten pozwala na negocjację opcji bez jakichkolwiek informacji o drugiej stronie. Dzięki temu jest możliwa współpraca starszych i nowszych wersji klientów i serwerów. | Opcje są negocjowane na zasadzie zgłaszania próśb. Strona odbierająca prośbę (komunikat WILL X) o użycie danej opcji albo ją akceptuje (komunikat DO X) albo odrzuca (komunikat DON'T X). Mechanizm ten pozwala na negocjację opcji bez jakichkolwiek informacji o drugiej stronie. Dzięki temu jest możliwa współpraca starszych i nowszych wersji klientów i serwerów. | ||
Niewątpliwą zaletą TELNET | Niewątpliwą zaletą TELNET jest jego popularność oraz w miarę prosta implementacja, z czego korzysta wielu producentów urządzeń sieciowych do zdalnego zarządzania swoimi produktami. Wadą jest przesyłanie znak po znaku tego co wpisuje użytkownik (jeśli nie zostaną wynegocjowane odpowiednie opcje) oraz zupełny brak zabezpieczeń przed podsłuchiwaniem treści przesyłanych między serwerem a klientem. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 266: | Linia 266: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd26.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd26.png|thumb|500px]] | ||
|valign="top"|Secure Shell jest usługą funkcjonalnie zbliżoną do TELNET | |valign="top"|Secure Shell jest usługą funkcjonalnie zbliżoną do usługi TELNET. Tak samo jak w przypadku TELNET użytkownik musi posiadać program klienta łączącego się z procesem serwera. Po połączeniu ze zdalnym systemem użytkownik ma możliwość korzystania z dostępnych na nim poleceń i programów. SSH zawiera również możliwość negocjowania niektórych opcji połączenia oraz ustalanie parametrów wirtualnych terminali. Jednak na tym podobieństwa się kończą. Autorzy SSH stworzyli protokół wymiany danych, odporny na podsłuch sieciowy. Cała komunikacja między dwoma zdalnymi systemami jest szyfrowana. Do tego celu użyli silnych kryptograficznie i ogólnie dostępnych algorytmów ( w niektórych krajach, np. USA niektóre z nich są opatentowane i niestety ich eksport poza granice tego kraju jest prawnie zakazany). Z tej zalety SSH szeroko korzystają i doceniają administratorzy systemów oraz ci użytkownicy, którym zależy na bezpieczeństwie przesyłanych danych. W szczególności dotyczy to haseł dostępu do systemów. | ||
Program klienta w celu połączenia z serwerem musi zestawić sesję TCP z maszyną serwera. Standardowo proces serwera oczekuje na połączenia na porcie 22 TCP. Po takim połączeniu przekazuje obsługę do procesu potomnego, sam czekając dalej na nowe połączenia. | Program klienta w celu połączenia z serwerem musi zestawić sesję TCP z maszyną serwera. Standardowo proces serwera oczekuje na połączenia na porcie 22 TCP. Po takim połączeniu przekazuje obsługę do procesu potomnego, sam czekając dalej na nowe połączenia. | ||
Po zestawieniu połączenia TCP klient i serwer SSH ustalają między sobą między innymi rodzaj algorytmu szyfrującego, zasady kompresji przesyłanych danych, możliwość przesyłania informacji generowanych przez aplikacje działające w środowiskach graficznych. Odbywa się to na zasadzie wysłania informacji o obsługiwanych algorytmach i opcjach przez klienta do serwera. Następnie klient otrzymuje listy obsługiwanych algorytmów i opcji od serwera. Wówczas klient wybiera (jeśli użytkownik wyraźnie tego nie określił) rodzaj stosowanego algorytmu. Zanim jednak klient wyśle do serwera dalsze informacje, przy pomocy algorytmu Diffiego-Hellmana ustalany jest wspólny symetryczny klucz w niezabezpieczonym kanale. Klucz ten służy do zabezpieczania przesyłanych danych w dalszej komunikacji. Klucz ten posiada każda ze stron ale nie jest on nigdy przesyłany między nimi. Przykład możliwych do wyboru opcji przedstawia rys. 7.4. | Po zestawieniu połączenia TCP klient i serwer SSH ustalają między sobą między innymi rodzaj algorytmu szyfrującego, zasady kompresji przesyłanych danych, możliwość przesyłania informacji generowanych przez aplikacje działające w środowiskach graficznych. Odbywa się to na zasadzie wysłania informacji o obsługiwanych algorytmach i opcjach przez klienta do serwera. Następnie klient otrzymuje listy obsługiwanych algorytmów i opcji od serwera. Wówczas klient wybiera (jeśli użytkownik wyraźnie tego nie określił) rodzaj stosowanego algorytmu. Zanim jednak klient wyśle do serwera dalsze informacje, przy pomocy algorytmu Diffiego-Hellmana ustalany jest wspólny symetryczny klucz w niezabezpieczonym kanale. Klucz ten służy do zabezpieczania przesyłanych danych w dalszej komunikacji. Klucz ten posiada każda ze stron, ale nie jest on nigdy przesyłany między nimi. Przykład możliwych do wyboru opcji przedstawia rys. 7.4. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 274: | Linia 274: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd27.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd27.png|thumb|500px]] | ||
|valign="top"|Wstępne dane są zabezpieczone wybranym symetrycznym algorytmem szyfrującym, ale algorytm opiera swoje działanie na idei szyfrowania asymetrycznego. W systemach tych do szyfrowania lub deszyfrowania potrzebne są dwa odrębne klucze: prywatny i publiczny. Wiadomość zaszyfrowana kluczem publicznym może być odczytana tylko przez kogoś, kto posiada klucz prywatny z tej pary kluczy. Klucze prywatny i publiczny powinny być wygenerowane przez użytkownika programem ssh-keygen w systemach UNIX. Jeżeli są wygenerowane to, klient SSH przekazuje serwerowi, której ze znanych mu par klucz-użytkownik ma użyć. Są to klucze publiczne. Serwer, jeżeli nie znajdzie informacji zabraniającej mu zestawiania połączeń z komputerem użytkownika, wyśle klientowi numer losowy (ang. challenge) zaszyfrowany kluczem publicznym użytkownika. Ponieważ klucz prywatny jest zabezpieczony tzw. wyrażeniem przejściowym, więc tylko użytkownik znający to wyrażenie będzie w stanie odczytać wiadomość od serwera. W ten sposób użytkownik potwierdzi swoją tożsamość. | |valign="top"|Wstępne dane są zabezpieczone wybranym symetrycznym algorytmem szyfrującym, ale algorytm opiera swoje działanie na idei szyfrowania asymetrycznego. W systemach tych do szyfrowania lub deszyfrowania potrzebne są dwa odrębne klucze: prywatny i publiczny. Wiadomość zaszyfrowana kluczem publicznym może być odczytana tylko przez kogoś, kto posiada klucz prywatny z tej pary kluczy. Klucze prywatny i publiczny powinny być wygenerowane przez użytkownika programem ssh-keygen w systemach UNIX. Jeżeli są wygenerowane to, klient SSH przekazuje serwerowi, której ze znanych mu par klucz-użytkownik ma użyć. Są to klucze publiczne. Serwer, jeżeli nie znajdzie informacji zabraniającej mu na zestawiania połączeń z komputerem użytkownika, wyśle klientowi numer losowy (ang. challenge) zaszyfrowany kluczem publicznym użytkownika. Ponieważ klucz prywatny jest zabezpieczony tzw. wyrażeniem przejściowym, więc tylko użytkownik znający to wyrażenie będzie w stanie odczytać wiadomość od serwera. W ten sposób użytkownik potwierdzi swoją tożsamość. | ||
W przypadku, gdy klucze publiczny i prywatny nie zostały wygenerowane, serwer SSH wyśle klientowi zapytanie o nazwę użytkownika i jego hasło. | W przypadku, gdy klucze publiczny i prywatny nie zostały wygenerowane, serwer SSH wyśle klientowi zapytanie o nazwę użytkownika i jego hasło. | ||
W obu przypadkach informacje te będą przesyłane w postaci zaszyfrowanej wybranym algorytmem szyfrującym. Dodatkowo serwer może tworzyć tzw. skróty (ang. Message Digest) wysyłanych wiadomości. Skrót to nic innego jak skompresowana informacja o treści wiadomości. Jeżeli coś zostanie w treści zmienione, skrót ulegnie również zmianie. Do tego celu SSH używa dwóch algorytmów: MD-5 lub SHA-1. | W obu przypadkach informacje te będą przesyłane w postaci zaszyfrowanej wybranym algorytmem szyfrującym. Dodatkowo serwer może tworzyć tzw. skróty (ang. Message Digest) wysyłanych wiadomości. Skrót to nic innego jak skompresowana informacja o treści wiadomości. Jeżeli coś zostanie w treści zmienione, skrót ulegnie również zmianie. Do tego celu SSH używa dwóch algorytmów: MD-5 lub SHA-1. | ||
Bardziej bezpieczne i zalecane w używaniu SSH jest stosowanie szyfrowania asymetrycznego, czyli kluczy. Wprawdzie wymagają one od użytkownika | Bardziej bezpieczne i zalecane w używaniu SSH jest stosowanie szyfrowania asymetrycznego, czyli kluczy. Wprawdzie wymagają one od użytkownika poświęcenia kilku minut na poprawne skonfigurowanie, lecz w dłuższym używaniu są wygodniejsze. W celu ułatwienia ich stosowania, autorzy SSH umożliwiają uruchomienie programu ssh-agent, który może za nas przeprowadzać proces podawania wyrażenia przejściowego do odczytania klucza. | ||
Oprócz wymienionych dotychczas zalet wynikających ze stosowania SSH jest jeszcze jedna bardzo istotna. Mianowicie pomocy tego protokołu można przekierowywać lokalne numery portów na inne na zdalnej maszynie. | Oprócz wymienionych dotychczas zalet wynikających ze stosowania SSH jest jeszcze jedna bardzo istotna. Mianowicie przy pomocy tego protokołu można przekierowywać lokalne numery portów na inne na zdalnej maszynie. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 288: | Linia 288: | ||
RDP idealnie nadaje się do centralnego zarządzania instalowanym oprogramowaniem, | RDP idealnie nadaje się do centralnego zarządzania instalowanym oprogramowaniem, | ||
daje możliwość wprowadzania oszczędności w firmach na sprzęcie, gdyż użytkownicy mniej wydajnych maszyn mogą uruchamiać duże aplikacje na serwerze, | daje możliwość wprowadzania oszczędności w firmach na sprzęcie, gdyż użytkownicy mniej wydajnych maszyn mogą uruchamiać duże aplikacje na serwerze, | ||
aplikacja, zainstalowana na serwerze Windows NT Terminal Server lub następnych wersjach systemu Windows, może być wykorzystywana przez dowolnego użytkownika, który ma aplikację klienta Terminal Services. Nie w związku z tym konieczności przeprowadzania uaktualnień dużej liczby systemów do najnowszych wersji, | aplikacja, zainstalowana na serwerze Windows NT Terminal Server lub następnych wersjach systemu Windows, może być wykorzystywana przez dowolnego użytkownika, który ma aplikację klienta Terminal Services. Nie ma w związku z tym konieczności przeprowadzania uaktualnień dużej liczby systemów do najnowszych wersji, administrator musi dbać o uaktualnienia oprogramowania tylko na jednym komputerze. | ||
administrator musi dbać o uaktualnienia oprogramowania tylko na jednym komputerze. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 295: | Linia 294: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd29.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd29.png|thumb|500px]] | ||
|valign="top"|Oczywiście wiele tych cech jest wspólnych dla RDP, SSH czy TELNET | |valign="top"|Oczywiście wiele tych cech jest wspólnych dla RDP, SSH czy TELNET. O ile jednak wyżej opisane protokoły były znane od dosyć dawna, to usługi terminalowe w systemach Windows mają znacznie krótszą historię. W ostatnich latach stały się nawet bardzo istotne w heterogenicznych środowiskach sieciowych dzięki programom takim jak: | ||
rdesktop - pozwala klientom UNIX na łączenie się z serwerami Windows Terminal, | rdesktop - pozwala klientom UNIX na łączenie się z serwerami Windows Terminal, | ||
SAMBA - pozwalająca udostępniać w zasoby systemów UNIX dla systemów Windows, | SAMBA - pozwalająca udostępniać w zasoby systemów UNIX dla systemów Windows, | ||
Linia 307: | Linia 306: | ||
|valign="top"|Firma Microsoft oparła implementację RDP o protokół wymiany danych między aplikacjami - T.128. Jest on również znany jako T.SHARE. Standard został opracowany przez ITU-T. Pod adresem http://www.rdesktop.org/docs/t128.zip i http://www.rdesktop.org/docs/t125.zip można znaleźć dokumenty ITU-T o tym protokole. Oprócz tego, dodatkowych informacji można szukać w dokumentach RFC905 i RFC2126. | |valign="top"|Firma Microsoft oparła implementację RDP o protokół wymiany danych między aplikacjami - T.128. Jest on również znany jako T.SHARE. Standard został opracowany przez ITU-T. Pod adresem http://www.rdesktop.org/docs/t128.zip i http://www.rdesktop.org/docs/t125.zip można znaleźć dokumenty ITU-T o tym protokole. Oprócz tego, dodatkowych informacji można szukać w dokumentach RFC905 i RFC2126. | ||
Najważniejszą cechą rodziny protokołów T.120 jest możliwość przesyłu danych w kilku wirtualnych kanałach (do wykorzystania jest 64000 kanałów w jednym połączeniu). Dane są w nich transmitowane równolegle, a przy tym niezależnie. Dzięki temu dane warstwy prezentacji są niezależne od informacji pochodzących z portów szeregowych, klawiatury, myszy. | Najważniejszą cechą rodziny protokołów T.120 jest możliwość przesyłu danych w kilku wirtualnych kanałach (do wykorzystania jest 64000 kanałów w jednym połączeniu). Dane są w nich transmitowane równolegle, a przy tym niezależnie. Dzięki temu dane warstwy prezentacji są niezależne od informacji pochodzących z portów szeregowych, klawiatury, myszy. | ||
W wersji usług terminalowych udostępnionych wraz z Windows NT4.0 Server wszystkie sesje były typu | W wersji usług terminalowych udostępnionych wraz z Windows NT4.0 Server wszystkie sesje były typu "punkt-punkt". RDP jednak, jako rozszerzenie T.Share pozwala na sesje typu multicast. | ||
RDP został zaprojektowany w sposób pozwalający mu wykorzystywać protokoły takie jak TCP/IP, NetBios, IPX do komunikacji. Czyni go to niezależnym od użytej technologii sieciowej i pozwala na używanie w różnorodnych środowiskach. Dane pochodzące z aplikacji, przesyłane przy pomocy RDP, są obsługiwane niemal identycznie jak inne programy nie korzystające z RDP. Jedynym dodatkiem jest stos tego protokołu. W stosie tym następuje podział danych na fragmenty, przekierowanie do odpowiedniego kanału, szyfrowanie, podział danych na ramki i przesłanie do protokołów warstw niższych. Odbiór danych odbywa się w przeciwnym kierunku. W systemach Windows złożoność tego procesu ukryto przed programistami udostępniając im odpowiedniego typu API (ang. Application Programming Interace). | RDP został zaprojektowany w sposób pozwalający mu wykorzystywać protokoły takie jak TCP/IP, NetBios, IPX do komunikacji. Czyni go to niezależnym od użytej technologii sieciowej i pozwala na używanie w różnorodnych środowiskach. Dane pochodzące z aplikacji, przesyłane przy pomocy RDP, są obsługiwane niemal identycznie jak inne programy nie korzystające z RDP. Jedynym dodatkiem jest stos tego protokołu. W stosie tym następuje podział danych na fragmenty, przekierowanie do odpowiedniego kanału, szyfrowanie, podział danych na ramki i przesłanie do protokołów warstw niższych. Odbiór danych odbywa się w przeciwnym kierunku. W systemach Windows złożoność tego procesu ukryto przed programistami udostępniając im odpowiedniego typu API (ang. Application Programming Interace). | ||
|} | |} | ||
Linia 328: | Linia 327: | ||
|valign="top"|Sieć Internet z całą pewnością nie byłaby tak atrakcyjna dla użytkowników, gdyby nie zgromadzone w niej informacje i , co ważniejsze, możliwość łatwego dotarcia do nich. Oczywiście możliwość wymiany danych np. poczty elektronicznej, plików jest dużym ułatwieniem w pracy, bez którego dzisiaj trudno się obejść. | |valign="top"|Sieć Internet z całą pewnością nie byłaby tak atrakcyjna dla użytkowników, gdyby nie zgromadzone w niej informacje i , co ważniejsze, możliwość łatwego dotarcia do nich. Oczywiście możliwość wymiany danych np. poczty elektronicznej, plików jest dużym ułatwieniem w pracy, bez którego dzisiaj trudno się obejść. | ||
Czasami jednak rozsyłanie tych samych plików do setek użytkowników lub opisywanie pewnych rzeczy jest znacznie trudniejsze niż np. po prostu narysowanie ich. Oczywiście rysunek trzeba zaprezentować innym użytkownikom sieci. Tu z pomocą przychodzi protokół HTTP (ang. Hypertext Transfer Protocol) oraz znana dobrze wszystkim usługa WWW (ang. World Wide Web). Dzięki nim oraz językowi służącemu do tworzenia stron WWW - HTML (ang. Hypertext Markup Language) użytkownicy mogą łatwo przedstawiać wyniki swoich prac, poglądy, firmy przedstawiać produkty itd. W zasadzie można powiedzieć, że rozwój sieci Internet w ostatnich latach był motywowany przez rosnącą popularność serwisów WWW oraz wykorzystywanie protokołu HTTP do przesyłania danych przez inne aplikacje niż tylko przeglądarki stron WWW. | Czasami jednak rozsyłanie tych samych plików do setek użytkowników lub opisywanie pewnych rzeczy jest znacznie trudniejsze niż np. po prostu narysowanie ich. Oczywiście rysunek trzeba zaprezentować innym użytkownikom sieci. Tu z pomocą przychodzi protokół HTTP (ang. Hypertext Transfer Protocol) oraz znana dobrze wszystkim usługa WWW (ang. World Wide Web). Dzięki nim oraz językowi służącemu do tworzenia stron WWW - HTML (ang. Hypertext Markup Language) użytkownicy mogą łatwo przedstawiać wyniki swoich prac, poglądy, firmy przedstawiać produkty itd. W zasadzie można powiedzieć, że rozwój sieci Internet w ostatnich latach był motywowany przez rosnącą popularność serwisów WWW oraz wykorzystywanie protokołu HTTP do przesyłania danych przez inne aplikacje niż tylko przeglądarki stron WWW. | ||
Oprócz HTTP, nieco wcześniej | Oprócz HTTP, nieco wcześniej powstał inny protokół NNTP (ang. Network News Transfer Protocol). Dzięki niemu użytkownicy mogą wymieniać poglądy i opinie przy pomocy tekstowych wiadomości. Podobnie jak w przypadku WWW są one umieszczane na serwerach i czytane przy pomocy programów-klientów. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 343: | Linia 342: | ||
|valign="top"|Generalnie rzecz biorąc HTTP jest protokołem bardzo prostym. Mimo to, jest bardzo uniwersalny. Jego główne cechy to: | |valign="top"|Generalnie rzecz biorąc HTTP jest protokołem bardzo prostym. Mimo to, jest bardzo uniwersalny. Jego główne cechy to: | ||
używanie URI do identyfikacji zasobów w sieci, | używanie URI do identyfikacji zasobów w sieci, | ||
stosowanie mechanizmu | stosowanie mechanizmu "zapytanie-odpowiedź" przy wymianie danych, | ||
brak nawiązywania sesji między klientem a serwerem, | brak nawiązywania sesji między klientem a serwerem, | ||
zawieranie informacji o zasobach, które mogą być użyte na różne sposoby. | zawieranie informacji o zasobach, które mogą być użyte na różne sposoby. | ||
Linia 352: | Linia 351: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd35.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd35.png|thumb|500px]] | ||
|valign="top"|Adres URI jest uważany za bezwzględny, jeśli ciąg znaków, który go reprezentuje, zaczyna się od tzw. schematu i dalej znaków reprezentujących zasób osiągalny w sieci przy pomocy tego schematu. Schemat to nic innego jak wskazanie protokołu, który ma być użyty do pobrania zasobu. Pierwsza specyfikacja HTTP/0.9 uwzględniała schematy: file, news, http, telnet, gopher. Mimo, że określenie protokołu wskazuje wyraźnie jego nazwę to, do pobrania zasobu mogą być również użyte inne protokoły. Typowe pobranie strony HTML z sieci powoduje skorzystanie z systemu DNS do odnalezienia numeru IP serwera i | |valign="top"|Adres URI jest uważany za bezwzględny, jeśli ciąg znaków, który go reprezentuje, zaczyna się od tzw. schematu i dalej znaków reprezentujących zasób osiągalny w sieci przy pomocy tego schematu. Schemat to nic innego jak wskazanie protokołu, który ma być użyty do pobrania zasobu. Pierwsza specyfikacja HTTP/0.9 uwzględniała schematy: file, news, http, telnet, gopher. Mimo, że określenie protokołu wskazuje wyraźnie jego nazwę to, do pobrania zasobu mogą być również użyte inne protokoły. Typowe pobranie strony HTML z sieci powoduje skorzystanie z systemu DNS do odnalezienia numeru IP serwera i z protokołu TCP do nawiązania z nim sesji. Najbardziej znanym schematem jest HTTP. | ||
Każdy z protokołów ma inną składnię i mechanizm nazywania zasobów. Poprzez oddzielenie protokołu i ciągu znaków lokalizującego zasób, mechanizm nazywania w WWW pozwala na pobieranie tego samego pliku przy pomocy różnych protokołów. Mechanizm ten był bardzo potrzebny i często wykorzystywany w początkowych czasach funkcjonowania WWW. Dzięki temu również WWW stało się tak uniwersalnym interfejsem do pobierania zasobów, które zazwyczaj są tylko dostępne przez np. FTP. Przykładem wykorzystania tego jest rtsp://clips.foo.com/audio/X lub telnet://ox.mycompany.com.pl. Kiedy przeglądarka spotyka się z takim odwołaniem do zasobu, interpretuje rodzaj protokołu do pierwszego wystąpienia znaku ":" a następnie uruchamia połączenie przy jego pomocy - RTSP (ang. Real Time Streaming Protocol) lub TELNET. | Każdy z protokołów ma inną składnię i mechanizm nazywania zasobów. Poprzez oddzielenie protokołu i ciągu znaków lokalizującego zasób, mechanizm nazywania w WWW pozwala na pobieranie tego samego pliku przy pomocy różnych protokołów. Mechanizm ten był bardzo potrzebny i często wykorzystywany w początkowych czasach funkcjonowania WWW. Dzięki temu również WWW stało się tak uniwersalnym interfejsem do pobierania zasobów, które zazwyczaj są tylko dostępne przez np. FTP. Przykładem wykorzystania tego jest rtsp://clips.foo.com/audio/X lub telnet://ox.mycompany.com.pl. Kiedy przeglądarka spotyka się z takim odwołaniem do zasobu, interpretuje rodzaj protokołu do pierwszego wystąpienia znaku ":" a następnie uruchamia połączenie przy jego pomocy - RTSP (ang. Real Time Streaming Protocol) lub TELNET. | ||
|} | |} | ||
Linia 359: | Linia 358: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd36.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd36.png|thumb|500px]] | ||
|valign="top"|Jak już zostało wspomniane, protokół HTTP nie używa sesji połączeniowej do wymiany danych między klientem i serwerem. Cała komunikacja jest oparta o mechanizm | |valign="top"|Jak już zostało wspomniane, protokół HTTP nie używa sesji połączeniowej do wymiany danych między klientem i serwerem. Cała komunikacja jest oparta o mechanizm "zapytanie - odpowiedź". Zapytanie wysłane przez klienta do serwera nie musi być odebrane przez oryginalny serwer, do którego było kierowane. Może je obsłużyć dowolny serwer posiadający żądany zasób lub np. serwer proxy. Dla klienta jest to zupełnie niewidoczne. Serwer odbierający zapytanie odsyła odpowiedź. | ||
Protokół HTTP specyfikuje kilka metod, których może użyć klient do pobierania, modyfikacji, tworzenia i usuwania zasobu. Są to: | Protokół HTTP specyfikuje kilka metod, których może użyć klient do pobierania, modyfikacji, tworzenia i usuwania zasobu. Są to: | ||
Metody zdefiniowane w HTTP/1.0 | Metody zdefiniowane w HTTP/1.0 | ||
GET- najpopularniejsza metoda pobierania zasobów z serwera | GET - najpopularniejsza metoda pobierania zasobów z serwera | ||
HEAD - metoda służy do pobierania metadanych o zasobie | HEAD - metoda służy do pobierania metadanych o zasobie | ||
POST - w przeciwieństwie do GET i HEAD, ta metoda służy do uaktualniania zawartości zasobu | POST - w przeciwieństwie do GET i HEAD, ta metoda służy do uaktualniania zawartości zasobu | ||
Metody implementowane w niektórych wersjach HTTP/1.0 | Metody implementowane w niektórych wersjach HTTP/1.0 | ||
PUT- metoda działa podobnie jak POST w sensie modyfikowania zasobów wyspecyfikowanych w URI | PUT - metoda działa podobnie jak POST w sensie modyfikowania zasobów wyspecyfikowanych w URI | ||
DELETE - metoda służy do usuwania zasobu | DELETE - metoda służy do usuwania zasobu | ||
LINK i UNLINK - metody pozwalają na tworzenie lub usuwanie powiązań między wskazanym w URI zasobem a innymi zasobami. | LINK i UNLINK - metody pozwalają na tworzenie lub usuwanie powiązań między wskazanym w URI zasobem a innymi zasobami. | ||
Linia 380: | Linia 379: | ||
opcjonalnej zawartości żądanego zasobu. | opcjonalnej zawartości żądanego zasobu. | ||
W zaprezentowanym przykładzie oprócz wymaganych informacji zostały dodane jeszcze pola dodatkowe informujące o dacie ostatniej modyfikacji zasobu oraz jego wielkości. Pola te nie zawsze mają charakter tylko informacyjny. Klient może, oprócz przedstawionego zapytania, w opcjonalnych nagłówkach podać metodę, która ma być zastosowana do zasobu przy spełnieniu określonych warunków. Na przykład, klient może nie chcieć odpowiedzi od serwera, jeżeli żądany dokument nie był modyfikowany od ostatniego czasu, kiedy był przez niego pobrany. | W zaprezentowanym przykładzie oprócz wymaganych informacji zostały dodane jeszcze pola dodatkowe informujące o dacie ostatniej modyfikacji zasobu oraz jego wielkości. Pola te nie zawsze mają charakter tylko informacyjny. Klient może, oprócz przedstawionego zapytania, w opcjonalnych nagłówkach podać metodę, która ma być zastosowana do zasobu przy spełnieniu określonych warunków. Na przykład, klient może nie chcieć odpowiedzi od serwera, jeżeli żądany dokument nie był modyfikowany od ostatniego czasu, kiedy był przez niego pobrany. | ||
Serwer traktuje zasoby trochę jak | Serwer traktuje zasoby trochę jak "czarne skrzynki". Najczęściej taką skrzynką jest plik ze swoją zawartością, którą serwer czyta i wysyła w odpowiedzi klientowi. Dzięki takiemu podejściu - nie interpretowaniu treści zasobu, a tylko sprawdzaniu treści zapytania - serwer może dla tego samego zasobu udzielać różnych odpowiedzi w zależności od rodzaju zapytania, czasu w którym serwer je otrzymał, zmian jakie wprowadzono do zasobu. | ||
W praktyce rola serwera i klienta jest bardzo często wymienna. W sieci funkcjonuje całe mnóstwo serwisów i urządzeń zdolnych obsługiwać zapytania kierowane przez programy użytkowników. Obecność w sieci serwerów proxy, różnego rodzaju bram, tuneli nie wpływa na podstawowy sposób, w jaki HTTP wymienia informację między serwerem a klientem. Serwery proxy pozwalają na łatwe dotarcie do informacji przez użytkownika bez generowania nadmiernego ruchu w sieci Internet i obciążaniu serwerów źródłowych. Natomiast, użytkownikowi | W praktyce rola serwera i klienta jest bardzo często wymienna. W sieci funkcjonuje całe mnóstwo serwisów i urządzeń zdolnych obsługiwać zapytania kierowane przez programy użytkowników. Obecność w sieci serwerów proxy, różnego rodzaju bram, tuneli nie wpływa na podstawowy sposób, w jaki HTTP wymienia informację między serwerem a klientem. Serwery proxy pozwalają na łatwe dotarcie do informacji przez użytkownika bez generowania nadmiernego ruchu w sieci Internet i obciążaniu serwerów źródłowych. Natomiast, użytkownikowi końcowemu zapewnia to większy komfort pracy. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 387: | Linia 386: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd38.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd38.png|thumb|500px]] | ||
|valign="top"|Z punktu widzenia komunikacji w sieci, HTTP jest protokołem poziomu aplikacji, używa protokołów warstw niższych ( w rzeczywistości tylko jednego - TCP). Ponieważ nie da się wygenerować odpowiedzi serwera dopóki nie otrzyma on zapytania od klienta , dlatego też kierunek zapytań zawsze zaczyna się od klienta do serwera. Następnie wysyłane są odpowiedzi. Każda taka wymiana komunikatów jest traktowana przez serwer zupełnie oddzielnie. Protokół HTTP nie posiada mechanizmów, które potrafiłyby przenosić informację o wcześniejszych odwołaniach klienta do serwera i jego odpowiedziach. Z tego punktu widzenia HTTP jest protokołem bezstanowym i nie zarządza sesjami. | |valign="top"|Z punktu widzenia komunikacji w sieci, HTTP jest protokołem poziomu aplikacji, używa protokołów warstw niższych ( w rzeczywistości tylko jednego - TCP). Ponieważ nie da się wygenerować odpowiedzi serwera dopóki nie otrzyma on zapytania od klienta, dlatego też kierunek zapytań zawsze zaczyna się od klienta do serwera. Następnie wysyłane są odpowiedzi. Każda taka wymiana komunikatów jest traktowana przez serwer zupełnie oddzielnie. Protokół HTTP nie posiada mechanizmów, które potrafiłyby przenosić informację o wcześniejszych odwołaniach klienta do serwera i jego odpowiedziach. Z tego punktu widzenia HTTP jest protokołem bezstanowym i nie zarządza sesjami. | ||
Powód, dla którego postanowiono tak zrobić, jest bardzo prosty. W czasach powstawania WWW tworzono jeszcze kilka innych, konkurencyjnych systemów. Wszystkie one miały zapewnić dostęp do dużych zasobów w Internecie. Gdyby dodać do protokołu przechowywanie informacji o każdej sesji, to mogłoby się okazać, że serwery muszą przechowywać duże zbiory danych o swoich użytkownikach. WWW tym samym stałby się rozwiązaniem słabo skalowalnym . | Powód, dla którego postanowiono tak zrobić, jest bardzo prosty. W czasach powstawania WWW tworzono jeszcze kilka innych, konkurencyjnych systemów. Wszystkie one miały zapewnić dostęp do dużych zasobów w Internecie. Gdyby dodać do protokołu przechowywanie informacji o każdej sesji, to mogłoby się okazać, że serwery muszą przechowywać duże zbiory danych o swoich użytkownikach. WWW tym samym stałby się rozwiązaniem słabo skalowalnym . | ||
Nie znaczy to, że serwery, przeglądarki klientów lub inne aplikacje korzystające z HTTP do wymiany danych nie zarządzają sesjami. Serwer WWW może zapamiętywać adresy IP klientów, którzy pobierali z niego dane, jak również inne informacje, które klient wysyła w nagłówkach. Dzieje się to jednak na poziomie oprogramowania serwera i klienta. Problem utrzymywania sesji zaczął być bardzo odczuwalny, gdy serwis WWW musiał przechowywać jakieś informacje o wcześniejszych odwołaniach, np. sklepy internetowe, banki elektroniczne, itd. Rozwiązaniem najczęściej stosowanym są ciasteczka (ang. cookies). Przy każdym wysyłaniu zapytania do serwera, aplikacja użytkownika dołącza ciasteczko z informacjami o nim. | Nie znaczy to, że serwery, przeglądarki klientów lub inne aplikacje korzystające z HTTP do wymiany danych nie zarządzają sesjami. Serwer WWW może zapamiętywać adresy IP klientów, którzy pobierali z niego dane, jak również inne informacje, które klient wysyła w nagłówkach. Dzieje się to jednak na poziomie oprogramowania serwera i klienta. Problem utrzymywania sesji zaczął być bardzo odczuwalny, gdy serwis WWW musiał przechowywać jakieś informacje o wcześniejszych odwołaniach, np. sklepy internetowe, banki elektroniczne, itd. Rozwiązaniem najczęściej stosowanym są ciasteczka (ang. cookies). Przy każdym wysyłaniu zapytania do serwera, aplikacja użytkownika dołącza ciasteczko z informacjami o nim. | ||
Linia 396: | Linia 395: | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd39.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd39.png|thumb|500px]] | ||
|valign="top"|Problem, jaki niesie za sobą model wymiany wiadomości w HTTP, jest związany z obciążeniem, którego nie generuje ten protokół jako taki, ale TCP. Jak wiemy, TCP potrzebuje wymiany kilku pakietów do otwarcia sesji. HTTP może przesyłać swoje dane dopiero po otwarciu sesji TCP. Użytkownicy wykorzystujący WWW bardzo często po odebraniu odpowiedzi serwera zmieniają go na inny. Tak się dzieje np. gdy korzystamy z wyszukiwarek internetowych. TCP nie zamyka od razu połączenia po stronie serwera, a system operacyjny użytkownika nie wysyła do niego informacji, że sesja nie będzie już używana. Tym sposobem zarówno klient jak i serwer mogą mieć sporą liczbę otwartych, nieużywanych sesji TCP. Wbrew temu co może się wydawać, zmniejszenie czasu nieaktywności sesji przed jej zamknięciem nie jest rozwiązaniem. Opóźnienia w sieci mają charakter losowy i często dane docierają w różnym czasie do odbiorcy. Jeżeli czas nieaktywności będzie zbyt krótki, sesja będzie zamknięta przed odebraniem danych. Użytkownik wówczas będzie otwierał nową sesję, która znowu po chwili będzie zamknięta. Serwer będzie obciążany samymi operacjami zamykania/otwierania sesji. Czas oczekiwania użytkownika na odpowiedź serwera będzie wydłużany o czas potrzebny na zestawienie sesji TCP, co czasami może trwać kilka sekund. Otwieranie i zamykanie sesji jest w sumie najbardziej kosztowną operacją dla serwera. Poza tym w sieci pojawia się ogromna liczba krótkich pakietów IP. Zwiększają one jej obciążenie zmniejszając tym samym szansę na przesłanie większej liczby danych. Sytuacja ta jest dość często spotykana w sieciach. | |valign="top"|Problem, jaki niesie za sobą model wymiany wiadomości w HTTP, jest związany z obciążeniem, którego nie generuje ten protokół jako taki, ale TCP. Jak wiemy, TCP potrzebuje wymiany kilku pakietów do otwarcia sesji. HTTP może przesyłać swoje dane dopiero po otwarciu sesji TCP. Użytkownicy wykorzystujący WWW bardzo często po odebraniu odpowiedzi serwera zmieniają go na inny. Tak się dzieje np. gdy korzystamy z wyszukiwarek internetowych. TCP nie zamyka od razu połączenia po stronie serwera, a system operacyjny użytkownika nie wysyła do niego informacji, że sesja nie będzie już używana. Tym sposobem zarówno klient jak i serwer mogą mieć sporą liczbę otwartych, nieużywanych sesji TCP. Wbrew temu co może się wydawać, zmniejszenie czasu nieaktywności sesji przed jej zamknięciem nie jest rozwiązaniem. Opóźnienia w sieci mają charakter losowy i często dane docierają w różnym czasie do odbiorcy. Jeżeli czas nieaktywności będzie zbyt krótki, sesja będzie zamknięta przed odebraniem danych. Użytkownik wówczas będzie otwierał nową sesję, która znowu po chwili będzie zamknięta. Serwer będzie obciążany samymi operacjami zamykania/otwierania sesji. Czas oczekiwania użytkownika na odpowiedź serwera będzie wydłużany o czas potrzebny na zestawienie sesji TCP, co czasami może trwać kilka sekund. Otwieranie i zamykanie sesji jest w sumie najbardziej kosztowną operacją dla serwera. Poza tym w sieci pojawia się ogromna liczba krótkich pakietów IP. Zwiększają one jej obciążenie zmniejszając tym samym szansę na przesłanie większej liczby danych. Sytuacja ta jest dość często spotykana w sieciach. | ||
Najnowsza specyfikacja HTTP/1.1 pozwala na utrzymywanie | Najnowsza specyfikacja HTTP/1.1 pozwala na utrzymywanie "sesji HTTP" między przeglądarką a serwerem. Niektóre implementacje HTTP/1.0 pozwalały na używanie nagłówka Keep-Alive. W HTTP/1.1 zostało to przekształcone do tzw. stałego połączenia (ang. persistent connection). Mechanizm ten pozwala klientowi na poinformowaniu serwera, że jest zainteresowany utrzymaniem stałego połączenia z nim, poza pojedynczą wymianę wiadomości. Należy pamiętać, że ta wymiana może składać się z kilkunastu ramek TCP. W przypadku HTTP/1.0 mimo to istnieje problem określenia, jak długo połączenie ma być utrzymywane, gdy serwer odsyła dynamicznie generowaną odpowiedź np. przez skrypt. Nie zawiera ona wówczas nagłówka podającego jej wielkość. Klient może jedynie stwierdzić, że otrzymał całość, gdy serwer zamyka połączenie. Na szczęście poprzez rozszerzenia nagłówka HTTP, serwer może określać jak długo połączenie będzie utrzymywane po otrzymaniu ostatniego zapytania. Może również określić maksymalną liczbę zapytań, które klient może wysłać w danym połączeniu. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 406: | Linia 405: | ||
rodzaj kodowania, | rodzaj kodowania, | ||
dane mówiące, jak duży jest zasób pobierany przez klienta. Dzięki temu może się on łatwo zorientować, kiedy otrzymał całą odpowiedź, | dane mówiące, jak duży jest zasób pobierany przez klienta. Dzięki temu może się on łatwo zorientować, kiedy otrzymał całą odpowiedź, | ||
czas ostatniej modyfikacji żądanego zasobu. Informacja ta jest bardzo ważna dla serwerów cache jak i przeglądarek WWW. Posiadając ją są w stanie stwierdzić, czy kopia którą | czas ostatniej modyfikacji żądanego zasobu. Informacja ta jest bardzo ważna dla serwerów cache jak i przeglądarek WWW. Posiadając ją są w stanie stwierdzić, czy kopia którą ewentualnie już mają jest aktualna, czy też należy pobrać zasób jeszcze raz. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 412: | Linia 411: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M12_Slajd41.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M12_Slajd41.png|thumb|500px]] | ||
|valign="top"|Network News Transfer Protocol - NNTP służy do transmisji artykułów związanych z | |valign="top"|Network News Transfer Protocol - NNTP służy do transmisji artykułów związanych z "elektronicznymi grupami" usługi news. Programy klienckie użytkowników wykorzystują ten protokół do komunikacji z lokalnymi serwerami news, a serwery do wymiany wiadomości między sobą. | ||
Usługa news służy do wymiany wiadomości między użytkownikami, podobnie jak poczta elektroniczna. Jednak między tymi dwoma serwisami istnieją zasadnicze różnice. Poczta elektroniczna służy do wymiany listów e-mail między dwoma osobami lub w kręgu niedużej grupy ludzi. Przykładem może być firma, która może utworzyć listę e-mailową związaną z danym tematem. Użytkownicy zainteresowani otrzymywaniem wiadomości z tej listy mogą się na nią zapisać. Pierwsza niedogodność płynąca z tego rozwiązania to wysyłanie oddzielnej kopii tego samego listu do każdej z zapisanych osób. Zwiększa to niepotrzebnie obciążenie serwera i sieci. Druga, ważniejsza, to sposób zarządzania listą. Jeśli nie jest automatyczny, to administrator listy musi ręcznie dodawać lub usuwać użytkowników. Oczywiście listą może zarządzać program, który odbiera listy kierowane na specjalny adres. Nie likwiduje to jednak problemu do końca, zwłaszcza gdy użytkownik zapomni zmienić swój adres e-mail na liście zanim zmieni go w rzeczywistości. Wówczas serwer będzie próbował wysyłać listy pod nieistniejące adresy, a lista zapisanych osób będzie rosła. | Usługa news służy do wymiany wiadomości między użytkownikami, podobnie jak poczta elektroniczna. Jednak między tymi dwoma serwisami istnieją zasadnicze różnice. Poczta elektroniczna służy do wymiany listów e-mail między dwoma osobami lub w kręgu niedużej grupy ludzi. Przykładem może być firma, która może utworzyć listę e-mailową związaną z danym tematem. Użytkownicy zainteresowani otrzymywaniem wiadomości z tej listy mogą się na nią zapisać. Pierwsza niedogodność płynąca z tego rozwiązania to wysyłanie oddzielnej kopii tego samego listu do każdej z zapisanych osób. Zwiększa to niepotrzebnie obciążenie serwera i sieci. Druga, ważniejsza, to sposób zarządzania listą. Jeśli nie jest automatyczny, to administrator listy musi ręcznie dodawać lub usuwać użytkowników. Oczywiście listą może zarządzać program, który odbiera listy kierowane na specjalny adres. Nie likwiduje to jednak problemu do końca, zwłaszcza gdy użytkownik zapomni zmienić swój adres e-mail na liście zanim zmieni go w rzeczywistości. Wówczas serwer będzie próbował wysyłać listy pod nieistniejące adresy, a lista zapisanych osób będzie rosła. | ||
Opisane problemy stają się ogromne w dużej skali. Dlatego też w 1979 został opracowany system USENET. W 1983 powstał standard, który dokładnie go określa. | Opisane problemy stają się ogromne w dużej skali. Dlatego też w 1979 został opracowany system USENET. W 1983 powstał standard, który dokładnie go określa. | ||
Kluczowe dla systemu jest założenie o utrzymywaniu centralnej bazy danych wiadomości zamiast oddzielnych kopii dla każdego zapisanego do systemu użytkownika. Baza składa się ze zbioru tzw. grup wiadomości (ang. newsgroups). Każda z nich jest związana z zapisaną dla niej listą wiadomości. Nazwa grupy jest związana z hierarchią, w której została założona (system podobny do DNS), np. comp.unix.databases. System bazy artykułów oferuje do nich dostęp, indeksowanie, usuwanie przestarzałych wiadomości, śledzenie powiązań między artykułami. Administrator serwera news może ustalić politykę określającą maksymalny | Kluczowe dla systemu jest założenie o utrzymywaniu centralnej bazy danych wiadomości zamiast oddzielnych kopii dla każdego zapisanego do systemu użytkownika. Baza składa się ze zbioru tzw. grup wiadomości (ang. newsgroups). Każda z nich jest związana z zapisaną dla niej listą wiadomości. Nazwa grupy jest związana z hierarchią, w której została założona (system podobny do DNS), np. comp.unix.databases. System bazy artykułów oferuje do nich dostęp, indeksowanie, usuwanie przestarzałych wiadomości, śledzenie powiązań między artykułami. Administrator serwera news może ustalić politykę określającą maksymalny "wiek" artykułu. Po jego osiągnięciu system usuwa go. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 450: | Linia 449: | ||
Dostarczanie informacji o zmianach w czasie pozwala aplikacjom użytkowników na odświeżanie dostępnych dla nich list artykułów bez potrzeby przechowywania ich na serwerze. Inne zbiory komend służą do przemieszczania się między grupami (identyfikowane są przez nazwy), między artykułami, przejście od aktualnego do poprzedniego lub następnego artykułu. Oprócz tego są też komendy zwracające tylko nagłówki artykułu albo jego całość. Za każdym razem artykuł jest identyfikowany przez numer wiadomości albo numer w danej grupie news. | Dostarczanie informacji o zmianach w czasie pozwala aplikacjom użytkowników na odświeżanie dostępnych dla nich list artykułów bez potrzeby przechowywania ich na serwerze. Inne zbiory komend służą do przemieszczania się między grupami (identyfikowane są przez nazwy), między artykułami, przejście od aktualnego do poprzedniego lub następnego artykułu. Oprócz tego są też komendy zwracające tylko nagłówki artykułu albo jego całość. Za każdym razem artykuł jest identyfikowany przez numer wiadomości albo numer w danej grupie news. | ||
Oczywiście NNTP dostarcza również komend do tworzenia nowych artykułów. Użytkownik może wysłać prośbę o wysłanie wiadomości. Jeżeli serwer odpowie pozytywnie, klient wysyła jego treść podobnie jak w przypadku SMTP. Artykuł kończy się pojedynczym znakiem "." w ostatniej linii. W tym czasie serwer generuje unikalny identyfikator dla wiadomości i dodaje ją do listy artykułów danej grupy. | Oczywiście NNTP dostarcza również komend do tworzenia nowych artykułów. Użytkownik może wysłać prośbę o wysłanie wiadomości. Jeżeli serwer odpowie pozytywnie, klient wysyła jego treść podobnie jak w przypadku SMTP. Artykuł kończy się pojedynczym znakiem "." w ostatniej linii. W tym czasie serwer generuje unikalny identyfikator dla wiadomości i dodaje ją do listy artykułów danej grupy. | ||
NNTP jest wyposażone w komendę służącą do kopiowania wiadomości między serwerami. Jest to chyba jedna z bardziej istotnych komend w NNTP. Dzięki niej artykuły są wymieniane między serwerami a użytkownicy korzystający z różnych serwerów mogą je czytać. Serwery nie udostępniają swojej bazy artykułów komukolwiek, a tylko wyznaczonym w konfiguracji innym serwerom news (administratorzy usługi news często nazywają to rozwiązanie feed-em). Serwery wymieniające między sobą feed- a sprawdzają, przed skopiowaniem wiadomości o danym identyfikatorze, czy nie mają jej już w bazie. Jeżeli tak, to nie kopiują jej ponownie. Poza tym, serwery w ramach feed-u mogą sobie udostępniać tylko artykuły pojawiające się na określonych w konfiguracji grupach. Dzięki temu małe firmowe serwery mogą utrzymywać grupy news interesujące ich pracowników bez potrzeby kopiowania dziennie kilku terabajtów danych grup typu alt.binaries. Szybkość kopiowania artykułów między serwerami jest bardzo różna. Czasami może się zdarzyć, że serwer otrzyma daną wiadomość po kilkudziesięciu godzinach. Zależy to od obciążenia łącza do tego serwera jak i jego samego. | NNTP jest wyposażone w komendę służącą do kopiowania wiadomości między serwerami. Jest to chyba jedna z bardziej istotnych komend w NNTP. Dzięki niej artykuły są wymieniane między serwerami, a użytkownicy korzystający z różnych serwerów mogą je czytać. Serwery nie udostępniają swojej bazy artykułów komukolwiek, a tylko wyznaczonym w konfiguracji innym serwerom news (administratorzy usługi news często nazywają to rozwiązanie feed-em). Serwery wymieniające między sobą feed-a sprawdzają, przed skopiowaniem wiadomości o danym identyfikatorze, czy nie mają jej już w bazie. Jeżeli tak, to nie kopiują jej ponownie. Poza tym, serwery w ramach feed-u mogą sobie udostępniać tylko artykuły pojawiające się na określonych w konfiguracji grupach. Dzięki temu małe firmowe serwery mogą utrzymywać grupy news interesujące ich pracowników bez potrzeby kopiowania dziennie kilku terabajtów danych grup typu alt.binaries. Szybkość kopiowania artykułów między serwerami jest bardzo różna. Czasami może się zdarzyć, że serwer otrzyma daną wiadomość po kilkudziesięciu godzinach. Zależy to od obciążenia łącza do tego serwera jak i jego samego. | ||
Należy również pamiętać, że każda grupa wiadomości rządzi się swoimi, często różnymi, prawami. Większość z nich posiada swoje archiwum lub stronę WWW, gdzie jest publikowany regulamin pisania artykułów do danej grupy. Regulaminu tego powinni przestrzegać autorzy artykułów tej grupy. | Należy również pamiętać, że każda grupa wiadomości rządzi się swoimi, często różnymi, prawami. Większość z nich posiada swoje archiwum lub stronę WWW, gdzie jest publikowany regulamin pisania artykułów do danej grupy. Regulaminu tego powinni przestrzegać autorzy artykułów tej grupy. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> |
Aktualna wersja na dzień 14:43, 19 gru 2006
![]() |
![]() |
Najprostszym sposobem jest podanie nazwy użytkownika i hasła. Prezentuje to przykład na slajdzie. |
![]() |
Firma Microsoft oparła implementację RDP o protokół wymiany danych między aplikacjami - T.128. Jest on również znany jako T.SHARE. Standard został opracowany przez ITU-T. Pod adresem http://www.rdesktop.org/docs/t128.zip i http://www.rdesktop.org/docs/t125.zip można znaleźć dokumenty ITU-T o tym protokole. Oprócz tego, dodatkowych informacji można szukać w dokumentach RFC905 i RFC2126.
Najważniejszą cechą rodziny protokołów T.120 jest możliwość przesyłu danych w kilku wirtualnych kanałach (do wykorzystania jest 64000 kanałów w jednym połączeniu). Dane są w nich transmitowane równolegle, a przy tym niezależnie. Dzięki temu dane warstwy prezentacji są niezależne od informacji pochodzących z portów szeregowych, klawiatury, myszy. W wersji usług terminalowych udostępnionych wraz z Windows NT4.0 Server wszystkie sesje były typu "punkt-punkt". RDP jednak, jako rozszerzenie T.Share pozwala na sesje typu multicast. RDP został zaprojektowany w sposób pozwalający mu wykorzystywać protokoły takie jak TCP/IP, NetBios, IPX do komunikacji. Czyni go to niezależnym od użytej technologii sieciowej i pozwala na używanie w różnorodnych środowiskach. Dane pochodzące z aplikacji, przesyłane przy pomocy RDP, są obsługiwane niemal identycznie jak inne programy nie korzystające z RDP. Jedynym dodatkiem jest stos tego protokołu. W stosie tym następuje podział danych na fragmenty, przekierowanie do odpowiedniego kanału, szyfrowanie, podział danych na ramki i przesłanie do protokołów warstw niższych. Odbiór danych odbywa się w przeciwnym kierunku. W systemach Windows złożoność tego procesu ukryto przed programistami udostępniając im odpowiedniego typu API (ang. Application Programming Interace). |
![]() |
Adres URI jest uważany za bezwzględny, jeśli ciąg znaków, który go reprezentuje, zaczyna się od tzw. schematu i dalej znaków reprezentujących zasób osiągalny w sieci przy pomocy tego schematu. Schemat to nic innego jak wskazanie protokołu, który ma być użyty do pobrania zasobu. Pierwsza specyfikacja HTTP/0.9 uwzględniała schematy: file, news, http, telnet, gopher. Mimo, że określenie protokołu wskazuje wyraźnie jego nazwę to, do pobrania zasobu mogą być również użyte inne protokoły. Typowe pobranie strony HTML z sieci powoduje skorzystanie z systemu DNS do odnalezienia numeru IP serwera i z protokołu TCP do nawiązania z nim sesji. Najbardziej znanym schematem jest HTTP.
Każdy z protokołów ma inną składnię i mechanizm nazywania zasobów. Poprzez oddzielenie protokołu i ciągu znaków lokalizującego zasób, mechanizm nazywania w WWW pozwala na pobieranie tego samego pliku przy pomocy różnych protokołów. Mechanizm ten był bardzo potrzebny i często wykorzystywany w początkowych czasach funkcjonowania WWW. Dzięki temu również WWW stało się tak uniwersalnym interfejsem do pobierania zasobów, które zazwyczaj są tylko dostępne przez np. FTP. Przykładem wykorzystania tego jest rtsp://clips.foo.com/audio/X lub telnet://ox.mycompany.com.pl. Kiedy przeglądarka spotyka się z takim odwołaniem do zasobu, interpretuje rodzaj protokołu do pierwszego wystąpienia znaku ":" a następnie uruchamia połączenie przy jego pomocy - RTSP (ang. Real Time Streaming Protocol) lub TELNET. |