ISS7AE - Networks

Networks

Responsable : Laurent CIARLETTA, Maître de Conférences

Laurent.Ciarletta@mines.inpl-nancy.fr

Durée du module : 21 heures

Crédits ECTS : 2

Mots clés : Réseaux, protocoles

Pré-requis : Notions de programmation, de système

Objectif général : Connaissances théoriques et pratiques des réseaux informatiques et leurs applications

Programme et contenu :

Il s'agit d'acquérir une compréhension générale du fonctionnement d’un réseau de communication, afin d’en comprendre les limites et les performances et d’être capable de l’exploiter dans un contexte applicatif de plus haut niveau.

Ce cours combine l’étude plus théorique de la famille de protocoles TCP/IP avec des séances de TD qui mettront l’accent sur la configuration de réseaux pour le routage, la programmation d’applications client-serveur ou la mise en place de services sous TCP/IP.

Thèmes abordés :

• Réseaux ; introduction, types de réseaux, notion de protocole, modèle en couches

• Réseaux TCP/IP ; protocoles ARP, IP, ICMP, TCP, UDP, multicast, routage, programmation client/serveur

• Services ; DNS, HTTP, SMTP, NIS, LDAP, SNMP

Biblographie :

Kurose and Ross, Computer Networking: A Top-Down Approach: International Edition, Pearson 2012

Tanenbaum, Computer Networks: International Edition, Pearson 2010

Pujolle et Salvatori, les réseaux, Eyrolles, 2010

Liens vers les PDF des cours :

  1. Cours 1
  2. Cours 2
  3. Cours 3

Node JS

installer ;

tcp-server;

autre;

Socket.io

socket-io

-------------------------------------

TP Client Serveur

Première partie : clients et serveurs simples

Allez voir ici: 2017_AllInOne.zip

Exercice 1 : y a t'il quelqu'un pour me répondre ( écho!écho! écho! écho! )

Vous allez programmer votre premier client réseau. Pour cela, partez des fichiers d'exemple et modifiez les si nécessaire.

Exercice 2 : votre propre serveur d'écho

Programmez votre premier serveur d'écho. Testez le contre votre serveur/

Terminer proprement les connexions

Pour l'instant, vous fermez probablement les connexions de manière assez radicale.

Faites en sorte que si le message que vous envoyez au serveur est "quitter" ou "Quitter" ou "QuIttEr", celui-ci ferme tout proprement.

Exercice 3 : un client et un serveur multi-usage

Modifiez votre serveur (et si besoin est votre client) pour qu'il puisse répondre à un certain nombre de questions :

  • l'heure
  • le jour
  • qui est là?
  • tirer un entier au hasard
  • Une bonne blague
  • quel temps fait il? (tiré au hasard dans une liste de réponses possibles
  • la somme de 2 entiers
  • etc...

Pour ce faire vous allez devoir envoyer des commandes. Il s'agit de faire comme avec la commande "quitter" précédente

Deuxième partie : aller plus loin

Exercice 4 : pierre - papier - ciseaux

Programmez une application client - serveur selon le jeu bien connu "pierre - papier - ciseaux".

Dans un premier temps, vous jouez contre l'ordinateur (le serveur) qui tirera au sort sa réponse.

Vous pouvez remarquer qu'il est assez facile de faire un serveur qui triche!

Vous pouvez ajouter la possibilité de compter le score, de faire des statistiques sur le nombre de victoires, voire de rendre le serveur intelligent si vous pensez avoir une bonne stratégie (dans ce cas vous pouvez vérifier celle-ci en créant un client automatique affrontant votre serveur intelligent ou réciproquement.

Troisème partie (pour ceux qui avancent vite): un client graphique et/ou un serveur qui répond à plusieurs clients

Exercice 5 : pierre - papier - ciseaux contre un adversaire humain

Il s'agit maintenant de faire en sorte que votre client et votre serveur (le serveur est celui avec qui un autre joueur se connecte) soient manipulés par des utilisateurs humains de manière interactive.

Exercice 5 bis: pierre - papier - ciseaux graphique

En utilisant ce que vous avez vu les semaines passées, programmez le jeu de manière graphique.

Lien super secret vers la page du cours Advanced Software