Sujet Projets 2 nd Semestre



Documents pareils
Network musical jammin

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards

Environnements informatiques

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Live box et Nas Synology

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Les serveurs WEBUne introduction

SSH. Romain Vimont. 7 juin Ubuntu-Party

Création d un compte No-IP et configuration

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

MANUEL D INSTALLATION D UN PROXY

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

Introduction aux Systèmes et aux Réseaux

Figure 1a. Réseau intranet avec pare feu et NAT.

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Présentation du modèle OSI(Open Systems Interconnection)

Saisie sur un ordinateur OS/390 Ici sur jedi.informatik.uni-leipzig.de ou

Utilisation du client de messagerie Thunderbird

TUTORIAL ULTRAVNC (EDITION 2)

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Chapitre 4 : Exclusion mutuelle

Cisco Certified Network Associate

Table des matières Hakim Benameurlaine 1

Programmation système en C/C++

Application Web et J2EE

(structure des entêtes)

Simulation d un système de paiement par carte bancaire

Smart Notification Management

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

HYBIRD 120 GE POUR LES NULS

Réalisation d un portail captif d accès authentifié à Internet

Protéger une machine réelle derrière une machine virtuelle avec pfsense

Introduction. Adresses

Objet du document. Version document : 1.00

Atelier Le gestionnaire de fichier

Contrôleur de communications réseau. Guide de configuration rapide DN

Poker. A rendre pour le 25 avril

Serveurs de noms Protocoles HTTP et FTP

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Virtual PBX Quick User Guide

Guide de l utilisateur de Cisco Unified Communications Manager Assistant pour Cisco Unified Communications Manager 6.0

VIDÉOSURVEILLANCE. Procédures de paramétrage des différentes box du marché

TAGREROUT Seyf Allah TMRIM

TP, première séquence d exercices.

Les différentes méthodes pour se connecter

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Protocoles réseaux. Abréviation de Binary Digit. C'est la plus petite unité d'information (0, 1).

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

Sécurité des réseaux Les attaques

Configurer le pare-feu de Windows XP SP2/Vista pour UserLock

Pratique et administration des systèmes

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Mettre en place un accès sécurisé à travers Internet

NiceLabel pour Services Microsoft Windows Terminal Serveur et Citrix MetaFrame

Dans l'épisode précédent

Documentation de conception

Tutorial Terminal Server sous

Programmation Web. Madalina Croitoru IUT Montpellier

Couche application. La couche application est la plus élevée du modèle de référence.

Administration Réseau sous Ubuntu SERVER Serveur DHCP

Serveur FTP. 20 décembre. Windows Server 2008R2

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

MISE EN PLACE DU FIREWALL SHOREWALL

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

Le routeur de la Freebox explications et configuration

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

TCP/IP, NAT/PAT et Firewall

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Services Réseaux - Couche Application. TODARO Cédric

Cloud public d Ikoula Documentation de prise en main 2.0

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Installation et utilisation du client FirstClass 11

Mise en place d un système de Téléphonie sur IP basé sur le logiciel Asterisk

Cours Programmation Système

TP 1 Prise en main de l environnement Unix

Administration Centrale : Opérations

Manuel du logiciel PrestaTest.

Guide de configuration de la Voix sur IP

Mieux comprendre les certificats SSL THAWTE EST L UN DES PRINCIPAUX FOURNISSEURS DE CERTIFICATS SSL DANS LE MONDE

FileMaker Server 14. Aide FileMaker Server

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Introduction à MATLAB R

Manuel d utilisation du logiciel de messagerie personnelle Palm VersaMail 2.5

Serveur de messagerie sous Debian 5.0

Table des matières Hakim Benameurlaine 1

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services

Programmation Internet Cours 4

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Module Communication - Messagerie V6. Infostance. Messagerie

MANUEL D INSTALLATION

Sécurité des réseaux Firewalls

Utilisation du module Scribe IMPORTATION DES COMPTES

Travaux Pratiques Introduction aux réseaux IP

Transcription:

Sujet Projets 2 nd Semestre Seuls les appels systèmes vus en cours sont autorisés. L usage d autres fonctions doit impérativement être validé par l enseignant. La date d ouverture pour l assignation de projets est le 14 Mai à 18h30. Les mails envoyés avant cette date ne seront pas pris en compte. Les étudiants doivent proposés au moins 6 sujets par ordre de préférence. Les groupes doivent être constitués obligatoirement de 2 personnes pour les SR et d une seule pour les AL. Les mails doivent être envoyés à l adresse suivante : anthony.busson@u-psud.fr. Mini-shell : Il y a 9 mini-shells. La base est toujours la même. Un prompt simple est affiché (>), une chaîne de caractère est saisie au clavier et traitée par votre minishell. Lorsque cette chaîne de caractère correspond simplement à une commande, il faut lancer cette commande (execl). Les dossiers dans lesquels on cherche l exécutable correspondant à cette commande sont fixés par la variable d environnement PATH (voir getenv()). Une fois la commande exécutée le prompt (>) s affiche de nouveau. La commande cd doit être interne à votre shell. 1. Lancement de commandes avec complétion (recherche dans le PATH) et des noms de fichiers. Attente de la terminaison de la commande avant réaffichage du prompt. 2. Lancement de commandes dans le PATH. Pas de complétion. Gestion des commandes : a. Commande1 commande2 b. Commande1 && commande2 c. Commande1 & d. Commande1 ; commande2 3. Lancement des commandes du PATH et gestion de toutes les redirections : a. commande > fichier b. commande < fichier c. commande >> fichier d. commande 2> fichier e. commande1 commande2 4. Lancement des commandes du PATH et du répertoire local. Gestion des variables. a. Assignation : mavar=12 b. Remplacement des valeurs : echo $mavar (doit fonctionner pour n importe quelle commande). 5. Lancement des scripts. Lancement des commandes usuelles. Si la commande commence par le mot clé script l argument suivant doit correspondre à un script. Ces scripts ne doivent contenir que des commandes du PATH ou des scripts précédé du mot clé script. Le script doit être exécuté dans un sous shell (de votre shell a vous). Exemple : a. > script monscript (doit exécuter le script monscript). 6. Lancement des commandes du PATH. La commande mkfifo doit être implémentée comme une commande du shell. Les redirections de processus sur le pipe nommé doivent être gérées pour permettre la communication entre des processus indépendant. Exemple : a. > mkfifo nomdupipe b. > commande1 > nomdupipe c. > commande2 < nomdupipe

7. Ecrire un mini-shell qui lance toutes les commandes en tache de fond. Un appel a wait doit être effectue lorsqu un processus est terminé (avec affichage du pid du processus qui s est terminé) sans que cela bloque le mini-shell (utilisation des signaux). 8. Ecrire un mini-shell qui lance toutes les commandes du PATH. Il devra aussi implémenter le «if» : a. if commande1 ; then liste_de_commande ; fi 9. Ecrire un mini-shell quii lance toutes les commandes du PATH. Il devra aussi implémenter le for (celui du shell). Les commandes pourront prendre des arguments, en particulier la valeur de la variable de la boucle. Exemples : a. for var in liste_de_mots ; do listedecommandes ; done b. for var in mot1 mot2 mot3 ; do echo $mot1 ; done Autres 10. Circulation de messages entre 5 processus. Vous devez créer 5 processus (issu de fork). Un message devra circuler de processus en processus toujours dans le même ordre. Le moyen de communication sera le pipe. Par exemple : le processus 1 envoi message-pid1. Ce message est reçu par le processus 2 et affiché. Le processus 2 rajoute son pid au message (message-pid1-pid2), etc. Un nouveau message est généré toutes les secondes par le processus 1. 11. Ecrire deux processus. Les deux processus ne sont pas issus d un fork. Ils affichent leur pid toutes les secondes. Chaque processus attend un temps aléatoire compris entre 0 et 10 secondes. A la terminaison de ce temps, le processus demande a l utilisateur de taper une chaîne de caractères. Le processus émet alors un signal à l autre processus pour lui indiquer qu il veut lui envoyer un message. Le message sera alors envoyé à l autre processus. Celui-ci devra interrompre l affichage de son pid, devra affiché «Vous avez reçu un message» et afficher le message. Les deux processus ne devront pas être issu d un fork et devront être exécutés dans deux consoles différentes. 12. Ecrire un programme qui lit et affiche un fichier texte fixé à l avance comportant deux colonnes. La première colonne est un ensemble de mots en français et la seconde leur traduction en anglais. Le fichier doit être chargé par votre programme et le dictionnaire doit être géré au travers de variables, tableaux ou liste chaînée par votre programme. Le processus affiche son pid et se met en attente sur l entrée standard, l utilisateur tape un nom en français et le processus affiche l équivalent en anglais, puis il se remet en attente. Si l utilisateur tape sur Ctrl-C, votre programme affichera un message «Souhaitez vous quitter l application», si l utilisateur tape oui votre programme s arrêtera, sinon il se remettra en attente de nouveau mot. Le fichier contenant les mots peut être modifié durant l exécution du programme. L émission d un signal SIG_HUP indiquera à votre processus de recharger son fichier de mots. 13. Votre programme devra lancer 10 threads. Chaque thread devra écrire dans un fichier 3 lignes saisies par l utilisateur. Une fois les 3 lignes saisies le thread écrira les 3 lignes dans le fichier. Bien sûr, les 10 threads ne peuvent pas demandé à l utilisateur les 10 lignes en même temps. Un thread doit attendre que le thread précédent ait récupéré ces 3 lignes pour demander à son tour les 3 lignes à l utilisateur. Les lignes écrites dans le fichier devront avoir le format suivant «N DuThread : ligne_tapée_par_l utilisateur». 14. Ecrire trois programmes qui seront lancé dans la même console (./prog1 &./prog2 &./prog3 &). Chacun devra afficher un message sur le terminal mais dan ordre précis et toujours le même. Le temps entre la génération de deux messages correspondra a un tirage aléatoire entre 0 et 5sec. Ces temps aléatoire permettent de désynchroniser la

