Presentation is loading. Please wait.

Presentation is loading. Please wait.

Protocoles réseaux Sommaire (prévision): Couche liaison de données

Similar presentations


Presentation on theme: "Protocoles réseaux Sommaire (prévision): Couche liaison de données"— Presentation transcript:

1 Protocoles réseaux Sommaire (prévision): Couche liaison de données
Introduction Rappels programmation réseau (java) Modèles Systèmes de transitions, "safety et liveness" Horloges logiques, ordre causal. Couche liaison de données Codes correcteurs d'erreur Couche réseau Algorithmes de routage Couche transport Communication fiable Protocole du bit alterné- sliding windows Compléments: Algorithmes de diffusion Algorithmes de vagues Broadcast et multicast Réseaux de pairs ISP= internet service provider Edge = bord Introduction

2 Bibliographie Introduction to Distributed Algorithms. G. Tel. Cambridge University press. Computer networking J.F. Kurose K.W. Ross Pearson. Design and analysis of distributed algorithms N. Santoro Wiley-Interscience TCP-IP Illustrated volume 1: The Protocols R. Stevens Addison-Wesley Introduction

3 Rappels: Java et internet
M1 Internet et java

4 Sommaire Rappels java Rappels tcp-udp Socket tcp et SocketServer
Entrées-sorties Thread Rappels tcp-udp Socket tcp et SocketServer Socket udp compléments M2 internet H. Fauconnier

5 Entrées-sorties java Streams Output streams Input streams
Filter streams Readers et writer (non blocking I/O) M2 internet H. Fauconnier

6 OuputStream public abstract class OutputStream
public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException Public void write(byte[] data, int offset, int length) throws IOException public void flush( ) throws IOException public void close( ) throws IOException M2 internet H. Fauconnier

7 InputStream public abstract class InputStream
public abstract int read( ) throws IOException public int read(byte[] input) throws IOException public int read(byte[] input, int offset, int length) throws IOException public long skip(long n) throws IOException public int available( ) throws IOException public void close( ) throws IOException public void mark(int readAheadLimit) public void reset( ) throws IOException public boolean markSupported( ) Mark pose une marque et reset remet la stream à cette position M2 internet H. Fauconnier

8 Lecture: int bytesRead=0; int bytesToRead=1024; byte[] input = new byte[bytesToRead]; while (bytesRead < bytesToRead) { int result = in.read(input, bytesRead, bytesToRead - bytesRead); if (result == -1) break; bytesRead += result; } Il faut faire attention à ce que le read retourne quand il risque de bloquer, aussi pour tout lire et ne pas bloquer il faut faire quelque chose comme l’exemple M2 internet H. Fauconnier

9 Filtres Chainage des filtres:
DataOutputStream dout = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("data.txt"))); M2 internet H. Fauconnier

10 Filtres Streams avec buffer PrintStream (System.out)
BufferedInputStream BufferedOutputStream PrintStream (System.out) PushbackInputStream Streams de données (lire et écrire des données java en binaire) le codage est celui de java DataInputStream DataOutputStream Streams avec compression Streams avec digest Streams cryptées M2 internet H. Fauconnier

11 Attention Une méthode comme println est dépendante de la plate-forme:
Le séparateur de ligne est soit \n, soit \r, soit \r\n Le codage par défaut des caractères dépend de la plate-forme PrintStream capte les exceptions M2 internet H. Fauconnier

12 Compression public class DeflaterOutputStream extends FilterOutputStream public class InflaterInputStream extends FilterInputStream public class GZIPOutputStream extends DeflaterOutputStream public class GZIPInputStream extends InflaterInputStream public class ZipOutputStream extends DeflaterOutputStream public class ZipInputStream extends InflaterInputStream M2 internet H. Fauconnier

13 décompresser une archive:
FileInputStream fin = new FileInputStream("shareware.zip"); ZipInputStream zin = new ZipInputStream(fin); ZipEntry ze = null; int b = 0; while ((ze = zin.getNextEntry( )) != null) { FileOutputStream fout = new FileOutputStream(ze.getName( )); while ((b = zin.read( )) != -1) fout.write(b); zin.closeEntry( ); fout.flush( ); fout.close( ); } zin.close( ); M2 internet H. Fauconnier

14 Décompresser un fichier
FileInputStream fin = new FileInputStream("allnames.gz"); GZIPInputStream gzin = new GZIPInputStream(fin); FileOutputStream fout = new FileOutputStream("allnames"); int b = 0; while ((b = gzin.read( )) != -1) fout.write(b); gzin.close( ); out.flush( ); out.close( ); M2 internet H. Fauconnier

15 digest public class DigestOutputStream extends FilterOutputStream
public class DigestInputStream extends FilterInputStream M2 internet H. Fauconnier

16 Digest exemple: MessageDigest sha = MessageDigest.getInstance("SHA"); DigestOutputStream dout = new DigestOutputStream(out, sha); byte[] buffer = new byte[128]; while (true) { int bytesRead = in.read(buffer); if (bytesRead < 0) break; dout.write(buffer, 0, bytesRead); } dout.flush( ); dout.close( ); byte[] result = dout.getMessageDigest( ).digest( ); M2 internet H. Fauconnier

17 Cryptage décryptage public CipherInputStream(InputStream in, Cipher c)
public CipherOutputStream(OutputStream out, Cipher c) Exemple byte[] desKeyData =    "Monmotdepasse".getBytes( ); DESKeySpec desKeySpec = new DESKeySpec(desKeyData); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey desKey = keyFactory.generateSecret(desKeySpec); Cipher des = Cipher.getInstance("DES"); des.init(Cipher.DECRYPT_MODE, desKey); CipherInputStream cin = new CipherInputStream(fin, des); M2 internet H. Fauconnier

