lundi 8 mars 2010

1.Introduction:



Le but de cet exercice est de connaître les fonctions permettant le dialogue entre les différentes couches du modelé tcp/ip dans les deux sens.


2.Solution:

pour la réalisation de cet exercice nous avons compilé le noyau 2.6.32 et auquel nous avons apporté des modifications. Ces modifications se limite à l'ajout des fonctions "printk" au niveau de l'implémentation des différentes fonctions existants dans le code source de linux.

notre solution est divisé en deux parties. la première va porter sur les fonction appelées lors de l'envoi des messages et l'autre sur sur les fonction appelées lors de la réception.


2.1.Envoi des paquets:

les fonctions à modifiées sont:



net/socket.c:


-sock_write:

cette fonction permet d'écrire un flux d'octets dans le socket ouvert spécifiée.

-sock_sendmsg


net/ipv4/af_inet.c :


-inet_sendmsg


net/ipv4/tcp.c :


-tcp_sendmsg


net/ipv4/tcp_output.c :


-tcp_transmit_skb :

elle assure le contrôle de la couche réseau.


net/ipv4/ip_output.c :


-ip_queue_xmit :

son rôle principale est le routage.


2.2.Reception des paquets:

les fonctions à modifiées sont:



net/socket.c :


-sock_read


net/ipv4/tcp.c :

-tcp_recvmsg


net/ipv4/tcp_ipv4.c :


-tcp_v4_rcv :

elle permet d'établir des connexions, le contrôle de flux...

-tcp_v4_do_rcv :

cette fonction met le paquet reçu dans la file de réception


net/ipv4/ip_input.c :


-tcp_rcv :

cette fonction est appelée lorsque les opérations relatives à la couche 2 (liaison) sont effectuées et si le paquet reçu est du type IP en version 4 .elle permet aussi la vérification de l'en-tête IP. Et pour passer à la fonction suivante(ip_rcv_finish) elle utilise le système de hook de netfilter.

-ip_local_deliver :

elle permet l'envoi les paquets IP récoltés vers la couche tcp.

captures des appels de fonctions