Per P Madsen AAU1 Del 3 : Transportlaget - Protokoller. UDP. TCP - Pålidelig kommunikation og PAR-princippet - Wireless TCP - Socket-API’en.

Slides:



Advertisements
Lignende præsentationer
Throw a die Read the current value of index Add 1 Return the new value to index IndexIndex Create an empty array to count the number of dice throws Initialize.
Advertisements

Location-Based services. Maps Agenda •Geocoding •Interaktive kort med Map Vievs og Map Activities •Overlays til kort •Location-based services •Advarsler.
Informationer om trådløs netværk På trådløs netværk bruges CSMA/CA sammen med ”Request to Send (RTS)” og “Clear to Send (CTS)” for at undgå kollisioner.
C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
TCP/IP netværk Henrik Størner SSLUG.
Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation.
SMALL BUSINESS er BIG BUSINESS ISA Workshop Rico Raja, Technology Specialist Brian Thumann Madsen, Senior Executive Consultant.
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
13 – Database med JDBC. 2 NOEA2009Java-kursus – JDBC JDBC JDBC er et standard bibliotek til at tilgå relational databaser API’et er en standardiseret.
1 Pentium IA-32 Maskinarkitekturen Kort resume – uge 5.
1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
1 Parsing. 2 Mål: Et program til indlæsning og beregning af aritmetiske udtryk Eksempel: Beregn (3*5 + 4/2) - 1 Løs et lettere problem først: Læs en streng.
Label and Event Processes in Asbestos Af Troels Munk Haar.
1 Netværksprogrammering 2 Plan Socket-baseret kommunikation Fjernmetodekald (RMI) - Designmønsteret Proxy Databasetilgang (JDBC)
Computer netværk og TCP/IP protokoller Kort resume – uge 6
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning:
Algoritmer og Datastrukturer 1 Greylisting Gerth Stølting Brodal.
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
Exceptions. 2 Nordjyllands Erhvervakademi – 2009 Objectives “Unfortunately, errors are a part of life. Some are detected by the compiler, some are detected.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
Distribution af funktionalitet Webservice med WCF x.
ASP.NET Custom Web Controls Deployment. Agenda – ASP.NET Web User Controls Composite Control Rendered Custom Control Deploy en Web Applikation.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
ARCNET Host 1Host 2Host n Token-bus net..... Hastighed : max 10 Mbit/s Antal hosts pr. segment: 255 dvs ID:
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Programering af mobile enheder Windows Phone Storage.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
C# programmering Per P. Madsen Afd. for Proceskontrol
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Netværk og interprocess- kommunikation. Disposition Softwarelag Protokollag ◦UDP ◦TCP.
DComNet1 Computer netværk og TCP/IP protokoller. dComNet2 Maskinarkitektur.. fokus på intern organisation af en enkelt computer:
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Per P Madsen AAU1 Datanet 2. DDel 2: Netværkslaget, Transportlaget og Socket-API’en. Protokoller Routing Quality of service IPv4 og IPv6 Protokoller. UDP.
Per P Madsen AAU1 Del 2 : Netværkslaget - Protokoller - Routing - Quality of service - IPv4 og IPv6.
DComNet1 Computer netværk og TCP/IP protokoller. dComNet2 Maskinarkitektur.. fokus på intern organisation af en enkelt computer:
Netværk og interprocess- kommunikation - Et eksamensoplæg!
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Netværk og datakommunikation.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
Datanet 2. DDel 2: Netværkslaget, Transportlaget og Socket-API’en.
Per P Madsen AAU1 Del 4 : Sessions-, presentations- og applikationslaget - Applikationsprotokoller. - RPC og RMI. - Digital audio og Voice over IP. - RTP.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
 Kommunikation mellem computere  NAT – Network Adress Translation  IP Routing af pakker  Transport af beskeder ◦ TCP ◦ UDP.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Datalink laget Datalink Datalink Fysisk lag Fysisk lag Fysisk net
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
CS 3800 Switch/Router Lab Project Introduction
Præsentationens transcript:

