Difference between revisions of "MOOC:Auto-eval Act21-exercice"
From Livre IPv6
Line 5: | Line 5: | ||
<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 :<br /></p> | <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> | <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> | ||
Line 10: | Line 11: | ||
<tt> 00 00 00 00 00 00 C4 D9 </tt> | <tt> 00 00 00 00 00 00 C4 D9 </tt> | ||
</pre> | </pre> | ||
− | + | </span> | |
− | < | + | |
<i>Note : Les valeurs ci-dessus sont données en hexadécimal, et en ligne de 16 octets (soit 128 bits).</i> <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 /> | ||
+ | <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 /> | ||
+ | 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> | ||
+ | |||
<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> | <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 /> | ||
Line 93: | Line 123: | ||
</problem> | </problem> | ||
+ | |||
</pre> | </pre> |
Revision as of 04:34, 5 April 2017
<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.
A21Ex01 : Quelle est la valeur du champ Version ?
<stringresponse type="ci" answer="6">
<additional_answer>0x6</additional_answer> <additional_answer>0x06</additional_answer> <textline label="A21Ex01" size="20"/>
</stringresponse>
A21Ex02 : 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="A21Ex02" size="20"/>
</stringresponse>
A21Ex03 : 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="A21Ex03" size="20"/>
</stringresponse>
A21Ex04 : 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="A21Ex04" size="20"/>
</stringresponse>
A21Ex05 : 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="A21Ex05" size="20"/>
</stringresponse>
A21Ex06 : À quel protocole la valeur du champ En-tête suivant fait-elle référence ?
<stringresponse answer="TCP" type="ci" >
<textline label="A21Ex06" size="20"/>
</stringresponse>
A21Ex07 : Quelle est la valeur du champ Nombre maximal de sauts ?
<stringresponse answer="0x2A">
<additional_answer>42</additional_answer> <textline label="SA21x07" 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>
A21Ex08 : 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>
A21Ex09 : 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>