Wymień najważniejsze cechy protokołów serwera WWW – HTTP, TCP, IP, DHCP, FTP.

Internet Protocol IP

Zasadniczo sieć TCP/IP udostępnia trzy zbiory usług, przy czym umiejscowienie na rysunku ilustruje zależności między nimi.
Na najniższym poziomie są usługi przenoszenia bez użycia połączenia, zapewniające podstawę, na które wszystko się opiera. Na następnym poziomie, usługi niezawodnego przesyłania są podstawą dla programów użytkowych.

Najbardziej podstawowa usługa - przenoszenie pakietów bez użycia połączenia przy pomocy dostępnych możliwości nosi nazwę Internet Protocol, a zwykle oznacza się ją skrótem IP.

Jest ona zdefiniowana jako zawodny (ang. unreliable) system przenoszenia pakietów bez użycia połączenia, tzn. nie ma gwarancji, że przenoszenie zakończy się sukcesem. Pakiet może zostać zagubiony, zduplikowany, zatrzymany lub dostarczony z błędem, a system nie sprawdzi, że coś takiego zaszło, a także nie powiadomi o tym ani nadawcy ani odbiorcy.

Ponadto usługa ta jest określana jako bez użycia połączenia, gdyż każdy pakiet obsługiwany jest niezależnie od innych. Pakiety z jednego ciągu wysłane z danego komputera do drugiego mogą podróżować różnymi ścieżkami, niektóre z nich mogą zostać zagubione, natomiast inne dojdą bez przeszkód.

Wreszcie mówimy, że usługa ta wykorzystuje przenoszenie “przy użyciu dostępnych możliwości”, gdyż oprogramowanie czyni co może, aby dostarczyć pakiety. Oznacza to, że pakiety nie są tracone bez przyczyny - niepewność w dostarczaniu pojawia się w wyniku wyczerpania zasobów albo błędów sieci bazowych.

Protokół IP zawiera trzy ważne definicje:

1. Definicję podstawowej jednostki przesyłanych danych, używanej w sieciach TCP/IP. Określa ona dokładny format wszystkich danych przesyłanych przez sieć.
2. Definicję operacji trasowania, wykonywanej przez oprogramowanie IP, polegającej na wybieraniu trasy, którą będą przesyłane dane.
3. Zawiera zbiór reguł, które służą do realizacji zawodnego przenoszenia pakietów. Reguły te opisują, w jaki sposób węzły i routery powinny przetwarzać pakiety, jak i kiedy powinny być generowane komunikaty o błędach oraz kiedy pakiety mogą być porzucane.

Protokół IP jest tak podstawową częścią konstrukcji TCP/IP, że często nazywa się TCP/IP techniką opartą na protokole IP.

Datagram IP

Podstawowa jednostka przesyłanych danych nazywana jest datagramem. Datagram podzielony jest na nagłówek i dane. Nagłówek datagramu zawiera adres nadawcy i odbiorcy oraz pole typu, które identyfikuje zawartość datagramu.

Datagram przypomina ramkę sieci fizycznej. Różnica polega na tym, że nagłówek ramki zawiera adresy fizyczne, zaś nagłówek datagramu adresy IP (omówione wcześniej).

resztę info o datagramie znajdziesz na stronie:
http://www.staff.amu.edu.pl/~psi/informatyka/tcpip/ip.htm

TCP

TCP organizuje dwukierunkową współpracę między warstwą IP, a warstwami wyższymi, uwzględniając przy tym wszystkie aspekty priorytetów i bezpieczeństwa. Musi prawidłowo obsłużyć niespodziewane zakończenie aplikacji, do której właśnie wędruje datagram, musi również bezpiecznie izolować warstwy wyższe - w szczególności aplikacje użytkownika - od skutków awarii w warstwie protokołu IP. Scentralizowanie wszystkich tych aspektów w jednej warstwie umożliwia znaczną oszczędność nakładów na projektowanie oprogramowania.

TCP rezyduje w modelu warstwowym powyżej warstwy IP. Warstwa ta jest jednak obecna tylko w tych węzłach sieci, w których odbywa się rzeczywiste przetwarzanie datagramów przez aplikacje, tak więc nie posiadają warstwy TCP na przykład routery, gdyż warstwy powyżej IP nie miałyby tam nic do roboty.

Interfejs między programami użytkowymi a usługami niezawodnego dostarczania TCP/IP można scharakteryzować za pomocą następujących własności:

* Przesyłanie strumieniami. Gdy dwa programy użytkowe (procesy użytkownika) przesyłają duże ilości danych, myślimy o tych danych jako o strumieniu bitów, który jest podzielony na 8-bitowe oktety nieformalnie nazywane bajtami. Usługa dostarczania strumieniami na maszynie docelowej to przekazanie odbiorcy dokładnie tego samego ciągu oktetów, który na swojej maszynie przekazał nadawca.
* Łączenie w obwód wirtualny. Przed rozpoczęciem przesyłania, programy użytkowe zarówno nadawcy, jak i odbiorcy muszą się porozumieć z własnymi systemami operacyjnymi, informując je o potrzebie przesyłania za pomocą strumienia. Moduły oprogramowania protokołów w obu systemach porozumiewają się, wysyłając przez intersieć odpowiednie komunikaty sprawdzające czy transfer został autoryzowany oraz czy obydwie strony znajdują się w stanie gotowości. Po ustaleniu tych szczegółów moduły protokołów informują programy użytkowe, że połączenie zostało ustanowione i że można rozpocząć przesyłanie. W trakcie komunikacji oprogramowanie protokołów w dalszym ciągu wymienia informacje, które potwierdzają poprawność otrzymywanych danych. Jakiekolwiek zakłócenie komunikacji (np. z powodu awarii osprzętu sieciowego na ścieżce pomiędzy nadawcą a odbiorcą) zostaje wykryte przez obie maszyny i powoduje poinformowanie odpowiednich programów użytkowych. Tego typu połączenie określa się mianem obwodu wirtualnego, bo chociaż programy użytkowe widzą to połączenie tak, jakby istniał tutaj specjalny obwód elektroniczny, to niezawodność jest złudzeniem wywołanym przez usługę dostarczania strumieniami.
* Przesyłanie z użyciem buforów. Programy użytkowe przesyłają strumienie danych obwodami wirtualnymi dzięki przekazywaniu kolejnych oktetów danych do oprogramowania protokołów. Program użytkowy przesyła dane w porcjach, które uważa za wygodne, a które mogą być nawet wielkości jednego oktetu. U odbiorcy oprogramowanie protokołów dostarcza oktety ze strumienia danych w takim samym porządku, w jakim zostały wysłane, udostępniając je odbierającemu programowi użytkowemu, po otrzymaniu i sprawdzeniu. Oprogramowanie protokołów ma swobodę przy dzieleniu strumienia na pakiety i może to robić niezależnie od tego, jak strumień jest dzielony przez program użytkowy. W celu zwiększenia efektywności przesyłania i zminimalizowania ruchu w sieci przyjmuje się zwykle strategię czekania, aż uzbiera się tyle danych ze strumienia, żeby wypełnić datagram o rozsądnej wielkości zanim się go wyśle do intersieci. Dzięki temu, nawet jeśli program użytkowy generuje strumień po jednym bajcie naraz, przesyłanie danych przez intersieć może być dosyć efektywne. Podobnie jeśli program użytkowy wygeneruje bardzo duży blok danych, to oprogramowanie protokołów może podzielić go do transmisji na mniejsze porcje.

Dla tych programów użytkowych, w których dane powinny zostać dostarczone, nawet jeżeli bufor nie został wypełniony, udostępnia się mechanizm “wypychania” (ang. push), którego programy użytkowe używają do wymuszania przesyłania. Po stronie nadawcy operacja wypchnięcia wymusza na oprogramowaniu protokołów przesłanie wszystkich tych danych, które zostały dotąd wygenerowane, bez czekania na wypełnienie bufora. Po stronie odbiorcy zaś powoduje, że TCP udostępnia dane programowi użytkownika beż opóźnienia.