Per P Madsen AAU1 Del 3 : Transportlaget - Protokoller. UDP. TCP - Pålidelig kommunikation og PAR-princippet - Wireless TCP - Socket-API’en

Per P Madsen AAU2 OSI modellen Network Fysisk Data link Transport Session Presentation Applikation Skabe forbindelse mellem to programmer/processer. Håndtering af integritet fx TCP og UDP protokollerne Connection Reliabel Sekvens Flow Control Buffering Stream Congestion control

Per P Madsen AAU3 Transportlag Problem: Hvordan skabes der kontakt mellem to programmer, når der kan køre mange programmer på både sender maskinen og modtager maskinen. Løsning: Portnumre PortmapProgrammer

Per P Madsen AAU4 Transportlag Administration af portnumre: IANA standard porte: 0 – 1023 Fx: 7 – echo 11 – systat 21 – ftp 80 – WWW IANA registrering: 1024 – Fx – Quake For dynamisk og privat brug: til 65535

Per P Madsen AAU5 Transportlag: UDP User Datagram Protokol: Kun håndtering af porte. Dvs: Connectionless. Unreliabel. Ingen sekvens håndtering. Ingen Flow Control. Ingen Congestion Control. Men effektiv.

Per P Madsen AAU6 Transportlag: UDP DatalinkNetværkUDP-headerData Samlet dataframe med UDP transportprotokol. Anvendelse: Voice over IP, Proceskontrol, semi-RealTime, Eksperimental protokol.

Per P Madsen AAU7 Transportlag: TCP Transport Control Protokol: Etablering af en sikker kanal mellem to programmer. Dvs: Connection-oriented. Reliabel. Sekvens håndtering. Flow Control. Congestion control. Fuld duplex. Streaming. Buffering. Kræver to-vejs kommunikation med acknowledged og handshake.

Per P Madsen AAU8 Transportlag: TCP Connection-oriented. Dvs: Punkt til punkt forbindelse med: Reliable connection startup. Graceful connection shutdown. Metode: The 3-way handshake Host 1 Host 2 Hej! Jeg vil snakke med dig Hej! Jeg har forstået og er klar. Jeg er også klar.

Per P Madsen AAU9 Transportlag: TCP Reliabel? Metode: Positive Acknowledgement with Retransmission (PAR) Modtager Sender positiv Ack. Sender Timer Sender data og starter timer Sender positiv Ack. Sender data og starter timer Timer

Per P Madsen AAU10 Transportlag: TCP Fejl: Datagram loss, fejl i data, forsinkelser. Modtager Sender data og starter timer Sender Timer Sender positiv Ack. Timer

Per P Madsen AAU11 Transportlag: TCP Timer: Kort tid => bedre effektivitet. For kort tid => for mange retransmissioner, dermed dårligere effektivitet. Timer estimering: RTT: Middel Round-trip time. M: Målt Round-trip time. RTT= a*RTT+(1-a)*M. Timer fx: Time = 1,5 * RTT

Per P Madsen AAU12 Transportlag: TCP D= D*b+(1-b)*|RTT-M| Dvs D er et estimat af spredningen. Time = RTT + 4 * D

Per P Madsen AAU13 Transportlag: TCP Sekvens håndtering. Flow Control. Streaming. Buffering. Løsning: Brug af Window management.

Per P Madsen AAU14 Transportlag: TCP Window management.

Per P Madsen AAU15 Transportlag: TCP Congestion control. Problem: Der kan være flaskehalse i et WAN net. Timeout skyldes oftest for megen trafik og ikke fejl. Retransmission forøger trafikken. Løsning: Der retransmiteres ved timeout, dog med mindre datamængder.

Per P Madsen AAU16 Transportlag: TCP Congestion control. Init: Threshold= 32 Kbyte CW= 1500 byte (Ethernet) If Not timeout If CW < Threshold. CW= 2 * CW Else CW= CW + 1K If timeout Threshold = ½* CW CW= 1500 byte

