Mapa wykładu. 2.6 Poczta elektroniczna. 2.7 FTP 2.8 Dystrybucja zawartości. 2.9 Dzielenie plików P2P SMTP, POP3, IMAP



Podobne dokumenty
Mapa wykładu. Poczta elektroniczna

1. Model klient-serwer

Programowanie współbieżne i rozproszone

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

PROTOKOŁY OBSŁUGI POCZTY ELEKTRONICZNEJ

Sieci komputerowe i bazy danych

Protokoły sieciowe - TCP/IP

Java Enterprise Edition spotkanie nr 1 (c.d.) JavaMail

Przykłady interfejsu TCP i UDP w Javie

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Wybrane działy Informatyki Stosowanej

Java wybrane technologie

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Adresy URL. Zaawansowane technologie Javy 2019

Lab5 - Badanie protokołów pocztowych

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

3-1. network data link physical. application transport. network data link physical 3-3. network data link physical. application transport

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Bazy Danych i Usługi Sieciowe

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

Model sieci OSI, protokoły sieciowe, adresy IP

Architektura aplikacji sieciowych. Architektura klient-serwer

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Klient-Serwer Komunikacja przy pomocy gniazd

Laboratorium 3.4.3: Usługi i protokoły

B.B. Połączenie kończy polecenie exit.

Programowanie rozproszone w języku Java

JAVA I SIECI. MATERIAŁY:

1. FTP 2. SMTP 3. POP3

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Przesyłania danych przez protokół TCP/IP

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Komunikacja z użyciem gniazd aplikacje klient-serwer

Dr Michał Tanaś(

Networking. Zaawansowane technologie Javy 2019

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Sieci komputerowe Warstwa transportowa

Java programowanie sieciowe

Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Telekomunikacji

Dr Michał Tanaś(

Sieci komputerowe. Wstęp

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 14 Protokoły sieciowe

Protokoły internetowe

Poczta elektroniczna. Podstawowe protokoły:

Sieci komputerowe Warstwa aplikacji

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

Bezpieczeństwo poczty elektronicznej

Programowanie Sieciowe 1

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

1. W protokole http w ogólnym przypadku elementy odpowiedzi mają: a) Postać tekstu b) Postać HTML c) Zarówno a i b 2. W usłudze DNS odpowiedź

Zakładanie konta

Instrukcja konfiguracji funkcji skanowania

Technologie cyfrowe semestr letni 2018/2019

Teoria sieci komputerowych

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Podstawowe pojł cia. Czego sił nauczymy? Pojł cia hosta. Hosty Adresowanie Internetowe Porty Protokoóy

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Marek Parfieniuk, Tomasz Łukaszuk, Tomasz Grześ. Symulator zawodnej sieci IP do badania aplikacji multimedialnych i peer-to-peer

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

ZiMSK. Konsola, TELNET, SSH 1

ZiMSK. Charakterystyka urządzeń sieciowych: Switch, Router, Firewall (v.2012) 1

Sieci komputerowe - Protokoły warstwy transportowej

Sieci Komputerowe Modele warstwowe sieci

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Wybrane działy Informatyki Stosowanej

Remote Quotation Protocol - opis

Sieci Komputerowe 2 / Ćwiczenia 2

Programowanie sieciowe

Warstwa transportu. Mapa wykładu

Programowanie sieciowe

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Stos TCP/IP. Warstwa aplikacji cz.2

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

World Wide Web? rkijanka

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Java programowanie w sieci. java.net RMI

Instrukcja konfigurowania poczty Exchange dla klienta pocztowego użytkowanego poza siecią uczelnianą SGH.

Architektura typu klient serwer: uproszczony klient POP3

Protokół sieciowy Protokół

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Plan całości wykładu. Warstwa łącza i sieci lokalne

Moduł 11.Warstwa transportowa i aplikacji Zadaniem warstwy transportowej TCP/IP jest, jak sugeruje jej nazwa, transport danych pomiędzy aplikacjami

Podstawy Informatyki. Wykład 4 Komendy UNIXa, cd

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Plan wykładu. 1. Poczta elektroniczna protokół SMTP, protokół POP, protokół IMAP. 2. Zdalna praca - Telnet. 3. Transfer plików usługa FTP.