* Brak strukturalizacji strumienia. Usługa przesyłania za pomocą strumieni TCP/IP nie uwzględnia strukturalizacji strumienia danych. Programy użytkowe wykorzystujące usługi przesyłania za pomocą strumieni muszą interpretować zawartość strumienia i jeszcze przed rozpoczęciem połączenia zgadzać się na format strumienia.
* Połączenie w pełni dwukierunkowe. Połączenia zapewniane przez usługę przesyłania za pomocą strumieni TCP/IP są połączeniami w pełni dwukierunkowymi (ang. duplex). Z punktu widzenia programu użytkowego połączenie w pełni dwukierunkowe składa się z dwu niezależnych strumieni danych płynących w przeciwnych kierunkach bez żadnej jawnej interakcji między nimi. Usługa przesyłania za pomocą strumieni pozwala procesowi użytkownika na zatrzymanie przepływu w jednym z kierunków bez zakłócania przepływu w drugim, co czyni połączenie połączeniem połowicznie dwukierunkowym (ang. half duplex). Przy połączeniu w pełni dwukierunkowym oprogramowanie protokołów obsługujących może wysyłać nadawcy informacje kontrolne związane z jednym strumieniem w datagramach niosących dane w kierunku przeciwnym, co jest jego zaletą. Powoduje to zmniejszenie ruchu w sieci.

Rozpatrując TCP z punktu widzenia funkcjonalności można potraktować jego pracę jako ustanowienie kanału wirtualnego realizującego komunikację między “końcówkami” - tak wygląda to z punktu widzenia programu użytkownika.

DHCP

Sieci podlegają stałym przemianom - przybywa nowych komputerów, mobilni użytkownicy logują się i wylogowują. Ręczna konfiguracja sieci wymagałaby nieprawdopodobnego nakładu pracy. Protokół DHCP (Dynamic Host Configuration Protocol) rozwiązuje ten problem poprzez dynamiczne przydzielanie adresów IP.

W sieci opartej na protokole TCP/IP każdy komputer ma co najmniej jeden adres IP i jedną maskę podsieci; dzięki temu może się komunikować z innymi urządzeniami w sieci. Centralne przydzielanie adresów za pomocą wydzielonego komputera opłaca się już w małej sieci. Administrator uzyskuje w ten sposób kilka korzyści od razu. Konserwacja sieci wymaga mniej czasu, ponieważ odpadają manipulacje przy poszczególnych klientach. Konflikty adresów należą do przeszłości, ponieważ serwer DHCP steruje centralnie przydzielaniem adresów IP.

Protokół DHCP opiera się na protokole BOOTP (Bootstrap Protocol), jednak w stosunku do niego zawiera wiele ulepszeń. Niewątpliwie najbardziej interesującym jest dynamiczne przydzielanie adresów IP. Serwer DHCP korzysta przy tym z predefiniowanego obszaru adresowego i przydziela kolejnym klientom, które o to występują, adres IP na określony czas (lease). W czasie trwania okresu lease klient DHCP nie występuje do serwera DHCP podczas startu systemu o nowy adres, a jedynie żąda potwierdzenia istniejącego stanu lease. Protokół DHCP minimalizuje również możliwe źródła błędów. Na życzenie podaje, oprócz adresu IP, również inne parametry, jak choćby standardowa brama, czy adresy serwerów nazw. Specyfikacja techniczna protokołu DHCP zawarta jest w RFC 2131.

Już uproszczony opis przydzielania adresów unaocznia cykliczny charakter interakcji między klientem a serwerem. Cały proces uzgadniania i przydzielania jest czteroetapowy.

