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