Sieci komputerowe - warstwa transportowa

Sieci Komputerowe. Program przedmiotu: Literatura: Strona 1

Analiza ruchu w sieci przy pomocy programu Wireshark

systemów intra- i internetowych Platformy softwarowe dla rozwoju Architektura Internetu (2) Plan prezentacji: Architektura Internetu (1)

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Platformy Programistyczne Zagadnienia sieciowe i wątki

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

Transkrypt:

Mapa wykładu 2.1 Zasady budowy protokołów w. aplikacji 2.2 WWW i HTTP 2.3 DNS 2.4 Programowanie przy użyciu gniazd TCP 2.5 Programowanie przy użyciu gniazd UDP 2.6 Poczta elektroniczna SMTP, POP3, IMAP 2.7 FTP 2.8 Dystrybucja zawartości Schowki Internetowe Sieci dystrybucji zawartości 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 wprowadzone w UNIX BSD4.1, 1981 tworzone, używane, i zwalniane przez aplikacje model klient/serwer dwa rodzaje transportu przez API gniazd: zawodne datagramy niezawodne strumienie bajtów gniazdo lokalny na hoście, tworzony przez aplikację, kontrolowany przez SO interfejs, przez który proces aplikacji może zarówno wysyłać jak i odbierać komunikaty od/do innego procesu aplikacji 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 przez twórcę aplikacji kontrolowane przez system operacyjny proces gniazdo TCP z buforami, zmiennymi internet proces gniazdo TCP z buforami, zmiennymi kontrolowane przez twórcę aplikacji kontrolowane przez system operacyjny host lub serwer host lub serwer 3

Programowanie gniazd TCP Klient musi połączyć się z serwerem proces serwera musi przedtem zostać uruchomiony serwer musi utworzyć gniazdocentralę, które przyjmie rozmowę z klientem Klient łączy się z serwerem poprzez: utworzenie lokalnego gniazda określenie adresu IP, numeru portu procesu serwera Następnie łączymy gniazda: TCP klienta tworzy połączenie do TCP serwera Po otrzymaniu połączenia, TCP serwera tworzy nowe gniazdo do komunikacji pomiędzy procesem klienta i serwera pozwala serwerowi rozmawiać z wieloma klientami numery portów źródła są używane do odróżnienia klientów punkt widzenia programisty TCP umożliwia niezawodną, uporządkowaną komunikację ( 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 źró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 Przykład aplikacji klient/serwer: 1) klient czyta linię ze standardowego wejścia (strumień odużytkownika), wysyła do serwera przez gniazdo (strumień doserwera) 2) serwer czyta linię z gniazda 3) serwer zmienia linię na wielke litery, odsyła do klienta 4) klient czyta, drukuje zmienioną linię z gniazda (strumień odserwera) Proces Process klienta strumien wejsciowy strumien wyjsciowy klawiatura oduzytkownika doserwera monitor odserwera gniazdo klienta TCP klienta strumien wejsciowy gniazdo TCP do sieci z sieci 6

Interakcja klient/serwer: TCP Serwer (adres hostid) tworzy gniazdo, port=x, dla przychodzących połączeń: welcomesocket = ServerSocket() czeka na przychodzące połączenia connectionsocket = welcomesocket.accept() inicjalizacja połączenia TCP Klient tworzy gniazdo, łączy się z hostid, port=x clientsocket = Socket() czyta komunikat z connectionsocket pisze odpowiedź do connectionsocket zamyka connectionsocket wysyła komunikat przez clientsocket czyta odpowiedź z clientsocket zamyka clientsocket 7

Przykład: Klient w Javie (TCP) import java.io.*; import java.net.*; class TCPClient { Tworzy strumień wejściowy Tworzy gniazdo klienta, łączy się z serwerem Tworzy strumień wyjściowy podłączony do gniazda public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream()); 8