Ujawnienie DHCP (Discover)
Klient protokołu DHCP emituje pakiet żądania konfiguracji DHCPDISCOVER, dostarczając swój adres MAC oraz nazwę hosta. Jeżeli dany klient miał wcześniej przydzielony adres IP, to wysyła również tę informację w polu opcji żądany adres. W ten sposób klient często utrzymuje ten sam adres, nawet jeżeli został wyłączony na dłużej niż czas trwania jego dzierżawy.
Oferta DHCP
Każdy serwer DHCP otrzymujący żądanie odpowiada pakietem emisji DHCPOFFER, zawierającym oferowany adres IP (jeżeli ma jeden lub więcej nieprzydzielonych) oraz jego własny adres IP. Serwery DHCP na dalekim końcu routera mogą odpowiadać na emisję DHCPDISCOVER pod warunkiem, że router ma włączone przesyłanie ruchu emisji DHCP.
Żądanie DHCP (Request)
To kolejny pakiet również wysyłany przez klienta jako rozgłoszenie. Powodem takiego postępowania jest potrzeba powiadomienia jednego serwera o przyjęciu oferty i, jednocześnie, wszystkich pozostałych o jej odrzuceniu. W przypadku odebrania wielu ofert DCHP, proces podejmowania decyzji przez klienta firmy Microsoft przebiega następująco:

* klient DHCP przyjmuje ofertę z serwera, który przydzielał adres IP używany ostatnio,
* jeżeli serwer przydzielający wcześniejszy adres nie odpowiada, przyjmowana jest pierwsza oferta odebrana.

Potwierdzenie DHCP
Serwer DHCP oficjalnie przydziela żądany adres klientowi w pakiecie emisji DHCPACK. Pakiet zawiera również podane w żądaniu parametry opcjonalne, długość całkowitego okresu dzierżawy adresu oraz okresów jego odnawiania. Serwer przechowuje te informacje w swojej bazie danych jako przydzieloną dzierżawę.

3. Odświeżanie (odnawianie) DHCP

Nieodłącznym elementem przydzielenia klientowi adresu IP przez serwer DHCP jest przyznanie dodatkowo tzw. czasu użytkowania (lease). Określa on czas ważności ustawień. W tle pracują dwa zegary - T1 odmierza połowę czasu użytkowania, zaś T2 - 87,5 procent pełnego czasu użytkowania. Obie wartości można zmienić w opcjonalnych ustawieniach serwera DHCP - jeśli takie funkcje zostały zaimplementowane. Po upływie czasu T1 klient wysyła komunikat DHCPREQUEST do serwera i pyta, czy serwer może przedłużyć czas użytkowania. Stan ten określa się jako renewing status. Z reguły serwer odpowiada wiadomością DHCPACK i przydziela nowy czas użytkowania. Serwer resetuje wówczas zegary T1 i T2.

Jeżeli po upływie czasu T2 klient nie otrzyma wiadomości DHCPACK, rozpoczyna się tak zwany rebinding status. Klient musi wysłać komunikat DHCPREQUEST, żeby uzyskać przedłużenie czasu użytkowania. Serwer może odpowiedzieć na to żądanie potwierdzeniem DHCPACK. Jeżeli jednak i to żądanie pozostanie bez odpowiedzi, klient musi zażądać nowego adresu IP. Wkracza wówczas ponownie opisany na początku mechanizm, który rozsyła zapytania do wszystkich serwerów DHCP w sieci.
4. Obszar adresowania a czas użytkownika

Zanim serwer DHCP będzie w ogóle mógł zacząć przydzielać klientom adresy IP, musi zostać wyposażony w informacje na temat przewidzianego do tych celów obszaru adresowego (rangę). Obszar adresowy jest zdefiniowany poprzez adres początkowy i końcowy. W zależności od implementacji mogą też być obszary wykluczone, a więc takie, których serwer nie może przydzielać. Gwarantuje to bezkolizyjne współistnienie w sieci adresów stałych i dynamicznie przydzielanych. Czas użytkowania określany jest zwykle w dniach, godzinach i minutach. Nie ma w tym względzie żadnej złotej reguły. Parametr ten, jeśli w ogóle jest zaimplementowany w poszczególnych produktach, musi uwzględniać obciążenie serwera, zachowanie klientów i stabilność sieci. Decydujące znaczenie ma liczba potencjalnych klientów. Reguła brzmi: czas użytkowania powinien być dwukrotnie dłuższy niż czas potrzebny do przywrócenia pracy serwera w razie jego awarii. W przypadku długiego czasu użytkowania, odpowiednio później uwzględniane są zmiany opcji DHCP po stronie klientów.