génération des messages. Vous devez cependant garantir que l écriture des messages est affichée dans le bon ordre. 15. Ecrire un programme qui permet de jouer au morpion. Les cases du jeu du morpion pourront être numérotées A1, A2, A3, B1,,C3. Lors du jeu votre programme se met en attente de la case joué par l utilisateur, l utilisateur rentre les coordonnées de la case dans laquelle il joue. Votre programme jouera alors à son tour (vous pouvez tirer une case au hasard si vous ne souhaitez pas établir de stratégie). Après chaque coup votre programme devra affiché le jeu, cela pourra se faire très simplement sous la forme : A B C 1 x o x 2 o o 3 x Bien sûr, lorsqu un des deux joueurs a aligné 3 pions, le jeu s arrête et un message de victoire s affiche. Votre programme peut jouer avec lui-même, dans ce cas le programme doit être lancé avec une option particulière. Le processus sera dupliqué par un fork et un pipe permettra de communiquer les coups. 16. Protocole de routage de type «vecteur de distance». Ecrire un programme qui génère 5 processus (fork). Les processus communiquent au travers de pipes nommées. Chaque processus émule un routeur ayant deux sous réseaux dont les adresses réseau sont tirées aléatoirement dans [1-223].0.0.0/8. Un processus aura un tube de communications avec 3 autres processus tiré au hasard. Un processus envoi un message contenant son vecteur de distance toutes les 30 secondes (utilisé une alarme) sur tous les pipes en écritures. Il y 10 processus qui seront lancé et qui correspondront à ce même programme. Les communications seront bidirectionnelles. A la réception des messages, l algorithme distance vector devra être appliqué pour mettre a jour une table de routage indiquant pour chaque processus quel est le prochain saut. 17. Boîte aux lettres. Ecrire un programme qui sera exécuté en tâche de fond. Il reçoit des emails d autre processus qui seront envoyés n importe quand. Le processus collecteur stocke ces emails tant qu ils n ont pas été lu. L attente sur un sémaphore (opéré par un thread) permettra au collecteur de savoir quand est ce qu un nouveau processus se connecte. L échange des messages devra se faire via des pipes nommés. 18. Test de débit des pipes. Ecrire un programme se dupliquant grâce à l appel à fork() et qui créer un tube de communication entre le père et les fils. Le but de ce sujet est de tester le débit du pipe. Il faut émettre 10Mo sur le pipe et en réception mesurer le temps entre le début de l émission et la fin pour calculer le débit. Faire de même avec 2 pipes et 3 processus. Ce qui est lu sur le premier pipe est renvoyé sur le second et on mesure le débit en bout de chaîne. 19. Programmation socket 1 : Implémenter un serveur http simple. Le serveur se met à l écoute sur le port 80 (pensez à arrêter votre serveur web si vous en avez un). Lors de l initialisation d une connexion TCP, vous ferez un fork(). Le père se remettra à l écoute des connexions entrantes. Le fils gérera la connexion. La chaîne envoyée par le client sera : CHAMP1 CHAMP2 Vous ne prendrez en compte que la première ligne décrivant le fichier à renvoyer. L ensemble des champs envoyés par le client se termine par un double retour chariot,