Przykład: Klient w Javie (TCP), c.d. Tworzy strumień wejściowy podłączony do gniazda Wysyła linię do serwera Czyta linię z serwera BufferedReader infromserver = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline(); System.out.println("FROM SERVER: " + modifiedsentence); clientsocket.close(); } } 9

Przykład: serwer (iteracyjny) w Javie (TCP) import java.io.*; import java.net.*; class TCPServer { Tworzy gniazdo odbierające na porcie 6789 Oczekuje na gnieździe na połączenie od klienta (blokujące) Tworzy strumień wejściowy, podłączony do gniazda public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; ServerSocket welcomesocket = new ServerSocket(6789); while(true) { Socket connectionsocket = welcomesocket.accept(); BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 10

Przykład: serwer w Javie(TCP), c.d. Tworzy strumień wyjściowy, podłączony do gniazda Czyta linię z gniazda od klienta DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; Wysyła linię przez gniazdo do klienta } } } outtoclient.writebytes(capitalizedsentence); Koniec pętli "while", powrót i oczekiwanie na następne połączenie klienta 11

Mapa wykładu 2.1 Zasady budowy protokołów w. aplikacji 2.2 WWW i HTTP 2.3 DNS 2.4 Programowanie przy użyciu gniazd TCP 2.5 Programowanie przy użyciu gniazd UDP 2.6 Poczta elektroniczna SMTP, POP3, IMAP 2.7 FTP 2.8 Dystrybucja zawartości Schowki Internetowe Sieci dystrybucji zawartości 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 pakietowi adres IP i port odbiorcy serwer musi pobrać adres IP, port nadawcy z otrzymanego pakietu punkt widzenia programisty UDP udostępnia zawodną komunikację ciągów bajtów ( datagramów ) pomiędzy klientem i serwerem 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, dla nadchodzących połączeń : serversocket = DatagramSocket() czyta komunikat z serversocket tworzy gniazdo, clientsocket = DatagramSocket() Tworzy, adresuje (hostid, port=x), wysyła datagram z komunikatem przez clientsocket wysyła odpowiedź serversocket podając adres i port klienta czyta odpowiedź z clientsocket zamyka clientsocket 14

Przykład: Klient w Javie (UDP) klawiatura monitor Proces klienta Wyjście: wysyła pakiet (przez TCP, wysyłał strumień bajtów ) strumien wejsciowy pakiet UDP infromuser sendpacket receivepacket pakiet UDP Wejście: odbiera pakiet (przez TCP odbierał strumień bajtów ) gniazdo clientsocket UDP klienta gniazdo UDP do sieci z sieci 15

Przykład: klient w Javie (UDP) import java.io.*; import java.net.*; Tworzy strumień wejściowy Tworzy gniazdo klienta Tłumaczy nazwę na adres IP używając DNS class UDPClient { public static void main(string args[]) throws Exception { BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientsocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); 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, długością, adresem IP, portem Wysyła datagram do serwera Czyta datagram z serwera DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876); clientsocket.send(sendpacket); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); clientsocket.receive(receivepacket); 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.*; Tworzy gniazdo UDP na porcie 9876 class UDPServer { public static void main(string args[]) throws Exception { DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; byte[] senddata = new byte[1024]; Tworzy miejsce na otrzymany datagram Odbiera datagram while(true) { DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket); 18

Przykład: serwer w Javie (UDP), c.d. Pobiera adres IP, numer portu, nadawcy pakietu String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivepacket.getaddress(); int port = receivepacket.getport(); String capitalizedsentence = sentence.touppercase(); Tworzy datagram do wysłania do klienta Wysyła datagram przez gniazdo } } senddata = capitalizedsentence.getbytes(); DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); serversocket.send(sendpacket); } Koniec pętli "while", powrót i oczekiwanie na następny datagram 19

Budowa prostego serwera WWW obsługuje jedno żądanie HTTP przyjmuje żądanie parsuje nagłówek pobiera żądany plik z systemu plików serwera tworzy odpowiedź HTTP: linie nagłówków + plik wysyła odpowiedź do klienta po napisaniu serwera, można żądać plików używając przeglądarki WWW Będzie to jedno z zadań programistycznych 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 protokołów w. aplikacji 2.2 WWW i HTTP 2.3 DNS 2.4 Programowanie przy użyciu gniazd TCP 2.5 Programowanie przy użyciu gniazd UDP 2.6 Poczta elektroniczna SMTP, POP3, IMAP 2.7 FTP 2.8 Dystrybucja zawartości Schowki Internetowe Sieci dystrybucji zawartości 2.9 Dzielenie plików P2P 22