18 Exemple String infile = "secrets.txt"; String outfile = "secrets.des";
String password = "Un mot de passe"; try { FileInputStream fin = new FileInputStream(infile); FileOutputStream fout = new FileOutputStream(outfile); // register the provider that implements the algorithm Provider sunJce = new com.sun.crypto.provider.SunJCE( ); Security.addProvider(sunJce); char[] pbeKeyData = password.toCharArray( ); PBEKeySpec pbeKeySpec = new PBEKeySpec(pbeKeyData); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); SecretKey pbeKey = keyFactory.generateSecret(pbeKeySpec); M2 internet H. Fauconnier

19 Exemple suite // use Data Encryption Standard Cipher pbe = Cipher.getInstance("PBEWithMD5AndDES"); pbe.init(Cipher.ENCRYPT_MODE, pbeKey); CipherOutputStream cout = new CipherOutputStream(fout, pbe); byte[] input = new byte[64]; while (true) { int bytesRead = fin.read(input); if (bytesRead == -1) break; cout.write(input, 0, bytesRead); } cout.flush( ); cout.close( ); fin.close( ); catch (Exception ex) { System.err.println(ex); M2 internet H. Fauconnier

20 Readers et Writers Hiérarchie de classe pour les caractères (avec encodage) au lieu d’octets. Writer et Reader classes abstraites OutputStreamWriter InputStreamReader Filtres BufferedReader, BufferedWriter LineNumberReader PushbackReader PrintReader M2 internet H. Fauconnier

21 Reader et Writer OutputStreamWriter reçoit des caractères, les convertit en octets suivant un certain codage public OutputStreamWriter(OutputStream out, String encoding) throws UnsupportedEncodingException public OutputStreamWriter(OutputStream out) Exemple: OutputStreamWriter w = new OutputStreamWriter(new FileOutputStream(russe.txt,"Cp1251")); M2 internet H. Fauconnier

22 Reader et Writer InputStreamReader lit des octets et les convertit suivant un certain codage public InputStreamReader(InputStream in) public InputStreamReader(InputStream in, String encoding) throws UnsupportedEncodingException public static String getMacCyrillicString(InputStream in) throws IOException { InputStreamReader r = new InputStreamReader(in, "MacCyrillic"); StringBuffer sb = new StringBuffer( ); int c; while ((c = r.read( )) != -1) sb.append((char) c); r.close( ); return sb.toString( ); } M2 internet H. Fauconnier

23 Filtres BufferedReader BufferedWriter LineNumberReader PushbackReader
PrintWriter M2 internet H. Fauconnier

24 Threads M2 internet H. Fauconnier

25 Threads threads: plusieurs activités qui coexistent et partagent des données exemples: pendant un chargement long faire autre chose coopérer processus versus threads problème de l'accès aux ressources partagées verrous moniteur synchronisation thread POO-L3 H. Fauconnier

26 Principes de base extension de la classe Thread
méthode run est le code qui sera exécuté. la création d'un objet dont la superclasse est Thread crée la thread (mais ne la démarre pas) la méthode start démarre la thread (et retourne immédiatement) la méthode join permet d'attendre la fin de la thread les exécutions des threads sont asynchrones et concurrentes thread POO-L3 H. Fauconnier

27 Exemple class ThreadAffiche extends Thread{ private String mot; private int delay; public ThreadAffiche(String w,int duree){ mot=w; delay=duree; } public void run(){ try{ for(;;){ System.out.println(mot); Thread.sleep(delay); }catch(InterruptedException e){ thread POO-L3 H. Fauconnier

28 Suite public static void main(String[] args) { new ThreadAffiche("PING", 10).start(); new ThreadAffiche("PONG", 30).start(); new ThreadAffiche("Splash!",60).start(); } thread POO-L3 H. Fauconnier

29 Alternative: Runnable
Une autre solution: créer une classe qui implémente l'interface Runnable (cette interface contient la méthode run) créer une Thread à partir du constructeur Thread avec un Runnable comme argument. thread POO-L3 H. Fauconnier

30 Exemple class RunnableAffiche implements Runnable{ private String mot;
private int delay; public RunnableAffiche(String w,int duree){ mot=w; delay=duree; } public void run(){ try{ for(;;){ System.out.println(mot); Thread.sleep(delay); }catch(InterruptedException e){ thread POO-L3 H. Fauconnier

31 Suite public static void main(String[] args) {
Runnable ping=new RunnableAffiche("PING", 10); Runnable pong=new RunnableAffiche("PONG", 50); new Thread(ping).start(); new Thread(pong).start(); } thread POO-L3 H. Fauconnier

32 Synchronisation les threads s'exécutent concurremment et peuvent accéder concurremment à des objets: il faut contrôler l'accès: thread un lit une variable (R1) puis modifie cette variable (W1) thread deux lit la même variable (R2) puis la modifie (W2) R1-R2-W2-W1 R1-W1-R2-W2 résultat différent! thread POO-L3 H. Fauconnier

33 Exemple class X{ int val; } class Concur extends Thread{ X x; int i;
String nom; public Concur(String st, X x){ nom=st; this.x=x; public void run(){ i=x.val; System.out.println("thread:"+nom+" valeur x="+i); try{ Thread.sleep(10); }catch(Exception e){} x.val=i+1; System.out.println("thread:"+nom+" valeur x="+x.val); thread POO-L3 H. Fauconnier

34 Suite public static void main(String[] args) { X x=new X();
Thread un=new Concur("un",x); Thread deux=new Concur("deux",x); un.start(); deux.start(); try{ un.join(); deux.join(); }catch (InterruptedException e){} System.out.println("X="+x.val); } donnera (par exemple) thread:un valeur x=0 thread:deux valeur x=0 thread:un valeur x=1 thread:deux valeur x=1 X=1 thread POO-L3 H. Fauconnier

35 Deuxième exemple class Y{ int val=0; public int increment(){ int tmp=val; tmp++; try{ Thread.currentThread().sleep(100); }catch(Exception e){} val=tmp; return(tmp); } int getVal(){return val;} class Concur1 extends Thread{ Y y; String nom; public Concur1(String st, Y y){ nom=st; this.y=y; public void run(){ System.out.println("thread:"+nom+" valeur="+y.increment()); thread POO-L3 H. Fauconnier

36 Suite thread:un valeur=1 thread:deux valeur=1 Y=1
public static void main(String[] args) { Y y=new Y(); Thread un=new Concur1("un",y); Thread deux=new Concur1("deux",y); un.start(); deux.start(); try{ un.join(); deux.join(); }catch (InterruptedException e){} System.out.println("Y="+y.getVal()); } thread:un valeur=1 thread:deux valeur=1 Y=1 thread POO-L3 H. Fauconnier

37 Verrous à chaque objet est associé un verrou
synchronized(expr) {instructions} expr doit s'évaluer comme une référence à un objet verrou sur cet objet pour la durée de l'exécution de instructions déclarer les méthodes comme synchronized: la thread obtient le verrou et le relâche quand la méthode se termine thread POO-L3 H. Fauconnier

38 synchronised(x) class Concur extends Thread{ X x; int i; String nom; public Concur(String st, X x){ nom=st; this.x=x; } public void run(){ synchronized(x){ i=x.val; System.out.println("thread:"+nom+" valeur x="+i); try{ Thread.sleep(10); }catch(Exception e){} x.val=i+1; System.out.println("thread:"+nom+" valeur x="+x.val); thread POO-L3 H. Fauconnier

39 Méthode synchronisée thread:un valeur=1 thread:deux valeur=2 Y=2
class Y{ int val=0; public synchronized int increment(){ int tmp=val; tmp++; try{ Thread.currentThread().sleep(100); }catch(Exception e){} val=tmp; return(tmp); } int getVal(){return val;} thread:un valeur=1 thread:deux valeur=2 Y=2 thread POO-L3 H. Fauconnier

40 Mais… la synchronisation par des verrous peut entraîner un blocage:
la thread un (XA) pose un verrou sur l'objet A et (YB) demande un verrou sur l'objet B la thread deux (XB) pose un verrou sur l'objet B et (YA) demande un verrou sur l'objet A si XA –XB : ni YA ni YB ne peuvent être satisfaites -> blocage (pour une méthode synchronisée, le verrou concerne l'objet globalement et pas seulement la méthode) thread POO-L3 H. Fauconnier

41 Exemple class Dead{ Dead partenaire; String nom; public Dead(String st){ nom=st; } public synchronized void f(){ try{ Thread.currentThread().sleep(100); }catch(Exception e){} System.out.println(Thread.currentThread().getName()+ " de "+ nom+".f() invoque "+ partenaire.nom+".g()"); partenaire.g(); } public synchronized void g(){ " de "+ nom+".g()"); public void setPartenaire(Dead d){ partenaire=d; thread POO-L3 H. Fauconnier

42 Exemple (suite) T1 de un.f() invoque deux.g()
final Dead un=new Dead("un"); final Dead deux= new Dead("deux"); un.setPartenaire(deux); deux.setPartenaire(un); new Thread(new Runnable(){public void run(){un.f();} },"T1").start(); new Thread(new Runnable(){public void run(){deux.f();} },"T2").start(); T1 de un.f() invoque deux.g() T2 de deux.f() invoque un.g() thread POO-L3 H. Fauconnier

43 Synchronisation… wait, notifyAll notify
attendre une condition / notifier le changement de condition: synchronized void fairesurcondition(){ while(!condition) wait(); faire ce qu'il faut qaund la condition est vraie } synchronized void changercondition(){ … changer quelque chose concernant la condition notifyAll(); // ou notify() thread POO-L3 H. Fauconnier

44 Exemple: public class Cellule<E>{ private Cellule<E> suivant; private E element; public Cellule(E val) { this.element=val; } public Cellule(E val, Cellule suivant){ this.suivant=suivant; public E getElement(){ return element; public void setElement(E v){ element=v; public Cellule<E> getSuivant(){ return suivant; public void setSuivant(Cellule<E> s){ this.suivant=s; thread POO-L3 H. Fauconnier

45 Files synchronisées class File<E>{ protected Cellule<E> tete, queue; private int taille=0; public synchronized void enfiler(E item){ Cellule<E> c=new Cellule<E>(item); if (queue==null) tete=c; else{ queue.setSuivant(c); } c.setSuivant(null); queue = c; notifyAll(); thread POO-L3 H. Fauconnier

46 File (suite) public synchronized E defiler() throws InterruptedException{ while (tete == null) wait(); Cellule<E> tmp=tete; tete=tete.getSuivant(); if (tete == null) queue=null; return tmp.getElement(); } thread POO-L3 H. Fauconnier

47 Réseau et Java Rappels Tcp-udp M2 internet H. Fauconnier

48 I) Introduction Les couches M2 internet H. Fauconnier

49 Couche Internet Datagramme IPv4 M2 internet H. Fauconnier

50 Couche transport TCP UDP
Mode connecté, flot bidirectionnel, sûr, contrôle de la congestion Téléphone UDP Mode non connecté, messages, sans garantie, déséquencement Poste M2 internet H. Fauconnier

51 Adresses internet Adresse IP: adresse réseau + site sur le réseau
Exemple: M2 internet H. Fauconnier

52 Classe d’adresses Internet
Classe Bits départ Début Fin Notation CIDR Masque ss-réseau Classe A / Classe B / Classe C / Classe D (mcast) /4 non défini Classe E (réservée) /4 non défini Classe Nombre de réseaux possibles Nombre d'ordinateurs maxi sur chacun A B C M2 internet H. Fauconnier

53 Connexion Adresse IP +port Ports réservés Ports libres M2 internet
H. Fauconnier

54 Quelques ports Protocol Port echo 7 TCP/UDP discard 9 daytime 13
FTP data 20 TCP FTP 21 SSH 22 telnet 23 smtp 25 time 37 Protocol Port whois 43 TCP finger 79 HTTP 80 POP3 110 NNTP 119 IMAP 143 RMI Registry 1099 M2 internet H. Fauconnier

55 Proxys M2 internet H. Fauconnier

56 Client-serveur M2 internet H. Fauconnier

57 Classes java.net.InetAddress (implements java.io.Serializable)
java.net.DatagramPacket java.net.DatagramSocket java.net.MulticastSocket java.net.ServerSocket javax.net.ssl.SSLServerSocket java.net.Socket javax.net.ssl.SSLSocket java.net.SocketAddress (implements java.io.Serializable) java.net.InetSocketAddress M2 internet H. Fauconnier

58 II) Adresses internet Classe InetAddress: Ontenir une InetAddress:
En utilisant le DNS public static InetAddress getByName(String hostName) throws UnknownHostException public static InetAddress[] getAllByName(String hostName) throws UnknownHostException public static InetAddress getLocalHost( ) throws UnknownHostException Sans DNS public static InetAddress getByAddress(byte[] address) throws UnknownHostException public static InetAddress getByAddress(String hostName, byte[] address) throws UnknownHostException M2 internet H. Fauconnier

59 Exemples import java.net.*; /... public static void main (String[] args){ try { InetAddress adresse = InetAddress.getByName("liafa.jussieu.fr"); System.out.println(adresse); } catch (UnknownHostException ex) { System.out.println("liafa.jussieu.fr ??"); } M2 internet H. Fauconnier

60 Exemples public static void main (String[] args){ try { InetAddress ad = InetAddress.getByName(" "); System.out.println(ad); } catch (UnknownHostException ex) { System.out.println(" ??"); } M2 internet H. Fauconnier

61 Toutes les adresses… public static void AllAdresses(String st) { try { InetAddress[] addresses = InetAddress.getAllByName(st); for (int i = 0; i < addresses.length; i++) { System.out.println(addresses[i]); } } catch (UnknownHostException ex) { System.out.println(st+"est inconnu"); M2 internet H. Fauconnier

62 Mon adresse public static String MonAdresse() { try {
InetAddress moi = InetAddress.getLocalHost(); return( moi.getHostAddress()); } catch (UnknownHostException ex) { return("Mon adresse est inconnue"); } M2 internet H. Fauconnier

63 InetAddress méthodes…
public String getHostName( ) public byte[] getAddress( ) public String getHostAddress( ) Exemple: public static void main (String[] args) { try { InetAddress ia= InetAddress.getByName(" "); System.out.println(ia.getHostName( )); } catch (Exception ex) { System.err.println(ex); } } M2 internet H. Fauconnier

64 Divers… Java 1.5 « wildcard »? IPV4 et IPV6:
public boolean isAnyLocalAddress( ) « wildcard »? public boolean isLoopbackAddress( ) public boolean isMulticastAddress( ) Java 1.5 public boolean isReachable(int timeout) throws IOException public boolean isReachable(NetworkInterface interface, int ttl, int timeout) throws IOException IPV4 et IPV6: public final class Inet4Address extends InetAddress public final class Inet6Address extends InetAddress Wildcard: n'importe quelle adresse ( en IPV4) Boucle locale M2 internet H. Fauconnier

65 NetworkInterface Exemple: try {
NetworkInterface ni = NetworkInterface.getByName("eth0"); if (ni == null) { System.err.println(" pas de: eth0" ); } } catch (SocketException ex) { } Network interface représente une adresse Ip locale, elle peut être une interface physique (eth0 ici) ou une interface virtuelle. M2 internet H. Fauconnier

66 Exemple public static String lookup(String host) { InetAddress node; // récupérer l'adresse par getByName try { node = InetAddress.getByName(host); } catch (UnknownHostException ex) { return "hôte inconnu " + host; } if (isHostname(host)) { return node.getHostAddress(); } else { return node.getHostName(); M2 internet H. Fauconnier

67 sockets (client)

68 Généralités Une connexion: Serveur: Client:
(IP adresse+port, IP adresse +port) On peut lire et écrire sur la socket Serveur: Associer une socket à une adresse connue (IP+port) Ecoute sur la socket Quand une connexion arrive accept : une nouvelle socket est créée Rendre le service envoyer/recevoir (en général dans une thread) Continuer à écouter Client: Crée une socket Demande connexion sur adresse +port du serveur Connexion Envoyer/recevoir Fin de la connexion M2 internet H. Fauconnier

69 Socket en Java Serveur Client Classe ServerSocket Classe Socket
(bind (mais en général par constructeur) listen) Accept getInputStream, getOutputStream close Client Classe Socket (bind) connect (mais en général par constructeur) M2 internet H. Fauconnier

70 Attention! L’accès aux ports est souvent restreint
Des firewall peuvent empêcher les connexions Il faut être root pour utiliser des ports réservés… M2 internet H. Fauconnier

71 Côté client Création: public Socket(InetAddress address, int port) throws IOException Crée une socket + une connexion avec IP adresse et port En fait: Création d’une socket locale attachée à un port + une adresse locale Etablissement de la connexion IOException en cas d’échec M2 internet H. Fauconnier

72 Exemple public static void regarderPortBas(String host) { for (int i = 1; i < 1024; i++) { try { Socket s = new Socket(host, i); System.out.println("Il y a un serveur sur " + i + " de "+ host); } catch (UnknownHostException ex) { System.err.println(ex); break; } catch (IOException ex) { // exception s'il n'y a pas de serveur } M2 internet H. Fauconnier

73 Attention Cet exemple peut ne pas bien fonctionner…
Pour des raisons de sécurité la tentative de connexion peut être bloquante M2 internet H. Fauconnier

74 Obtenir des infos… public InetAddress getInetAddress( )
public int getPort( ) public InetAddress getLocalAddress( ) public int getLocalPort( ) M2 internet H. Fauconnier

75 Exemple public static void socketInfo(String ... args) { for (int i = 0; i < args.length; i++) { try { Socket theSocket = new Socket(args[i], 80); System.out.println("Connecté sur " + theSocket.getInetAddress() + " port " + theSocket.getPort() + " depuis port " + theSocket.getLocalPort() + " de " + theSocket.getLocalAddress()); } catch (UnknownHostException ex) { System.err.println("Hôte inconnu " + args[i]); } catch (SocketException ex) { System.err.println("Connection impossible " + args[i]); } catch (IOException ex) { System.err.println(ex); M2 internet H. Fauconnier

76 Communiquer… public InputStream getInputStream( ) throws IOException
public OutputStream getOutputStream( ) throws IOException M2 internet H. Fauconnier

77 Exemple: dayTime public static void time(String ... hlist) {
for (int i=0;i<hlist.length;i++){ try { Socket theSocket = new Socket(hlist[i], 13); InputStream timeStream = theSocket.getInputStream(); StringBuffer time = new StringBuffer(); int c; while ((c = timeStream.read()) != -1) time.append((char) c); String timeString = time.toString().trim(); System.out.println("Il est " + timeString + " à " + hlist[i]); } catch (UnknownHostException ex) { System.err.println(ex); } catch (IOException ex) { M2 internet H. Fauconnier

78 Exemple: echo M2 internet H. Fauconnier
public static void echo(String hostname, int port) { PrintWriter out = null; BufferedReader networkIn = null; try { Socket theSocket = new Socket(hostname, port); networkIn = new BufferedReader( new InputStreamReader(theSocket.getInputStream())); BufferedReader userIn = new BufferedReader( new InputStreamReader(System.in)); out = new PrintWriter(theSocket.getOutputStream()); System.out.println("Client: Connecté au serveur d'echo "+ theSocket); while (true) { String theLine = userIn.readLine(); out.println(theLine); out.flush(); if (theLine.equals(".")){out.close(); break;} System.out.println(networkIn.readLine()); } catch (IOException ex) {System.err.println(ex); } finally { if (networkIn != null) networkIn.close(); if (out != null) out.close(); } catch (IOException ex) {} M2 internet H. Fauconnier

79 Echo suite catch (IOException ex) { System.err.println(ex);
} finally { try { if (networkIn != null) networkIn.close(); if (out != null) out.close(); } catch (IOException ex) {} } M2 internet H. Fauconnier

80 Fermeture public void close( ) throws IOException
Fermeture de la socket: Automatique si une des parties fait un close garbage collector (le réseau utilise des ressources systèmes qui sont par définition partagées et limitées) (a priori à mettre dans une clause finally ) M2 internet H. Fauconnier

81 En plus public boolean isClosed( ) public boolean isConnected( )
public boolean isBound( ) public void shutdownInput( ) throws IOException public void shutdownOutput( ) throws IOException Attention isConnected précise seulement si la socket a été connectée. M2 internet H. Fauconnier

82 ServerSocket

83 Principe Création d’un ServerSocket par constructeur
Association (bind) de la socket à une adresse et un port ((1) et (2) peuvent être simultanés) Écoute et connexion par accept Communication getInputStream et getOutputStream close (par le client ou le serveur ou les deux) Aller en (2) (en général 3 est dans une thread) M2 internet H. Fauconnier

84 Constructeurs public ServerSocket(int port) throws BindException, IOException public ServerSocket(int port, int queueLength) throws BindException, IOException public ServerSocket(int port, int queueLength, InetAddress bindAddress) throws IOException Ces constructeurs associent un port et une adresse au ServerSocket l’usage du port est exclusif et si le port est déjà occupé une exception est lancée public ServerSocket( ) throws IOException M2 internet H. Fauconnier

85 Exemple public static void portsLibres() { for (int port = 1; port <= 65535; port++) { try { // exception si le port est utilisé ServerSocket server = new ServerSocket(port); } catch (IOException ex) { System.out.println("serveur sur port" + port ); } M2 internet H. Fauconnier

86 Remarques port 0: choisi par le système
on peut donner une taille sur la file des connexions en attente on peut choisir une adresse particulière sur la machine locale En java >1.4 on peut faire un "bind" explicite: public void bind(SocketAddress endpoint) throws IOException public void bind(SocketAddress endpoint, int queueLength) throws IOException M2 internet H. Fauconnier

87 Exemple public static void portQuelconque() { try { ServerSocket server = new ServerSocket(0); System.out.println("Le port obtenu est " + server.getLocalPort()); } catch (IOException ex) { System.err.println(ex); } M2 internet H. Fauconnier

88 Connexion accept() crée et retourne une nouvelle socket pour la connexion associée (IP, port)(IP, port) M2 internet H. Fauconnier

89 Exemple ServerSocket server = new ServerSocket(5776); while (true) {
Socket connection = server.accept( ); OutputStreamWriter out = new OutputStreamWriter( connection.getOutputStream( )); out.write("Connecté:" +connection+"\r\n"); connection.close( ); } M2 internet H. Fauconnier

90 Exemple plus complet public final static int DEFAULT_PORT = 13; public static void dayTime(){ dayTime(DEFAULT_PORT); } public static void dayTime(int port) { if (port < 0 || port >= 65536) { System.out.println("Erreur port:"); return; try { ServerSocket server = new ServerSocket(port); Socket connection = null; M2 internet H. Fauconnier

91 Exemple suite while (true) { try { connection = server.accept();
Writer out = new OutputStreamWriter( connection.getOutputStream()); Date now = new Date(); out.write(now.toString() +"\r\n"); out.flush(); connection.close(); } catch (IOException ex) {} finally { if (connection != null) connection.close(); } catch (IOException ex) {} } } catch (IOException ex) { System.err.println(ex); M2 internet H. Fauconnier

92 Fermeture public void close( ) throws IOException Ferme le ServerSocket et toutes les connexions créées par accept sur la ServerSocket M2 internet H. Fauconnier

93 Serveur echo public static void serveurEcho(int port) { try { ServerSocket server = new ServerSocket(port,100); System.out.println("Serveur:"+server+" en écoute sur le port: " + server.getLocalPort()+" est lancé"); while (true) { Socket connection = server.accept(); System.out.println("Serveur connexion avec: " + connection); Thread echo=new EchoThread(connection); echo.start(); } catch (IOException ex) { System.out.println("le port" + port + " est occupé"); System.out.println("On suppose donc que le service estlancé"); } M2 internet H. Fauconnier

94 serveur echo: EchoThread
class EchoThread extends Thread { BufferedReader in; PrintWriter out; Socket connection; public EchoThread(Socket connection) { try{ this.connection=connection; InputStream in=connection.getInputStream(); OutputStream out=connection.getOutputStream(); this.in = new BufferedReader(new InputStreamReader(in)); this.out = new PrintWriter(out); } catch (IOException ex) { System.err.println(ex); } M2 internet H. Fauconnier

95 run public void run() { try { while (true) { String st; st = in.readLine(); if (st.equals(".")) in.close(); out.close(); break; } System.out.println("Serveur a reçu:"+st+" de "+connection); out.println(st); out.flush(); } catch (SocketException ex) { ex.printStackTrace(); } catch (IOException ex) { System.err.println(ex); } catch (IOException ex) { ex.printStackTrace();} M2 internet H. Fauconnier

96 Remarques utilisation des threads pour traiter le service et éviter de faire attendre les clients on peut aussi utiliser des entrées/sorties non bloquantes M2 internet H. Fauconnier

97 Autres méthodes public InetAddress getInetAddress( )
public int getLocalPort( ) M2 internet H. Fauconnier

98 Socket UDP H. Fauconnier M2-Internet Java

99 UDP H. Fauconnier M2-Internet Java

100 Socket programming with UDP
UDP: no “connection” between client and server no handshaking sender explicitly attaches IP address and port of destination to each segment OS attaches IP address and port of sending socket to each segment Server can extract IP address, port of sender from received segment application viewpoint UDP provides unreliable transfer of groups of bytes (“datagrams”) between client and server Note: the official terminology for a UDP packet is “datagram”. In this class, we instead use “UDP segment”. H. Fauconnier M2-Internet Java

101 Running example Client: Server: User types line of text
Client program sends line to server Server: Server receives line of text Capitalizes all the letters Sends modified line to client Receives line of text Displays H. Fauconnier M2-Internet Java

102 Client/server socket interaction: UDP
Server (running on hostid) create socket, clientSocket = DatagramSocket() Client Create datagram with server IP and port=x; send datagram via clientSocket create socket, port= x. serverSocket = DatagramSocket() read datagram from serverSocket close clientSocket read datagram from write reply to serverSocket specifying client address, port number H. Fauconnier M2-Internet Java

103 Example: Java client (UDP)
process Input: receives packet (recall thatTCP received “byte stream”) Output: sends packet (recall that TCP sent “byte stream”) client UDP socket H. Fauconnier M2-Internet Java

104 Example: Java client (UDP)
import java.io.*; import java.net.*; 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(); Create input stream Create client socket Translate hostname to IP address using DNS H. Fauconnier M2-Internet Java

105 Example: Java client (UDP), cont.
Create datagram with data-to-send, length, IP addr, port 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(); } Send datagram to server Read datagram from server H. Fauconnier M2-Internet Java

106 Example: Java server (UDP)
import java.io.*; import java.net.*; 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]; while(true) DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); Create datagram socket at port 9876 Create space for received datagram Receive datagram H. Fauconnier M2-Internet Java

107 Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } Get IP addr port #, of sender Create datagram to send to client Write out datagram to socket End of while loop, loop back and wait for another datagram H. Fauconnier M2-Internet Java

108 UDP observations & questions
Both client server use DatagramSocket Dest IP and port are explicitly attached to segment. What would happen if change both clientSocket and serverSocket to “mySocket”? Can the client send a segment to server without knowing the server’s IP address and/or port number? Can multiple clients use the server? H. Fauconnier M2-Internet Java

109 DatagramPacket Un paquet contient au plus 65,507 bytes
Pour construire les paquet public DatagramPacket(byte[] buffer, int length) public DatagramPacket(byte[] buffer, int offset, int length) Pour construire et envoyer public DatagramPacket(byte[] data, int length, InetAddress destination, int port) public DatagramPacket(byte[] data, int offset, int length, InetAddress destination, int port) public DatagramPacket(byte[] data, int length, SocketAddress destination, int port) public DatagramPacket(byte[] data, int offset, int length, SocketAddress destination, int port) H. Fauconnier M2-Internet Java

110 Exemple String s = "On essaie…"; byte[] data = s.getBytes("ASCII"); try { InetAddress ia = InetAddress.getByName(" int port = 7;// existe-t-il? DatagramPacket dp = new DatagramPacket(data, data.length, ia, port); } catch (IOException ex) H. Fauconnier M2-Internet Java

111 Méthodes Adresses public InetAddress getAddress( )
public int getPort( ) public SocketAddress getSocketAddress( ) public void setAddress(InetAddress remote) public void setPort(int port) public void setAddress(SocketAddress remote) H. Fauconnier M2-Internet Java

112 Méthodes (suite) Manipulation des données: public byte[] getData( )
public int getLength( ) public int getOffset( ) public void setData(byte[] data) public void setData(byte[] data, int offset, int length ) public void setLength(int length) H. Fauconnier M2-Internet Java

113 Exemple import java.net.*; public class DatagramExample { public static void main(String[] args) { String s = "Essayons."; byte[] data = s.getBytes( ); try { InetAddress ia = InetAddress.getByName(" int port =7; DatagramPacket dp = new DatagramPacket(data, data.length, ia, port); System.out.println(" Un packet pour" + dp.getAddress( ) + " port " + dp.getPort( )); System.out.println("il y a " + dp.getLength( ) + " bytes dans le packet"); System.out.println( new String(dp.getData( ), dp.getOffset( ), dp.getLength( ))); } catch (UnknownHostException e) { System.err.println(e); H. Fauconnier M2-Internet Java

114 DatagramSocket Constructeurs
public DatagramSocket( ) throws SocketException public DatagramSocket(int port) throws SocketException public DatagramSocket(int port, InetAddress interface) throws SocketException public DatagramSocket(SocketAddress interface) throws SocketException (protected DatagramSocket(DatagramSocketImpl impl) throws SocketException) H. Fauconnier M2-Internet Java

115 Exemple java.net.*; public class UDPPortScanner { public static void main(String[] args) { for (int port = 1024; port <= 65535; port++) { try { // exception si utilisé DatagramSocket server = new DatagramSocket(port); server.close( ); } catch (SocketException ex) { System.out.println("Port occupé" + port + "."); } // end try } // end for H. Fauconnier M2-Internet Java

116 Envoyer et recevoir public void send(DatagramPacket dp) throws IOException public void receive(DatagramPacket dp) throws IOException H. Fauconnier M2-Internet Java

117 Un exemple: Echo UDPServeur UDPEchoClient UDPEchoServeur SenderThread
ReceiverThread H. Fauconnier M2-Internet Java

118 Echo: UDPServeur H. Fauconnier M2-Internet Java
import java.net.*; import java.io.*; public abstract class UDPServeur extends Thread { private int bufferSize; protected DatagramSocket sock; public UDPServeur(int port, int bufferSize) throws SocketException { this.bufferSize = bufferSize; this.sock = new DatagramSocket(port); } public UDPServeur(int port) throws SocketException { this(port, 8192); public void run() { byte[] buffer = new byte[bufferSize]; while (true) { DatagramPacket incoming = new DatagramPacket(buffer, buffer.length); try { sock.receive(incoming); this.respond(incoming); catch (IOException e) { System.err.println(e); } // end while public abstract void respond(DatagramPacket request); H. Fauconnier M2-Internet Java

119 UDPEchoServeur H. Fauconnier M2-Internet Java
public class UDPEchoServeur extends UDPServeur { public final static int DEFAULT_PORT = 2222; public UDPEchoServeur() throws SocketException { super(DEFAULT_PORT); } public void respond(DatagramPacket packet) { try { byte[] data = new byte[packet.getLength()]; System.arraycopy(packet.getData(), 0, data, 0, packet.getLength()); String s = new String(data, "8859_1"); System.out.println(packet.getAddress() + " port " + packet.getPort() + " reçu " + s); } catch (java.io.UnsupportedEncodingException ex) {} DatagramPacket outgoing = new DatagramPacket(packet.getData(), packet.getLength(), packet.getAddress(), packet.getPort()); sock.send(outgoing); } catch (IOException ex) { System.err.println(ex); H. Fauconnier M2-Internet Java

120 Client: UDPEchoClient
public class UDPEchoClient { public static void lancer(String hostname, int port) { try { InetAddress ia = InetAddress.getByName(hostname); SenderThread sender = new SenderThread(ia, port); sender.start(); Thread receiver = new ReceiverThread(sender.getSocket()); receiver.start(); } catch (UnknownHostException ex) { System.err.println(ex); catch (SocketException ex) { } // end lancer H. Fauconnier M2-Internet Java

121 ReceiverThread H. Fauconnier M2-Internet Java
class ReceiverThread extends Thread { DatagramSocket socket; private boolean stopped = false; public ReceiverThread(DatagramSocket ds) throws SocketException { this.socket = ds; } public void halt() { this.stopped = true; public DatagramSocket getSocket(){ return socket; public void run() { byte[] buffer = new byte[65507]; while (true) { if (stopped) return; DatagramPacket dp = new DatagramPacket(buffer, buffer.length); try { socket.receive(dp); String s = new String(dp.getData(), 0, dp.getLength()); System.out.println(s); Thread.yield(); } catch (IOException ex) {System.err.println(ex); } H. Fauconnier M2-Internet Java

122 SenderThread public class SenderThread extends Thread { private InetAddress server; private DatagramSocket socket; private boolean stopped = false; private int port; public SenderThread(InetAddress address, int port) throws SocketException { this.server = address; this.port = port; this.socket = new DatagramSocket(); this.socket.connect(server, port); } public void halt() { this.stopped = true; //… H. Fauconnier M2-Internet Java

123 SenderThread H. Fauconnier M2-Internet Java
//… public DatagramSocket getSocket() { return this.socket; } public void run() { try { BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in)); while (true) { if (stopped) return; String theLine = userInput.readLine(); if (theLine.equals(".")) break; byte[] data = theLine.getBytes(); DatagramPacket output = new DatagramPacket(data, data.length, server, port); socket.send(output); Thread.yield(); } // end try catch (IOException ex) {System.err.println(ex); } } // end run H. Fauconnier M2-Internet Java

124 Autres méthodes public void close( ) public int getLocalPort( )
public InetAddress getLocalAddress( ) public SocketAddress getLocalSocketAddress( ) public void connect(InetAddress host, int port) public void disconnect( ) public int getPort( ) public InetAddress getInetAddress( ) public InetAddress getRemoteSocketAddress( ) H. Fauconnier M2-Internet Java

125 Options SO_TIMEOUT SO_RCVBUF SO_SNDBUF
public synchronized void setSoTimeout(int timeout) throws SocketException public synchronized int getSoTimeout( ) throws IOException SO_RCVBUF public void setReceiveBufferSize(int size) throws SocketException public int getReceiveBufferSize( ) throws SocketException SO_SNDBUF public void setSendBufferSize(int size) throws SocketException int getSendBufferSize( ) throws SocketException SO_REUSEADDR (plusieurs sockets sur la même adresse) public void setReuseAddress(boolean on) throws SocketException boolean getReuseAddress( ) throws SocketException SO_BROADCAST public void setBroadcast(boolean on) throws SocketException public boolean getBroadcast( ) throws SocketException H. Fauconnier M2-Internet Java

126 Chapitre 1 Introduction
Les transparents sont adaptés de (et en anglais): Computer Networking: A Top Down Approach Featuring the Internet J.F Kurose and K.W. Ross Introduction

127 Chapter 1: Introduction
Our goal: get “feel” and terminology more depth, detail later in course approach: use Internet as example Overview: what’s the Internet? what’s a protocol? network edge; hosts, access net, physical media network core: packet/circuit switching, Internet structure performance: loss, delay, throughput security protocol layers, service models history Introduction

128 Chapitre 1: sommaire 1.1 What is the Internet? 1.2 Network edge
end systems, access networks, links 1.3 Network core circuit switching, packet switching, network structure 1.4 Delay, loss and throughput in packet-switched networks 1.5 Protocol layers, service models 1.6 Networks under attack: security 1.7 History Introduction

129 What’s the Internet: PC server wireless laptop cellular handheld millions of connected computing devices: hosts = end systems running network apps Home network Institutional network Mobile network Global ISP Regional ISP communication links fiber, copper, radio, satellite transmission rate = bandwidth wired links access points Nuts and bolts routers: forward packets (chunks of data) router Introduction

130 “Cool” internet appliances
Web-enabled toaster + weather forecaster IP picture frame World’s smallest web server Internet phones Introduction

131 What’s the Internet: protocols control sending, receiving of msgs
e.g., TCP, IP, HTTP, Skype, Ethernet Internet: “network of networks” loosely hierarchical public Internet versus private intranet Internet standards RFC: Request for comments IETF: Internet Engineering Task Force Home network Institutional network Mobile network Global ISP Regional ISP Introduction

132 What’s the Internet: a service view
communication infrastructure enables distributed applications: Web, VoIP, , games, e-commerce, file sharing communication services provided to apps: reliable data delivery from source to destination “best effort” (unreliable) data delivery Introduction

133 What’s a protocol? human protocols: “what’s the time?”
“I have a question” introductions … specific msgs sent … specific actions taken when msgs received, or other events network protocols: machines rather than humans all communication activity in Internet governed by protocols protocols define format, order of msgs sent and received among network entities, and actions taken on msg transmission, receipt Introduction

134 What’s a protocol? a human protocol and a computer network protocol:
Hi TCP connection request Hi TCP connection response Got the time? Get 2:00 <file> time Q: Other human protocols? Introduction

135 Chapter 1: roadmap 1.1 What is the Internet? 1.2 Network edge
end systems, access networks, links 1.3 Network core circuit switching, packet switching, network structure 1.4 Delay, loss and throughput in packet-switched networks 1.5 Protocol layers, service models 1.6 Networks under attack: security 1.7 History Introduction

136 A closer look at network structure:
network edge: applications and hosts access networks, physical media: wired, wireless communication links network core: interconnected routers network of networks Introduction

137 The network edge: end systems (hosts): client/server model
run application programs e.g. Web, at “edge of network” peer-peer client/server client/server model client host requests, receives service from always-on server e.g. Web browser/server; client/server peer-peer model: minimal (or no) use of dedicated servers e.g. Skype, BitTorrent Introduction

138 Access networks and physical media
Q: How to connect end systems to edge router? residential access nets institutional access networks (school, company) mobile access networks Keep in mind: bandwidth (bits per second) of access network? shared or dedicated? Introduction

139 Dial-up Modem Uses existing telephony infrastructure
telephone network Internet home dial-up modem ISP modem (e.g., AOL) home PC central office Uses existing telephony infrastructure Home is connected to central office up to 56Kbps direct access to router (often less) Can’t surf and phone at same time: not “always on”

140 Digital Subscriber Line (DSL)
telephone network DSL modem home PC phone Internet DSLAM Existing phone line: 0-4KHz phone; 4-50KHz upstream data; 50KHz-1MHz downstream data splitter central office Also uses existing telephone infrastruture up to 1 Mbps upstream (today typically < 256 kbps) up to 8 Mbps downstream (today typically < 1 Mbps) dedicated physical line to telephone central office DSLAM= digital subscriber line access multiplexer

141 Residential access: cable modems
Does not use telephone infrastructure Instead uses cable TV infrastructure HFC: hybrid fiber coax asymmetric: up to 30Mbps downstream, 2 Mbps upstream network of cable and fiber attaches homes to ISP router homes share access to router unlike DSL, which has dedicated access ISP= internet service provider Introduction

142 Residential access: cable modems
Diagram: Introduction

143 Cable Network Architecture: Overview
Typically 500 to 5,000 homes cable headend home cable distribution network (simplified) Introduction

144 Cable Network Architecture: Overview
server(s) cable headend home cable distribution network Introduction

145 Cable Network Architecture: Overview
cable headend home cable distribution network (simplified) Introduction

146 Cable Network Architecture: Overview
FDM (more shortly): Channels V I D E O A T C N R L 1 2 3 4 5 6 7 8 9 FDM: frequency division mulitplexing cable headend home cable distribution network Introduction

147 Fiber to the Home OLT Optical links from central office to the home
ONT OLT central office optical splitter optical fiber optical fibers Internet Optical links from central office to the home Two competing optical technologies: Passive Optical network (PON) Active Optical Network (PAN) Much higher Internet rates; fiber also carries television and phone services ONT optical network terminal OLT optical line terminator (conversion otpique electrique) Avec PON tous les packets de l'OLT vers le splitter sont répliqués sur le splitter Avec PAN = switched internet

148 Ethernet Internet access
100 Mbps 1 Gbps server Ethernet switch Institutional router To Institution’s ISP Typically used in companies, universities, etc 10 Mbs, 100Mbps, 1Gbps, 10Gbps Ethernet Today, end systems typically connect into Ethernet switch

149 Wireless access networks
shared wireless access network connects end system to router via base station aka “access point” wireless LANs: 802.11b/g (WiFi): 11 or 54 Mbps wider-area wireless access provided by telco operator ~1Mbps over cellular system (EVDO, HSDPA) next up (?): WiMAX (10’s Mbps) over wide area router base station EV-DO - Evolution data optimized reéseau sans fil haut débit HSDPA= high speed downlink packet access (3G+) WiMax worldwide Interoperability for Microwave Access mobile hosts Introduction

150 Home networks Typical home network components: DSL or cable modem
router/firewall/NAT Ethernet wireless access point wireless laptops to/from cable headend cable modem router/ firewall NAT= network access translation wireless access point Ethernet Introduction

151 Physical Media Twisted Pair (TP) two insulated copper wires
Category 3: traditional phone wires, 10 Mbps Ethernet Category 5: 100Mbps Ethernet Bit: propagates between transmitter/rcvr pairs physical link: what lies between transmitter & receiver guided media: signals propagate in solid media: copper, fiber, coax unguided media: signals propagate freely, e.g., radio Introduction

152 Physical Media: coax, fiber
Fiber optic cable: glass fiber carrying light pulses, each pulse a bit high-speed operation: high-speed point-to-point transmission (e.g., 10’s-100’s Gps) low error rate: repeaters spaced far apart ; immune to electromagnetic noise Coaxial cable: two concentric copper conductors bidirectional baseband: single channel on cable legacy Ethernet broadband: multiple channels on cable HFC HFC Introduction

153 Physical media: radio Radio link types:
terrestrial microwave e.g. up to 45 Mbps channels LAN (e.g., Wifi) 11Mbps, 54 Mbps wide-area (e.g., cellular) 3G cellular: ~ 1 Mbps satellite Kbps to 45Mbps channel (or multiple smaller channels) 270 msec end-end delay geosynchronous versus low altitude signal carried in electromagnetic spectrum no physical “wire” bidirectional propagation environment effects: reflection obstruction by objects interference Introduction

154 Chapter 1: roadmap 1.1 What is the Internet? 1.2 Network edge
end systems, access networks, links 1.3 Network core circuit switching, packet switching, network structure 1.4 Delay, loss and throughput in packet-switched networks 1.5 Protocol layers, service models 1.6 Networks under attack: security 1.7 History Introduction

155 The Network Core mesh of interconnected routers
the fundamental question: how is data transferred through net? circuit switching: dedicated circuit per call: telephone net packet-switching: data sent thru net in discrete “chunks” Introduction

156 Network Core: Circuit Switching
End-end resources reserved for “call” link bandwidth, switch capacity dedicated resources: no sharing circuit-like (guaranteed) performance call setup required Introduction

157 Network Core: Circuit Switching
network resources (e.g., bandwidth) divided into “pieces” pieces allocated to calls resource piece idle if not used by owning call (no sharing) dividing link bandwidth into “pieces” frequency division time division Introduction

158 Circuit Switching: FDM and TDM
4 users Example: FDM frequency time TDM frequency time Two simple multiple access control techniques. Each mobile’s share of the bandwidth is divided into portions for the uplink and the downlink. Also, possibly, out of band signaling. As we will see, used in AMPS, GSM, IS-54/136 FDM frequency division modulation TDM time Introduction

159 Numerical example How long does it take to send a file of 640,000 bits from host A to host B over a circuit-switched network? All links are Mbps Each link uses TDM with 24 slots/sec 500 msec to establish end-to-end circuit Let’s work it out! 1 slot tous les 1/24 secondes ->0,6* 1,536/ ms => 0,1*1/4 +500ms => 0,9ms Introduction

160 Network Core: Packet Switching
each end-end data stream divided into packets user A, B packets share network resources each packet uses full link bandwidth resources used as needed resource contention: aggregate resource demand can exceed amount available congestion: packets queue, wait for link use store and forward: packets move one hop at a time Node receives complete packet before forwarding Bandwidth division into “pieces” Dedicated allocation Resource reservation Introduction

161 Packet Switching: Statistical Multiplexing
100 Mb/s Ethernet C A statistical multiplexing 1.5 Mb/s B queue of packets waiting for output link D E Sequence of A & B packets does not have fixed pattern, bandwidth shared on demand  statistical multiplexing. TDM: each host gets same slot in revolving TDM frame. Introduction

162 Packet-switching: store-and-forward
L R R R takes L/R seconds to transmit (push out) packet of L bits on to link at R bps store and forward: entire packet must arrive at router before it can be transmitted on next link delay = 3L/R (assuming zero propagation delay) Example: L = 7.5 Mbits R = 1.5 Mbps transmission delay = 15 sec more on delay shortly … Introduction

163 Packet switching versus circuit switching
Packet switching allows more users to use network! 1 Mb/s link each user: 100 kb/s when “active” active 10% of time circuit-switching: 10 users packet switching: with 35 users, probability > 10 active at same time is less than .0004 N users 1 Mbps link Q: how did we get value ? Introduction

164 Packet switching versus circuit switching
Is packet switching the definitive winner? great for bursty data resource sharing simpler, no call setup excessive congestion: packet delay and loss protocols needed for reliable data transfer, congestion control Q: How to provide circuit-like behavior? bandwidth guarantees needed for audio/video apps Slam dunk = smash (slam dunk winner vainqueur par ko) Q: human analogies of reserved resources (circuit switching) versus on-demand allocation (packet-switching)? Introduction

165 Internet structure: network of networks
roughly hierarchical at center: “tier-1” ISPs (e.g., Verizon, Sprint, AT&T, Cable and Wireless), national/international coverage treat each other as equals Tier 1 ISP Tier-1 providers interconnect (peer) privately ISP internet system provider Tier= gradin (niveau) Tier 1 ISP Tier 1 ISP Introduction

166 Tier-1 ISP: e.g., Sprint … …. to/from backbone peering
to/from customers peering to/from backbone …. POP: point-of-presence Introduction

167 Internet structure: network of networks
“Tier-2” ISPs: smaller (often regional) ISPs Connect to one or more tier-1 ISPs, possibly other tier-2 ISPs Tier-2 ISPs also peer privately with each other. Tier-2 ISP Tier-2 ISP pays tier-1 ISP for connectivity to rest of Internet tier-2 ISP is customer of tier-1 provider Tier 1 ISP Tier 1 ISP Tier 1 ISP Introduction

168 Internet structure: network of networks
“Tier-3” ISPs and local ISPs last hop (“access”) network (closest to end systems) local ISP Tier 3 Local and tier- 3 ISPs are customers of higher tier ISPs connecting them to rest of Internet Tier-2 ISP Tier 1 ISP Tier 1 ISP Tier 1 ISP Introduction

169 Internet structure: network of networks
a packet passes through many networks! local ISP Tier 3 ISP local ISP local ISP local ISP Tier-2 ISP Tier 1 ISP Tier 1 ISP Tier 1 ISP local ISP local ISP local ISP local ISP Introduction

170 Chapter 1: roadmap 1.1 What is the Internet? 1.2 Network edge
end systems, access networks, links 1.3 Network core circuit switching, packet switching, network structure 1.4 Delay, loss and throughput in packet-switched networks 1.5 Protocol layers, service models 1.6 Networks under attack: security 1.7 History Introduction

171 How do loss and delay occur?
packets queue in router buffers packet arrival rate to link exceeds output link capacity packets queue, wait for turn packet being transmitted (delay) A free (available) buffers: arriving packets dropped (loss) if no free buffers packets queueing (delay) B Introduction

172 Four sources of packet delay
1. nodal processing: check bit errors determine output link 2. queueing time waiting at output link for transmission depends on congestion level of router A B propagation transmission nodal processing queueing Introduction

173 Delay in packet-switched networks
3. Transmission delay: R=link bandwidth (bps) L=packet length (bits) time to send bits into link = L/R 4. Propagation delay: d = length of physical link s = propagation speed in medium (~2x108 m/sec) propagation delay = d/s Note: s and R are very different quantities! A B propagation transmission nodal processing queueing Introduction

174 Caravan analogy toll booth ten-car caravan 100 km cars “propagate” at 100 km/hr toll booth takes 12 sec to service car (transmission time) car~bit; caravan ~ packet Q: How long until caravan is lined up before 2nd toll booth? Time to “push” entire caravan through toll booth onto highway = 12*10 = 120 sec Time for last car to propagate from 1st to 2nd toll both: 100km/(100km/hr)= 1 hr A: 62 minutes Introduction

175 Caravan analogy (more)
toll booth ten-car caravan 100 km Yes! After 7 min, 1st car at 2nd booth and 3 cars still at 1st booth. 1st bit of packet can arrive at 2nd router before packet is fully transmitted at 1st router! Cars now “propagate” at km/hr Toll booth now takes 1 min to service a car Q: Will cars arrive to 2nd booth before all cars serviced at 1st booth? See Ethernet applet at AWL Web site Introduction

176 Nodal delay dproc = processing delay dqueue = queuing delay
typically a few microsecs or less dqueue = queuing delay depends on congestion dtrans = transmission delay = L/R, significant for low-speed links dprop = propagation delay a few microsecs to hundreds of msecs Introduction

177 Queueing delay (revisited)
R=link bandwidth (bps) L=packet length (bits) a=average packet arrival rate traffic intensity = La/R La/R ~ 0: average queueing delay small La/R -> 1: delays become large La/R > 1: more “work” arriving than can be serviced, average delay infinite! Introduction

178 “Real” Internet delays and routes
What do “real” Internet delay & loss look like? Traceroute program: provides delay measurement from source to router along end-end Internet path towards destination. For all i: sends three packets that will reach router i on path towards destination router i will return packets to sender sender times interval between transmission and reply. 3 probes 3 probes 3 probes Introduction

179 “Real” Internet delays and routes
traceroute: gaia.cs.umass.edu to Three delay measurements from gaia.cs.umass.edu to cs-gw.cs.umass.edu 1 cs-gw ( ) 1 ms 1 ms 2 ms 2 border1-rt-fa5-1-0.gw.umass.edu ( ) 1 ms 1 ms 2 ms 3 cht-vbns.gw.umass.edu ( ) 6 ms 5 ms 5 ms 4 jn1-at wor.vbns.net ( ) 16 ms 11 ms 13 ms 5 jn1-so wae.vbns.net ( ) 21 ms 18 ms 18 ms 6 abilene-vbns.abilene.ucaid.edu ( ) 22 ms 18 ms 22 ms 7 nycm-wash.abilene.ucaid.edu ( ) 22 ms 22 ms 22 ms ( ) 104 ms 109 ms 106 ms 9 de2-1.de1.de.geant.net ( ) 109 ms 102 ms 104 ms 10 de.fr1.fr.geant.net ( ) 113 ms 121 ms 114 ms 11 renater-gw.fr1.fr.geant.net ( ) 112 ms 114 ms 112 ms 12 nio-n2.cssi.renater.fr ( ) 111 ms 114 ms 116 ms 13 nice.cssi.renater.fr ( ) 123 ms 125 ms 124 ms 14 r3t2-nice.cssi.renater.fr ( ) 126 ms 126 ms 124 ms 15 eurecom-valbonne.r3t2.ft.net ( ) 135 ms 128 ms 133 ms ( ) 126 ms 128 ms 126 ms 17 * * * 18 * * * 19 fantasia.eurecom.fr ( ) 132 ms 128 ms 136 ms trans-oceanic link * means no response (probe lost, router not replying) Introduction

180 Packet loss queue (aka buffer) preceding link in buffer has finite capacity packet arriving to full queue dropped (aka lost) lost packet may be retransmitted by previous node, by source end system, or not at all buffer (waiting area) packet being transmitted A B packet arriving to full buffer is lost Introduction

181 Throughput throughput: rate (bits/time unit) at which bits transferred between sender/receiver instantaneous: rate at given point in time average: rate over longer period of time pipe that can carry fluid at rate Rc bits/sec) pipe that can carry fluid at rate Rs bits/sec) Troughput=débit link capacity Rs bits/sec link capacity Rc bits/sec server sends bits (fluid) into pipe server, with file of F bits to send to client Introduction

182 Throughput (more) Rs < Rc What is average end-end throughput?
Rc bits/sec Rs bits/sec Rs > Rc What is average end-end throughput? Rs bits/sec Rc bits/sec Throughput= débit link on end-end path that constrains end-end throughput bottleneck link Introduction

183 Throughput: Internet scenario
Rs per-connection end-end throughput: min(Rc,Rs,R/10) in practice: Rc or Rs is often bottleneck Rs Rs R Rc Rc Rc 10 connections (fairly) share backbone bottleneck link R bits/sec Introduction

184 Chapter 1: roadmap 1.1 What is the Internet? 1.2 Network edge
end systems, access networks, links 1.3 Network core circuit switching, packet switching, network structure 1.4 Delay, loss and throughput in packet-switched networks 1.5 Protocol layers, service models 1.6 Networks under attack: security 1.7 History Introduction

185 Protocol “Layers” Question: Networks are complex! many “pieces”: hosts
routers links of various media applications protocols hardware, software Question: Is there any hope of organizing structure of network? Or at least our discussion of networks? Introduction

186 Organization of air travel
ticket (purchase) baggage (check) gates (load) runway takeoff airplane routing ticket (complain) baggage (claim) gates (unload) runway landing a series of steps Introduction

187 Layering of airline functionality
ticket (purchase) baggage (check) gates (load) runway (takeoff) airplane routing departure airport arrival intermediate air-traffic control centers ticket (complain) baggage (claim gates (unload) runway (land) ticket baggage gate takeoff/landing Layers: each layer implements a service via its own internal-layer actions relying on services provided by layer below Introduction

188 Why layering? Dealing with complex systems:
explicit structure allows identification, relationship of complex system’s pieces layered reference model for discussion modularization eases maintenance, updating of system change of implementation of layer’s service transparent to rest of system e.g., change in gate procedure doesn’t affect rest of system layering considered harmful? Introduction

189 Internet protocol stack
application: supporting network applications FTP, SMTP, HTTP transport: process-process data transfer TCP, UDP network: routing of datagrams from source to destination IP, routing protocols link: data transfer between neighboring network elements PPP, Ethernet physical: bits “on the wire” application transport network link physical Introduction

190 ISO/OSI reference model
presentation: allow applications to interpret meaning of data, e.g., encryption, compression, machine-specific conventions session: synchronization, checkpointing, recovery of data exchange Internet stack “missing” these layers! these services, if needed, must be implemented in application needed? application presentation session transport network link physical Introduction

191 Encapsulation source destination application transport network link
message M application transport network link physical segment Ht M Ht datagram Ht Hn M Hn frame Ht Hn Hl M link physical switch destination network link physical Ht Hn M Ht Hn Hl M M application transport network link physical Ht Hn M Ht M Ht Hn M router Ht Hn Hl M Introduction

192 Chapter 1: roadmap 1.1 What is the Internet? 1.2 Network edge
end systems, access networks, links 1.3 Network core circuit switching, packet switching, network structure 1.4 Delay, loss and throughput in packet-switched networks 1.5 Protocol layers, service models 1.6 Networks under attack: security 1.7 History Introduction

193 Network Security The field of network security is about:
how bad guys can attack computer networks how we can defend networks against attacks how to design architectures that are immune to attacks Internet not originally designed with (much) security in mind original vision: “a group of mutually trusting users attached to a transparent network”  Internet protocol designers playing “catch-up” Security considerations in all layers! Introduction

194 Bad guys can put malware into hosts via Internet
Malware can get in host from a virus, worm, or trojan horse. Spyware malware can record keystrokes, web sites visited, upload info to collection site. Infected host can be enrolled in a botnet, used for spam and DDoS attacks. Malware is often self-replicating: from an infected host, seeks entry into other hosts Keystroke : frappe au clavier Botnets= machines zombies (machines contrôlées par des pirates) Introduction

195 Bad guys can put malware into hosts via Internet
Trojan horse Hidden part of some otherwise useful software Today often on a Web page (Active-X, plugin) Virus infection by receiving object (e.g., attachment), actively executing self-replicating: propagate itself to other hosts, users Worm: infection by passively receiving object that gets itself executed self- replicating: propagates to other hosts, users Sapphire Worm: aggregate scans/sec in first 5 minutes of outbreak (CAIDA, UWisc data) Introduction

196 Bad guys can attack servers and network infrastructure
Denial of service (DoS): attackers make resources (server, bandwidth) unavailable to legitimate traffic by overwhelming resource with bogus traffic select target target break into hosts around the network (see botnet) send packets toward target from compromised hosts Introduction

197 The bad guys can sniff packets
Packet sniffing: broadcast media (shared Ethernet, wireless) promiscuous network interface reads/records all packets (e.g., including passwords!) passing by A C src:B dest:A payload B Wireshark software is a (free) packet-sniffer Introduction

198 The bad guys can use false source addresses
IP spoofing: send packet with false source address A C src:B dest:A payload B Introduction

199 The bad guys can record and playback
record-and-playback: sniff sensitive info (e.g., password), and use later password holder is that user from system point of view C A src:B dest:A user: B; password: foo B Introduction

200 Network Security more throughout this course
chapter 8: focus on security crypographic techniques: obvious uses and not so obvious uses Introduction

201 Chapter 1: roadmap 1.1 What is the Internet? 1.2 Network edge
end systems, access networks, links 1.3 Network core circuit switching, packet switching, network structure 1.4 Delay, loss and throughput in packet-switched networks 1.5 Protocol layers, service models 1.6 Networks under attack: security 1.7 History Introduction

202 Internet History 1961-1972: Early packet-switching principles
1961: Kleinrock - queueing theory shows effectiveness of packet-switching 1964: Baran - packet-switching in military nets 1967: ARPAnet conceived by Advanced Research Projects Agency 1969: first ARPAnet node operational 1972: ARPAnet public demonstration NCP (Network Control Protocol) first host-host protocol first program ARPAnet has 15 nodes Introduction

203 Internet History 1972-1980: Internetworking, new and proprietary nets
1970: ALOHAnet satellite network in Hawaii 1974: Cerf and Kahn - architecture for interconnecting networks 1976: Ethernet at Xerox PARC ate70’s: proprietary architectures: DECnet, SNA, XNA late 70’s: switching fixed length packets (ATM precursor) 1979: ARPAnet has 200 nodes Cerf and Kahn’s internetworking principles: minimalism, autonomy - no internal changes required to interconnect networks best effort service model stateless routers decentralized control define today’s Internet architecture Introduction

204 Internet History 1980-1990: new protocols, a proliferation of networks
1983: deployment of TCP/IP 1982: smtp protocol defined 1983: DNS defined for name-to-IP-address translation 1985: ftp protocol defined 1988: TCP congestion control new national networks: Csnet, BITnet, NSFnet, Minitel 100,000 hosts connected to confederation of networks Introduction

205 Internet History 1990, 2000’s: commercialization, the Web, new apps
Early 1990’s: ARPAnet decommissioned 1991: NSF lifts restrictions on commercial use of NSFnet (decommissioned, 1995) early 1990s: Web hypertext [Bush 1945, Nelson 1960’s] HTML, HTTP: Berners-Lee 1994: Mosaic, later Netscape late 1990’s: commercialization of the Web Late 1990’s – 2000’s: more killer apps: instant messaging, P2P file sharing network security to forefront est. 50 million host, 100 million+ users backbone links running at Gbps Introduction

206 Internet History 2007: ~500 million hosts Voice, Video over IP
P2P applications: BitTorrent (file sharing) Skype (VoIP), PPLive (video) more applications: YouTube, gaming wireless, mobility Introduction

207 Internet 2010 Introduction

208 Internet 2010 Introduction

209 Facebook Introduction


Download ppt "Protocoles réseaux Sommaire (prévision): Couche liaison de données"

Similar presentations


Ads by Google