Per P Madsen AAU17 Transportlag: TCP Header. Source port og Dest. Port: Portnumre på hhv. sender og modtager siden. Sequence number: Adressen på den første byte i data. Ack. number: Piggybacket Ack. adressen på korrekt modtaget datamængde. TCP header length: Headerlængde.

Per P Madsen AAU18 Transportlag: TCP Header. URG bit samt Urgent pointer: Special besked, der sendes direkte igennem. ACK bit: Ack. nummeret er validt. PSH bit: Spring input buffer over. RET bit: Resetter forbindelse ved fejl. SYN og FIN: Bruges til oprettelse og nedlæggelse af en connection.

Per P Madsen AAU19 Transportlag: TCP Header. Window size: Buffer plads i senderens input buffer. Checksum: 1. kompliment af header + pseudoheader + data.

Per P Madsen AAU20 En løsning: WireLess TCP Fastnet: Manglende Ack. skyldes congestion og ikke fejl. WireLess: Manglende Ack. skyldes som regel fejl i data eller pakke tab. Så hvis manglende Ack. Så send pakken igen. fysisk Datalink Netværk fysisk Datalink Netværk Base station Transp.

Per P Madsen AAU21 API – Application Program Interface Fysisk Data Link Network Transport Session Presentation Application Socket RPC, RMI og CORBA

Per P Madsen AAU22 Socket int sock; sock=socket(,, ); bind(sock,, ); listen(sock, ); newsock=accept(sock,, ) sock=socket(,, ); bind(sock,, ); connect(sock,, )

Per P Madsen AAU23 Clinet-Server Client Server Socket Connect Send Req. Recive Reply. Socket Bind Listen Wait for Req. Read req. Serve req. Send Reply. En fuld forbindelse: (Client adr, Client port, Server adr, Server port, Protokol)

