MOOC:Auto-eval Act21-exercice

From Livre IPv6

MOOC >Contenu>Quizzs


Session 5


<problem>
 <p>A partir d'un en-tête IPv6 retrouver la valeur de chaque champ de l'en-tête. Soit l'en-tête ci-dessous :</p>
<span style="font-family: courier new,courier;">
<pre>
    <tt> 60 00 00 15 00 40 06 2A  20 01 0D B8 00 C0 A0 01 </tt>
    <tt> 00 00 00 00 00 00 00 01  20 01 0D B8 A3 E7 A0 01 </tt>
    <tt> 00 00 00 00 00 00 C4 D9 </tt>

</span>

Lecture de la trace
Les octets ci-dessus sont représentés en hexadécimal. Chaque ligne comporte 16 octets (ou 128 bits) au maximum. Une ligne se découpe en 2 parties de 8 octets.

Utilisation du format d'un en-tête:
Le format de l'en-tête du paquet IPv6 est donné dans le document compagnon mais également dans le RFC 8200. Le schéma du format de l'en-tête du RFC 8200 est repris ci-dessous. Ce schéma se lit comme une représentation en mémoire pour des mots de 32 bits. Chaque ligne représente une "case" mémoire. Chaque tiret ("-") représente un bit. Il y a donc sur une ligne 32 bits (car 32 tirets). Nous rappelons qu'un mot de 32 bits est équivalent à 4 octets et qu'un octet se représente par 2 chiffres hexadecimaux. Si cela vous semble encore obscur, re-voyez l'activité 'La notation des adresses IPv6'.
Par exemple, le champ version est codé sur 4 bits et occupe la première position dans le premier mot de 32 bits. La valeur du champ version est indiquée par le premier chiffre (4 bits) du premier mot de 32 bits de l'en-tête d'un paquet IP.

   0             7               15                              31 bits
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version| Traffic Class |           Flow Label                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload Length        |  Next Header  |   Hop Limit   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
  

Conseil:
Il peut être avantageux pour certain champ de décomposer la valeur héxadécimale en binaire.

Note
Pour les questions qui suivent, les réponses sont à donner en hexadécimal ou en décimal. L'hexadécimal se note avec le préfixe 0x (et le 'x' en minuscule) et les lettres de 'a' à 'f' sont à écrire en minuscule comme par exemple pour indiquer la valeur 30 en hexadécimal, on écrira 0x1e.
On respectera aussi une représentation sous forme de 8 bits ou de mots de 16 bits. Aussi par exemple, on écrira 0x07 (et non 0x7) ou 0x02a3 (et non 0x203 ou 0x02 0x03)



A21E01 : Quelle est la valeur du champ Version ?

<stringresponse type="ci" answer="6"><additional_answer>0x6</additional_answer><additional_answer>0x06</additional_answer><textline label="A21E01" size="20"/></stringresponse>

A21E02 : Quelle est la valeur du champ Classe de trafic ?

<stringresponse type="ci" answer="0"><additional_answer>0x0</additional_answer><additional_answer>0x00</additional_answer><textline label="A21E02" size="20"/></stringresponse>

A21E03 : Quelle est la valeur du champ Identificateur de flux ?

<stringresponse type="ci" answer="21"><additional_answer>0x15</additional_answer><additional_answer>0x00015</additional_answer><textline label="A21E03" size="20"/></stringresponse>

A21E04 : Quelle est la valeur du champ Longueur de donnée ?

<stringresponse answer="64"><additional_answer>0x40</additional_answer><additional_answer>0x0040</additional_answer><textline label="A21E04" size="20"/></stringresponse>

A21E05 : Quelle est la valeur du champ En-tête suivant ?

<stringresponse answer="6"><additional_answer>0x6</additional_answer><additional_answer>0x06</additional_answer><textline label="A21E05" size="20"/></stringresponse>

A21E06 : À quel protocole la valeur du champ En-tête suivant fait-elle référence ?

<stringresponse answer="TCP" type="ci"><textline label="A21E06" size="20"/></stringresponse>

A21E07 : Quelle est la valeur du champ Nombre maximal de sauts ?

<stringresponse answer="0x2A"><additional_answer>0x2a</additional_answer><additional_answer>42</additional_answer><textline label="A21E07" size="20"/></stringresponse>

<script type="loncapa/python">

import socket

def test_address(expect, ans):

   try:
       a = socket.inet_pton(socket.AF_INET6, expect)
       b = socket.inet_pton(socket.AF_INET6, ans)
       return a == b
   except socket.error:
       return False

</script>

Attention
Pour les 2 dernières questions, vous devez indiquer une adresse IPv6. Utilisez les règles de représentation d'une adresse IPv6 comme indiqué dans l'activité "La notation des adresses IPv6" ou le RFC 4291. Au minimum chaque mot de 16 bits est séparé du caractère ':' (deux points). Attention aussi de ne pas faire l'erreur de laisser des caractères espace dans l'adresse IPv6. Pour rappel, l'adresse IPv6 extraite du RFC4291 se note sous cette forme :

 
<tt>abcd:ef01:2345:6789:abcd:ef01:2345:6789 </tt>
 


A21E08 : Quelle est l'adresse correspondant à la valeur du champ Adresse source ?

 <customresponse cfn="test_address" expect="2001:db8:c0:a001::1"><textline size="40" correct_answer="11" label="A21E08"/>
