IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Problème de compréhension de header IP


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut Problème de compréhension de header IP
    Bonjour,

    Suite à l'étude des sockets, j'ai vu que l'on pouvait modifier les propriétés des paquets IP via les sockets. Cependant j'ai du mal à comprendre ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iphdr *HeaderIP=(iphdr*)trame;
    tcphdr *HeaderTCP=(tcphdr*)(sizeof(iphdr)+trame);
    Je vois qu'il s'agit de la déclaration de deux pointeurs qui pointent vers un type iphdr mais je ne saisis pas la suite (iphdr*)trame. Est ce que c'est un autre pointeur trame qui pointe vers la même chose ; je croyais que trame était un tableau de 4096 éléments ?

    Merci pour vos conseils.

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Ce n'est pas une question spécifique au rôle de ton programme (construction d'un paquet TCP).

    iphdr *HeaderIP = (iphdr *)trame; : on déclare ici un pointeur de type iphdr * et on l'initialise à la valeur stockée dans trame, probablement l'adresse d'un tampon mémoire de type char * même si tu ne le précises pas. Après cette instruction, HeaderIP et trame désigneront la même zone mémoire au contenu de laquelle on accédera toutefois différement selon le type du pointeur utilisé. En somme les données sont les mêmes et c'est une simple différence d'interprétation.

    La ligne suivante effectue une opération similaire avec une autre adresse un peu plus loin dans le tampon. Les casts (iphdr *) et (tcphdr*) sont là pour dire au compilateur : « ok j'affecte une adresse provenant d'un pointeur de type incompatible mais sois tranquille, je sais ce que je fais ».


    D'une manière générale, postes le code en entier lorsque tu poses une question car nous n'avons pas connaissance du contexte.

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    En fait, cela vient de la composition d'un paquet réseau (attention, je ne considère ici que des paquets TCP utilisant le protocole IP sur ethernet), qui se compose de la manière suivante :
    • En-tete Ethernet + donnees
    • Ces donnees sont en fait un en-tete IP et des donnees
    • Ces donnees sont en fait un en-tete TCP et des donnees


    Ou si tu preferes :
    • en-tete Ethernet
    • En-tete IP
    • En-tete TCP
    • les donnees "reelles"


    Donc ici, le code se contente de mettre un pointeur (pardon pour l'abus de langage) sur le header IP, puis un second pointeur sur "en-tete IP + taille de l'en-tete IP", c'est a dire un pointeur sur l'en-tete TCP.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut
    je vois plus clairement maintenant. Je vous remercie de vos explications.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] problème de compréhension
    Par Sylvester dans le forum Général Java
    Réponses: 18
    Dernier message: 21/07/2005, 09h16
  2. Réponses: 5
    Dernier message: 11/04/2005, 10h21
  3. [C#] Problème de compréhension de System.Convert ET Provider
    Par papouAlain dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/11/2004, 21h52
  4. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 15h09
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo