Tout d'abord merci d'avoir pris le temps de me répondre.
En fait, au niveau de la théorie sur le principe d'encapsulation et les sockets c'est plus au moins ok.
Par contre ce qui me pose problème c'est de réaliser tout ça en C.
Pour la création de la socket je pense que c'est bon, je peux créer une socket TCP de la manière suivante, non?
int s = socket(AF_INET, SOCK_STREAM, IPPROTO_RAW);
Ensuite dois-je lui affecter l'option IP_HDRINCL pour pouvoir modifier l'entête IP?
setsockopt(s,IPPROTO_IP,IP_HDRINCL,(char*)&x,sizeof(x))
Par contre pour ce qui est de la création des paquets IPV4 et IPv6, j'ai du mal... 
J'ai trouvé des choses sur le forum et sur d'autres sites mais j'ai du mal à comprendre comment procéder.
Partager