Difference between revisions of "MOOC:Auto-eval Act21-exercice"
From Livre IPv6
(→Session 5) |
|||
(11 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
---- | ---- | ||
__NOTOC__ | __NOTOC__ | ||
+ | =Session 5= | ||
<pre> | <pre> | ||
+ | |||
<problem> | <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>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> | <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> | ||
+ | </pre> | ||
+ | </span> | ||
+ | |||
+ | <p><b>Lecture de la trace</b><br/> | ||
+ | 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. </p> | ||
+ | |||
+ | <p><b>Utilisation du format d'un en-tête:</b> <br/> | ||
+ | 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'.<br/> | ||
+ | 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.</p> | ||
+ | <span style="font-family: courier new,courier;"><pre> | ||
+ | 0 7 15 31 bits | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | |Version| Traffic Class | Flow Label | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | | Payload Length | Next Header | Hop Limit | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | + Source Address + | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | + Destination Address + | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | </pre></span> | ||
+ | <br/> | ||
+ | <p><b>Conseil:</b> <br/> | ||
+ | Il peut être avantageux pour certain champ de décomposer la valeur héxadécimale en binaire. </p> | ||
+ | |||
+ | <p><b>Note</b><br/> | ||
+ | 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 <b>minuscule</b>) et les lettres de 'a' à 'f' sont à écrire en minuscule comme par exemple pour indiquer la valeur 30 en hexadécimal, on écrira 0x1e. <br/> | ||
+ | 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) </p> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <p>A21E01 : Quelle est la valeur du champ <b>Version ?</b></p> | ||
+ | <stringresponse type="ci" answer="6"><additional_answer>0x6</additional_answer><additional_answer>0x06</additional_answer><textline label="A21E01" size="20"/></stringresponse> | ||
+ | <br/> | ||
+ | <p>A21E02 : Quelle est la valeur du champ <b>Classe de trafic</b> ?</p> | ||
+ | <stringresponse type="ci" answer="0"><additional_answer>0x0</additional_answer><additional_answer>0x00</additional_answer><textline label="A21E02" size="20"/></stringresponse> | ||
+ | <br/> | ||
+ | <p>A21E03 : Quelle est la valeur du champ <b>Identificateur de flux</b> ?</p> | ||
+ | <stringresponse type="ci" answer="21"><additional_answer>0x15</additional_answer><additional_answer>0x00015</additional_answer><textline label="A21E03" size="20"/></stringresponse> | ||
+ | <br/> | ||
+ | <p>A21E04 : Quelle est la valeur du champ <b>Longueur de donnée</b> ?</p> | ||
+ | <stringresponse answer="64"><additional_answer>0x40</additional_answer><additional_answer>0x0040</additional_answer><textline label="A21E04" size="20"/></stringresponse> | ||
+ | <br/> | ||
+ | <p>A21E05 : Quelle est la valeur du champ <b>En-tête suivant</b> ?</p> | ||
+ | <stringresponse answer="6"><additional_answer>0x6</additional_answer><additional_answer>0x06</additional_answer><textline label="A21E05" size="20"/></stringresponse> | ||
+ | <br/> | ||
+ | <p>A21E06 : À quel protocole la valeur du champ <b>En-tête suivant</b> fait-elle référence ?</p> | ||
+ | <stringresponse answer="TCP" type="ci"><textline label="A21E06" size="20"/></stringresponse> | ||
+ | <br/> | ||
+ | <p>A21E07 : Quelle est la valeur du champ <b>Nombre maximal de sauts</b> ?</p> | ||
+ | <stringresponse answer="0x2A"><additional_answer>0x2a</additional_answer><additional_answer>42</additional_answer><textline label="A21E07" size="20"/></stringresponse> | ||
+ | <br/> | ||
+ | |||
+ | <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> | ||
+ | |||
+ | <p><b>Attention</b><br/> | ||
+ | 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 : </p> | ||
+ | <span style="font-family: courier new,courier;"> | ||
+ | <pre><tt>abcd:ef01:2345:6789:abcd:ef01:2345:6789 </tt> | ||
+ | </pre> | ||
+ | </span><br/> | ||
+ | |||
+ | |||
+ | <p>A21E08 : Quelle est l'adresse correspondant à la valeur du champ <b>Adresse source</b> ?</p> | ||
+ | <customresponse cfn="test_address" expect="2001:db8:c0:a001::1"><textline size="40" correct_answer="11" label="A21E08"/><br/></customresponse> | ||
+ | <p>A21E09 : Quelle est l'adresse correspondant à la valeur du champ <b>Adresse destination</b> ?</p> | ||
+ | <customresponse cfn="test_address" expect="2001:db8:a3e7:a001::c4d9"><textline size="40" correct_answer="11" label="A21E09"/><br/></customresponse> | ||
+ | |||
+ | <solution><div class="detailed-solution"><p>Identification des champs de l'en-tête IPv6</p> | ||
+ | Le schéma de cette solution inclut l'en-tête TCP qui n'était pas présent dans l'énoncé. | ||
+ | <p><img src="/static/A21Ex.png" style="width: 600px"/></p> | ||
+ | </div></solution> | ||
+ | |||
+ | </problem> | ||
+ | |||
+ | |||
+ | |||
+ | </pre> | ||
+ | |||
+ | =Session 3= | ||
+ | <pre> | ||
+ | <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> 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 00 01 20 01 0D B8 A3 E7 A0 01 </tt> | ||
<tt> 00 00 00 00 00 00 C4 D9 </tt> | <tt> 00 00 00 00 00 00 C4 D9 </tt> | ||
− | </pre> | + | </pre> |
− | 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. | + | </span> |
− | <br /> | + | <i>Note : Les valeurs ci-dessus sont données en hexadécimal, et en ligne de 16 octets (soit 128 bits).</i> <br /> |
− | < | + | <b>Conseil:</b> 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. <br /> |
− | <i>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.</i> | + | <p><b>Utilisation du format d'un en-tête:</b> 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.<br /> |
− | <br /> | + | 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.</p> |
− | <br /> | + | <span style="font-family: courier new,courier;"> |
− | + | <pre> | |
− | <stringresponse type="ci" answer="6"> | + | 0 7 15 31 bits |
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | |Version| Traffic Class | Flow Label | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | | Payload Length | Next Header | Hop Limit | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | + Source Address + | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | + Destination Address + | ||
+ | | | | ||
+ | + + | ||
+ | | | | ||
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | </pre> | ||
+ | </span> | ||
+ | |||
+ | <i>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.</i> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <p>A21E01 : Quelle est la valeur du champ <b>Version ?</b></p> | ||
+ | <stringresponse type="ci" answer="6"> | ||
<additional_answer>0x6</additional_answer> | <additional_answer>0x6</additional_answer> | ||
<additional_answer>0x06</additional_answer> | <additional_answer>0x06</additional_answer> | ||
− | <textline label=" | + | <textline label="A21E01" size="20"/> |
− | </stringresponse> | + | </stringresponse> |
− | <br /> | + | <br /> |
− | + | <p>A21E02 : Quelle est la valeur du champ <b>Classe de trafic</b> ?</p> | |
− | <stringresponse type="ci" answer="0"> | + | <stringresponse type="ci" answer="0"> |
<additional_answer>0x0</additional_answer> | <additional_answer>0x0</additional_answer> | ||
<additional_answer>0x00</additional_answer> | <additional_answer>0x00</additional_answer> | ||
− | <textline label=" | + | <textline label="A21E02" size="20"/> |
− | </stringresponse> | + | </stringresponse> |
− | <br /> | + | <br /> |
− | + | <p>A21E03 : Quelle est la valeur du champ <b>Identificateur de flux</b> ?</p> | |
− | <stringresponse type="ci" answer="21"> | + | <stringresponse type="ci" answer="21"> |
<additional_answer>0x15</additional_answer> | <additional_answer>0x15</additional_answer> | ||
<additional_answer>0x00015</additional_answer> | <additional_answer>0x00015</additional_answer> | ||
− | <textline label=" | + | <textline label="A21E03" size="20"/> |
− | </stringresponse> | + | </stringresponse> |
− | <br /> | + | <br /> |
− | + | <p>A21E04 : Quelle est la valeur du champ <b>Longueur de donnée</b> ?</p> | |
− | <stringresponse answer="64"> | + | <stringresponse answer="64"> |
<additional_answer>0x40</additional_answer> | <additional_answer>0x40</additional_answer> | ||
<additional_answer>0x0040</additional_answer> | <additional_answer>0x0040</additional_answer> | ||
− | <textline label=" | + | <textline label="A21E04" size="20"/> |
− | </stringresponse> | + | </stringresponse> |
− | <br /> | + | <br /> |
− | + | <p>A21E05 : Quelle est la valeur du champ <b>En-tête suivant</b> ?</p> | |
− | <stringresponse answer="6"> | + | <stringresponse answer="6"> |
<additional_answer>0x6</additional_answer> | <additional_answer>0x6</additional_answer> | ||
<additional_answer>0x06</additional_answer> | <additional_answer>0x06</additional_answer> | ||
− | <textline label=" | + | <textline label="A21E05" size="20"/> |
− | </stringresponse> | + | </stringresponse> |
− | <br /> | + | <br /> |
− | <p> | + | <p>A21E06 : À quel protocole la valeur du champ <b>En-tête suivant</b> fait-elle référence ?</p> |
− | <stringresponse answer="TCP" type="ci" > | + | <stringresponse answer="TCP" type="ci" > |
− | <textline label=" | + | <textline label="A21E06" size="20"/> |
− | </stringresponse> | + | </stringresponse> |
− | <br /> | + | <br /> |
− | + | <p>A21E07 : Quelle est la valeur du champ <b>Nombre maximal de sauts</b> ?</p> | |
− | <stringresponse answer="0x2A"> | + | <stringresponse answer="0x2A"> |
<additional_answer>42</additional_answer> | <additional_answer>42</additional_answer> | ||
− | <textline label=" | + | <textline label="A21E07" size="20"/> |
− | </stringresponse> | + | </stringresponse> |
− | <br /> | + | <br /> |
− | <script type="loncapa/python"> | + | <script type="loncapa/python"> |
import socket | import socket | ||
Line 75: | Line 216: | ||
</script> | </script> | ||
− | <p> | + | <p>A21E08 : Quelle est l'adresse correspondant à la valeur du champ <b>Adresse source</b> ?</p> |
− | <customresponse cfn="test_address" expect="2001:db8:c0:a001::1"> | + | <customresponse cfn="test_address" expect="2001:db8:c0:a001::1"> |
<textline size="40" correct_answer="11" label="Integer #1"/><br/> | <textline size="40" correct_answer="11" label="Integer #1"/><br/> | ||
</customresponse> | </customresponse> | ||
− | <p> | + | <p>A21E09 : Quelle est l'adresse correspondant à la valeur du champ <b>Adresse destination</b> ?</p> |
<customresponse cfn="test_address" expect="2001:db8:a3e7:a001::c4d9"> | <customresponse cfn="test_address" expect="2001:db8:a3e7:a001::c4d9"> | ||
<textline size="40" correct_answer="11" label="Integer #2"/><br/> | <textline size="40" correct_answer="11" label="Integer #2"/><br/> | ||
</customresponse> | </customresponse> | ||
− | <solution> | + | <solution> |
<div class="detailed-solution"> | <div class="detailed-solution"> | ||
<p>Identification des champs de l'en-tête IPv6</p> | <p>Identification des champs de l'en-tête IPv6</p> | ||
Line 92: | Line 233: | ||
</solution> | </solution> | ||
− | </problem> | + | </problem> |
− | + | ||
− | + | ||
</pre> | </pre> |
Latest revision as of 08:33, 26 April 2019
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"/><solution>
</customresponse>
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é.
</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>