Mapa wykładu
2.1 Zasady budowy 2.6 Poczta elektroniczna
protokołów w. aplikacji
SMTP, POP3, IMAP
2.2 WWW i HTTP 2.7 FTP
2.3 DNS 2.8 Dystrybucja
zawartości
2.4 Programowanie przy
Schowki Internetowe
użyciu gniazd TCP
Sieci dystrybucji
2.5 Programowanie przy
zawartości
użyciu gniazd UDP
2.9 Dzielenie plików P2P
1
Programowanie z gniazdami
Cel: nauczyć się budować aplikacje klient/serwer
komunikujące się przy pomocy gniazd
API gniazd
gniazdo
wprowadzone w UNIX
lokalny na hoście,
BSD4.1, 1981
tworzony przez aplikację,
tworzone, używane, i
kontrolowany przez SO
zwalniane przez aplikacje
interfejs, przez który
model klient/serwer
proces aplikacji może
zarówno wysyłać jak i
dwa rodzaje transportu
odbierać komunikaty
przez API gniazd:
od/do innego procesu
zawodne datagramy
aplikacji
niezawodne strumienie
bajtów
2
Programowanie gniazd TCP
Gniazdo: interfejs pomiędzy procesem aplikacji i
protokołem transportowym koniec-koniec (UCP lub
TCP)
Usługa TCP: niezawodny transfer bajtów z jednego
procesu do drugiego
kontrolowane
kontrolowane
przez twórcę
proces
proces
przez twórcę
aplikacji
gniazdo
aplikacji
gniazdo
TCP z kontrolowane
TCP z
kontrolowane
przez system
buforami,
przez system
buforami,
internet
operacyjny
zmiennymi
operacyjny
zmiennymi
host lub
host lub
serwer
serwer
3
Programowanie gniazd TCP
Klient musi połączyć się z serwerem Po otrzymaniu połączenia,
TCP serwera tworzy nowe
proces serwera musi przedtem
gniazdo do komunikacji
zostać uruchomiony
pomiędzy procesem klienta i
serwer musi utworzyć gniazdo-
serwera
centralę, które przyjmie rozmowę z
pozwala serwerowi
klientem
rozmawiać z wieloma
klientami
Klient łączy się z serwerem poprzez:
numery portów zródła są
utworzenie lokalnego gniazda
używane do odróżnienia
określenie adresu IP, numeru portu
klientów
procesu serwera
punkt widzenia programisty
Następnie łączymy gniazda: TCP
TCP umożliwia niezawodną,
klienta tworzy połączenie do TCP
uporządkowaną komunikację
serwera
( strumień ) bajtów
pomiędzy klientem i serwerem
4
Terminologia strumieni
Strumień jest ciągiem bajtów, które
wpływają/wypływają z procesu.
Strumień wejściowy jest podłączony
do zródła danych wejściowych
procesu, np, klawiatury lub gniazda.
Strumień wyjściowy jest podłączony
do odbiorcy danych z procesu, np,
monitora lub gniazda.
5
Programowanie gniazd TCP
klawiatura monitor
Przykład aplikacji klient/serwer:
1) klient czyta linię ze standardowego
strumien
wejścia (strumień
wejsciowy
odUżytkownika), wysyła do
Proces
Process
serwera przez gniazdo (strumień
klienta
doSerwera)
2) serwer czyta linię z gniazda
3) serwer zmienia linię na wielke
litery, odsyła do klienta
strumien strumien
wyjsciowy wejsciowy
4) klient czyta, drukuje zmienioną linię
z gniazda (strumień odSerwera)
gniazdo TCP
gniazdo klienta
gniazdo
klienta
TCP
do sieci z sieci
6
odUzytkownika
doSerwera
odSerwera
Interakcja klient/serwer: TCP
Serwer (adres hostid)
Klient
tworzy gniazdo,
port=x, dla przychodzących
połączeń:
welcomeSocket =
ServerSocket()
czeka na przychodzące
inicjalizacja
tworzy gniazdo,
połączenia
łączy się z hostid, port=x
połączenia TCP
connectionSocket =
clientSocket =
welcomeSocket.accept()
Socket()
wysyła komunikat przez
czyta komunikat z
clientSocket
connectionSocket
pisze odpowiedz do
connectionSocket
czyta odpowiedz z
clientSocket
zamyka
zamyka
connectionSocket
clientSocket
7
Przykład: Klient w Javie (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
Tworzy
BufferedReader inFromUser =
strumień wejściowy
new BufferedReader(new InputStreamReader(System.in));
Tworzy
gniazdo klienta,
Socket clientSocket = new Socket("hostname", 6789);
łączy się z serwerem
DataOutputStream outToServer =
Tworzy
new DataOutputStream(clientSocket.getOutputStream());
strumień wyjściowy
podłączony do gniazda
8
Przykład: Klient w Javie (TCP), c.d.
Tworzy
BufferedReader inFromServer =
strumień wejściowy
new BufferedReader(new
podłączony do
InputStreamReader(clientSocket.getInputStream()));
gniazda
sentence = inFromUser.readLine();
Wysyła linię
do serwera outToServer.writeBytes(sentence + '\n');
Czyta linię modifiedSentence = inFromServer.readLine();
z serwera
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
9
Przykład: serwer (iteracyjny) w Javie (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
Tworzy gniazdo
odbierające
ServerSocket welcomeSocket = new ServerSocket(6789);
na porcie 6789
while(true) {
Oczekuje na gniezdzie
na połączenie od
Socket connectionSocket = welcomeSocket.accept();
klienta (blokujące)
BufferedReader inFromClient =
Tworzy strumień
new BufferedReader(new
wejściowy,
InputStreamReader(connectionSocket.getInputStream()));
podłączony do gniazda
10
Przykład: serwer w Javie(TCP), c.d.
Tworzy strumień
wyjściowy, podłą-
DataOutputStream outToClient =
czony do gniazda
new DataOutputStream(connectionSocket.getOutputStream());
Czyta linię
clientSentence = inFromClient.readLine();
z gniazda od klienta
capitalizedSentence = clientSentence.toUpperCase() + '\n';
Wysyła linię przez
outToClient.writeBytes(capitalizedSentence);
gniazdo do klienta
}
}
}
Koniec pętli "while",
powrót i oczekiwanie
na następne połączenie klienta
11
Mapa wykładu
2.1 Zasady budowy 2.6 Poczta elektroniczna
protokołów w. aplikacji
SMTP, POP3, IMAP
2.2 WWW i HTTP 2.7 FTP
2.3 DNS 2.8 Dystrybucja
zawartości
2.4 Programowanie przy
Schowki Internetowe
użyciu gniazd TCP
Sieci dystrybucji
2.5 Programowanie przy
zawartości
użyciu gniazd UDP
2.9 Dzielenie plików P2P
12
Programowanie gniazd UDP
UDP: brak połączenia pomiędzy
klientem i serwerem
brak inicjalizacji połączenia
nadawca nadaje każdemu
punkt widzenia programisty
pakietowi adres IP i port
UDP udostępnia zawodną
odbiorcy
komunikację ciągów bajtów
( datagramów ) pomiędzy
serwer musi pobrać adres IP,
klientem i serwerem
port nadawcy z otrzymanego
pakietu
UDP: wysyłane informacje mogą
być gubione lub otrzymywane w
innym porządku
13
Interakcja klient/serwer: UDP
Serwer (działa na hostid)
Klient
tworzy gniazdo, port=x,
tworzy gniazdo,
dla nadchodzących
clientSocket =
połączeń :
DatagramSocket()
serverSocket =
DatagramSocket()
Tworzy, adresuje (hostid, port=x),
wysyła datagram z komunikatem
przez clientSocket
czyta komunikat z
serverSocket
wysyła odpowiedz
serverSocket
czyta odpowiedz z
podając adres i port
clientSocket
klienta
zamyka
clientSocket
14
Przykład: Klient w Javie (UDP)
klawiatura monitor
strumien
wejsciowy
Proces
Wejście: odbiera
klienta
pakiet (przez TCP
odbierał strumień
Wyjście: wysyła
bajtów )
pakiet (przez TCP,
pakiet pakiet
wysyłał strumień
UDP UDP
bajtów )
gniazdo UDP
clientSocket
gniazdo
klienta
UDP
do sieci z sieci
15
inFromUser
sendPacket
receivePacket
Przykład: klient w Javie (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
Tworzy strumień
wejściowy
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Tworzy gniazdo
klienta
DatagramSocket clientSocket = new DatagramSocket();
Tłumaczy nazwę
InetAddress IPAddress = InetAddress.getByName("hostname");
na adres IP
używając DNS
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
16
Przykład: klient w Javie (UDP), c.d.
Tworzy datagram z
danymi do wysłania,
DatagramPacket sendPacket =
długością, adresem
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
IP, portem
clientSocket.send(sendPacket);
Wysyła datagram
do serwera
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Czyta datagram
clientSocket.receive(receivePacket);
z serwera
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
17
Przykład: serwer w Javie (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
{
Tworzy gniazdo
UDP na porcie 9876 DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
Tworzy miejsce na
DatagramPacket receivePacket =
otrzymany datagram
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Odbiera
datagram
18
Przykład: serwer w Javie (UDP), c.d.
String sentence = new String(receivePacket.getData());
Pobiera adres IP,
InetAddress IPAddress = receivePacket.getAddress();
numer portu,
nadawcy pakietu
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
Tworzy datagram
DatagramPacket sendPacket =
do wysłania do
new DatagramPacket(sendData, sendData.length, IPAddress,
klienta
port);
Wysyła datagram
przez gniazdo serverSocket.send(sendPacket);
}
}
} Koniec pętli "while",
powrót i oczekiwanie
na następny datagram
19
Budowa prostego serwera WWW
po napisaniu serwera,
obsługuje jedno żądanie
można żądać plików
HTTP
używając przeglądarki
przyjmuje żądanie
WWW
parsuje nagłówek
Będzie to jedno z
pobiera żądany plik z
zadań
systemu plików serwera
programistycznych
tworzy odpowiedz
HTTP:
linie nagłówków + plik
wysyła odpowiedz do
klienta
20
Programowanie gniazd: bibliografia
W języku C (gniazda BSD):
Programowanie zastosowań sieciowych
w systemie Unix (R. Stevens),
http://manic.cs.umass.edu/~amldemo/courseware/intro.
Ćwiczenia w Javie:
All About Sockets (tutorial Sun),
http://www.javaworld.com/javaworld/jw-12-1996/jw-12-
sockets.html
Socket Programming in Java: a tutorial,
http://www.javaworld.com/javaworld/jw-12-1996/jw-12-
sockets.html
21
Mapa wykładu
2.1 Zasady budowy 2.6 Poczta elektroniczna
protokołów w. aplikacji
SMTP, POP3, IMAP
2.2 WWW i HTTP 2.7 FTP
2.3 DNS 2.8 Dystrybucja
zawartości
2.4 Programowanie przy
Schowki Internetowe
użyciu gniazd TCP
Sieci dystrybucji
2.5 Programowanie przy
zawartości
użyciu gniazd UDP
2.9 Dzielenie plików P2P
22
kolejka
Poczta elektroniczna
wiadomości do wysłania
skrzynka pocztowa
Trzy główne składniki:
użytkownika
agent
agenci użytkownika
użytk.
serwery poczty
serwer
agent
poczty
simple mail transfer protocol:
użytk.
SMTP
SMTP
serwer
poczty
agent
Agent użytkownika (AU)
użytk.
SMTP
czyli przeglądarka poczty
kompozycja, edycja, czytanie
SMTP
agent
poczty elektronicznej
serwer
użytk.
poczty
n.p., Eudora, Outlook, elm,
Netscape Messenger
agent
wychodzące i przychodzące
użytk.
agent
wiadomości zachowywane są
użytk.
na serwerze
23
Poczta elektroniczna:
serwery poczty
agent
Serwery poczty
użytk.
serwer
skrzynka zawiera
agent
poczty
wiadomości przychodzące od
użytk.
użytkowników
SMTP
serwer
kolejka wiadomości zawiera
poczty
agent
wiadomości do wysłania
użytk.
SMTP
protokół SMTP wysyła
pocztę pomiędzy serwerami SMTP
agent
serwer
poczty
użytk.
poczty
tak naprawdę, jest to
protokół w modelu
agent
partnerskim
użytk.
agent
(ang. peer-to-peer)
użytk.
24
Poczta elektroniczna: SMTP [RFC 2821]
używa TCP do niezawodnej komunikacji poczty pomiędzy
serwerami, port 25
bezpośrednia komunikacja: serwer nadawcy do serwera
odbiorcy
trzy etapy komunikacji:
inicjalizacja (powitanie)
wymiana komunikatów
zakończenie
interakcja typu "polecenie/odpowiedz"
polecenia: tekst ASCII
odpowiedz: kod i fraza statusu
komunikaty muszą być kodowane
7-bitowym ASCII
25
Scenariusz: Alicja wysyła pocztę do Boba
1) Alicja używa AU do
4) Serwer SMTP Alicji wysyła
skomponowania listu i
komunikat przez połączenie
wysyła go do:
TCP
bob@szkola.edu.pl
5) Serwer SMTP Boba
2) AU alicji wysyła komunikat
umieszcza list w skrzynce
do jej serwera poczty;
Boba
komunikat jest
6) Bob używa AU do
umieszczany w kolejce
przeczytania wiadomości
3) Serwer SMTP otwiera
połączenie TCP z serwerem
poczty Boba
1
serwer
serwer
poczty
poczty AU
AU
2
6
3
4
5
26
Przykładowa interakcja SMTP
S: 220 hamburger.edu
C: HELO nalesnik.pl
S: 250 Hello nalesnik.pl, pleased to meet you
C: MAIL FROM:
S: 250 alice@nalesnik.pl... Sender ok
C: RCPT TO:
S: 250 bob@hamburger.edu ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Czy lubisz ketchup?
C: A moze ogoreczka?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection
27
Spróbuj sam porozmawiać w SMTP:
telnet nazwaserwera 25
obejrzyj odpowiedz 220 serwera
wpisz polecenia HELO, MAIL FROM, RCPT TO,
DATA, QUIT
W ten sposób można wysyłać pocztę
bez przeglądarki poczty
28
Podsumowanie o SMTP
Porównania z HTTP:
SMTP używa trwałych
połączeń
HTTP: pull (pobieranie)
SMTP wymaga, żeby
SMTP: push (wypychanie)
komunikat (nagłówek i dane)
były kodowane w 7-bitowym
Oba mają komunikaty
ASCII
żądań/odpowiedzi w ASCII,
kody wynikowe
Serwer SMTP używa
CRLF.CRLF do rozpoznania
HTTP: każdy obiekt zawarty w
końca danych
swoim własnym komunikacie
odpowiedzi
SMTP: wiele obiektów może być
wysłane w wieloczęściowym
komunikacie
29
Format komunikatu poczty
SMTP: protokół dla poczty
elektronicznej
nagłówki
pusta
RFC 822: standard opisujący
linia
format komunikatów
tekstowych:
linie nagłówków, n.p.,
dane
To:
From:
Subject:
różne od poleceń SMTP !
dane
list , tylko znaki ASCII
30
Format komunikatu poczty:
rozszerzenia dla multimediów
MIME: multimedia mail extension, RFC 2045, 2056
dodatkowe linie nagłówka określają typ MIME dla
zawartości listu
From: alice@nalesnik.pl
Wersja MIME
To: bob@hamburger.edu
Subject: Zdjecie pysznych nalesnikow
metoda
MIME-Version: 1.0
kodowaniadanych
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
typ oraz podtyp danych
multimedialnych,
dane kodowane przez base64 .....
deklaracje parametrów
.........................
......dane kodowane przez base64
kodowane dane
31
Typy MIME
Content-Type: typ/podtyp; parametery
Tekst Wideo
przykładowe podtypy: przykładowe podtypy:
plain, html mpeg, quicktime
Obraz
Dane aplikacji
przykładowe podtypy:
dane, które muszą zostać
jpeg, gif
przetworzone przez
aplikacje, zanim można je
pokazać
Dzwięk
przykładowe podtypy:
przykładowe podtypy:
msword, octet-stream
basic (kodowanie 8-bit
mu-law), 32kadpcm
(kodowanie 32 kbps)
32
Typ Multipart (załączniki poczty)
From: alice@nalesnik.pl
To: bob@hamburger.edu
Subject: Zdjecie pysznych nalesnikow
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=Zalacznik
--Zalacznik
Kochany Bobie, oto zdjecie nalesnika.
--Zalacznik
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
--Zalacznik
Czy chcesz przepis?
33
Protokoły dostępu do poczty
SMTP SMTP
protokół
AU
AU
dostępowy
Serwer poczty
Serwer poczty
odbiorcy
nadawcy
SMTP: dostarczanie poczty do serwera odbiorcy
Protokół dostępowy: odbieranie poczty z serwera i zarządzanie
skrzynką pocztową
POP: Post Office Protocol [RFC 1939]
" uwierzytelnienie (agent <--> serwer) o pobranie poczty
IMAP: Internet Mail Access Protocol [RFC 1730]
" więcej funkcji (bardziej złożony)
" synchronizacja lokalnej skrzynki oraz skrzynki na
serwerze
HTTP: Hotmail , Yahoo! Mail, itd.
34
Protokół POP3
S: +OK POP3 server ready
C: user bob
S: +OK
etap uwierzytelnienia
C: pass glodny
polecenia klienta:
S: +OK user successfully logged on
user: podaję login
C: list
pass: podaję hasło
S: 1 498
odpowiedzi serwera
S: 2 912
+OK
S: .
C: retr 1
-ERR
S:
etap transakcji, klient:
S: .
list: podaj numery listów
C: dele 1
retr: pobierz list o
C: retr 2
numerze
S:
S: .
dele: usuń
C: dele 2
quit: zakończ
C: quit
S: +OK POP3 server signing off
35
Protokół POP3 (cd) oraz IMAP
IMAP
Więcej o POP3
Wszystkie listy są w
Poprzedni przykład używał
jednym miejscu: na
tryby pobierz i usuń .
serwerze
Bob nie może przeczytać
Użytkownik może
listu ponownie, jeśli zmieni
organizować pocztę w
przeglądarkę
foldery
Pobierz i zostaw : kopie
IMAP zachowuje stan
listów w wielu
użytkownika pomiędzy
przeglądarkach
sesjami:
POP3 jest bezstanowy
nazwy folderów oraz
pomiędzy sesjami
przyporządkowanie listów do
folderów
36
Mapa wykładu
2.1 Zasady budowy 2.6 Poczta elektroniczna
protokołów w. aplikacji
SMTP, POP3, IMAP
2.2 WWW i HTTP 2.7 FTP
2.3 DNS 2.8 Dystrybucja
zawartości
2.4 Programowanie przy
Schowki Internetowe
użyciu gniazd TCP
Sieci dystrybucji
2.5 Programowanie przy
zawartości
użyciu gniazd UDP
2.9 Dzielenie plików P2P
37
FTP: file transfer protocol
transfer plików
Interfejs
Klient
Serwer
użytk.
FTP
FTP
FTP
użytkownik
zdalny system
lokalny system
pracujący na
plików
plików
hoście
transfer pliku z/na zdalny host
model klient/serwer
klient: strona, która rozpoczyna transmisję
serwer: zdalny host
ftp: RFC 959
serwer ftp: port 21
38
FTP: oddzielne połączenie kontrolne i
transferu plików
Kontrolne połączenie
TCP, port 21
Klient FTP kontaktuje się z
serwerem na porcie 21 (TCP)
Przez połączenie kontrolne, klient
Połączenie TCP dla
Klient
Serwer
uzyskuje autoryzację
danych, port 20
FTP
FTP
Klient przegląda zdalny system
plików przesyłając polecenia FTP
Dla przesłania drugiego pliku,
przez połączenie kontrolne.
serwer otwiera drugie
Gdy serwer otrzymuje polecenie
połączenie.
transferu pliku, otwiera
Połączenie kontrolne: poza
połączenie TCP do klienta
pasmem
Po przesłaniu pliku, serwer
Serwer FTP utrzymuje
zamyka nowe połączenie.
stan : aktualny katalog,
wcześniejszą autoryzację
39
Polecenia i odpowiedzi FTP
Przykładowe polecenia: Przykładowe odpowiedzi FTP
posyłane jako tekst ASCII kod i opis wyniku (jak w HTTP)
przez połączenie kontrolne
331 Username OK, password
USER login required
PASS password 125 data connection
already open; transfer
LIST zwraca listę plików w
starting
aktualnym katalogu
425 Can t open data
RETR nazwaPliku pobiera
connection
plik
452 Error writing file
STOR nazwaPliku
zapisuje plik na zdalnym
hoście
40
Mapa wykładu
2.1 Zasady budowy 2.6 Poczta elektroniczna
protokołów w. aplikacji
SMTP, POP3, IMAP
2.2 WWW i HTTP 2.7 FTP
2.3 DNS 2.8 Dystrybucja
zawartości
2.4 Programowanie przy
Schowki Internetowe
użyciu gniazd TCP
Sieci dystrybucji
2.5 Programowanie przy
zawartości
użyciu gniazd UDP
2.9 Dzielenie plików P2P
41
Schowki Internetowe (serwery pośredniczące)
(ang. Web caches, proxy servers)
Cel: Obsłużyć żądanie klient bez komunikacji z serwerem zródłowym
serwer
użytkownik konfiguruje
zródłowy
Serwer
użycie serwera
pośrednik
pośredniczącego w
i schowek
przeglądarce
klient
przeglądarka śle wszystkie
żądania HTTP do schowka
jeśli obiekt w schowku:
schowek zwraca obiekt
jeśli nie, schowek żąda
klient
obiektu z serwera serwer
zródłowy
zródłowego, następnie zwraca
obiekt do klienta
42
ż
ą
P
d
T
a
T
n
i
H
e
e
H
i
o
P
n
dp
T
T
a
T
d
T
o
P
ą
w
H
ż
i
edz
edz
i
H
w
o
T
T
dp
P
o
P
T
T
H
P
e
i
T
n
T
a
H
d
ą
ż
edz
i
w
o
dp
o
Więcej o schowkach Internetowych
Serwer-pośrednik jest
Po co używa się schowków?
zarówno klientem, jak i
Zmniejszają czas oczekiwania
serwerem
na obsługę żądania.
Serwer może sprawdzić
Zmniejszają ruch na łączach
zgodność obiektu przy
pomocy nagłówka HTTP dostępowych instytucji.
If-modified-since
Duża ilość schowków w
Czy schowki powinny
Internecie pozwala "ubogim"
ryzykować i zwracać
dostawcom zawartości na
obiekty bez sprawdzania?
wydajne działanie
Używa się heurystyk.
Typowo schowki są
instalowane prez DI
(uniwersytet, firmę,
osiedlowego DI)
43
Przykład działania schowka (1)
Założenia
serwery
średni rozmiar obiektu =
zródłowe
100,000 bitów
publiczny
średnia ilość żądań z sieci
Internet
instytucji do serwerów
zródłowych = 15/sec
opóznienie z sieci instytucji do
łącze dostępowe
dowolnego serwera zródłowego
1.5 Mb/s
i z powrotem = 2 sec
sieć
Konsekwencje
instytucji
LAN 10 Mb/s
wykorzystanie sieci LAN = 15%
wykorzystanie łącza dostępowego
= 100%
całkowite opóznienie = opóznienie
w Internecie + opóznienie na łączu
dostępowym + opóznienie LAN
= 2 s. + minuty + milisekundy
44
Przykład działania schowka (2)
serwery
Możliwe rozwiązanie
zródłowe
zwiększyć przepustowość
publiczny
łącza dostępowego, do, n.p., 10
Internet
Mb/s
Konsekwencje
wykorzystanie sieci LAN = 15%
łącze dostępowe
wykorzystanie łącza dostępowego
10 Mb/s
= 15%
sieć
Całkowite opóznienie = opóznienie
instytucji
LAN 10 Mb/s
w Internecie + opóznienie na łączu
dostępowym + opóznienie LAN
= 2 s + ms + ms
zwiększenie przepustowości jest
często bardzo drogie
45
Przykład działania schowka (3)
serwery
Instalacja schowka
zródłowe
załóżmy częstość trafień 40%
publiczny
Konsekwencje
Internet
40% żądań będzie obsłużona
prawie natychmiast
60% żądań nadal obsługiwanych
łącze dostępowe
przez serwery zródłowe
1.5 Mb/s
wykorzystanie łącza dostępowego
sieć
instytucji
spada do 60%, co zmniejsza
LAN 10 Mb/s
opóznienia do ok. 10 ms
Całkowite opóznienie =
opóznienie w Internecie +
schowek
opóznienie na łączu dostępowym +
instytucji
opóznienie LAN
= 0.6*2 s + 0.6*.01 s + ms < 1.3 s
46
Sieci dystrybucji zawartości
ang. Content Distribution Networks, (CDNs)
serwer zródłowy
w Ameryce Północnej
Dostawcy zawartości są
klientami sieci CDN.
Replikacja zawartości
Firma CDN instaluje setki
węzeł dystrybucyjny CDN
serwerów CDN w Internecie
w DI niższego poziomu,
blisko użytkowników
CDN replikuje zawartość
klientów w swoich serwerach.
Gdy dostawca aktualizuje
zawartość, CDN aktualizuje
serwer CDN
serwer CDN
w Ameryce
serwery
serwer CDN
w Azji
Południowej
w Europie
47
Dystrybucja zawartości informacyjnej
IBM Compatible
IBM Compatible
IBM Compatible IBM Compatible
Workstation Workstation Workstation Workstation
48
żądanie HTTP o
Przykład CDN
www.foo.com/sports/sports.html
1
Serwer zródłowy
Pytanie DNS o www.cdn.com
2
Autorytatywny serwer
DNS sieci CDN
3
żądanie HTTP o
www.cdn.com/www.foo.com/sports/ruth.gif
Bliski serwerCDN
serwer zródłowy
Firma CDN
www.foo.com
cdn.com
dostarcza HTML
dostarcza pliki gif
Zamienia:
używa autorytatywnego
http://www.foo.com/sports.ruth.gif
serwera DNS do
na
kierowania żądań
http://www.cdn.com/www.foo.com/sports/ruth.gif
49
Więcej o sieciach CDN
kierowanie żądań: ruting w
nie tylko strony WWW
warstwie aplikacji!
komunikacja
CDN tworzy mapę ,
strumieniowa
wskazującą odległości od
nagranego audio/wideo
sieci DI do węzłów CDN
komunikacja
gdy żądanie trafia do
strumieniowa
autorytatywnego serwera
audio/wideo w czasie
DNS:
rzeczywistym
serwer sprawdza, z jakiego
Węzły CDN tworzą sieć
DI pochodzi żądanie
do dystrybucji
multicast (rozsiewczej)
używa "mapy" do znalezienia
w warstwie aplikacji
najlepszego serwera CDN
50
Mapa wykładu
2.1 Zasady budowy 2.6 Poczta elektroniczna
protokołów w. aplikacji
SMTP, POP3, IMAP
2.2 WWW i HTTP 2.7 FTP
2.3 DNS 2.8 Dystrybucja
zawartości
2.4 Programowanie przy
Schowki Internetowe
użyciu gniazd TCP
Sieci dystrybucji
2.5 Programowanie przy
zawartości
użyciu gniazd UDP
2.9 Dzielenie plików P2P
51
Dzielenie plików P2P (model partnerski)
Przykład
Alicja używa aplikacji P2P
Alicja wybiera jednego z
na swoim komputerze
partnerów, Boba.
przenośnym
Plik jest kopiowany z
Alicja łączy się z
komputera Boba na
Internetem z przerwami;
komputer Alicji: HTTP
za każdym razem ma nowy
adres IP Dopóki Alicja jest w sieci,
inni partnerzy mogą
Szuka piosenki Charlie,
Charlie kopiować pliki od niej.
Aplikacja wyświetla
partnerów, które mają
piosenkę.
52
P2P: centralny katalog
Bob
projekt typu Napster
scentralizowany
katalog
1) gdy partner łączy się z
1
partnerzy
siecią, informuje
1
centralny serwerer o:
adresie IP
3
1
zawartości
2
1
2) Alicja pyta o Charlie,
Charlie
3) Alicja żąda pliku od
Boba
Alicja
53
P2P: problemy z centralnym katalogiem
Pojedynczy punkt
transfer plików jest
awarii
rozproszony, lecz
wyszukiwanie zawartości
Wąskie gardło
jest wysoce scentralizowane
Pod kontrolą jednej
organizacji
54
P2P: rozproszony katalog
Każdy partner jest
koordynatorem grupy
lub jest przypisany do
koordynatora.
Koordynatorzy znają
zawartość wszystkich
swoich dzieci.
Partner pyta
zwykly partner
koordynatora swojej
koordynator grupy
grupy; koordynatorzy
relacja sasiedztwa
mogą pytać innych
w sieci nakladkowej
koordynatorów.
55
Więcej o rozproszonym katalogu
sieć nakładkowa zalety podejścia
węzły to partnerzy brak centralnego
katalogu
łącza pomiędzy partnerami
wyszukiwanie jest
i ich koordynatorami
rozproszony wśród
łącza pomiędzy
partnerów
niektórymi koordynatorami
Większa odporność
węzeł startowy
wady podejścia
łączący się partner jest
potrzebny węzeł
przypisywany do grupy lub
startowy
zostaje koordynatorem
koordynatorzy mogą
zostać przeciążeni
56
P2P: zalew pytaniami
Partner wysyła pytanie do
Gnutella
sąsiadów
sieć nakładkowa nie ma
Sąsiedzi przekazują
hierarchii ani struktury
pytanie dalej
partnerzy poznają
Jeśli pytany partner ma
innych przez węzeł
obiekt, wysyła komunikat
startowy
do pytającego partnera
partnerzy wysyłają
komunikat "dołącz"
join
57
P2P: więcej o zalewie pytaniami
Zalety Wady
partnerzy mają te zbyt wiele ruchu w
same obowiązki: nie ma sieci z powodu pytań
koordynatorów
zasięg pytania: może
wysoce rozproszone nie znalezć istniejącej
zawartości
żaden partner nie
utrzymuje katalogu węzeł startowy
utrzymywanie sieci
nakładkowej
58
Podsumowanie wykładów
o warstwie aplikacji
Skończyliśmy wykład o aplikacjach sieciowych!
wymagania aplikacji
konkretne protokoły:
dotyczące usług:
HTTP
niezawodność,
FTP
przepustowość, opóznienie
SMTP, POP, IMAP
model klient/serwer
DNS
Usługi transportowe
programowanie gniazd
Internetu
dystrybucja zawartości
połączeniowe, niezawodne:
schowki, sieci CDN
TCP
sieci partnerskie (P2P)
zawodne, datagramowe:
UDP
59
Podsumowanie wykładów
o warstwie aplikacji
Najważniejsze: uczyliśmy się o protokołach
typowa wymiana
komunikacja kontrolna i z danymi
komunikatów
w paśmie, poza pasmem
żądanie/odpowiedz:
centralne albo rozproszone
klient żąda informacji
stanowe lub bezstanowe
lub usługi
komunikacja zawodna albo
serwer odpowiada
niezawodna
informacją, kodem
złożoność na brzegu sieci
wynikowym
bezpieczeństwo:
formaty komunikatów:
uwierzytelnienie
nagłówki: zawierają
informacje o danych
dane: komunikowana
informacja
60
Wyszukiwarka
Podobne podstrony:
ch2 pl p1
ch3 pl p2
SKO2 ch2 v2 0 p2
ch7 pl p2
ch4 pl p2
PL kreator pdfp28
TI 99 08 19 B M pl(1)
bootdisk howto pl 8
BORODO STRESZCZENIE antastic pl
notatek pl sily wewnetrzne i odksztalcenia w stanie granicznym
WSM 10 52 pl(1)
amd102 io pl09
PPP HOWTO pl 6 (2)
bridge firewall pl 3
NIS HOWTO pl 1 (2)
31994L0033 PL (2)
więcej podobnych podstron