cela indique la fin de la requête. Votre serveur va chercher le fichier à renvoyer dans un répertoire particulier (c est généralement /var/www/ pour un serveur apache, vos prendrez autre chose dans le cadre de ce projet) et l enverra au client. Si le fichier n existe il faudra renvoyer un fichier html simple indiquant File not found!. N hésitez pas à tester votre serveur avec votre navigateur. 20. Programmation socket 2 : Implémenter un serveur http simple. Le serveur se met à l écoute sur le port 80 (pensez à arrêter votre serveur web si vous en avez un). Lors de l initialisation d une connexion TCP, la connexion entrante sera gérée par un thread. Le processus initial se remettra à l écoute des connexions entrantes. Le thread gérera la connexion. La chaîne envoyée par le client sera : CHAMP1 CHAMP2 Vous ne prendrez en compte que la première ligne décrivant le fichier à renvoyer. L ensemble des champs envoyés par le client se termine par un double retour chariot, cela indique la fin de la requête. Votre serveur va chercher le fichier à renvoyer dans un répertoire particulier (c est généralement /var/www/ pour un serveur apache, vos prendrez autre chose dans le cadre de ce projet) et l enverra au client. Si le fichier n existe il faudra renvoyer un fichier html simple indiquant File not found!. N hésitez pas à tester votre serveur avec votre navigateur. 21. Programmation socket 3 : Il s agit de coder un injecteur. Il s agit d un petit logiciel qui génère un certain nombre de requêtes http pour la même page web sur un serveur. Le but étant de tester les performances du serveur. Votre programme prendra 3 arguments :./monprogramme 127.0.0.1 www.nomdusite.fr index.html 112 Le premier argument est l adresse IP du serveur, le second la page web que l on souhaite tester et le troisième le nombre de téléchargements que l on souhaite effectuer. Votre programme doit mesurer le temps entre l émission de la première requête et la réception du dernier octet correspondant au dernier téléchargement. Pour l exemple ci-dessus, il s agit de mesurer le temps de téléchargement des 112 pages index.html. Ces requêtes doivent se faire en parallèle. Une connexion distincte sera ouverte pour chacune. Il faudra utiliser un fork() pour chacune d elle. La requête http doit avoir le format suivant : HOST : www.nomdusite.fr Vous pourrez tester votre injecteur sur n importe quel site. 22. Programmation socket 4 : Il s agit de coder un injecteur. Il s agit d un petit logiciel qui génère un certain nombre de requêtes http pour la même page web sur un serveur. Le but étant de tester les performances du serveur. Votre programme prendra 3 arguments :./monprogramme 127.0.0.1 www.nomdusite.fr index.html 112 Le premier argument est l adresse IP du serveur, le second la page web que l on souhaite tester et le troisième le nombre de téléchargements que l on souhaite effectuer. Votre programme doit mesurer le temps entre l émission de la première requête et la réception du dernier octet correspondant au dernier téléchargement. Pour l exemple ci-dessus, il s agit de mesurer le temps de téléchargement des 112 pages

index.html. Ces requêtes doivent se faire en parallèle. Une connexion distincte sera ouverte pour chacune. Il faudra utiliser un thread pour chacune d elle. La requête http doit avoir le format suivant : HOST : www.nomdusite.fr Vous pourrez tester votre injecteur sur n importe quel site. 23. Programmation socket 5 : Il s agit de coder un robot. Il s agit d un petit logiciel qui va rechercher tous les liens de toutes les pages web de manière récursives et qui les écrits dans fichier au fur et à mesure. Il faut d abord coder un petit client comme pour l exercice précèdent. Les arguments sont les mêmes que pour le projet 22. Les arguments correspondent au point de départ de votre robot. Il télécharge cette page web, la lit et recherche tous les liens. Pour chaque lien trouvé, il l écrit dans un fichier texte (toujours le même) puis effectue un fork(), le père continue de lire la page à la recherche des autres liens et le fils télécharge la page correspondant au lien, et effectue la même procédure. Le format d un lien sur une page html est le suivant : href='http://nomdusite/nomdelapage' 24. Programmation socket 6 : Il s agit de coder un robot. Il s agit d un petit logiciel qui va rechercher tous les liens de toutes les pages web de manière récursives et qui les écrits dans fichier au fur et à mesure. Il faut d abord coder un petit client comme pour l exercice précèdent. Les arguments sont les mêmes que pour le projet 22. Les arguments correspondent au point de départ de votre robot. Il télécharge cette page web, la lit et recherche tous les liens. Pour chaque lien trouvé, il l écrit dans un fichier texte (toujours le même) puis crée un thread, la fonction initiale continue de lire la page à la recherche des autres liens et le thread nouvellement créé télécharge la page correspondant au lien, puis effectue la même procédure. Le format d un lien sur une page html est le suivant : href='http://nomdusite/nomdelapage'