Wykład 11: “Warstwa
Wykład 11: “Warstwa
sesji – usługi WWW i
sesji – usługi WWW i
FTP”
FTP”
Mikołaj Leszczuk
2
Literatura
• “Hypertext Transfer Protocol –
HTTP/1.1”,
http://www.ietf.org/rfc/rfc2616.txt
• “FILE TRANSFER PROTOCOL
(FTP)”,
http://www.ietf.org/rfc/rfc0959.txt
• „Wikipedia”,
http://www.wikipedia.pl/
3
HTTP (1/4)
• HTTP (
Hypertext Transfer
Protocol) to
(World Wide Web).
• Jest on używany przy każdej
transakcji.
4
HTTP (2/4)
• Właśnie za pomocą
HTTP przesyła się żądania
udostępnienia dokumentów
i informacje o kliknięciu odnośnika
oraz informacje z formularzy.
• Zadaniem stron WWW jest
publikowanie informacji -
natomiast
to umożliwia.
5
HTTP (3/4)
• Protokół HTTP jest tak
użyteczny, ponieważ
udostępnia znormalizowany
sposób komunikowania się
ze sobą.
• Określa on formę żądań klienta
dotyczących danych oraz formę
odpowiedzi serwera na te
żądania.
6
HTTP (4/4)
• Jest zaliczany do protokołów
stateless (bezstanowy), z racji
tego, że nie zachowuje żadnych
informacji o poprzednich
transakcjach z klientem, po
zakończeniu transakcji wszystko
„przepada” – z tego powodu tak
bardzo spopularyzowały się
.
• HTTP korzysta z portu nr 80.
7
Protokół HTTP (1/3)
• Protokół warstwy:
– Sesji (V w modelu ISO/OSI).
– Aplikacji (IV w modelu internetowym –
TCP/IP).
• Używany dla celów prezentacji
rozproszonych dokumentów
hipermedialnych.
• Możliwość rozszerzania o:
– Nowe metody zapytań.
– Kody błędów.
– Nagłówki.
8
Protokół HTTP (2/3)
• Może być użyty do wielu innych
zastosowań prócz stron WWW, np:
– Serwery nazw.
– Rozproszone systemy zarządzania
obiektami.
• Cechą charakterystyczną HTTP
jest uniezależnienie systemów
używających protokołu od typu
przesyłanych danych.
9
Protokół HTTP (3/3)
• HTTP jest używany w systemie
globalnym systemie
informacyjnym WWW (World-
Wide Web) od roku 1991.
• Najpopularniejszą wersją
protokołu HTTP jest wersja
“HTTP/1.1” wraz z
rozszerzeniami w dokumencie
RFC 2068.
10
Wprowadzenie do HTTP
(1/6)
• Pierwszą wersją HTTP była wersja
“HTTP/0.9” – prosty protokół dla
transferu danych w Internecie.
• Następnie zdefiniowano protokół
“HTTP/1.0” (w dokumencie RFC 1945) –
wersja poprawiona pozwalająca na
przesyłanie wiadomości w formacie
MIME (Multipurpose Internet Mail
Extensions) zawierającym m.in.
metainformacje o przesyłanych
danych.
11
Wprowadzenie do HTTP
(2/6)
• Jednakże, “HTTP/1.0” nie brał
pod uwagę efektu istnienia:
– Hierarchicznych proxy.
– Buforowania.
– Konieczności utrzymywania
stałych połączeń.
– Hostów wirtualnych.
12
Wprowadzenie do HTTP
(3/6)
• Dodatkowo, mnożenie się
aplikacji, ze źle (niekompletnie)
zaimplementowanym protokołem
"HTTP/1.0" spowodowało
konieczność zmiany wersji
protokołu w przypadku
komunikacji między dwoma
aplikacjami, jeśli chcą one poznać
swoje prawdziwe możliwości.
13
Wprowadzenie do HTTP
(4/6)
• Zwykle w systemach informacyjnych
potrzebna jest większa funkcjonalność niż
zwykłe pobieranie, dlatego HTTP umożliwia
bardziej zaawansowane operacje.
• Uniform Resource Identifier (URI):
– Location (URL).
– Name (URN).
• Pozwala to na identyfikację obiektów.
• Komunikaty HTTP są przesyłane w sposób
podobny do poczty elektronicznej jako
MIME.
14
Wprowadzenie do HTTP
(5/6)
• HTTP może być też użyty jako
uniwersalny protokół dla komunikacji
pomiędzy agentami użytkowników a
serwerami proxy innych systemów
internetowych takich jak:
– SMTP,
– NNTP,
– FTP,
– Gopher,
– WAIS.
15
Wprowadzenie do HTTP
(6/6)
• W ten sposób, przy użyciu
HTTP, możliwy jest dostęp do
zasobów dla różnych aplikacji.
16
Typowe zapytanie HTTP
(1/4)
1. GET / HTTP/1.1 (prośba o
zwrócenie dokumentu o
/
zgodnie z protokołem HTTP
1.1)
2. Host: host.com (wymagany
w HTTP 1.1 nagłówek Host
służący do wstecznego DNS)
17
Typowe zapytanie HTTP
(2/4)
3.
User-Agent: Mozilla/5.0
(X11; U; Linux i686; pl-PL;
rv:1.6) Gecko/20040122
(nazwa
)
4.
Accept:
,
;q=0.9,text/plain;q=0.8
(akceptowane przez klienta
typy plików)
18
Typowe zapytanie HTTP
(3/4)
5. Accept-Language: pl,en-
us;q=0.7,en;q=0.3
(preferowany język strony –
nagłówek przydatny przy
)
6. Accept-Charset: ISO-8859-
2,utf-8;q=0.7,*;q=0.7
(preferowana
)
19
Typowe zapytanie HTTP
(4/4)
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)
20
Odpowiedź serwera WWW
(1/4)
1.
HTTP/1.1 200 OK (
, w tym
wypadku zaakceptowanie i
zwrócenie zawartości)
2.
Date: Sun, 11 Jul 2004
12:04:30
(czas serwera)
3.
/2.0.50
(Unix)
/2 (opis aplikacji
serwera)
21
Odpowiedź serwera WWW
(2/4)
4.
Set-Cookie:
PSID=d6dd02e9957fb162d2385
ca6f2829a73; path=/ (nakazanie
klientowi zapisania
)
5.
Expires: Thu, 19 Nov 1981
08:52:00
zawartości zwróconego dokumentu)
6.
Cache-Control: no-store, no-
cache, must-revalidate, post-
check=0, pre-check=0
22
Odpowiedź serwera WWW
(3/4)
7. Pragma: no-cache
(informacje dotyczące
-
owania zawartości)
8. Keep-Alive: timeout=15,
max=100
9. Connection: Keep-Alive
(akceptacja połączenia Keep-
Alive - tunelowanego)
23
Odpowiedź serwera WWW
(4/4)
10.Transfer-Encoding: chunked
(typ kompresji zawartości
stosowanej przez serwer)
11.Content-Type: text/html;
charset=iso-8859-2 (
i
zwróconego dokumentu)
12.(pusta linia)
13.tutaj zawartość dokumentu
24
Kod odpowiedzi HTTP
• Kod odpowiedzi HTTP -
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. Np.
• HTTP/1.1 400 Bad Request.
25
Kody odpowiedzi protokołu
Informacyjne
kod słowny
opis
znaczenie/zwrócony
zasób
10
0
Continu
e
Kontynuuj – prośba o
dalsze wysyłanie
zapytania
10
1
Switchin
g
Protocol
s
Zmiana protokołu
26
Kody odpowiedzi protokołu
Powodzenia (1/2)
20
0
OK
Zawartość żądanego dokumentu
(najczęściej zwracany nagłówek
odpowiedzi w komunikacji WWW
Internetu)
20
1
Created
Utworzono – wysłany dokument
został zapisany na serwerze
20
2
Accepted
Przyjęto – zapytanie zostało przyjęte
do obsłużenia, lecz jego
zrealizowanie jeszcze się nie
skończyło
20
3
Non-
Authoritati
ve
Informatio
n
Informacja nieautorytarna –
zwrócona informacja nie odpowiada
dokładnie odpowiedzi pierwotnego
serwera, lecz została utworzona z
lokalnych bądź zewnętrznych kopii
27
Kody odpowiedzi protokołu
Powodzenia (2/2)
20
4
No
content
Brak zawartości — serwer zrealizował
zapytanie klienta i nie potrzebuje
zwracać żadnej treści
20
5
Reset
Content
Przywróć zawartość – serwer
zrealizował zapytanie i klient powinien
przywrócić pierwotny wygląd
dokumentu
20
6
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
28
Kody odpowiedzi protokołu
Przekierowania (1/2)
300
Multiply
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
Permanentl
y
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
chwiliwo 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ć
29
Kody odpowiedzi protokołu
Przekierowania (2/2)
30
4
Not
Modified
Nie zmieniono – zawartość zasobu nie
pogległa zmianie według warunku
przekazanego przez klienta (np. data
ostatniej wersji zasobu pobranej przez
klienta – Cache przeglądarki)
30
5
Use
Proxy
Użyj serwera proxy – do żądanego zasobu
trzeba odwołać się przez serwer proxy
podany w nagłówku Location odpowiedzi
30
6
Kod nieużywany, acz zastrzeżony dla
starszych wersji protokołu
30
7
Temporar
y
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 przenieść się
30
Kody odpowiedzi protokołu
Błędu aplikacji klienta (1/3)
40
0
Bad
Request
Nieprawidłowe zapytanie – żądanie nie może
być obsłużone przez serwer z powodu błędnej
składni zapytania
40
1
Unauthorize
d
Nieautoryzowany dostęp – żądanie zasobu,
który wymaga uwierzytelnienia
40
2
Payment
Required
Wymagana opłata — odpowiedź zarezerwowana
na przyszłość
40
3
Forbidden
Zabroniony – serwer zrozumiał zapytanie lecz
konfiguracja bezpieczeństwa zabrania mu
zwrócić żądany zasób
40
4
Not Found
Nie znaleziono – serwer nie odnalazł zasobu
według podanego URI ani niczego co by
wskazywało na istnienie takiego zasobu w
przeszłości
40
5
Method Not
Allowed
Niedozwolona metoda – metoda zawarta w
żądaniu nie jest dozwolona dla wskazanego
zasobu, odpowiedź zawiera też listę
dozwolonych metod
31
Kody odpowiedzi protokołu
Błędu aplikacji klienta (2/3)
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
Required
Wymagane uwierzytelnienie 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
32
Kody odpowiedzi protokołu
Błędu aplikacji klienta (2/3)
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
33
Kody odpowiedzi protokołu
Błędu aplikacji klienta (3/3)
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
34
Kody odpowiedzi protokołu
Błędu wewnętrznego
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 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 potrzeby 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
35
Usługa WWW
●
Standardowo dostępna na porcie
80 TCP
●
Najpopularniejsze realizacje
serwerów:
–
Apache
–
Internet Information Server
–
Netscape Enterprise Server
36
World Wide Web (1/5)
• World Wide Web (w skrócie
określany jako WWW lub Web) jest
,
,
sieciowym (
/
) systemem
informacyjnym opartym na
publicznie dostępnych, otwartych
standardach
,
i
.
• Pierwotnym i w chwili obecnej
nadal podstawowym zadaniem
WWW jest publikowanie informacji.
37
World Wide Web (2/5)
• Aby uzyskać dostęp do tak
udostępnianej informacji, trzeba
posłużyć się
, który
nazywamy
.
• Przeglądarka łączy się z
, skąd pobiera
pewien zbiór informacji określany jako
.
• Strona internetowa może zostać
wyświetlona, zapisana w lokalnym
systemie plików czy wydrukowana.
38
World Wide Web (3/5)
• Zawartość strony internetowej jest
, znaczy to, że
użytkownik oglądając stronę
internetową może podążać za
, które przenoszą go do
innych stron internetowych w ramach
tego samego serwera internetowego
lub innych dostępnych w ramach sieci.
• Często korzystanie z WWW nazywa się
"surfowaniem po sieci").
39
World Wide Web (4/5)
• World Wide Web został
zapoczątkowany na początku
lat dziewięćdziesiątych w
jako system dostępu do
danych, informacji (w tym
graficznych) w
heterogenicznym środowisku
dużej organizacji naukowej.
40
World Wide Web (5/5)
•
, nazywany twórcą
WWW, zbudował prototyp systemu,
który później został przekształcony
w to czym WWW jest dzisiaj.
• Szybko przekroczył (podobnie jak
) granice środowiska
naukowego, a po kilku latach został
zaadaptowany na całym świecie.
41
Skrypty CGI
• Programy wykonywane na
serwerze WWW
• Argumenty:
– Wejście:
• Parametry
• Plik
– Wyjście:
• Plik testowy
• Dokument w języku HTML
• Plik binarny
42
FTP (1/3)
• FTP czyli File Transfer Protocol (
Plików) jest
protokołem typu
, który
umożliwia przesyłanie
z i na
poprzez sieć TCP/IP.
FTP jest standardem określonym przez
w
(http://www.faqs.org/rfcs/rfc959.html).
• FTP jest protokołem 8-bitowym, dlatego
nie jest potrzebne dalsze przetwarzanie
informacji, tak jak ma to miejsce w
standardach
i uuencode.
43
FTP (2/3)
• FTP wykorzystuje do
komunikacji dwa połączenia
. 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.
44
FTP (3/3)
• FTP działa w dwóch trybach: aktywnym
i pasywnym. W zależności od tego w
jakim jest trybie używa innych
do komunikacji.
• Jeżeli FTP pracuje w trybie aktywnym
korzysta z portów nr 20 do przesyłu
danych i 21 dla poleceń. Natomiast
jeżeli pracuje w trybie pasywnym
wykorzystuje porty nr 21 do poleceń i
port o numerze > 1024 do transmisji
danych.
45
Wprowadzenie do FTP (1/2)
• Celami FTP są:
– Promować udostępnianie plików
(programów komputerowych i/lub danych).
– Przekonywać do pośredniego lub
bezpośredniego (z zastosowaniem
programów) używania zdalnych
komputerów.
– Oddzielać użytkownika od problemów z
różnymi systemami zapisu plików na
różnych serwerach.
– Przesyłać dane w sposób niezawodny i
efektywny.
46
Wprowadzenie do FTP (2/2)
• Sam protokół FTP, może być
używany bezpośrednio przez
użytkownika, lecz stworzony
został przede wszystkim do
użycia przez programy.
47
Model FTP
-------------
|/---------\|
|| User || --------
||Interface|<--->| User |
|\----^----/| --------
---------- | | |
|/------\| FTP Commands |/----V----\|
||Server|<---------------->| User ||
|| PI || FTP Replies || PI ||
|\--^---/| |\----^----/|
| | | | | |
-------- |/--V---\| Data |/----V----\| --------
| File |<--->|Server|<---------------->| User |<--->| File |
|System| || DTP || Connection || DTP || |System|
-------- |\------/| |\---------/| --------
---------- -------------
Server-FTP USER-FTP
NOTES: 1. The data connection may be used in either direction.
2. The data connection need not exist all of the time.
48
Model FTP (1/2)
• Interpreter protokołu użytkownika inicjuje
połączenie sterujące.
• Połączenie sterujące wygląda jak sesja
TELNET.
49
Model FTP (2/2)
• W momencie inicjacji połączenia przez
użytkownika, Interpreter protokołu użytkownika
generuje standardowe komendy FTP i wysyła je
połączeniem sterującym do procesu serwera.
• Użytkownik może jednak ustanowić bezpośrednie
połączenie sterujące do serwera FTP, np: z
terminala tekstowego, a następnie niezależnie
generować standardowe komendy FTP , omijając
proces FTP użytkownika.
• Interpreter protokołu serwera, w wyniku
przetwarzania komend, wysyła standardowe
odpowiedzi do interpretera protokołu użytkownika
korzystając z połączenia sterującego.
50
Usługa FTP (1/2)
• Oparta na protokole FTP (File
Transfer Protocol)
• Standardowo dostępna na
portach TCP:
– 21 – kanał sterowania
– >1024, przypadkowych – kanał
danych
51
Usługa FTP (2/2)
• Najpopularniejsze realizacje
serwerów:
– GNU ftpd
– Internet Information Server
– Netscape Enterprise Server