Poczta elektroniczna Trzy główne składniki: agenci użytkownika serwery poczty simple mail transfer protocol: SMTP Agent użytkownika (AU) czyli przeglądarka poczty kompozycja, edycja, czytanie poczty elektronicznej n.p., Eudora, Outlook, elm, Netscape Messenger wychodzące i przychodzące wiadomości zachowywane są na serwerze serwer poczty SMTP serwer poczty agent użytk. agent użytk. SMTP SMTP agent użytk. kolejka wiadomości do wysłania skrzynka pocztowa użytkownika serwer poczty agent użytk. agent użytk. agent użytk. 23

Poczta elektroniczna: serwery poczty Serwery poczty skrzynka zawiera wiadomości przychodzące od użytkowników kolejka wiadomości zawiera wiadomości do wysłania protokół SMTP wysyła pocztę pomiędzy serwerami poczty tak naprawdę, jest to protokół w modelu partnerskim (ang. peer-to-peer) serwer poczty SMTP serwer poczty agent użytk. agent użytk. SMTP SMTP agent użytk. serwer poczty agent użytk. agent użytk. agent 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/odpowiedź" polecenia: tekst ASCII odpowiedź: 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 skomponowania listu i wysyła go do: bob@szkola.edu.pl 2) AU alicji wysyła komunikat do jej serwera poczty; komunikat jest umieszczany w kolejce 3) Serwer SMTP otwiera połączenie TCP z serwerem poczty Boba 4) Serwer SMTP Alicji wysyła komunikat przez połączenie TCP 5) Serwer SMTP Boba umieszcza list w skrzynce Boba 6) Bob używa AU do przeczytania wiadomości 1 AU serwer poczty 2 3 4 serwer poczty 5 6 AU 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: <alice@nalesnik.pl> S: 250 alice@nalesnik.pl... Sender ok C: RCPT TO: <bob@hamburger.edu> 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 odpowiedź 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 SMTP używa trwałych połączeń SMTP wymaga, żeby komunikat (nagłówek i dane) były kodowane w 7-bitowym ASCII Serwer SMTP używa CRLF.CRLF do rozpoznania końca danych Porównania z HTTP: HTTP: pull (pobieranie) SMTP: push (wypychanie) Oba mają komunikaty żądań/odpowiedzi w ASCII, kody wynikowe HTTP: każdy obiekt zawarty w 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 RFC 822: standard opisujący format komunikatów tekstowych: linie nagłówków, n.p., To: From: Subject: różne od poleceń SMTP! dane list, tylko znaki ASCII nagłówki dane pusta linia 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 Wersja MIME metoda kodowaniadanych typ oraz podtyp danych multimedialnych, deklaracje parametrów kodowane dane From: alice@nalesnik.pl To: bob@hamburger.edu Subject: Zdjecie pysznych nalesnikow MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg dane kodowane przez base64.........dane kodowane przez base64 31

Typy MIME Content-Type: typ/podtyp; parametery Tekst przykładowe podtypy: plain, html Obraz przykładowe podtypy: jpeg, gif Dźwięk przykładowe podtypy: basic (kodowanie 8-bit mu-law), 32kadpcm (kodowanie 32 kbps) Wideo przykładowe podtypy: mpeg, quicktime Dane aplikacji dane, które muszą zostać przetworzone przez aplikacje, zanim można je pokazać przykładowe podtypy: msword, octet-stream 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 AU SMTP SMTP protokół dostępowy AU Serwer poczty nadawcy Serwer poczty odbiorcy 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 etap uwierzytelnienia polecenia klienta: user: podaję login pass: podaję hasło odpowiedzi serwera +OK -ERR etap transakcji, klient: list: podaj numery listów retr: pobierz list o numerze dele: usuń quit: zakończ S: +OK POP3 server ready C: user bob S: +OK C: pass glodny S: +OK user successfully logged on C: list S: 1 498 S: 2 912 S:. C: retr 1 S: <message 1 contents> S:. C: dele 1 C: retr 2 S: <message 1 contents> S:. C: dele 2 C: quit S: +OK POP3 server signing off 35

