Z Wykład 16.03.2008, Zajęcia, II semestr 2008, Techniki Internetowe


Internet stał się przełomem technologicznym i społecznym ostatniego ćwierćwiecza. Dzisiejsze wykłady zaczniemy zatem od definicji Internetu. Medium, które zwie się internetem jest złożeniem takich trzech elementów. Po pierwsze są to sieci, które są ze sobą połączone protokołem TCP/IP (wymóg technologiczny). Po drugie mamy element społecznościowy, czyli społeczność, która uzywa i rozwija ta sieć. I każdy oprócz tego, że może przeglądać zasoby sieci, może ingerować, modyfikować zawartość elementów tej sieci. I trzeci element to oczywiście zbiór zasobów znajdujacych się w tej sieci (aspekt informacyjny). Użytkowanie internetu jest to nic innego, jak działanie społeczności przy pomocy sieci mające na celu odnalezienie i wykorzystanie znajdujacej się w niej zasobów informacyjnych. W ramach wytworzonego internetu powstało wiele typów sieci począwszy od LAN do WAN (technologii najszybciej rozwijającej się mającej największe zapotrzebowanie). Jeśli chodzi o LAN, czyli te sieci o małych rozmiarach, to warto powiedzieć, że zostały one rozbudowane o wykorzystanie sieci bezprzewodowych (Bluetooth). Zwykle jest tak, że jak mamy sieć WAN i LAN, to obydwie te sieci są rozgraniczone routerem. Sieć LAN składa się od kilku do kilkudziesięciu komputerów, natomiast WAN ze znacznie większej liczby. I ten WAN dzieli się na takie dwie specjalne podsieci - MAN (Metropolitan Area Network) i CAN (Campus Area Network). One się nie różnią niczym od sieci WAN jeśli chodzi o infrastrukturę, natomiast sa one wyodrębnione w taki sposób ze względu na swoją funkcjonalność i ze względu na główne zastosowanie. Sieć CAN jest dedykowana zawężonemu gronu użytkowników w ramach pewnego obszaru geograficznie spójnego i udostępniają one bardzo szybkie łącza dedykowane. Sieci WAN Zostały oparte w pełni o połączenia modemowe (o łącza telefoniczne) i między innymi o ISDN. Są to najnowsze technologie, które w ramach tej sieci zostały wyszególnione i własnie dziś ISDN jest rozwijany w celu zapewnienia jeszcze szybszych połączeń internetowych. Teraz powiedzmy sobie o pojęciu protokołu internetowego. Co to są te protokoły. Protokoły internetowe to podzbiór protokołów komunikacyjnych, mający zastosowanie w środowisku internetu. Protokoły internetowe to zbiór ścisłych reguł i kroków postępowania, które są automatycznie wykonywane przez urządzenia w celu nawiązania łączności i wymiany danych. Należy pamiętać, że wszystkie protokoły internetowe jako ogół definiują takie dwa podstawowe elementy - nagłówek i wiadomość. Wiemy, że podstawą komunikacji w sieci WAN, czyli sieci internet jest protokół TCP/IP. Protokół TCP/IP dzieli się na dwa odrębne protokoły: IP - służący do adresowania i wymiany danych pomiędzy podsieciami (stąd się wzięło adresowanie) i TCP, który jest protokołem sterującym poprawnością danych. Jeśli chodzi o protokół IP, to obecnie wykorzystuje się protokół IP w wersji czwartej dzielącego się na 6 klas. Klasy służą do wyodrębnienia rodzaju sieci (czy jest to LAN - dla klasy A - 10.x.x.x., a dla klasy C - 192.168.x.x, czy WAN). Jednak w trakcie wdrażania jest wersja szósta tego protokołu, do którego stworzenia przyczynił się w głównej mierze problem małej, kończącej się ilości adresów IP w wersji czwartej. W wersji szóstej mamy znacznie więcej możliwości adresowania i na pewno na długo rozwiązany byłby problem przydzielenia adresów (choćby taki telefon komórkowy mógłby mieć własny adres IP, bo do tej pory był wyszukiwany pierwszy wolny i przydzielany). Drugim protokołem w sieci internet prócz TCP/IP jest UDP. Jest on bardzo szybki, nie zapewnia on jednak w pełni połączenia z portem. Natomiast jeżeli pakiet nie dotarł, to zawsze jest możliwość retransmisji tego pakietu. Kolejny protokół to HTTP - jest on najważniejszy spośród tych wszystkich tutaj podanych do tej pory. Po pierwsze jest najpowszechniejszym protokołem widocznym w sieci WWW. Stanowi podstawę kominikacyjną jeżeli chodzi o publikację danych w sieci WWW. http udostepnia znormalizowany sposób komunikowania się komputerów z sobą, okresla formę urzadzeń klienta, oraz formę odpowiedzi. Prócz tego jest zaliczany do protokołów nezstanowych 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 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. FTP to kolejny protokół. Służy on do wymiany plików, ale schodzi on już na dalszy plan choćby ze względu na torrenty. Standardowo protokół ten działa w dwóch trybach - pasywnym (działa na porcie 21 dla poleceń i na porcie większym niż 1024 do przesyłania danych) i aktywnym (działa na porcie 21 dla poleceń i na porcie 20 dla danych - połączenie jest nawiązywane tu przez serwer). Kolejne protokoły to protokoły związane z przesyłaniem wiadomości pocztą elektroniczną - SMTP, POP3 I IMAP. Wszystkie te protokoły sa protokołami tekstowymi (czytelnymi dla człowieka). SMTP jest protokołem zawodnym, gdyż nie pozwala on na pobieranie wiadomości ze zdalnego serwera. POP3 służy do odbioru poczty elektronicznej, jednakże:

Istnieje jednak bardziej zaawansowany protokół IMAP. W przeciwieństwie do POP3, który umożliwia jedynie pobieranie i kasowanie poczty, IMAP pozwala na zarządzanie wieloma folderami pocztowymi oraz pobieranie i operowanie na listach znajdujących się na zdalnym serwerze. IMAP pozwala na ściągnięcie nagłówków wiadomości i wybranie, które z wiadomości chcemy ściągnąć na komputer lokalny. Pozwala na wykonywanie wielu operacji, zarządzanie folderami i wiadomościami. I tak powiedzieliśmy sobie o podstawowych protokołach internetowych. Teraz natomiast skupimy się na anatomiii protokołu HTTP. Pamiętamy, że jest bezstanowy i nastepuje taka pojedyncza transakcja - wysyłamy wiadomość HTTP, dostajemy odpowiedź i koniec. I teraz mamy kilka takich metod HTTP, które obsługują operacje na serwerze. Jest ich dość sporo, natmiast my powiemy o dwóch najważniejszych - GET I POST. Obydwie te metody służą do komunikacji z serwerem i do interaktywnego pobierania danych. Metoda GET to nic innego, jak pobranie zasobu wskazanego przez URL. może mieć postać warunkową jeśli w nagłówku występują pola warunkowe takie jak If Modified Since. Z kolei metoda POST odpowiada za przyjęcie danych przesyłanych od klienta do serwera (przykładowo - wysyłanie zawartości formularzy). Można jeszcze ewentualnie powiedzieć o HEAD. Ta metoda pobiera informacje o zasobie i jest stosowana do sprawdzania dostępności zasobu. W przypadku formularzy na stronie WWW można wymiannie stosować metodę GET i POST. Różnica pomiędzy nimi jest taka, że w GET wszystkie parametry wywołania formularza idą otwartym kanałem (idą w URL) i jest tworzone wywołanie do serwera o postaci:

http://81.113.23.98:80/myapp/usluga?query_string