</customresponse>

A21E09 : Quelle est l'adresse correspondant à la valeur du champ Adresse destination ?

 <customresponse cfn="test_address" expect="2001:db8:a3e7:a001::c4d9"><textline size="40" correct_answer="11" label="A21E09"/>
</customresponse>
<solution>

Identification des champs de l'en-tête IPv6

     Le schéma de cette solution inclut l'en-tête TCP qui n'était pas présent dans l'énoncé.

</solution>
</problem>


</pre>

Session 3

<problem>
 <p>A partir d'un en-tête IPv6 retrouver la valeur de chaque champ de l'en-tête. Soit l'en-tête ci-dessous :<br /></p>
  <span style="font-family: courier new,courier;">
 <pre>
<tt> 60 00 00 15 00 40 06 2A  20 01 0D B8 00 C0 A0 01 </tt>
<tt> 00 00 00 00 00 00 00 01  20 01 0D B8 A3 E7 A0 01 </tt>
<tt> 00 00 00 00 00 00 C4 D9 </tt>
 
 </span>
Note : Les valeurs ci-dessus sont données en hexadécimal, et en ligne de 16 octets (soit 128 bits). 
Conseil: Il peut être avantageux pour certain champ de décomposer la valeur héxadécimale en binaire. Le format de l'en-tête du paquet IPv6 est donné dans le document compagnon mais également dans le RFC 2460. Le schéma dans le RFC 2460 est repris ci-dessous.

Utilisation du format d'un en-tête: Le format de l'en-tête du paquet IPv6 ci-dessous se lit comme une représentation en mémoire pour des mots de 32 bits. Chaque ligne représente une "case" mémoire. Chaque tiret ("-") représente un bit. Il y a donc sur une ligne 32 bits (car 32 tirets). Nous rappelons qu'un mot de 32 bits est équivalent à 4 octets et qu'un octet se représente par 2 chiffres hexadecimaux. Si cela vous semble encore obscur, re-voyez l'activité 12.
Par exemple, le champ version est codé sur 4 bits et occupe la première position dans le premier mot de 32 bits. La valeur du champ version est indiquée par le premier chiffre (4 bits) du premier mot de 32 bits de l'en-tête d'un paquet IP.


   0             7               15                              31 bits
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version| Traffic Class |           Flow Label                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload Length        |  Next Header  |   Hop Limit   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 

 
Note : Pour les questions qui suivent, la valeur d'un champ est à donner en hexadécimal, avec le préfixe 0x, ou en décimal. 


A21E01 : Quelle est la valeur du champ Version ?

<stringresponse type="ci" answer="6">
 <additional_answer>0x6</additional_answer>
 <additional_answer>0x06</additional_answer>
 <textline label="A21E01" size="20"/>
</stringresponse>

A21E02 : Quelle est la valeur du champ Classe de trafic ?

<stringresponse type="ci" answer="0">
 <additional_answer>0x0</additional_answer>
 <additional_answer>0x00</additional_answer>
 <textline label="A21E02" size="20"/>
</stringresponse>

A21E03 : Quelle est la valeur du champ Identificateur de flux ?

<stringresponse type="ci" answer="21">
 <additional_answer>0x15</additional_answer>
 <additional_answer>0x00015</additional_answer>
 <textline label="A21E03" size="20"/>
</stringresponse>

A21E04 : Quelle est la valeur du champ Longueur de donnée ?

<stringresponse answer="64">
 <additional_answer>0x40</additional_answer>
 <additional_answer>0x0040</additional_answer>
 <textline label="A21E04" size="20"/>
</stringresponse>

A21E05 : Quelle est la valeur du champ En-tête suivant ?

<stringresponse answer="6">
 <additional_answer>0x6</additional_answer>
 <additional_answer>0x06</additional_answer>
 <textline label="A21E05" size="20"/>
</stringresponse>

A21E06 : À quel protocole la valeur du champ En-tête suivant fait-elle référence ?

<stringresponse answer="TCP" type="ci" >
 <textline label="A21E06" size="20"/>
</stringresponse>

A21E07 : Quelle est la valeur du champ Nombre maximal de sauts ?

<stringresponse answer="0x2A">
 <additional_answer>42</additional_answer>
 <textline label="A21E07" size="20"/>
</stringresponse>

<script type="loncapa/python">

import socket

def test_address(expect, ans):

   try:
       a = socket.inet_pton(socket.AF_INET6, expect)
       b = socket.inet_pton(socket.AF_INET6, ans)
       return a == b
   except socket.error:
       return False

</script>

A21E08 : Quelle est l'adresse correspondant à la valeur du champ Adresse source ?

 <customresponse cfn="test_address" expect="2001:db8:c0:a001::1">  
   <textline size="40" correct_answer="11" label="Integer #1"/>
</customresponse>

A21E09 : Quelle est l'adresse correspondant à la valeur du champ Adresse destination ?

 <customresponse cfn="test_address" expect="2001:db8:a3e7:a001::c4d9">
   <textline size="40" correct_answer="11" label="Integer #2"/>
</customresponse>
<solution>

Identification des champs de l'en-tête IPv6

     Cette solution inclue l'en-tête TCP qui n'était pas présent dans l'énoncé.

 </solution>
</problem>

</pre>

Personal tools