vendredi 12 mars 2010

Travail élaboré par: Chebbi lamis - Ellouze hana




objectif:







Traçage des appels des fonctions de la pile TCP/IP





Aprés avoir recompilé un noyau LUNIX 2.6.33 on a introduit des messages à l'aide de la fonction printk ( KERN_DEBUG "message ( hello ensi) nom-fonc" ) qui seront affichés dans le fichier var/log/syslog ce qui nous permettra donc, en ouvrant ce fichier, de repérer la fonction à savoir son nom:





































Couche de routage IP (internet protocol):







Quelques fonctions appelées :




  • ip_rcv: localisée dans ip_input.c ; c'est la premiére fonction qui sera appelée , elle controle le paquet IPV4 en vérifiant l'absence des erreurs dans l'entete


  • ip_rcv_finish : appelée par ip_rcv , dans laquelle s'effectue la recharche d'une route pour le paquet ce qui nécessite lintroduction de ip_route_input (pour calculer la route du paquet) ou ip_route_input_slow (si aucune route n'a été trouvée!


  • ip_queue_xmit : pour le routage et la creation des entete


  • ip_local_deliver : appelée par ip_rcv_finish si le paquet doit etre délivrer localement ( pour délivrer le paquet aux couches de la pile de protocoles situés au dessus de IP ) --> ip_local_deliver_finish --> ip_send --> ip_finish_output (le paquet quitte donc le noyau)


  • ip_forward : appelée aussi par ip_rcv_finish mais dans le cas ou le paquet doit etre forwadé vers la destination (pour vérifier ou modifier le paquet) --> ip_forward_finish --> ip_send --> ip_finish_output (le paquet quitte donc le noyau)







Couche de transport TCP (transmission control protocol) :



c'est la couche qui controle le transport de paquets , elle permet de gérer les données de la couche inférieure (protocole IP )




Quelques fonctions appelées:




  • tcp_sendmsg : permet l'envoi d'un message en mode connexion (adresse de destination non ignorée ) ou en mode sans connexion ( adresse de destination ignorée


  • tcp_rcvmsg : permet de recevoir un message en mode connexion ou sans connexion



  • tcp_v4_rcv : pour le traitement du protocole (exécution des controles de flux )


  • tcp_rcv_established : si un processus est en attente de données pour arriver , ces derniéres sont immédiatement copiées à l'espace utilisateur


  • tcp _connect: permet de créer un client TCP
































































































































































































vendredi 19 février 2010

travail élaboré par: Trabelsi nahed- Chebbi lamis- Ellouze hana

1/Installation et configuration de hostap:
on installe hostapd via les commandes :
sudo apt-get install hostapd
sudo apt-get remove hostapd
on télecharge le paquet libnl-dev et puis on télecharge hostapd 0.6.9.tar.gz
afin de configurer hostapd on utilise les commandes suivantes:
cp defconfig .config
vi .config (on décommente la ligne contenant driver = nl80211)
on compile à la suite en utilisant les commandes :
sudo make
sudo make install
sudo apt-get install libssl-dev
sudo gedit hostapd.conf
On insére les lignes suivantes :
interface = wlan0
driver=nl80211
ssid = Nahed
channel = 12
hw_mode = 8
macaddu_acl=0
Et enfin on démare notre nouveau point d'accés en utilisant la commande
sudo hostapd -dd /etc/hostapd/hostapd.conf













2/Installation et configuration de VLC :

On installe VLC streaming sur les deux machines 'client' et 'serveur' en utilisant les commandes suivantes:
sudo apt-get update
sudo apt-get install vlc

on se place ensuite sur la machine 'serveur' et on insert la commande qui suit afin de pouvoir envoyer le flux de vidéo nommé rise.mpg situé sous: /home/lamousa/Documents
vlc -vvv /home/lamousa/Documents/rise.mpg --sout '#transcode{vcodec=mp4v,vb=800} :duplicate{dst=standard{access=udp,mux=ts,dst=172.16.102.40:1234},dst=display}'
Cette commande comporte des modules et des options:

vcodec :c'est un algorithme de compression utilisé pour réduire la taille du flux
vb : sert à fixer le débit du flux vidéo transcodé en Kbits/s, pour notre cas il s'agit d'un débitde 800 Kbits/s
duplicate : pour dupliquer le flux (faire une copie à l'identique)
standard : permet d'enregistrer le flux dans un fichier ou le diffuser sur le réseau après l'avoir multiplexé; il comprend les options suivantes:
access=udp : le protocole udp permet de diffuser vers une adresse udp unicast ou multicast
mux=ts : permet de choisir la méthode d'encapsulation (un format de méthode) utilisée dans le flux , dans notre cas pour l'udp on a choisi MPEGTS
dst=172.16.102.40:1234 :informe sur l'emplacement ou le flux doit etre envoyé ou enregistré (adresse IP du 'client' :172.16.102.40 ,via le port du protocole utilisé :1234 )
dst=display : pour afficher le flux

On se place maintenant sur la machine 'client' et on utilise la commande qui suit pour pouvoir recevoir le flux VLC :
vlc udp://@172.16.102.40:1234
avec 172.16.102.40 est l'adresse IP de la machine 'client'


















3/Istallation et configuration de TCPstat:
On se place sur la machine 'client' et on installe le TCPstat à l'aide des commandes suivantes:
sudo apt-get update
sudo apt-get install tcpstat
En lançant la diffusion streaming entre les machines 'serveur-client' , on introduit la commande :
sudo tcpstat -i wlan0 -o '%S %B\n' 1.6 > test.txt
TCPstat nous a permis donc de mesurer le débit et de récupérer les résultats suivants:













4/Installation et configuration de Gnuplot :

On installe sur la machine 'client' , l'outil de traçage Gnuplot en utilisant les commandes suivantes :
sudo apt-get update
sudo apt-get install gnuplot
Les données produites par TCPstat seront donc représentées graphiquement en utilisant gnuplot à l'aide des commandes :
gnuplot
>set title "débit=f(temps)
>set xlabel "temps(s)"
>set ylabel "débit(bps)"
>set size 1.1
>plot "test.txt" using 1:2 with lines

On obtient donc la courbe suivante:

































































































































































jeudi 28 janvier 2010

élaboré par: lamis chebbi / hana ellouze


I- apache :

C'est un serveur web couramment utilisé sur Internet ; il utilise la plateforme UNIX. Pour installer ce serveur web on a appliqué, sous un terminal , les commandes suivantes:
  • sudo apt-get update
  • apt-get install apache2 (pour l'installation)
  • /etc/init.d/apache2 start (pour le démarrage )
quand l'installation a été achevée on a ouvret le navigateur sur l'adresse : 'http:// 127.0.0.1' ou ' http://localhost ' on a aperçu alors la page suivante: it works

Le fichier de configuration est donc obtenu en tapant sous le Terminal:
  • sudo gedit /usr/local/apache2/conf/httpd.conf

Le fichier httpd.conf est bien commenté et parle de lui-meme:


#
# This is the main Apache HTTP server configuration file. It contains the

# configuration directives that give the server its instructions.

# See for detailed information.

# In particular, see
#

# for a discussion of each configuration directive.

#

# Do NOT simply read the instructions in here without understanding

# what they do. They're here only as hints
or reminders. If you are unsure
# consult the online docs. You have been warned.

#

# Configuration and logfile names: If the filenames you spec
ify for many
# of the server's control files b
egin with "/" (or "drive:/" for Win32), the
# server will use that explicit path. If the filenames do *not* begin

# with "/", the value of ServerRoot is prepended -- so "logs/foo_log"

# with ServerRoot set to "/usr/local/apache2" will be interpreted by the

# server as "/usr/local/apache2/logs/foo_log".

#

# ServerRoot: The top of the directory tree under which the server's

# configuration, error, and log files are kept.

#

# Do not add a slash at the end of the directory path. If you point

# ServerRoot at a non-local disk, be sure to point th
e LockFile directive
# at a local disk. If you wish to share the same ServerRoot for multiple

# httpd daemons, you will need to change a
t least LockFile and PidFile.
#

ServerRoot "/usr/local/apache2"


  • Listen:

La directive Listen enjoint Apache à écouter plus d'une adresse IP ou port; par défaut Apache répond aux requêtes reçues sur toutes les interfaces IP, mais seulement celles arrivant sur le port donné par la directive Port. Listen peut être utilisée à la place de BindAddress et Port. Elle indique au serveur d'accepter des requêtes entrantes sur le port spécifié ou sur une combinaison adresse-port. Si le premier format est utilisé (avec seule mention d'un numéro de port), le serveur "écoutera" tous les ports spécifiés sur chacune des interfaces IP qu'il connaît, plutôt que sur le port donné par la directive Port. Si une adresse IP adresse IP est précisée en complément, le serveur restreindra son écoute à la combinaison adresse-port précisée. Mais on a toujours besoin de la directive Port qui permettent à Apache de générer les URL de retour vers votre serveur. Dans notre cas on a la configuration suivante:
#
#Listen 12.34.56.78:80

Listen 80

Pour autoriser le serveur à accepter des connexions sur les ports 80 et 8000,on peut la modifier par:

Listen 80
Listen 8000

et pour autoriser un serveur à accepter des connexions sur deux "sockets" qualifiés, on écrit :
Listen 192.170.2.1:80
Listen 192.170.2.5:8000


  • Document root:

#
# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to
other locations.
#

DocumentRoot "/usr/local/apache2/htdocs
"

DocumentRoot "/usr/local/apache2/htdocs" est le répertoire Racine du site , à savoir que tous les fichiers , répertoires , sous répertoires s'y trouvant seront en Ligne.

  • ErrorDocument:
#
# ErrorLog: The location of the error log file.

# If you do not specify an ErrorLog directive within a

# container, error messages relating to that
virtual host will be
# logged here. If you *do* define an error logfile for a

# container, that host's errors will be logged there and not here.

#

ErrorLog "logs/error_log"


Permet de gérer les erreurs de requête client , document non trouvé , erreur interne , documents privés etc...
  • files:
permet une gestion de contrôle d'accès fichier par fichier . Les sections sont traitées dans l'ordre où elles apparaissent dans le fichier de configuration

  • FilesMatch:

#
# The following lines prevent .htaccess and .htpasswd files from being

# viewed by Web clients.

#

[FilesMatch "^\.ht"]
Order allow,deny
Deny from alL
Satisfy AlL
[/FilesMatch]

#


Permet un contrôle d'accès fichier par fichier, tout comme la directive files . Cependant, elle n'accepte qu'un argument sous forme d'expression régulière. on peut modifier la configuration précédente par exemple par:

[FilesMatch "\.(gif|jpe?g|png)$"]

qui correspondrait à la plupart des fichiers graphiques utilisés sur Internet.


  • Directory:
#
[Directory "/usr/local/apache2/cgi-bin"]

AllowOverride None

Options None

Order allow,deny

Allow from all

[/Directory]


est utilisée pour "encapsuler" un groupe de directives applicables uniquement au réprtoire indiqué ainsi qu'à ses sous-répertoires. si l'accès par défaut d'Apache pour les sections est 'Allow from All'. Ceci veut dire que par défaut, Apache desservira tout fichier indiqué par une URL,mais si on modifie ceci à l'aide du bloc:
[Directory /]
Order Deny,Allow
Deny from All
[/Directory /]

dans ce cas l'accès par défaut d'apache pour les sections ne sera pas toujours autorisé .
Fonctionnement d'apache:

Au moment de son démarrage, Apache charge le fichier de configuration de machine locale et se met en attente de la requêtes sur les interfaces réseaux.

Lorsque on utilise le navigateur Web (un client HTTP) ;on effectue en fait une requête :

  • Le client se connecte au serveur
  • Le client effectue une requête HTTP sur le serveur, par la méthode GET du protocole HTTP il lui demande une page ;
  • Après l'analyse de la requête, le serveur renvoie la page concernée sous forme de code dont on peut spécifier le format de données
  • Une fois toutes les données envoyées, le serveur ferme la connexion ;
  • Parallèlement le client analyse et construit l'affichage à partir du code reçu

II-wireshark:

Wireshark est l'analyseur réseau le plus populaire du monde. Cet outil extrêmement puissant fournit des informations sur des protocoles réseaux et applicatifs à partir de données capturées sur un réseau.

La force de Wireshark vient de:
- sa facilité d'installation.
- sa simplicité d'utilisation de son interface graphique.
- son très grand nombre de fonctionnalités.

pour installer wireshark on a appliqué sous un Terminal les commandes suivantes:

  • sudo apt-get install wireshark

puis on l'ouvre avec:
  • sudo wireshark



En
ouvrant le navigateur à l'adresse http://127.0.0.1 on a aperçu it works
en retournant à wireshark on a obtenu :
















  • PANNEAU LISTE DES PAQUETS (PACKET LIST PANE):
Le panneau "liste des paquets" affiche tous les paquets capturés. on peut obtenir des informations telles que les adresses IP/MAC source ou destination, le numéro de port TCP/UDP ou le contenu des paquets.
  • PANNEAU DETAILS DE PAQUET (PACKET DETAILS PANE):

Le panneau "détails de paquet" donne des informations en profondeur sur un paquet sélectionné dans le panneau "liste des paquets"


Au bas de la plate-forme, on trouve les informations suivantes:

-Si la capture est en cours ou stoppée.(dans notre cas: live capture in progress)
- Le nombre de paquets capturés. (P) (dans ce cas: 11)
- Le nombre de paquets affichés. (D) (dans ce cas: 11)
- Le nombre de paquets marqués. (M) (dans ce cas :0)


Pour effectuer une capture, il faut aller dans le menu Capture / Interface (ou cliquer sur le bouton correspondant).

Une nouvelle fenêtre comportant la liste des interfaces réseaux disponibles va apparaitre:















Pour démarrer la capture il suffit de presser le bouton Start. Wireshark va alors capturer les paquets jusqu'à ce que le bouton Stop soit pressé. Pour analyser le contenu d'un paquet, il faut d'abord le sélectionner dans la liste des paquets capturés. par exemple on trouve de telles couches:

















  • couche 2 (Ethernet )
  • couche 3 (Internet Protocol - IP)
  • couche 4 (Transmission control protocol - TCP)
Et pour aller plus en détail, par exemple sur le niveau IP (là où se trouve les adresses source et destination), il suffit de cliquer sur la ligne en question.