Socket-programmering. Programmering för distribution. Klient/server ansatsen. Klient/server ansatsen TCP/IP protokollgrafen Java-programering



Relevanta dokument
Java-programmering. GUI-exempel. WindowTest.java. Händelsestyrt. WindowTestGUI.java (forts) WindowTestGUI.java. GUI UDP TCP Trådar Laboration 2 Tips

Datakommunikation och Internet

Grundläggande nätverksteknik. F2: Kapitel 2 och 3

Grundläggande datavetenskap, 4p

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Datasäkerhet och integritet

F1 Nätverk och meddelandesändning

IT för personligt arbete F2

Transport Layer. Transport Layer. F9 Meddelandesändning med UDP EDA095 Nätverksprogrammering. Java och UDP TCP/UDP

10 Kommunikation i Java

Nätverk och Java, grunder Föreläsning 0: 0: Introduktion till Internet

F8 Meddelandesändning med UDP

F1 Nätverk och meddelandesändning

Föreläsning 1. På klientsidan... Allmänt. På serversidan... Och dessutom... DD1389 Internetprogrammering 6 hp

Tentamen Nätverksprogrammering Lösningsförslag

Nätverk grunder Föreläsning 1: 1: Introduktion till Internet

Tentamen Nätverksprogrammering Lösningsförslag

Datakommunika,on på Internet

F1 Nätverk och meddelandesändning

Tentamen Nätverksprogrammering Lösningsförslag

TCP/IP och Internetadressering

Tentamen Nätverksprogrammering Lösningsförslag

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Nätverksprogrammering. Tekniker för att skriva program som kommunicerar med varandra över ett nätverk. F1 Nätverk och strömmar.

5 Internet, TCP/IP och Tillämpningar

Tentamen Nätverksprogrammering Lösningsförslag

Hämta data mha URLer Föreläsning 2b. Innehåll Klassen URL

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Grundläggande nätverksteknik. F3: Kapitel 4 och 5

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

F9 Meddelandesändning med UDP

F2 Exchange EC Utbildning AB

Vad är Internet? - Flera olika slags nät - Vill kunna kommunicera över dessa nät - Vad gör man?

Föreläsning 7. DD2390 Internetprogrammering 6 hp

Java Secure Sockets Extension JSSE. F5 Secure Sockets EDA095 Nätverksprogrammering! Roger Henriksson Datavetenskap Lunds universitet

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Datainsamling över Internet

Mattias Wiggberg 1. Orientera på Internet. IP-adress. IP-adresserna räcker inte... Mer om IP-adresser

5 Internet, TCP/IP och Applikationer

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Transportnivån. Kommunikation mellan processer. Kommunikation mellan processer. Sockets och TCP. UDP (User Datagram Protocol) Checksumman

Karlstads universitet Institutionen för Informationsteknologi Datavetenskap

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Från användare till användare ARP. (Maria Kihl)

KomSys Hela kursen på en föreläsning ;-) Jens A Andersson

Java och nätverk Läsanvisningar Skansholm (med Swing) kapitel 18 Budd kapitel 22

Datakommunika,on på Internet

F1 Nätverk och strömmar

Föreläsning 5: Stora datanät Från användare till användare ARP

Föreläsning 5. Vägval. Vägval: önskvärda egenskaper. Mål:

Säkerhet. Säker kommunikation - Nivå. Secure . Alice wants to send secret message, m, to Bob.

F5 Exchange Elektronikcentrum i Svängsta Utbildning AB

Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005

Övningar - Datorkommunikation

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Tentamen Nätverksprogrammering Lösningsförslag

SSH-protokollet. Niels Möller

Internet. Internet hur kom det till? Internets framväxt. Ett hierarkiskt uppbyggt telenät Kretskopplat/circuit switching

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

Föreläsning 5: ARP (hur hitta MAC-adress) Från applikation till applikation

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Tentamen i Datorkommunikation den 10 mars 2014

Att skriva till och läsa från terminalfönstret

DIG IN TO Nätverksteknologier

Administration: Grundläggande internetprogrammering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Input. Programmering. Andra källor

Kapitel 5: Lokala nät Ethernet o 802.x. Lokala nät. Bryggan. Jens A Andersson (Maria Kihl)

Stora datanät Från användare till användare. Jens A Andersson