HTTP

HTTP (ang. Hypertext Transfer Protocol – protokół przesyłania dokumentów hipertekstowych) to protokół sieci WWW (ang. World Wide Web). Obecną definicję HTTP stanowi RFC 2616. Za pomocą protokołu HTTP przesyła się żądania udostępnienia dokumentów WWW i informacje o kliknięciu odnośnika oraz informacje z formularzy. Zadaniem stron WWW jest publikowanie informacji - natomiast protokół HTTP właśnie to umożliwia.

Protokół HTTP jest tak użyteczny, ponieważ udostępnia znormalizowany sposób komunikowania się komputerów ze sobą. Określa on formę żądań klienta dotyczących danych oraz formę odpowiedzi serwera na te żądania. Jest zaliczany do protokołów bezstanowych (ang. stateless) z racji tego, że nie zachowuje żadnych informacji o poprzednich transakcjach z klientem (po zakończeniu transakcji wszystko "przepada"). Pozwala to znacznie zmniejszyć obciążenie serwera, jednak jest kłopotliwe w sytuacji, gdy np. trzeba zapamiętać konkretny stan dla użytkownika, który wcześniej łączył się już z serwerem. Najczęstszym rozwiązaniem tego problemu jest wprowadzenie mechanizmu cookies. Inne podejścia to m.in. sesje po stronie serwera, ukryte parametry (gdy aktualna strona zawiera formularz) oraz parametry umieszczone w URL-u (jak np. /index.php?userid=3).

HTTP standardowo korzysta z portu nr 80 (TCP).

FTP

FTP (ang. File Transfer Protocol) - protokół typu klient-serwer, który umożliwia przesyłanie plików z i na serwer poprzez sieć TCP/IP. Protokół ten jest zdefiniowany przez IETF w RFC 959.

FTP jest protokołem 8-bitowym, dlatego nie wymaga specjalnego kodowania danych na postać 7-bitową, tak jak ma to miejsce w przypadku poczty elektronicznej (patrz standardy MIME, base64, quoted-printable, uuencode).

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 danych m.in. plików. FTP działa w dwóch trybach: aktywnym i pasywnym, w zależności od tego, w jakim jest trybie, używa innych portów do komunikacji.

Jeżeli FTP pracuje w trybie aktywnym, korzysta z portów: 21 dla poleceń (połączenie to jest zestawiane przez klienta) oraz 20 do przesyłu danych. Połączenie nawiązywane jest wówczas przez serwer. Jeżeli FTP pracuje w trybie pasywnym wykorzystuje port 21 do poleceń i port o numerze > 1024 do transmisji danych, gdzie obydwa połączenia zestawiane są przez klienta. W sieciach ukrytych za firewallem komunikacja z aktywnymi serwerami FTP jest możliwa, tylko pod warunkiem, jeżeli odpowiednie porty na firewallu (routerze) są zwolnione. Możliwe jest zainstalowanie wielu serwerów FTP za jednym i tym samem routerem. Warunkiem jest rozdzielenie portów przez router dla każdego serwera.

Serwer FTP, zależnie od konfiguracji, może pozwalać na dostęp do jego zawartości bez podawania hasła. Zamiast niego powinno się podawać adres e-mail (wg netykiety). Często jednak nie jest to przestrzegane własnie ze względu na anonimowy charakter usługi. Większość serwerów FTP loguje jednak każde połączenie i IP klienta.

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License