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

Relevanta dokument
F8 Meddelandesändning med UDP

F9 Meddelandesändning med UDP

F1 Nätverk och meddelandesändning

F1 Nätverk och meddelandesändning

F1 Nätverk och meddelandesändning

10 Kommunikation i Java

F5 Meddelandesändning med TCP

Föreläsning 5 Meddelandesändning med TCP

Föreläsning 5 Meddelandesändning med TCP

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

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

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

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag

Hjälpprotokoll till IP

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

Tentamen Nätverksprogrammering Lösningsförslag

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

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

TCP/IP och Internetadressering

IT för personligt arbete F2

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

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

Datakommunikation och Internet

5 Internet, TCP/IP och Tillämpningar

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

F1 Nätverk och strömmar

Denna genomgång behandlar följande: IP (v4) Nätmasken ARP Adresstilldelning och DHCP

Tentamen i Datorkommunikation den 10 mars 2014

Tentamen Nätverksprogrammering Lösningsförslag

Föreläsning 1 Nätverk och strömmar

Instuderingsfrågor ETS052 Datorkommuniktion

Projektrapport. MegaLoad. Nätverksprogrammering EDA

DEL 2 - Praktiska programmeringsuppgifter

Karlstads universitet Institutionen för Informationsteknologi Datavetenskap

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

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

Framtidens adresseringsstandard Internet Protokoll version 6

3) Routern kontrollerar nu om destinationen återfinns i Routingtabellen av för att se om det finns en väg (route) till denna remote ost.

IPv6 Jonas Westerlund Institutionen för Informationsbehandling Åbo Akademi, Åbo, Finland

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

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

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

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

DIG IN TO Nätverksteknologier

Åtkomst och användarhandledning

OOP Objekt-orienterad programmering

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

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

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

DA 2012: F13. Nätverk 2 Ann-Sofi Åhn

Tentamen Nätverksprogrammering Lösningsförslag

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

Stora datanät. Maria Kihl

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

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

Switch- och WAN- teknik. F7: ACL och Teleworker Services

Ver Guide. Nätverk

Föreläsning 3. Datorkunskap 50p Marcus Weiderstål Bromma Gymnasium

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

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

IP Från användare till användare Vägval DNS Jens A Andersson (Maria Kihl) Att skicka data över flera länkar. Nätprotokoll

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

Internetprotokollen. Maria Kihl

Freeway WEB bussadapter. Installations- och bruksanvisning

Datasäkerhet och integritet

Grundläggande nätverksteknik. F7: Rep66on

IP routinghierarkier. Robert Löfman Institutionen för informationsbehandling Åbo Akademi, FIN Åbo, Finland e post: robert.lofman@abo.nospam.

Kapitel 6, 7, o 8: ARP Vägval Från användare till användare. Jens A Andersson (Maria Kihl)

Grundläggande datavetenskap, 4p

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

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

Studie av beräknings- och nätverksprestanda i 10GbE HPCkluster

Säkerhet genom simpel nätverksutrustning. Högskoleingenjörsexamensarbete Fredrik Folke

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

Chalmers tekniska högskola EDA390 Datakommunikation och Distribuerade system

Tentamen Nätverksprogrammering Lösningsförslag

Datakommunikation vad är det?

Utförande: I exemplet så kommer vi att utgå från att man gör laborationen i en Virtuell miljö (Virtualbox).

Datakommunikation I 5p

DIG IN TO Administration av nätverk- och serverutrustning

5 Internet, TCP/IP och Applikationer

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

HDMI Extender över Ethernet

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

Datakommunika,on på Internet

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

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

Real-time requirements for online games

Tentamen Nätverksprogrammering Lösningsförslag

MRD Industriell 3G-Router KI00283C

BiPAC 7402R2. ADSL2+ VPN Firewall Router. Snabbstartsguide

Laboration D, Nätverkskommunikation

HOGIA skatteanalys. Installationsguiden startar med en välkomstdialog för produkten. Klicka på Nästa.

Introduktion Lync-/SfB-Infrastruktur Cellips infrastruktur Brandväggskrav Lync/SfB Server PSTN Gateway...

Laborationer, moment 4 5

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

DI a/11g Dualband 108Mbps trådlös router

FIBER. Installationshandbok. Rev

Transkript:

F9 Meddelandesändning med UDP EDA095 Roger Henriksson Datavetenskap Lunds universitet Transport Layer Transport Layer Bygger vidare på på "Internet Internet Layer" Layer / IP. / IP. Applikationsprogram Applikationsprotokoll Applikationsprogram Transportlagret TCP / UDP Transportlagret Internetlagret IP Internetlagret Fysiskt överföringsmedium. "Host-To-Network Layer". F1-10 2 TCP/UDP Transmission Control Protocol (TCP) Fast (logisk) uppkoppling över nätverket. Dataström data behöver inte delas upp i paket. Automatisk felkontroll/omsändning. Garanterad leverans och inbördes ordning. User Datagram Protocol (UDP) Datagram Upp till 65507 byte stora datagram (IPv4) Garanterat korrekta meddelanden. Ej garanterad leverans eller inbördes ordning. Java och UDP I paketen java.net och java.io finns stöd för att sända och ta emot meddelanden (paket) mha UDP. DatagramPacket Representerar ett meddelande som kan skickas med UDP. DatagramSocket Fungerar som en sändare/mottagare för meddelanden. socket = uttag / hål-i-väggen. Jämför: telefonjack/fax. 3 4