HTTP:// oznacza tu specyfikację protokołu. Nastepnie podajemy adres domenowy lub IP sewera. Później możemy podac port. Domyślny dla http jest port 80 i jeśli jest port 80, to :80 możemy pominąć. Następnie jest ścieżka, która mówi, że odwołujemy się do zasobu w ramach pewnej aplikacji WEB. I od znaku zapytania włącznie będzie widoczna deklaracja parametrów. Przy metodzie POST nie ma czegoś takiego. Będzie widoczny adres, ale już bez widocznej deklaracji parametrów, ponieważ parametry sa przesyłane kanałem ukrytym. Wracając jednak do tego adresu URL należy podkreslic dwie rzeczy - ma on ograniczoną długość, a ponadto nie możemy użyć spacji w adresie. Spacja bowiem rozdziela adres. Jeśli chcielibyśmy użyć spacji, to spację zastepuje bowiem znaczek %20 (to odnosi się do parametrów rzecz jasna). Jednak w większości przeglądarek już wprowadzono taki dekoder, który to rozwiązuje zamieniając automatycznie znak spacji na %20. Stąd dla formularzy bezpieczniejasza jest metoda GET. Teraz jak wygląda taka podstawowa sesja związana z protokołem HTTP. Na początek popatrzmy, jak wygląda zapytanie http, które przesyłane jest od klienta do serwera:

  1. GET / HTTP/1.1 (prośba o zwrócenie dokumentu o URL / zgodnie z protokołem HTTP 1.1)

  2. Host: host.com (wymagany w HTTP 1.1 nagłówek Host służący do rozpoznania hosta, jeśli serwer na jednym IP obsługuje kilka VirtualHostów)

  3. User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 (nazwa aplikacji klienckiej)

  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8 (akceptowane (bądź nieakceptowane dla q=0) przez klienta typy plików)

  5. Accept-Language: pl,en-us;q=0.7,en;q=0.3 (preferowany język strony - nagłówek przydatny przy Language negotiation)

  6. Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 (preferowane kodowanie znaków)

  7. Keep-Alive: 300 (czas, jaki klient chce zarezerwować do następnego zapytania w przypadku połączenia Keep-Alive)

  8. Connection: keep-alive (chęć nawiązania połączenia stałego Keep-Alive z serwerem HTTP/1.0)

  9. znak powrotu karetki i nowej linii (CRLF)