Protokół POP3 (cd) oraz IMAP Więcej o POP3 Poprzedni przykład używał tryby pobierz i usuń. Bob nie może przeczytać listu ponownie, jeśli zmieni przeglądarkę Pobierz i zostaw : kopie listów w wielu przeglądarkach POP3 jest bezstanowy pomiędzy sesjami IMAP Wszystkie listy są w jednym miejscu: na serwerze Użytkownik może organizować pocztę w foldery IMAP zachowuje stan użytkownika pomiędzy sesjami: nazwy folderów oraz przyporządkowanie listów do folderów 36

Mapa wykładu 2.1 Zasady budowy protokołów w. aplikacji 2.2 WWW i HTTP 2.3 DNS 2.4 Programowanie przy użyciu gniazd TCP 2.5 Programowanie przy użyciu gniazd UDP 2.6 Poczta elektroniczna SMTP, POP3, IMAP 2.7 FTP 2.8 Dystrybucja zawartości Schowki Internetowe Sieci dystrybucji zawartości 2.9 Dzielenie plików P2P 37

FTP: file transfer protocol użytkownik pracujący na hoście Interfejs użytk. FTP Klient FTP lokalny system plików transfer plików Serwer FTP zdalny system plików 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 Klient FTP kontaktuje się z serwerem na porcie 21 (TCP) Przez połączenie kontrolne, klient uzyskuje autoryzację Klient przegląda zdalny system plików przesyłając polecenia FTP przez połączenie kontrolne. Gdy serwer otrzymuje polecenie transferu pliku, otwiera połączenie TCP do klienta Po przesłaniu pliku, serwer zamyka nowe połączenie. Klient FTP Kontrolne połączenie TCP, port 21 Połączenie TCP dla danych, port 20 Serwer FTP Dla przesłania drugiego pliku, serwer otwiera drugie połączenie. Połączenie kontrolne: poza pasmem Serwer FTP utrzymuje stan : aktualny katalog, wcześniejszą autoryzację 39

Polecenia i odpowiedzi FTP Przykładowe polecenia: posyłane jako tekst ASCII przez połączenie kontrolne USER login PASS password LIST zwraca listę plików w aktualnym katalogu RETR nazwapliku pobiera plik STOR nazwapliku zapisuje plik na zdalnym hoście Przykładowe odpowiedzi FTP kod i opis wyniku (jak w HTTP) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file 40

Mapa wykładu 2.1 Zasady budowy protokołów w. aplikacji 2.2 WWW i HTTP 2.3 DNS 2.4 Programowanie przy użyciu gniazd TCP 2.5 Programowanie przy użyciu gniazd UDP 2.6 Poczta elektroniczna SMTP, POP3, IMAP 2.7 FTP 2.8 Dystrybucja zawartości Schowki Internetowe Sieci dystrybucji zawartości 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 źródłowym użytkownik konfiguruje użycie serwera pośredniczącego w przeglądarce przeglądarka śle wszystkie żądania HTTP do schowka jeśli obiekt w schowku: schowek zwraca obiekt klient jeśli nie, schowek żąda obiektu z serwera źródłowego, następnie zwraca obiekt do klienta klient żądanie HTTP odpowiedź HTTP żądanie HTTP odpowiedź HTTP Serwer pośrednik i schowek żądanie HTTP odpowiedź HTTP serwer źródłowy serwer źródłowy 42