DatagramPacket Konstruktorer DatagramPacket-objekt som ska användas för att ta emot meddelanden: public DatagramPacket(byte[] buffer, int length); DatagramPacket-objekt som ska användas för att sända meddelanden: public DatagramPacket(byte[] buffer, int length, InetAddress destination, int port); Vi måste tillhandahålla en vektor av typen byte[] som är tillräckligt stor för att rymma det meddelande som ska sändas/tas emot. Ett meddelande består alltså av ett antal bytes. DatagramPacket, fortsättning Get-metoder public InetAddress getaddress(); public int getport(); public byte[] getdata(); public int getlength(); Set-metoder public void setdata(byte[] data); public void setaddress(inetaddress remote); public void setport(int port); public void setlength(int length); 5 6 DatagramPacket, exempel Skapa ett DatagramPacket-objekt avsett att skickas till port 2000 på login.cs.lth.se och som innehåller texten Network Programming : // Create an InetAddress object InetAddress dest = null; try { dest = InetAddress.getByName("login.cs.lth.se"); } catch(unknownhostexception e) { System.exit(1); } // Create message buffer String s = "Network Programming"; byte[] data = s.getbytes(); // Default character encoding // Create the DatagramPacket object DatagramPacket packet = new DatagramPacket(data,data.length,dest,2000); DatagramSocket Klassen DatagramSocket ansluts till en port och kan: Sända UDP-paket från denna port till en annan port på en annan dator. Ta emot meddelanden som sänds till denna port på denna dator. Jämför med en fax (DatagramSocket) som ansluts till ett telefonjack (porten). 7 8

Datagramsocket, fortsättning Konstruktorer Skapa en DatagramSocket och anslut den till angiven port: public DatagramSocket(int port) throws SocketException; Skapa en DatagramSocket på en för tillfället ledig port: public DatagramSocket() throws SocketException; Konstruktorerna genererar ett SocketException om det inte gick att skapa socketen, t.ex. därför att angiven port var upptagen. DatagramSocket, fortsättning Skicka ett datagram public void send(datagrampacket dp) throws IOException; Glöm inte att skapa ett DatagramPacket med tillhörande byte-vektor först! Glöm inte heller att fylla i byte-vektorn med ditt meddelande! Ta emot ett datagram public void receive(datagrampacket dp) throws IOException; Anrop av receive blockerar tills ett meddelande anländer. Glöm inte att skapa ett tomt DatagramPacket med en tillhörande byte-vektor som är tillräckligt stor för att rymma meddelandet! Vid både mottagning och sändning genereras ett IOException om det uppstod ett fel av något slag, tex om man försöker sända ett för stort UDP-paket. 9 10 DatagramSocket, fortsättning Frigöra portar När man inte har behov av en port längre skall man frigöra den så att den kan återanvändas till andra ändamål. Detta görs genom att man anropar "close" på motsvarande DatagramSocket-objekt: public void close(); Extra inställningar Anrop av receive blockerar ända tills ett meddelande anländer. Vill man att receive ska vänta på ett meddelande högst en viss tid kan man sätta en timeout för förbindelsen. Har inget meddelande mottagits inom angiven tid (i millisekunder) genereras ett InterruptedIOException. public void setsotimeout(int timeout) throws SocketException; public int getsotimeout() throws IOException; DatagramSocket, fortsättning DEMO - Sändare/mottagare 11 12

Längd för DatagramPacket Längd för DatagramPacket DatagramPacket data längd 19 0 65507 byte [] Network Programming Omvandla mottaget meddelande till en sträng: Omvandla mottaget meddelande till en sträng: String String s = s new = new String(dp.getData(),0,dp.getLength()); Längden i ett DatagramPacket styr hur stort meddelande som kan tas emot. Kom ihåg att återställa om du vill återanvända ett DatagramPacket: Längden i ett DatagramPacket styr hur stort meddelande som dp.setlength(dp.getdata().length); kan tas emot. Kom ihåg att återställa om du vill återanvända ett DatagramPacket: dp.setlength(dp.getdata().length); F1-27 13 UDP-server: skelett while (true) { receive(client, command, parameters); switch (command) { case commanda: result = docommanda(parameters); break; case commandb: result = docommandb(parameters); break; case commandc: result = docommandc(parameters); break;... default:... } send(client, result); } 14 Multicast En variant av UDP. Unicast Ett meddelande sänds från en avsändare till EN mottagare. Flera mottagare - flera kopior av meddelandet sänds. Multicast Ett meddelande sänds från en avsändare till FLERA mottagare alla som är intresserade av att mottaga det. Endast EN kopia av meddelandet så långt som möjligt. Kräver stöd av routrar. Exempel: Live-utsändning av videodata. Utan multicast Utan multicast Klienter Routers Server F1-31 15 16