FÖRSLAG TILL LÖSNINGAR, TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2, , kl

Distribuerade affärssystem

DIG IN TO Nätverksteknologier

Föreläsning 9 Transportprotokoll UDP TCP

Föreläsning 5 Meddelandesändning med TCP

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

interface Question 1. a) Tillämpningar E-post Filöverföring Webb Traceroute Applikationslagret DNS SMTP HTTP FTP Transportlagret Nätverkslagret

F2 Java I/O - strömmar Meddelandesändning med TCP

TCP och UDP-nivån. Portnummer

F5 Meddelandesändning med TCP

Föreläsning 5 Meddelandesändning med TCP

5. Internet, TCP/IP och Applikationer

Beijer Electronics AB 2000, MA00336A,

Föreläsningens innehåll. Säker kommunikation - Nivå. IPSec. IPSec - VPN. IPSec - Implementation. IPSec - Består av vad?

Innehåll. Socketar. Klient och serverprogrammering: Socketar Föreläsning 9. Klienter och servrar (som sagts tidigare ) Varför socketar

TDDD80. Mobila och sociala applikationer Introduktion HTTP,SaaS. Anders Fröberg Institutionen för Datavetenskap (IDA)

Klasser som datastrukturer

Föreläsning 5: ARP (hur hitta MAC-adress) IPv4, IPv6 Transportprotokoll (TCP) Jens A Andersson

1. HandsPointer? Viewer. Viewing Viewing Document Viewer. Document Streaming & Page Management. Thin Client Viewer. My PC Access ,, P2P

Objektorienterad programmering i Java

Kihl & Andersson: Kapitel 6 (+ introduktioner från kap 7, men följ slides) Stallings: 9.5, 14.1, 14.2, Introduktion i 14.3, 16.1

Skärmbilden i Netscape Navigator

Laboration D, Nätverkskommunikation

LABORATIONSRAPPORT Säkerhet och Sårbarhet Laboration 1 Brandväggar

Transkript:

Socket-programmering Klient/server ansatsen / protokollgrafen Java-programering o o o Fler än en klient Riktiga servrar Programmering för distribution Varför datornät? o För att distribuera beräkningar (i vid mening) distribuerade system o För att dela på (exklusiva) resurser, tillhandahålla tjänster file server, mail server, databaser, videoserver, o För att kommunicera mail, ftp, chat, cscw,... Programming 1 1 Programming 1 2 Network s: some jargon Applications and -layer protocols A process is a program that is running within a host. Within the same host, two processes communicate with interprocess communication defined by the OS. o Signals, pipes, FIFO, shared memory, (sockets), etc Processes running in different hosts communicate with an -layer protocol o HTTP, FTP, etc A user agent is an interface between the user and the. o Web:browser o E-mail: mail reader o streaming audio/video: media player Application: communicating, distributed processes o running in hosts in user space o exchange messages to implement app o e.g., email, file transfer, the Web Application-layer protocols o one piece of an app o define messages exchanged by apps and actions taken o user services provided by lower layer protocols Programming 1 3 Programming 1 4 Client-server paradigm Typical app has two pieces: client and server Client: initiates contact with server ( speaks first ) typically requests service from server, for Web, client is implemented in browser; for e-mail, in mail reader Server: provides requested service to client e.g., Web server sends requested Web page, mail server delivers e-mail request reply Klient/server ansatsen En server tillhandahåller en tjänst, en resurs o Väntar på att någon behöver tjänsten En klient utnyttjar en tjänst o Kontaktar en server och ber om en tjänst Servern är autonom och kan vägra att acceptera en klients begäran Programming 1 5 Programming 1 6 1

Klient/server ansatsen (forts) Dialogen mellan klient och server måste följa ett väl specificerat protokoll En server kan o arbeta mot en förutbestämd kundkrets - är en del av en distribuerad applikation, eller o ha en allmän uppgift - är en del av ett distribuerat system Applikationer Vilket underliggande protokoll som används styrs av typen av applikation RPC FINGER FTP Web radio SMTP RLOGIN Programming 1 7 Programming 1 8 / - protokollstacken - User Datagram Protocol Applikation Kopplingsnivån o Ethernet, token ring,... Fysiska nivån o Kablarna... Applikation Kopplingsnivån Best-effort - protokoll + portar + checksumma Adressering o -nummer + portnummer Multiplexing/demultiplexing Fysiska nivån Programming 1 9 Programming 1 10 -Transmission Control Protocol Ett tillförlitligt protokoll Garanterar att om paket kommer fram är de korrekta, ej duplicerade och i korrekt ordning Adressering o -nummer + portnummer Multiplexing/demultiplexing - Internet Protocol Ett protokoll (på nätverksnivån) Tillhandahåller en datagram service o Adressering - -nummer i varje paket Best-effort protokoll o Försöker leverera varje paket o Paket kan tappas bort, kastas om, dupliceras Programming 1 11 Programming 1 12 2