Więcej o schowkach Internetowych Serwer-pośrednik jest zarówno klientem, jak i serwerem Serwer może sprawdzić zgodność obiektu przy pomocy nagłówka HTTP If-modified-since Czy schowki powinny ryzykować i zwracać obiekty bez sprawdzania? Używa się heurystyk. Typowo schowki są instalowane prez DI (uniwersytet, firmę, osiedlowego DI) Po co używa się schowków? Zmniejszają czas oczekiwania na obsługę żądania. Zmniejszają ruch na łączach dostępowych instytucji. Duża ilość schowków w Internecie pozwala "ubogim" dostawcom zawartości na wydajne działanie 43

Przykład działania schowka (1) Założenia średni rozmiar obiektu = 100,000 bitów średnia ilość żądań z sieci instytucji do serwerów źródłowych = 15/sec opóźnienie z sieci instytucji do dowolnego serwera źródłowego i z powrotem = 2 sec Konsekwencje wykorzystanie sieci LAN = 15% wykorzystanie łącza dostępowego = 100% całkowite opóźnienie = opóźnienie w Internecie + opóźnienie na łączu dostępowym + opóźnienie LAN = 2 s. + minuty + milisekundy sieć instytucji publiczny Internet łącze dostępowe 1.5 Mb/s LAN 10 Mb/s serwery źródłowe 44

Przykład działania schowka (2) Możliwe rozwiązanie zwiększyć przepustowość łącza dostępowego, do, n.p., 10 Mb/s Konsekwencje wykorzystanie sieci LAN = 15% wykorzystanie łącza dostępowego = 15% Całkowite opóźnienie = opóźnienie w Internecie + opóźnienie na łączu dostępowym + opóźnienie LAN = 2 s + ms + ms zwiększenie przepustowości jest często bardzo drogie sieć instytucji publiczny Internet łącze dostępowe 10 Mb/s LAN 10 Mb/s serwery źródłowe 45

Przykład działania schowka (3) Instalacja schowka załóżmy częstość trafień 40% Konsekwencje 40% żądań będzie obsłużona prawie natychmiast 60% żądań nadal obsługiwanych przez serwery źródłowe wykorzystanie łącza dostępowego spada do 60%, co zmniejsza opóźnienia do ok. 10 ms Całkowite opóźnienie = opóźnienie w Internecie + opóźnienie na łączu dostępowym + opóźnienie LAN = 0.6*2 s + 0.6*.01 s + ms < 1.3 s sieć instytucji publiczny Internet łącze dostępowe 1.5 Mb/s LAN 10 Mb/s serwery źródłowe schowek instytucji 46

Sieci dystrybucji zawartości ang. Content Distribution Networks, (CDNs) Dostawcy zawartości są klientami sieci CDN. Replikacja zawartości Firma CDN instaluje setki 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 serwery serwer CDN w Ameryce Południowej serwer źródłowy w Ameryce Północnej węzeł dystrybucyjny CDN serwer CDN w Europie serwer CDN w Azji 47

Dystrybucja zawartości informacyjnej IBM Compatible IBM Compatible IBM Compatible IBM Compatible Workstation Workstation Workstation Workstation 48

Przykład CDN 1 żądanie HTTP o Serwer źródłowy www.foo.com/sports/sports.html 2 3 Autorytatywny serwer DNS sieci CDN Pytanie DNS o www.cdn.com serwer źródłowy www.foo.com dostarcza HTML Zamienia: http://www.foo.com/sports.ruth.gif na http://www.cdn.com/www.foo.com/sports/ruth.gif żądanie HTTP o Bliski serwercdn www.cdn.com/www.foo.com/sports/ruth.gif Firma CDN cdn.com dostarcza pliki gif używa autorytatywnego serwera DNS do kierowania żądań 49

Więcej o sieciach CDN kierowanie żądań: ruting w warstwie aplikacji! CDN tworzy mapę, wskazującą odległości od sieci DI do węzłów CDN gdy żądanie trafia do autorytatywnego serwera DNS: serwer sprawdza, z jakiego DI pochodzi żądanie używa "mapy" do znalezienia najlepszego serwera CDN nie tylko strony WWW komunikacja strumieniowa nagranego audio/wideo komunikacja strumieniowa audio/wideo w czasie rzeczywistym Węzły CDN tworzą sieć do dystrybucji multicast (rozsiewczej) w warstwie aplikacji 50