Med multicast Med multicast Multicastgrupper Klienter En multicastgrupp omfattar alla datorer som är intresserade av att mottaga en viss typ av meddelanden. Exempel: En videoutsändning av en live-konsert. Routers Server Multicastadresser Varje multicastgrupp motsvaras av ett speciellt IP-nummer i serien 224.0.0.0-239.255.255.255 (IPv4). Man kan säga att alla datorer i en multicastgrupp "delar på detta IPnummer. Datagram som sänds till IP-numret går ut till alla datorer i multicastgruppen avsändaren behöver inte veta vilka dessa är. F1-32 17 18 Att välja multicastadress Permanenta multicastadresser IANA - Internet Assigned Numbers Authority - delar ut fasta multicastadresser. Börjar med 224.0, 224.1, 224.2 eller 239. Domännamn IP-adress Syfte all-systems.mcast.net 224.0.0.1 Alla datorer på det lokala subnätet. experiment.mcast.net 224.0.1.20 Experiment som inte går utanför det lokala subnätet. ntp.mcast.net 224.0.1.1 Network Time Protocol ietf-1-video.mcast.net 224.0.1.12 Video från IETF-möten. Kanal 1. Time To Live TTL Till för att undvika överdrivna trafikvolymer och begränsa spridningen av multicastpaket. Varje paket förses med ett "bäst-före-datum", TTL, i form av en räknare som räknas ned varje gång paketet passerar en router. När paketets räknare blir noll dör paketet. Tillfälliga multicastadresser Vem som helst kan välja vilken adress som helst som inte är reserverad av IANA. 19 20

Java och multicast Meddelanden är av typen DatagramPacket - som för UDP. MulticastSocket Ersätter DatagramSocket, men är likartad. Subklass till DatagramSocket. En MulticastSocket kan: Ansluta sig till en multicastgrupp. Skicka meddelanden till andra datorer i gruppen. Mottaga meddelanden från andra datorer i gruppen. Lämna en multicastgrupp. MulticastSocket Konstruktorer Som för DatagramSocket: public MulticastSocket() throws SocketException; public MulticastSocket(int port) throws SocketException; Ansluta till en multicastgrupp Behövs bara för att ta emot meddelanden. public void joingroup(inetaddress address) throws IOException; Lämna en multicastgrupp public void leavegroup(inetaddress address) throws IOException; 21 22 MulticastSocket, fortsättning MulticastSocket, fortsättning Ange Time-To-Live public void settimetolive(int ttl) throws IOException; Sända paket public void send(datagrampacket packet) throws IOException; DEMO Sändare/mottagare Ta emot paket public void receive(datagrampacket dp) throws IOException; Frigöra portar public void close(); 23 24

Non-blocking I/O DatagramChannel Ny alternativ klass som ersätter DatagramSocket. Subklass till SelectableChannel. Kan användas tillsammans med Selector. Använder buffertar (ByteBuffer) i stället för bytevektorer. Skapa en DatagramChannel // Skapa DatagramChannel DatagramChannel channel = DatagramChannel.open(); // Bind den till en port - före Java 7 SocketAddress address = new InetSocketAddress(3141); DatagramSocket socket = channel.socket(); socket.bind(address); // Bind den till en port - från Java 7 SocketAddress address = new InetSocketAddress(3141); channel.bind(address); 25 26 Läsa/skriva Läsa ett paket public SocketAddress receive(bytebuffer buf) throws IOException; Skriva ett paket public int send(bytebuffer buf, SocketAddress target) throws IOException; Uppkopplad UDP-förbindelse Man kan binda en DatagramChannel till en viss motpart. Annan trafik ignoreras då. SocketAddress remote = new InetSocketAddress( cs.lth.se,37); channel.connect(remote); Koppla ned: channel.disconnect(remote); Förväxla ej med TCP-förbindelse! Det är ingen äkta uppkoppling. 27 28

Uppkopplad UDP-förbindelse 2 Om man kopplat upp sin förbindelse kan man använda liknande läs-/skrivoperationer som för en TCP-förbindelse: public int read(bytebuffer buf) throws IOException; public long read(bytebuffer[] bufs) throws IOException; public long read(bytebuffer[] bufs, int offset, int length) throws IOException; public int write(bytebuffer buf) throws IOException; public long write(bytebuffer[] bufs) throws IOException; public long write(bytebuffer[] bufs, int offset, int length) throws IOException; Bra eller dåligt? 29