Sockets Portar En abstraktion genom vilken applikationer kan skicka och ta emot data Ett API (Application Programming Interface) mellan applikationen och lagret Identifieras unikt o -adress, port, protokoll Applikation Socket Kopplingsnivån Adresser per protokoll (port, host) /13 /13 /1345 /3242 Fysiska nivån Programming 1 13 Programming 1 14 Multiplexing/demultiplexing Standard -portar Port 1 Port 2 Demultiplexing baserad på portnummer datagram Port 3 emil ~>ypcat services more kip 2112/tcp # over kerberos acmaint_transd 901/udp kerberos_master 751/udp # Kerberos authentication kerberos-iv 750/udp kerberos kdc # Kerberos authentication--udp new-rwho 550/udp new-who # experimental kshell 544/tcp krcmd # and remote shell talk 517/udp netbios-ns 137/udp nntp 119/tcp usenet # Network News Transfer pop 110/tcp pop3 pop-3 # Post Office V.3 - RFC 1081 hostnames 101/tcp hostname # usually to sri-nic link 87/tcp ttylink http 80/tcp httpd telnet 23/tcp ftp 21/tcp echo 7/udp echo 4/ddp # AppleTalk Echo Protocol Programming 1 15 Programming 1 16 Aktiva portar Java-programmering garnet ~>/usr/etc/netstat -a Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) udp 0 0 *.ntalk *.* udp 0 0 garnet.cs.umu.se.1047 jewel.cs.umu.se.time udp 0 0 *.817 *.* tcp 0 0 localhost.12082 localhost.sunrpc TIME_WAIT tcp 0 0 localhost.12080 localhost.sunrpc TIME_WAIT tcp 0 0 localhost.12078 localhost.sunrpc TIME_WAIT tcp 0 0 localhost.12076 localhost.sunrpc TIME_WAIT tcp 0 0 localhost.12074 localhost.sunrpc TIME_WAIT tcp 0 0 garnet.cs.umu.se.22 emil.cs.umu.se.1023 ESTABLISHED tcp 0 0 garnet.cs.umu.se.22 lassie.axis.se.909 ESTABLISHED tcp 0 0 garnet.cs.umu.se.22 lassie.axis.se.1001 ESTABLISHED tcp 0 0 localhost.1039 localhost.12055 ESTABLISHED tcp 0 0 localhost.12055 localhost.1039 ESTABLISHED tcp 0 0 *.X11 *.* LISTEN tcp 0 0 *.11004 *.* LISTEN tcp 0 0 garnet.cs.umu.se.ftp decanato.exactas.ftp CLOSE_WAIT Trådar http://java.sun.com/docs/books/tutorial/ing/ Programming 1 17 Programming 1 18 3

Connectionless () Datagram Server Skapa socket serversocket = DatagramSocket() Klient Skapa socket = DatagramSocket() Läs från serversocket Skapa adress och skicka datagram på Skriv svar till serversocket Läs svar på Stäng Programming 1 19 Programming 1 20 Client.java Client.java (forts) class Client public static void main (String argv[]) throws Exception // Skapa ström för att läsa från tangentbordet BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); // Skapa socket DatagramSocket = new DatagramSocket(); // Skapa -adress InetAddress Address = InetAddress.getByName( hostname"); // Skapa datagram med sänddata och sänd det DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, Address, 3456);.send(sendPacket); // Skapa datagram för att motta data och ta // emot data DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length);.receive(receivepacket); // Ta ut det erhålla datat ur paketet och // skriv ut det String modifiedsentence = new String(receivePacket.getData()); System.out.println("FROM SERVER: " + modifiedsentence); // Läs in från tangentbordet byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes(); // Stäng socketen.close(); Programming 1 21 Programming 1 22 Server.java Server.java (forts) // Ta reda på -adress och port för klienten InetAddress Address = receivepacket.getaddress(); int port = receivepacket.getport(); class Server public static void main(string argv[]) throws Exception // Skapa socket DatagramSocket serversocket = new DatagramSocket(3456); byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; while(true) // Behandla data, skapa paket och skicka det String capitalizedsentence = sentence.touppercase(); senddata = capitalizedsentence.getbytes(); DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, Address, port); serversocket.send(sendpacket); // Skapa paket och ta emot data DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket); String sentence = new String(receivePacket.getData()); Programming 1 23 Programming 1 24 4