No i teraz jak wygląda odpowiedź serwera WWW na takie zapytanie:

  1. HTTP/1.1 200 OK (kod odpowiedzi HTTP, w tym wypadku zakceptowanie i zwrócenie zawartości)

  2. Date: Sun, 11 Jul 2004 12:04:30 GMT (czas serwera)

  3. Server: Apache/2.0.50 (Unix) DAV/2 (opis aplikacji serwera)

  4. Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ (nakazanie klientowi zapisania Cookie)

  5. Expires: Thu, 19 Nov 1981 08:52:00 GMT (czas wygaśnięcia zawartości zwróconego dokumentu. Data w przeszłości zabrania umieszczenie dokumentu w cache. Jest to stara metoda zastąpiona przez Cache-Control)

  6. Cache-Control: no-store, no-cache, must-revalidate (no-store zabrania przechowywania dokumentu na dysku, nawet gdy nie jest to cache. must-revalidate nakazuje bezwzględnie stosować się do wytycznych i sprawdzić swieżość dokumentu za każdym razem)

  7. Pragma: no-cache (informacje dotyczące Cache'owania zawartości. Stara, niestandardowa metoda.)

  8. Keep-Alive: timeout=15, max=100

  9. Connection: Keep-Alive (akceptacja połączenia Keep-Alive dla klientów HTTP/1.0)

  10. Transfer-Encoding: chunked (typ kodowania zawartości stosowanej przez serwer)

  11. Content-Type: text/html; charset=iso-8859-2 (typ MIME i strona kodowa zwróconego dokumetu)

  12. znak powrotu karetki i nowej linii (CRLF)

  13. tutaj zawartość dokumentu

HTTP/1.1 dopuszcza wysłanie kilku żądań naraz (pipelining). HTTP/1.0 zakłada jedno żądanie i jedną odpowiedź. HTTP do obsługi połączeń Keep-Alive wymaga aby odpowiedź od serwera miała znaną długość (przez podanie Content-Length lub użycie Transfer-Encoding: chunked). W przeciwnym wypadku koniec odpowiedzi sygnalizuje zerwanie połączenia i Keep-Alive nie może działać. Nagłówek Keep-Alive jest rozszerzeniem HTTP/1.0. W HTTP/1.1 ten nagłówek nie jest potrzebny, gdyż połączenia Keep-Alive są domyślne (zachowanie zmienia Connection: close). Jeśli wpisujemy adres strony, lub piszemy jakąś stronę i próbujemy ją wywołać, to jeśli cos jest nie tak, to informują nas o tym kody informacyjne. Kod odpowiedzi HTTP to numeryczna dana wysyłana przez serwer HTTP do aplikacji klienta. Informuje o sposobie realizacji (bądź jej braku) zapytania klienckiego. Znajduje się na początku odpowiedzi, tuż za wersją protokołu HTTP i przed słownym opisem kodu odpowiedzi przykładowo: HTTP/1.1 400 Bad Request. Oto, jakimi kodami może odpowiedzieć przeglądarka i co one oznaczają:

Kody informacyjne

kod

opis słowny

znaczenie/zwrócony zasób

100

Continue

Kontynuuj - prośba o dalsze wysyłanie zapytania

101

Switching Protocols

Zmiana protokołu

Kody powodzenia

kod

opis słowny

znaczenie/zwrócony zasób

200

OK

Zawartość żądanego dokumentu.

201

Created

Utworzono - wysłany dokument został zapisany na serwerze

202

Accepted

Przyjęto - zapytanie zostało przyjęte do obsłużenia, lecz jego zrealizowanie jeszcze się nie skończyło

203

Non-Authoritative Information

Informacja nieautorytatywna - zwrócona informacja nie odpowiada dokładnie odpowiedzi pierwotnego serwera, lecz została utworzona z lokalnych bądź zewnętrznych kopii

204

No content

Brak zawartości - serwer zrealizował zapytanie klienta i nie potrzebuje zwracać żadnej treści

205

Reset Content

Przywróć zawartość - serwer zrealizował zapytanie i klient powinien przywrócić pierwotny wygląd dokumentu

206

Partial Content

Część zawartości - serwer zrealizował tylko część zapytania typu GET, odpowiedź musi zawierać nagłówek Range informujący o zakresie bajtowym zwróconego elementu

Kody przekierowania

kod

opis słowny

znaczenie/zwrócony zasób

300

Multiple Choices

Wiele możliwości - istnieje więcej niż jeden sposób obsłużenia danego zapytania, serwer może podać adres zasobu, który pozwala na wybór jednoznacznego zapytania spośród możliwych

301

Moved Permanently

Trwale przeniesiony - żądany zasób zmienił swój URI i w przyszłości zasób powinien być szukany pod wskazanym nowym adresem

302

Found

Znaleziono - żądany zasób jest chwilowo dostępny pod innym adresem a przyszłe odwołania do zasobu powinny być kierowane pod adres pierwotny

303

See Other

Zobacz inne - odpowiedź na żądanie znajduje się pod innym URI i tam klient powinien się skierować. To jest właściwy sposób przekierowywania w odpowiedzi na żądanie metodą POST.

304

Not Modified

Nie zmieniono - zawartość zasobu nie podległa zmianie według warunku przekazanego przez klienta (np. data ostatniej wersji zasobu pobranej przez klienta - cache przeglądarki)

305

Use Proxy

Użyj serwera proxy - do żądanego zasobu trzeba odwołać się przez serwer proxy podany w nagłówku Location odpowiedzi

306

Kod nieużywany, aczkolwiek zastrzeżony dla starszych wersji protokołu

307

Temporary Redirect

Tymczasowe przekierowanie - żądany zasób znajduje się chwilowo pod innym adresem URI, odpowiedź powinna zawierać zmieniony adres zasobu, na który klient zobowiązany jest się przenieść

Kody błędu aplikacji klienta

kod

opis słowny

znaczenie/zwrócony zasób

400

Bad Request

Nieprawidłowe zapytanie - żądanie nie może być obsłużone przez serwer z powodu błędnej składni zapytania

401

Unauthorized

Nieautoryzowany dostęp - żądanie zasobu, który wymaga uwierzytelnienia

402

Payment Required

Wymagana opłata - odpowiedź zarezerwowana na przyszłość

403

Forbidden

Zabroniony - serwer zrozumiał zapytanie lecz konfiguracja bezpieczeństwa zabrania mu zwrócić żądany zasób

404

Nie znaleziono - serwer nie odnalazł zasobu według podanego URI ani niczego co by wskazywało na istnienie takiego zasobu w przeszłości

405

Method Not Allowed

Niedozwolona metoda - metoda zawarta w żądaniu nie jest dozwolona dla wskazanego zasobu, odpowiedź zawiera też listę dozwolonych metod

406

Not Acceptable

Niedozwolone - zażądany zasób nie jest w stanie zwrócić odpowiedzi mogącej być obsłużonej przez klienta według informacji podanych w zapytaniu

407

Proxy Authentication

Wymagane uwierzytelnienie do serwera proxy - analogicznie do kodu 401, dotyczy dostępu do serwera proxy

408

Request Timeout

Koniec czasu oczekiwania na żądanie - klient nie przesłał zapytania do serwera w określonym czasie

409

Conflict

Konflikt - żądanie nie może być zrealizowane, ponieważ występuje konflikt z obecnym statusem zasobu, ten kod odpowiedzi jest zwracany tylko w przypadku podejrzewania przez serwer, że klient może nie znaleźć przyczyny błędu i przesłać prawidłowego zapytania

410

Gone

Zniknął (usunięto) - zażądany zasób nie jest dłużej dostępny i nie znany jest jego ewentualny nowy adres URI; klient powinien już więcej nie odwoływać się do tego zasobu

411

Length required

Wymagana długość - serwer odmawia zrealizowania zapytania ze względu na brak nagłówka Content-Length w zapytaniu; klient może powtórzyć zapytanie dodając doń poprawny nagłówek długości

412

Precondition Failed

Warunek wstępny nie może być spełniony - serwer nie może spełnić przynajmniej jednego z warunków zawartych w zapytaniu

413

Request Entity Too Large

Encja zapytania zbyt długa - całkowita długość zapytania jest zbyt długa dla serwera

414

Request-URI Too Long

Adres URI zapytania zbyt długi - długość zażądanego URI jest większa niż maksymalna oczekiwana przez serwer

415

Unsupported Media Type

Nieznany sposób żądania - serwer odmawia przyjęcia zapytania, ponieważ jego składnia jest niezrozumiała dla serwera

416

Requested Range Not Satisfiable

Zakres bajtowy podany w zapytaniu nie do obsłużenia - klient podał w zapytaniu zakres, który nie może być zastosowany do wskazanego zasobu

417

Expectation Failed

Oczekiwana wartość nie do zwrócenia - oczekiwanie podane w nagłówku Expect żądania nie może być spełnione przez serwer lub - jeśli zapytanie realizuje serwer proxy - serwer ma dowód, że oczekiwanie nie będzie spełnione przez następny w łańcuchu serwer realizujący zapytanie

Kody błędu wewnętrznego [edytuj]

kod

opis słowny

znaczenie/zwrócony zasób

500

Internal Server Error

Wewnętrzny błąd serwera - serwer napotkał niespodziewane trudności, które uniemożliwiły zrealizowanie żądania

501

Not Implemented

Nie zaimplementowano - serwer nie dysponuje funkcjonalnością wymaganą w zapytaniu; ten kod jest zwracany gdy serwer otrzymał nieznany typ zapytania

502

Bad Gateway

Błąd bramy - serwer - spełniający rolę bramy lub proxy - otrzymał niepoprawną odpowiedź od serwera nadrzędnego i nie jest w stanie zrealizować żądania klienta

503

Service Unavailable

Usługa niedostępna - serwer nie jest w stanie w danej chwili zrealizować zapytania klienta ze względu na przeciążenie

504

Gateway Timeout

Przekroczony czas bramy - serwer - spełniający rolę bramy lub proxy - nie otrzymał w ustalonym czasie odpowiedzi od wskazanego serwera HTTP, FTP, LDAP itp. lub serwer DNS jest potrzebny do obsłużenia zapytania

505

HTTP Version Not Supported

Wersja HTTP nie obsługiwana - serwer nie obsługuje bądź odmawia obsługi wskazanej przez klienta wersji http.



Wyszukiwarka

Podobne podstrony:
Z Wykład 16 03 2008 2
Z Wykład 16 03 2008 3
Z Wykład 15.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 01.03.2008, Zajęcia, II semestr 2008, Rachunek prawdopodobieństwa
Z Wykład 29.03.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
Z Wykład 30.03.2008, Zajęcia, II semestr 2008, Teoria informacji i kodowania
Z Wykład 02.03.2008, Zajęcia, II semestr 2008, Algorytmy i struktury danych
Z Wykład 15.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Wykład z dnia 10.05.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
Z Ćwiczenia 29.03.2008, Zajęcia, II semestr 2008, Wstęp do kryptologii
Z Ćwiczenia 15.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 19.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 23.02.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Ćwiczenia 01.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 06.04.2008, Zajęcia, II semestr 2008, Rachunek prawdopodobieństwa
Z Wykład 24.02.2008, Zajęcia, II semestr 2008, Teoria informacji i kodowania
Z Wykład 05.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 10.05.2008, Zajęcia, II semestr 2008, Analiza matematyczna

więcej podobnych podstron