F1 Nätverk och meddelandesändning

Relevanta dokument
F8 Meddelandesändning med UDP

F1 Nätverk och meddelandesändning

F1 Nätverk och meddelandesändning

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

F9 Meddelandesändning med UDP

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

F1 Nätverk och strömmar

10 Kommunikation i Java

F5 Meddelandesändning med TCP

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

Föreläsning 5 Meddelandesändning med TCP

Föreläsning 5 Meddelandesändning med TCP

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

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

TCP/IP och Internetadressering

Datakommunika,on på Internet

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

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

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

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

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

IT för personligt arbete F2

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

Tentamen Nätverksprogrammering Lösningsförslag

Grundläggande datavetenskap, 4p

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen i Datorkommunikation den 10 mars 2014

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

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

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

Tentamen Nätverksprogrammering Lösningsförslag

Datakommunika,on på Internet

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

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

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

DIG IN TO Nätverksteknologier

5 Internet, TCP/IP och Tillämpningar

Datakommunikation och Internet

Tentamen Nätverksprogrammering Lösningsförslag

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

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

DIG IN TO Nätverksteknologier

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

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

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

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

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

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

DIG IN TO Nätverksteknologier

Instuderingsfrågor ETS052 Datorkommuniktion

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

Lösningar till tentan i ETS052 Datorkommunikation

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

Grundläggande nätverksteknik. F7: Rep66on

Karlstads universitet Institutionen för Informationsteknologi Datavetenskap

Projektrapport. MegaLoad. Nätverksprogrammering EDA

Övningar - Datorkommunikation

Datainsamling över Internet

Datasäkerhet och integritet

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.

Hjälpprotokoll till IP

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

Administration: Grundläggande internetprogrammering

Internetprotokollen. Maria Kihl

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) IPv4, IPv6 Transportprotokoll (TCP) Jens A Andersson

5 Internet, TCP/IP och Applikationer

Tentamen Nätverksprogrammering Lösningsförslag

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

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

DEL 2 - Praktiska programmeringsuppgifter

Stora datanät. Maria Kihl

Tentamen i ETSF15 Kommunikationssystem och Nätverk

NSL Manager. Handbok för nätverksadministratörer

Laboration i Datakommunikation - Introduktion till Sockets och TCP/IP

Datakommunikation vad är det?

att det finns inte något nätverk som heter Internet Finns Internet? Varför fungerar det då? Nätet? Jag påstår

Webbservrar, severskript & webbproduktion

Tentamen Nätverksprogrammering Lösningsförslag

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

Denna genomgång behandlar följande:

1. Internets Applikationer 8 poäng

Christer Scheja TAC AB

Varför fungerar det då? Elektro- och informationsteknik Lunds Tekniska Högskola

Datakommunikation vad är det?

Systemkrav och tekniska förutsättningar

1 PROTOKOLL. Nätverk. Agenda. Jonas Sjöström

Kapitel 6, 7, o 8: IP DNS Vägval Från användare till användare Jens A Andersson (Maria Kihl) Att skicka data över flera länkar.

5. Internet, TCP/IP och Applikationer

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

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

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

3. Steg för steg. Kör IPv6 på riktigt med FortiGate! Principen är enkel:

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

Tentamen Nätverksprogrammering Lösningsförslag

DIG IN TO Administration av nätverk- och serverutrustning

5. Internet, TCP/IP tillämpningar och säkerhet

2D1395, Datasäkerhet. GF3 Paketfiltrering

Transkript:

F1 Nätverk och meddelandesändning med UDP EDA095 Nätverksprogrammering Roger Henriksson Datavetenskap Lunds universitet

Nätverksprogrammering Tekniker för att skriva program som kommunicerar med varandra över ett nätverk. Särskild tonvikt på Internet/IP-baserade nätverk, men generellt tillämpbara tekniker. Praktisk implementering i Java. Samma principer som i andra programmeringsspråk. 2

Kursöversikt Nätverksbegrepp Enkel meddelandesändning: UDP, Multicast Uppkopplade förbindelser: TCP Fjärrexekvering av kod: RPC/RMI Trådar Webbtekniker: HTTP XML CGI/Servlets/JSP/PHP Strömmande media 3

Klienter och servrar Vanlig arkitektur för applikationer som erbjuder tjänster via nätverk. Engelska: client/server architecture. Klient Ett program som kopplar upp sig (ofta via nätverk) till ett annat program för att begära någon tjänst. Exempel: Webbläsare, e-postprogram. Server Ett program som erbjuder tjänster åt andra program. Exempel: Webbserver, mailserver. 4

Protokoll För att två program ska kunna förstå varandras meddelanden behövs ett protokoll, dvs ett gemensamt språk. Applikationsprogram Applikationsprotokoll Applikationsprogram Exempel HTTP (HyperText Transfer Protocol) - för kommunikation mellan webbläsare och webbserver. 5

Transaktioner Kommunikationen mellan en klient och en server kan ofta delas upp i en följd av transaktioner. En transaktion kan omfatta sändning av ett antal relaterade meddelanden i olika riktningar. Syftet med en transaktion är att få en primitiv typiskt atomär operation utförd av servern. Exempel Hämta en webbsida från en webbserver (med HTTP): Klienten skickar en begäran till webbservern. Servern skickar den begärda webbsidan. Session Hela uppkopplingen, ofta flera transaktioner. 6