Connection Oriented () Server Klient SERVER Create socket Bind port number Listen Accept CLIENT Create socket Connect Skapa socket welcomesocket = ServerSocket() Vänta på uppkoppling connectionsocket = welcomesocket.accept() Läs från connectionsocket uppkoppling Skapa socket och koppla upp mot servern = Socket() Skicka på Read Write Write Read Skriv svar till connectionsocket Läs svar på EOF Close connection Stäng connectionsocket Stäng Programming 1 25 Programming 1 26 Client.java Client.java (forts) // Skapa ström för att läsa från servern BufferedReader infromserver = new BufferedReader( new InputStreamReader(.getInputStream())); class Client public static void main (String argv[]) throws Exception String sentence; String modifiedsentence; // Skapa ström för att läsa från tangentbordet BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); // Skapa socket Socket = new Socket( hostname", 3456); // Läs in rad från tangentbordet och skriv till servern sentence = infromuser.readline(); outtoserver.writebytes(sentence + '\n'); // Läs in från servern och skriv ut på skärmen modifiedsentence = infromserver.readline(); System.out.println("FROM SERVER: " + modifiedsentence); // Stäng socketen.close(); // Skapa ström för att skriva till servern DataOutputStream outtoserver = new DataOutputStream(.getOutputStream()); Programming 1 27 Programming 1 28 Server.java Server.java (forts) // Skapa ström för att skriva till klienten DataOutputStream outtoclient = new DataOutputStream( connectionsocket.getoutputstream()); class Server public static void main(string argv[]) throws Exception String clientsentence; String capitalizedsentence; // Skapa serversocket ServerSocket welcomesocket = new ServerSocket(3456); // Läs in från klienten, omvandla och skicka tillbaka clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; outtoclient.writebytes(capitalizedsentence); while(true) // Acceptera uppkoppling Socket connectionsocket = welcomesocket.accept(); // Skapa ström för att läsa från klienten BufferedReader infromclient = new BufferedReader( new InputStreamReader(connectionSocket.getInputStream())); Programming 1 29 Programming 1 30 5

Hur lokaliserar man en server? En server måste kunna återfinnas o ip-nummer + portnummer o Fast plats för specifika servrar portnr 1-1023 reserverade för root-processer vissa portnr är reserverade för vissa tjänster Katalogtjänst o Network Information Service (NIS) o Yellow pages Standard -portar emil ~>ypcat services more kip 2112/tcp # over kerberos acmaint_transd 901/udp kerberos_master 751/udp # Kerberos authentication kerberos-iv 750/udp kerberos kdc # Kerberos authentication--udp new-rwho 550/udp new-who # experimental kshell 544/tcp krcmd # and remote shell talk 517/udp netbios-ns 137/udp nntp 119/tcp usenet # Network News Transfer pop 110/tcp pop3 pop-3 # Post Office V.3 - RFC 1081 hostnames 101/tcp hostname # usually to sri-nic link 87/tcp ttylink http 80/tcp httpd telnet 23/tcp ftp 21/tcp echo 7/udp echo 4/ddp # AppleTalk Echo Protocol Programming 1 31 Programming 1 32 Trådar i Java (nästa föreläsning) public class Threadexampel public static void main(string[] args) throws java.io.ioexception System.out.println("Starting 5 threads..."); for (int i = 0 ; i < 5 ; i++) new ExampelThread(i).start(); System.out.println("5 threads started"); public class ExampelThread extends Thread private int i; public ExampelThread(int i) super("exampelthread"); this.i = i; public void run() System.out.println("Hallo from thread " + i); Programming 1 33 6