Mapa wykładu 2.1 Zasady budowy protokołów w. aplikacji 2.2 WWW i HTTP 2.3 DNS 2.4 Programowanie przy użyciu gniazd TCP 2.5 Programowanie przy użyciu gniazd UDP 2.6 Poczta elektroniczna SMTP, POP3, IMAP 2.7 FTP 2.8 Dystrybucja zawartości Schowki Internetowe Sieci dystrybucji zawartości 2.9 Dzielenie plików P2P 51

Dzielenie plików P2P (model partnerski) Przykład Alicja używa aplikacji P2P na swoim komputerze przenośnym Alicja łączy się z Internetem z przerwami; za każdym razem ma nowy adres IP Szuka piosenki Charlie, Charlie Aplikacja wyświetla partnerów, które mają piosenkę. Alicja wybiera jednego z partnerów, Boba. Plik jest kopiowany z komputera Boba na komputer Alicji: HTTP Dopóki Alicja jest w sieci, inni partnerzy mogą kopiować pliki od niej. 52

P2P: centralny katalog projekt typu Napster 1) gdy partner łączy się z siecią, informuje centralny serwerer o: scentralizowany katalog 1 1 Bob partnerzy adresie IP zawartości 1 3 2) Alicja pyta o Charlie, Charlie 2 1 3) Alicja żąda pliku od Boba Alicja 53

P2P: problemy z centralnym katalogiem Pojedynczy punkt awarii Wąskie gardło Pod kontrolą jednej organizacji transfer plików jest rozproszony, lecz wyszukiwanie zawartości jest wysoce scentralizowane 54

P2P: rozproszony katalog Każdy partner jest koordynatorem grupy lub jest przypisany do koordynatora. Koordynatorzy znają zawartość wszystkich swoich dzieci. Partner pyta koordynatora swojej grupy; koordynatorzy mogą pytać innych koordynatorów. zwykly partner koordynator grupy relacja sasiedztwa w sieci nakladkowej 55

Więcej o rozproszonym katalogu sieć nakładkowa węzły to partnerzy łącza pomiędzy partnerami i ich koordynatorami łącza pomiędzy niektórymi koordynatorami węzeł startowy łączący się partner jest przypisywany do grupy lub zostaje koordynatorem zalety podejścia brak centralnego katalogu wyszukiwanie jest rozproszony wśród partnerów Większa odporność wady podejścia potrzebny węzeł startowy koordynatorzy mogą zostać przeciążeni 56

P2P: zalew pytaniami Gnutella sieć nakładkowa nie ma hierarchii ani struktury partnerzy poznają innych przez węzeł startowy partnerzy wysyłają komunikat "dołącz" Partner wysyła pytanie do sąsiadów Sąsiedzi przekazują pytanie dalej Jeśli pytany partner ma obiekt, wysyła komunikat do pytającego partnera join 57

P2P: więcej o zalewie pytaniami Zalety partnerzy mają te same obowiązki: nie ma koordynatorów wysoce rozproszone żaden partner nie utrzymuje katalogu Wady zbyt wiele ruchu w sieci z powodu pytań zasięg pytania: może nie znaleźć istniejącej zawartości 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 dotyczące usług: niezawodność, przepustowość, opóźnienie model klient/serwer Usługi transportowe Internetu połączeniowe, niezawodne: TCP zawodne, datagramowe: UDP konkretne protokoły: HTTP FTP SMTP, POP, IMAP DNS programowanie gniazd dystrybucja zawartości schowki, sieci CDN sieci partnerskie (P2P) 59

Podsumowanie wykładów o warstwie aplikacji Najważniejsze: uczyliśmy się o protokołach typowa wymiana komunikatów żądanie/odpowiedź: klient żąda informacji lub usługi serwer odpowiada informacją, kodem wynikowym formaty komunikatów: nagłówki: zawierają informacje o danych dane: komunikowana informacja komunikacja kontrolna i z danymi w paśmie, poza pasmem centralne albo rozproszone stanowe lub bezstanowe komunikacja zawodna albo niezawodna złożoność na brzegu sieci bezpieczeństwo: uwierzytelnienie 60