Fysiskt överföringsmedium Applikationsprotokollet är ett protokoll för kommunikation mellan två applikationsprogram. För överföringen behövs ett fysiskt överföringsmedium. Exempel: Ethernet, RadioLAN. Applikationsprogram Logisk förbindelse Applikationsprogram Fysiskt överföringsmedium. "Host-To-Network Layer". Host-To-Network -lagret omvandlar mellan analoga och digitala signaler. 7

Datagram Ett datagram är ett sammanhållet meddelande som sänds som en enhet över ett nätverk. Jämför: Telegram, SMS. Host-To-Network -lagret Endast begränsade möjligheter att skicka datagram. Ingen felkontroll/omsändning. Opraktiskt! 8

Internet Layer IP - Internet Protocol Viss felkontroll Oberoende av fysiskt överföringsmedium Applikationsprogram Applikationsprotokoll Applikationsprogram Internetlagret Internet Protocol internetlagret Fysiskt överföringsmedium. "Host-To-Network Layer". Bättre, men fortfarande komplicerat! 9

Transport Layer Bygger vidare på Internet Layer / IP. Applikationsprogram Transportlagret Internetlagret Applikationsprotokoll TCP / UDP IP Applikationsprogram Transportlagret Internetlagret Fysiskt överföringsmedium. "Host-To-Network Layer". 10

TCP/UDP User Datagram Protocol (UDP) Datagram Upp till 65507 byte stora datagram (IPv4) Garanterat korrekta meddelanden. Ej garanterad leverans eller inbördes ordning. 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. 11

Adressering För att ett program ska kunna upprätta en nätverksförbindelse behöver det ett sätt att ange vilket annat program det vill koppla upp sig mot. En kombination av IP-nummer och portnummer! IP-nummer Anger vilken dator programmet kör på. Jämför: gatuadress. Portnummer En dator kan ha flera olika program igång som erbjuder nätverkstjänster. Varje program har ett eller flera unika logiska portnummer. Jämför: lägenhetsnummer inom en fastighet. 12

IP-nummer 32 bitar - 4 byte (IPv4) 128 bitar - 16 byte (IPv6) Exempel: 130.235.16.34 (institutionens webbserver) Symboliska (domän-)namn istället: www.cs.lth.se = 130.235.16.34 Översättning mellan domännamn och IP-adresser görs av en Domain Name Server DNS. 13

InetAddress Javaklass för att representera internetadresser (JNP kap 6). Finns i paketet java.net. Skapa ett InetAddress-objekt public static InetAddress getbyname(string hostname) throws UnknownHostException; Även getallbyname och getlocalhost. Hämta information public String gethostname(); public byte[] getaddress(); public String gethostaddress(); DEMO - addressuppslagning 14

Portnummer Identifierar vilken tjänst på en dator man vill ansluta till. Rent logisk abstraktion ingen fysikalisk motsvarighet. Ett program som accepterar nätverksuppkopplingar, en server, väljer ett ledigt portnummer och väntar på att andra program ska ansluta till just detta portnummer. Port 1-1023 är reserverade för standardtjänster. Exempel: Tjänst Port Protokoll echo 7 TCP/UDP FTP 21 TCP Telnet 23 TCP HTTP 80 TCP Port 1024-65535 är tillgängliga för vanliga applikationer. 15

Internetstandarder Standardprotokoll för kommunikation på Internet fastställs av IETF Internet Engineering Task Force en ganska informell organisation. Beskrivs i form av RFC Request For Comments. Exempel: RFC768 UDP RFC791 mfl IP RFC1945 HTTP version 1.0 16

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. 17

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. 18

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); 19

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); 20

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). 21

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. 22

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. 23

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; 24

DatagramSocket, fortsättning DEMO - Sändare/mottagare 25

Längd för DatagramPacket DatagramPacket data längd 19 byte [] 0 65507 Network Programming Omvandla mottaget meddelande till en sträng: String s = 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: dp.setlength(dp.getdata().length); 26

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); } 27

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. 28

Utan multicast Klienter Routers Server 29

Med multicast Klienter Routers Server 30

Multicastgrupper En multicastgrupp omfattar alla datorer som är intresserade av att mottaga en viss typ av meddelanden. Exempel: En videoutsändning av en live-konsert. Multicastadresser Varje multicastgrupp motsvaras av ett speciellt IP-nummer i serien 224.0.0.0-239.255.255.255. 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. 31

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. experiments.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. Tillfälliga multicastadresser Vem som helst kan välja vilken adress som helst som inte är reserverad av IANA. 32

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. 33

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. 34

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; 35

MulticastSocket, fortsättning Ange Time-To-Live public void settimetolive(int ttl) throws IOException; Sända paket public void send(datagrampacket packet) throws IOException; Ta emot paket public void receive(datagrampacket dp) throws IOException; Frigöra portar public void close(); 36

MulticastSocket, fortsättning DEMO Sändare/mottagare 37