Per P Madsen AAU24 TCP-server if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {printf("server: can't open strem socket"); exit(0);} serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(50000); if (bind(sockfd, (struct sockaddr *) & serv_addr, sizeof(serv_addr)) < 0) {printf("server: can't bind local add"); exit(0);} listen(sockfd, 5); while (1) {newsockfd = accept(sockfd, (struct sockaddr *) & cli_addr, &cli_size); if (!(childpid = fork())) {close(sockfd); n = read(newsockfd, request_string, MAX_LENGTH); //do service write(newsockfd, reply_string, n); exit(0);} close(newsockfd); }

Per P Madsen AAU25 TCP-client serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(" "); serv_addr.sin_port = htons(50000); If ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {printf("client: can't open stream socket\n"); exit(0);} if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) {printf("client: can't connect to server\n"); exit(0);} write(sockfd, request_string, strlen(request_string)); n = read(sockfd, reply_string, MAX_LENGTH); //proces reply. close(sockfd);

Per P Madsen AAU26 UDP-server if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {printf("server: can't open datagram socket"); exit(0);} serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(50000); if (bind(sockfd, (struct sockaddr *) & serv_addr, sizeof(serv_addr)) < 0) {printf("server: can't bind local add"); exit(0);} while (1) {n = recvfrom(sockfd, request_string, MAX_LENGTH, 0, (struct sockaddr *) & cli_addr, &str_s); //serve request_string. sendto(sockfd, reply_string, strlen(reply_string), 0, (struct sockaddr *) & cli_addr, str_s); }

Per P Madsen AAU27 UDP-client if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {printf("client: can't open datagram socket\n"); exit(0);} serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(" "); serv_addr.sin_port = htons(50000); cli_addr.sin_family = AF_INET; cli_addr.sin_addr.s_addr = htonl(INADDR_ANY); cli_addr.sin_port = htons(0); if (bind(sockfd, (struct sockaddr *) & cli_addr, sizeof(cli_addr)) < 0) {printf("client: can't bind local add\n"); exit(0);} sendto(sockfd, request_string, strlen(request_string), 0, (struct sockaddr *) & serv_addr, str_s); //proces reply. n = recvfrom(sockfd, reply_string, MAX_LENGTH, 0, (struct sockaddr *) & rec_addr, &str_s); close(sockfd);

import java.io.*; import java.net.*; public class Server extends Thread { public final static int DEFAULT_PORT = 50000; protected int port; protected ServerSocket listen_socket; public static void fail(Exception e, String msg) { System.err.println(msg + ": " + e); System.exit(1); } public Server(int port) { if (port == 0) port = DEFAULT_PORT; this.port = port; try { listen_socket = new ServerSocket(port); } catch (IOException e) { fail(e, "Exception creating server socket"); } System.out.println("Server: listening on port " + port); this.start(); } public void run() { try { while(true) { Socket client_socket = listen_socket.accept(); Connection c = new Connection(client_socket); } } catch (IOException e){fail(e,"Exception while listening for connections");} } public static void main(String[] args) { int port = 0; if (args.length == 1) { try { port = Integer.parseInt(args[0]); } catch (NumberFormatException e) { port = 0; } } new Server(port); }

class Connection extends Thread { protected Socket client; protected DataInputStream in; protected PrintStream out; public Connection(Socket client_socket) { client = client_socket; try { in = new DataInputStream(client.getInputStream()); out = new PrintStream(client.getOutputStream()); } catch (IOException e) { try { client.close(); } catch (IOException e2) { ; } System.err.println("Exception while getting socket streams: " + e); return; } this.start(); } public void run() { String line; StringBuffer revline; int len; try { for(;;) { line = in.readLine(); if (line == null) break; len = line.length(); revline = new StringBuffer(len); for(int i= len-1; i>=0; i--) revline.insert(len-1-i, line.charAt(i)); out.println(revline); } } catch (IOException e) { ; } finally { try {client.close();} catch (IOException e2) {;} } }

import java.io.*; import java.net.*; public class Client { public static final int DEFAULT_PORT = 50000; public static void main(String[] args) { int port = DEFAULT_PORT; Socket s = null; if (args.length == 1) port = DEFAULT_PORT; else { try { port = Integer.parseInt(args[1]); } catch (NumberFormatException e) { usage(); } } try { s = new Socket(args[0], port); DataInputStream sin=new DataInputStream(s.getInputStream()); PrintStream sout = new PrintStream(s.getOutputStream()); DataInputStream in = new DataInputStream(System.in); System.out.println("Connected to "+s.getInetAddress()+":"+s.getPort()); String line; while(true) { System.out.print("> "); System.out.flush(); line = in.readLine(); if (line == null) break; sout.println(line); line = sin.readLine(); System.out.println(line); } catch (IOException e) { System.err.println(e); } finally { try { if (s != null) s.close(); } catch (IOException e2) { ; } } }

import java.io.*; import java.net.*; public class UDPReceive { static final int port = 50001; public static void main(String args[]) throws Exception { byte[] buffer = new byte[1024]; String s; DatagramSocket socket = new DatagramSocket(port); for(;;) { DatagramPacket packet = new DatagramPacket(buffer, buffer.length); socket.receive(packet); s = new String(buffer, 0, packet.getLength()); System.out.println("UDPReceive: received from " + packet.getAddress().getHostName() + ":" + packet.getPort() + ": " + s); } UDP-server

import java.io.*; import java.net.*; public class UDPSend { static final int port = 50001; public static void main(String args[]) throws Exception { if (args.length != 2) { System.out.println("Usage: java UDPSend "); System.exit(0); } InetAddress address = InetAddress.getByName(args[0]); int msglen = args[1].length(); byte[] message = new byte[msglen]; message=args[1].getBytes(); // Initilize the packet with data and address DatagramPacket packet = new DatagramPacket(message, msglen, address, port); // Create a socket, and send the packet through it. DatagramSocket socket = new DatagramSocket(); socket.send(packet); } UDP-client