
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://livre.g6.asso.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bruno+Deniaud</id>
		<title>Livre IPv6 - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://livre.g6.asso.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bruno+Deniaud"/>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php/Special:Contributions/Bruno_Deniaud"/>
		<updated>2026-05-29T20:00:27Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.2</generator>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Les_extensions&amp;diff=3157</id>
		<title>Les extensions</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Les_extensions&amp;diff=3157"/>
				<updated>2006-03-14T14:27:46Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* &amp;lt;div id=&amp;quot;routage&amp;quot;&amp;gt;Routage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |Justification des extensions|Justification des extensions|Exemples d'extensions|Exemples d'extensions}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Les extensions d'IPv6 peuvent être vues comme un prolongement de l'encapsulation d'IP dans IP. À part l'extension de proche-en-proche traitée par tous les routeurs intermédiaires, les autres extensions ne sont prises en compte que par les équipements destinataires du paquet.&lt;br /&gt;
&lt;br /&gt;
Une extension a une longueur multiple de 8 octets. Elle commence par un champ en-tête suivant d'un octet qui définit le type de données qui suit l'extension : une autre extension ou un protocole de niveau 4 (voir tableau Valeurs du champ en-tête suivant). Pour les extensions à longueur variable, l'octet suivant contient la longueur de l'extension en mots de 8 octets, le premier n'étant pas compté (une extension de 16 octets a un champ longueur de 1).&lt;br /&gt;
&lt;br /&gt;
{{Valeurs du champ en-tête suivant}}&lt;br /&gt;
&lt;br /&gt;
Le RFC 2460 recommande l'ordre suivant :&lt;br /&gt;
&lt;br /&gt;
*[[#PeP|Proche-en-proche]] (doit toujours être en première position)&lt;br /&gt;
*[[#dest|Destination]] (sera aussi traité par les routeurs listés dans l'extension de routage par la source)&lt;br /&gt;
*[[#routage|Routage]] par la source&lt;br /&gt;
*[[#frag|Fragmentation]]&lt;br /&gt;
*Authentification&lt;br /&gt;
*Destination (traité uniquement par l'équipement terminal)&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;div id=PeP&amp;gt; Proche-en-proche &amp;lt;/div&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
[[image:Fig4-6.png|thumb|right|350px|Figure 4-6 ''Format générique des options &amp;quot;proche-en-proche&amp;quot; et &amp;quot;destination&amp;quot;'']]&lt;br /&gt;
&lt;br /&gt;
Cette extension (en anglais : ''hop-by-hop'') se situe toujours en première position et est traitée par tous les routeurs que le paquet traverse. Le type associé (contenu dans le champ d'en-tête en-tête suivant de l'en-tête précédent) est 0 et le champ longueur de l'extension contient le nombre de mots de 64 bits moins 1.&lt;br /&gt;
 &lt;br /&gt;
L'extension est composée d'options. Pour l'instant, seules quatre options, dont deux de bourrage, sont définies (cf. Format des options IPv6). Chaque option est une suite d'octets. Le premier octet est un type, le deuxième (sauf pour l'option 0) contient la longueur de l'option moins 2. Les deux premiers bits de poids fort du type définissent le comportement du routeur quand il rencontre une option inconnue :&lt;br /&gt;
&lt;br /&gt;
*00 : le routeur ignore l'option ;&lt;br /&gt;
*01 : le routeur rejette le paquet ;&lt;br /&gt;
*10 : le routeur rejette le paquet et retourne un message ICMPv6 d'inaccessibilité ;&lt;br /&gt;
*11 : le routeur rejette le paquet et retourne un message ICMPv6 d'inaccessibilité si l'adresse de destination n'est pas multicast.&lt;br /&gt;
&lt;br /&gt;
Le bit suivant du type indique que le routeur peut modifier le contenu du champ option (valeur à 1) ou non (valeur à 0).&lt;br /&gt;
&lt;br /&gt;
[[image:Fig4-7.png|thumb|right|350px|Figure 4-7 ''Format des options IPv6'']]&lt;br /&gt;
 &lt;br /&gt;
Les quatre options de proche-en-proche sont :&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;div id=&amp;quot;Pad1&amp;quot;&amp;gt;Pad1 (type 0). Cette option est utilisée pour introduire un octet de bourrage.&amp;lt;/div&amp;gt;&lt;br /&gt;
*&amp;lt;div id=&amp;quot;Padn&amp;quot;&amp;gt;Padn (type 1). Cette option est utilisée pour introduire plus de 2 octets de bourrage. Le champ longueur indique le nombre d'octets qui suivent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les options de bourrage peuvent sembler inutiles avec IPv6 puisqu'un champ longueur pourrait en donner la longueur exacte. En fait les options de bourrage servent à optimiser le traitement des paquets en alignant les champs sur des mots de 32, voire 64 bits ; le RFC 2460 discute en annexe de la manière d'optimiser le traitement tout en minimisant la place prise par les options.&lt;br /&gt;
&lt;br /&gt;
*Jumbogramme (type 194 ou 0xc2, RFC 2675). Cette option est utilisée quand le champ longueur des données du paquet IPv6 n'est pas suffisant pour coder la taille du paquet. Cette option est essentiellement prévue pour la transmission à grand débit entre deux équipements. Si l'option jumbogramme est utilisée, le champ longueur des données utiles dans l'en-tête IPv6 vaut 0. &amp;lt;br&amp;gt; Noter que le type commence par la séquence binaire 11, ce qui permet au routeur ne traitant pas les jumbogrammes d'en informer la source. Celle-ci pourra réémettre l'information sans utiliser cette option.&lt;br /&gt;
&lt;br /&gt;
*L'option Router Alert (RFC 2675) demande à un routeur d'examiner le contenu des données qu'il relaie (Router Alert existe également en IPv4, RFC 2113). En principe, le processus de relayage (recopier le paquet sur une interface de sortie en fonction de l'adresse destination et des tables de routage) doit être le plus rapide possible. Mais pour des protocoles comme la gestion des groupes de multicast avec MLD (''Multicast Listener Discovery'') ou la signalisation des flux avec RSVP, tous les routeurs intermédiaires doivent tenir compte des données. &amp;lt;br&amp;gt;L'émetteur envoie les données à la destination, mais s'il précise l'option Router Alert, les routeurs intermédiaires vont analyser les données, voire modifier leur contenu avant de relayer le paquet. Ce mécanisme est efficace puisque les routeurs n'ont pas à analyser le contenu de tous les paquets d'un flux. &amp;lt;br&amp;gt; Le type de l'option vaut 5. Il commence par la séquence binaire 00, puisqu'un routeur qui ne connaît pas cette option doit relayer le paquet sans le modifier. Le champ valeur de l'option contient :&lt;br /&gt;
**0 : pour les messages du protocole MLD de gestion des groupes multicast ;&lt;br /&gt;
**1 : pour les messages RSVP ;&lt;br /&gt;
**2 : pour les réseaux actifs ;&lt;br /&gt;
:les autres valeurs sont réservées.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;div id=dest&amp;gt;Destination &amp;lt;/div&amp;gt;==&lt;br /&gt;
Cette extension, dont le format est identique à l'extension de proche-en-proche (cf. figure Format des extensions &amp;quot;proche-en-proche&amp;quot; et &amp;quot;destination&amp;quot;), contient des options qui sont traitées par l'équipement destinataire. Pour l'instant, à part les options de bourrage (voir [[#Pad1|Pad1]] et [[#Padn|Padn]]) et de mobilité (cf. [[Mobilité dans IPv6]]), la seule autre option concerne le tunnelage dans des paquets IPv6 (RFC 2473). Cette option permet de limiter le niveau d'encapsulation dans des tunnels des paquets IPv6.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;div id=&amp;quot;routage&amp;quot;&amp;gt;Routage ==&lt;br /&gt;
Cette extension permet d'imposer à un paquet une route différente de celle offerte par les politiques de routage présentes sur le réseau. Pour l'instant seul le routage par la source (type = 0), similaire à l'option ''Loose Source Routing'' d'IPv4, est défini pour IPv6. La [[Mobilité dans IPv6|mobilité IPv6]] a également introduit une extension de routage (type = 2) (cf. [[La gestion de la mobilité IPv6#Optimisation dans le cas du mobile dans un réseau étranger|Optimisation dans le cas du mobile dans un réseau étranger]]&lt;br /&gt;
&lt;br /&gt;
Dans IPv4, le routage peut être strict (le routeur suivant présent dans la liste doit être un voisin directement accessible) ou libéral (''loose'') (un routeur peut utiliser les tables de routage pour joindre le routeur suivant servant de relais). Dans IPv6, seul le routage libéral est autorisé. En effet, le routage strict était initialement mis en place surtout pour des raisons de sécurité. La source devait être absolument sûre du chemin pris par les paquets. Cette utilisation a maintenant disparu du réseau.&lt;br /&gt;
&lt;br /&gt;
Le principe du routage par la source ou Source Routing dans IPv4 est rappelé en introduction de ce chapitre sur les extensions. Le principe est le même pour IPv6. L'émetteur met dans le champ destination du paquet IPv6, l'adresse du premier routeur servant de relais, l'extension contient la suite de la liste des autres routeurs relais et le destinataire. Quand un routeur reçoit un paquet qui lui est adressé comportant une extension de routage par la source, il permute son adresse avec l'adresse du prochain routeur et réémet le paquet vers cette adresse suivante.&lt;br /&gt;
&lt;br /&gt;
[[image:Fig4-8.png|thumb|right|350px|Figure 4-8 ''Format de l'extension routage par la source'']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La figure Format de l'extension routage par la source donne le format de l'extension de routage par la source :&lt;br /&gt;
 &lt;br /&gt;
*Le champ longueur de l'en-tête indique le nombre de mots de 64 bits qui composent l'extension. Pour l'extension de type 0, cela correspond au nombre d'adresses présentes dans la liste, multiplié par 2.&lt;br /&gt;
*Le champ type indique la nature du routage. Pour l'instant, seul le routage par la source, de type 0 est spécifié. La suite de l'en-tête correspond à ce type.&lt;br /&gt;
*Le nombre de segments restant est décrémenté après la traversée d'un routeur. Il indique le nombre d'équipements qui doivent encore être traversés. Il permet de trouver l'adresse qui devra être substituée.&lt;br /&gt;
*Les 32 bits suivants sont inutilisés pour préserver l'alignement.&lt;br /&gt;
&lt;br /&gt;
La liste comprenant les routeurs à traverser et le destinataire est fournie. Ces adresses ne peuvent pas être multicast.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;div id=&amp;quot;frag&amp;quot;&amp;gt;Fragmentation &amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
La fragmentation telle qu'elle est pratiquée dans IPv4 n'est pas très performante. Initialement, elle servait à rendre transparente les limitations physiques des supports de transmission. Dans IPv4 quand un routeur ne peut pas transmettre un paquet à cause de sa trop grande taille et si le bit &amp;lt;tt&amp;gt;DF&amp;lt;/tt&amp;gt; (''don't fragment'') est à 0, il découpe l'information à transmettre en fragments. Or le réseau IP étant un réseau à datagramme, il n'y a pas de possibilité de contrôler les fragments. Deux fragments successifs peuvent prendre deux chemins différents et par conséquent seul le destinataire peut effectuer le réassemblage. En conséquence, après la traversée d'un lien impliquant une fragmentation, le reste du réseau ne voit passer que des paquets de taille réduite.&lt;br /&gt;
&lt;br /&gt;
Il est plus intéressant d'adapter la taille des paquets à l'émission. Ceci est fait en utilisant les techniques de découverte du MTU (voir [[Mécanisme de découverte du PMTU]] (RFC 1981)). En pratique une taille de paquets de 1 500 octets est presque universelle.&lt;br /&gt;
&lt;br /&gt;
Il existe pourtant des cas où la fragmentation est nécessaire. Ainsi une application telle que NFS sur UDP suppose que la fragmentation existe et produit des messages de grande taille. Comme on ne veut pas modifier ces applications, la couche réseau d'IPv6 doit aussi être capable de gérer la fragmentation. Pour réduire le travail des routeurs intermédiaires, la fragmentation se fera chez l'émetteur et le réassemblage chez le récepteur.&lt;br /&gt;
&lt;br /&gt;
[[image:Fig4-9.png|thumb|right|350px|Figure 4-9 ''Format de l'extension de fragmentation'']]&lt;br /&gt;
&lt;br /&gt;
Le format de l'extension de fragmentation est donné figure Format de l'extension de fragmentation. La signification des champs est identique à celle d'IPv4 :&lt;br /&gt;
 &lt;br /&gt;
*Le champ &amp;lt;tt&amp;gt;place du fragment&amp;lt;/tt&amp;gt; indique lors du réassemblage où les données doivent être insérées. Ceci permet de parer les problèmes dus au déséquencement dans les réseaux orientés datagrammes. Comme ce champ est sur 13 bits, la taille de tous les segments, sauf du dernier, doit être multiple de 8 octets.&lt;br /&gt;
*Le bit &amp;lt;tt&amp;gt;M&amp;lt;/tt&amp;gt; s'il vaut 1 indique qu'il y aura d'autres fragments émis.&lt;br /&gt;
*Le champ &amp;lt;tt&amp;gt;identification&amp;lt;/tt&amp;gt; permet de repérer les fragments appartenant à un même paquet initial. Il est différent pour chaque paquet et recopié dans ses fragments.&lt;br /&gt;
*Le bit &amp;lt;tt&amp;gt;DF&amp;lt;/tt&amp;gt; (''don't fragment'') n'est plus nécessaire puisque, si un paquet est trop grand, il y aura rejet du paquet par le routeur.&lt;br /&gt;
&lt;br /&gt;
Dans IPv4, la valeur d'une option était codée de manière à indiquer au routeur effectuant la fragmentation si elle devait être copiée dans les fragments. Dans IPv6, l'en-tête et les extensions qui concernent les routeurs intermédiaires (pour l'instant proche-en-proche, routage par la source) sont recopiées dans chaque fragment.&lt;br /&gt;
&lt;br /&gt;
== Sécurité ==&lt;br /&gt;
Deux extensions de sécurité -- les extensions d'authentification AH (''Authentication Header'') et de confidentialité ESP (''Encapsulating Security Payload'') -- sont définies par l'IETF. Elles permettent de protéger les communications passées sur les réseaux IPv6 mais aussi IPv4 en assurant les services de confidentialité, authentification, intégrité et détection de rejeux. Le chapite [[Sécurité]], RFC 2402 donne une description détaillée de ces extensions, et présente les modes de protection existants.&lt;br /&gt;
&lt;br /&gt;
{{suivi |Justification des extensions|Justification des extensions|Exemples d'extensions|Exemples d'extensions}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2983</id>
		<title>Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2983"/>
				<updated>2006-02-27T14:26:44Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |Bases whois|Bases whois|Accueil|Accueil}}&lt;br /&gt;
= Livres sur IPv6 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BM95&amp;quot;&amp;gt;[BM95] S. O. Bradner &amp;amp; A. Mankin ed : IPng, Internet Protocol Next Generation, Addison-Wesley (IPng Series), ISBN0201633957, Septembre 1995.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Gai98] S. Gai, Internetworking IPv6 With Cisco Routers (Computer Communications), McGraw-Hill, ISBN: 0-070-22836-1, Février 1998.&lt;br /&gt;
 &lt;br /&gt;
[Hui97] C. Huitema: IPv6: The New Internet Protocol, Prentice Hall, ISBN: 0-138-50505-5, Octbre 1997.&lt;br /&gt;
 &lt;br /&gt;
[LL99] Peter Loshin &amp;amp; Pete Loshin: IPv6 Clearly Explained (Clearly Explained), Ap Professional, ISBN: 0-124-55838-0, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[MM00] Mark A. Miller &amp;amp; P. E. Miller: Implementing IPv6, second edition (Network Troubleshooting Library), IDG Books Worldwide, ISBN: 0-764-54589-2, Janvier 2000.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[Mil97] Stewart S. Miller: IPv6 : The Next Generation Internet Protocol, DigitalPress, ISBN: 1-555-58188-9, Décembre 1997.&lt;br /&gt;
 &lt;br /&gt;
[MK98] Marcus Goncalves &amp;amp; Kitty Niles: IPv6 Networks, McGraw-Hill, ISBN: 0-070-24807-9, Mai 1998.&lt;br /&gt;
 &lt;br /&gt;
[Sal00] Peter H. Salus: Big Book of IPV6 Addressing RFCs, Morgan Kaufmann Publishers, ISBN: 0-126-16770-2, Mars 2000.&lt;br /&gt;
 &lt;br /&gt;
[WR99] J. D. Wegner &amp;amp; Robert Rockwell: IP Addressing and Subnetting, Including IPv6, Syngress Media, ISBN: 1-928-99401-6, Décembre 1999.&lt;br /&gt;
 &lt;br /&gt;
== Internet Drafts sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
''Remarque : Il faut rappeler que les Internet drafts sont des documents de travail à durée de vie limitée. Ils ont vocation à devenir des RFC. Le lecteur est donc invité à vérifier quelle est la version la plus récente, ou si un RFC le remplace, en consultant l'index à jour (cf. Les RFC (Request For Comments)).''&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BCP2-id&amp;quot;&amp;gt;[BCP2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, M. Carney, C. Perkins: Extensions for the Dynamic Host Configuration Protocol for IPv6, [http://www.watersprings.org/pub/id/draft-ietf-dhcpv6exts-12.txt draft-ietf-dhc-v6exts-12.txt], Internet Draft, 5 Mai 2000 - Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BKLSPTSDY-id&amp;quot;&amp;gt;[BKLSPTSDY-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: W. Biemolt, M. Kaat, T. Larder, H. Steenman, R. van der Pol, G. Tsirtsis, Y. Sekiya, A. Durand, K. Yamamoto: On overview of the introduction of IPv6 in the Internet, draft-ietf-ngtrans-introduction-to-ipv6-transition-08.txt, Internet Draft, Février 2002. Working Group Concluded.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTM-id&amp;gt;[BTM-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, L. Toutain, O. Medina, F. Dupont, A. Durand, H Afifi,: Dual Stack Transition Mechanism (DSTM), draft-ietf-ngtrans-dstm-07.txt, Internet Draft, Aout 2002. Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BP-id&amp;quot;&amp;gt;[BP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Blanchet, F. Parent, IPv6 Tunnel Broker with the Tunnel Setup Protocol (TSP), [http://www.watersprings.org/pub/id/draft-blanchet-v6ops-tunnelbroker-tsp-03.txt draft-blanchet-v6ops-tunnelbroker-tsp-03.txt], Aout 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;CMB-id&amp;quot;&amp;gt;[CMB-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Hesham Soliman, Claude Castelluccia, Karim Malki, Ludovic Bellier, Hierarchical Mobile IPv6 mobility management (HMIPv6), [http://www.watersprings.org/pub/id/draft-ietf-mipshop-hmipv6-04.txt draft-ietf-mipshop-hmipv6-04.txt], Décembre 04. Obsolete - Experimental RFC 4140.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Craw-id&amp;quot;&amp;gt;[Craw-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Matt Crawford: IPv6 Node Information Queries, [http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-15.txt draft-ietf-ipngwg-icmp-name-lookups-15.txt, Internet Draft, 13 Février 2006. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Drave-id&amp;quot;&amp;gt;[Drave-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Draves: Default Address Selection for IPv6, draft-ietf-ipngwg-default-addr-select-06.txt, Internet Draft, 28 Septembre 2001. Obsolete - RFC 3484.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DHZ-id&amp;quot;&amp;gt;[DHZ-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: S. Deering, B. Haberman, B. Zill, T. Jinmei, E. Nordmark, A. Onoe: IP Version 6 Scoped Address Architecture, draft-ietf-ipngwg-scoping-arch-03.txt Internet Draft, 30 Novembre 2001. Obsolete - RFC 4007.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DIS-id&amp;quot;&amp;gt;[DIS-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Alain Durand, Johan Ihren, Pekka Savola, Operational Considerations and Issues with IPv6 DNS, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-issues-12.txt draft-ietf-dnsop-ipv6-dns-issues-12.txt], Internet Draft, 19 Octobre 2005,. Work in progress. &lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Dupont-id&amp;quot;&amp;gt;[Dupont-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: F. Dupont, M. Laurent-Maknavicius: AAA for mobile IPv6, draft-dupont-mipv6-AAA-01.txt, Internet Draft, 20 Novembre 2001, Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst-id&amp;quot;&amp;gt;[Ernst-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Thierry Ernst, Network Mobility Support Requirements, [http://www.watersprings.org/pub/id/draft-ietf-nemo-requirements-05.txt draft-ietf-nemo-requirements-05.txt], Octobre 2005&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner-id&amp;quot;&amp;gt;[Fenner-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Haixiang He, Brian Haberman, Hal Sandick, IGMP/MLD-based Multicast Forwarding ('IGMP/MLD Proxying'), [http://www.watersprings.org/pub/id/draft-ietf-magma-igmp-proxy-06.txt draft-ietf-magma-igmp-proxy-06.txt]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner2-id&amp;quot;&amp;gt;[Fenner2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Mark Handley, Hugh Holbrook, Isidor Kouvelas Protocol Independent Multicast - Sparse Mode (PIM -SM): Protocol Specification (Revised), IETF Internet Draft, [http://www.watersprings.org/pub/id/draft-ietf-pim-sm-v2-new-11.txt draft-ietf-pim-sm-v2-new-11.txt], 4 Octobre 2004. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Haber-id&amp;quot;&amp;gt;[Haber-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: B. Haberman: Dynamic Allocation Guidelines for IPv6 Multicast Addresses, draft-ietf-malloc-ipv6-guide-01.txt, Internet Draft, 12 Octobre 2000. Obsolete - RFC 3307.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HD-id&amp;quot;&amp;gt;[HD-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Hinden, S. Deering: IP Version 6 Addressing Architecture, [[http://tools.ietf.org/wg/ipv6/draft-ietf-ipv6-addr-arch-v4/draft-ietf-ipv6-addr-arch-v4-04.txt draft-ietf-ipv6-addr-arch-v4-04.txt]], Internet Draft, 20 Mai 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HH-id&amp;quot;&amp;gt;[HH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Robert Hinden, Brian Haberman, Centrally Assigned Unique Local IPv6 Unicast Addresses, [http://www.watersprings.org/pub/id/draft-ietf-ipv6-ula-central-01.txt draft-ietf-ipv6-ula-central-01.txt], Internet Draft, 21 Février 2005, Obsolete - See RFC 4193.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Hopps-if&amp;quot;&amp;gt;[Hopps-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. E. Hopps: Routing IPv6 with IS-IS, [http://www.ietf.org/internet-drafts/draft-ietf-isis-ipv6-06.txt draft-ietf-isis-ipv6-06.txt], Internet Draft, Octobre 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Huitema-id&amp;quot;&amp;gt;[Huitéma-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. Huitema, Teredo: Tunneling IPv6 over UDP through NATs, [http://www.watersprings.org/pub/id/draft-huitema-v6ops-teredo-05.txt draft-huitema-v6ops-teredo-05.txt], Avril 2005, Obsolete - See RFC 4380.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Jeong-id&amp;quot;&amp;gt;[Jeong-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jae-Hoon Jeong, IPv6 Host Configuration of DNS Server Information Approaches, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-configuration-06.txt draft-ietf-dnsop-ipv6-dns-configuration-06.txt], Internet Draft, 5 Mai 2005. RFC Editor Queue.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JP-id&amp;quot;&amp;gt;[JP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: D. B. Johnson, C. Perkins: Mobility Support in IPv6, draft-ietf-mobileip-ipv6-15.txt, Internet Draft, 2 Juillet 2001. Obsolete - RFC 3775.&lt;br /&gt;
 &lt;br /&gt;
; &amp;lt;div id=&amp;quot;NFG-id&amp;quot;&amp;gt;[NGF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tri Nguyen, Gerard Gastaud, Francois Le Faucheur, Dirk Ooms, Jeremy De Clercq, Stuart Prevost, Connecting IPv6 Domains across IPv4 Clouds with BGP, [http://tools.ietf.org/wg/v6ops/draft-ooms-v6ops-bgp-tunnel-06.txt draft-ooms-v6ops-bgp-tunnel-06.txt], Janvier 2006. Proposed standard.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;NPE-id&amp;quot;&amp;gt;[NPE-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Chan Wah Ng, Eun Kyoung Paik, Thierry Ernst, Analysis of Multihoming in Network Mobility Support, [http://www.ietf.org/internet-drafts/draft-ietf-nemo-multihoming-issues-04.txt draft-ietf-nemo-multihoming-issues-04.txt], 24 Octobre 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prz-id&amp;quot;&amp;gt;[Prz-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tony Przygienda, M-ISIS: Multi Topology (MT) Routing in IS-IS, [http://www.watersprings.org/pub/id/draft-ietf-isis-wg-multi-topology-11.txt draft-ietf-isis-wg-multi-topology-11.txt], 21 Octobre 2005.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prigent-id&amp;quot;&amp;gt;[Prigent-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: N. Prigent, J. Marchand, F. Dupont, B. Cousin, M. Laurent-Maknavicius, J. Bournelle: DHCPv6 Threats, draft-prigent-dhcpv6-threats-00.txt, Internet Draft, 24 mai 2001, Expired.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2547bis&amp;quot;&amp;gt;[RFC2547bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Eric C. Rosen, Yakov Rekhter, BGP/MPLS IP VPNs, [http://www.watersprings.org/pub/id/draft-ietf-l3vpn-rfc2547bis-03.txt draft-ietf-l3vpn-rfc2547bis-03.txt], Internet Draft, October 2004, Obsolete - RFC 4364.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Templin-id&amp;quot;&amp;gt;[Templin-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Fred Templin, T. Gleeson, M. Talwar D. Thaler, Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-isatap-24.txt draft-ietf-ngtrans-isatap-24.txt], Juillet 2005, Obsolete - RFC 4214.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Thubert-id&amp;quot;&amp;gt;[Thubert-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Pascal Thubert, NEMO Home Network models, [http://www.watersprings.org/pub/id/draft-ietf-nemo-home-network-models-06.txt draft-ietf-nemo-home-network-models-06.txt], 17 Fevrier 2006.&lt;br /&gt;
&lt;br /&gt;
==Autres documents de travail==&lt;br /&gt;
[FIPS-46]&lt;br /&gt;
&lt;br /&gt;
Data Encryption Standard, Federal Information Processing Standards Publication 46, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 15 Janvier 1977.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-81]&lt;br /&gt;
&lt;br /&gt;
DES Modes of Operation, Federal Information Processing Standards Publication 81, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 2 Décembre 1980.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-180-1]&lt;br /&gt;
&lt;br /&gt;
Secure Hash Standard, Federal Information Processing Standards Publication 180-1, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, Avril 1995.&lt;br /&gt;
 &lt;br /&gt;
==Autres Références==&lt;br /&gt;
[AL00]&lt;br /&gt;
&lt;br /&gt;
Mohammed Achemlal, Maryline Laurent, Analyse des fonctions des protocoles IPsec et leur intégration dans un réseau privé virtuel, Annales des télécommunications, 2000.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[AL98]&lt;br /&gt;
&lt;br /&gt;
P. Albitz and C. Liu: DNS and BIND, 3rd Edition, ISBN: 1-56592-512-2, O'Reilly and Associates, Septembre 1998.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTC02&amp;quot;&amp;gt;[BTC02]&amp;lt;/div&amp;gt;&lt;br /&gt;
: T. Bu, L. Gao, D. Towsley, On Characterizing Routing Table Growth, GlobalInternet 2002. http://www-unix.ecs.umass.edu/~lgao/globalinternet2002_tian.pdf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst01f-fr&amp;quot;&amp;gt;[Ernst01f-fr]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ernst, Thierry, Le Support des Réseaux Mobiles dans IPv6, UniversitéJoseph Fourier, Octobre 2001, Grenoble, France, http://www.inria.fr/rrrt/tu-0714.html&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst03f&amp;quot;&amp;gt;[Ernst03f]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Le Support des Réseaux Mobiles dans IPv6, CFIP: Colloque Francophone sur l'Ingenierie des Protocoles, Octobre 2003, Paris&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Fen-id]&lt;br /&gt;
&lt;br /&gt;
Bill Fenner, Management Information Base for the User Datagram Protocol (UDP), draft-ietf-ipv6-rfc2013-update-04.txt, Internet Draft, 20 Octobre 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Hui95]&lt;br /&gt;
&lt;br /&gt;
C. Huitema: Le routage dans l'Internet, Eyrolles, Octobre 1995.&lt;br /&gt;
 &lt;br /&gt;
[IEEE]&lt;br /&gt;
&lt;br /&gt;
Protocol Independant Interfaces, IEEE Std 1003.1g, DRAFT~6.6, Mars 1997.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JH-id&amp;quot;&amp;gt;[JH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jeffrey Haas, Susan Hares, Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), draft-ietf-idr-bgp4-mib-05.txt, Internet Draft, 31 Août 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JM-id]&lt;br /&gt;
&lt;br /&gt;
Dan Joyal, Vishwas Manral, Management Information Base for OSPFv3, draft-ietf-ospf-ospfv3-mib-09.txt, Internet Draft, 13 Mai 2005, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Kau-id&amp;quot;&amp;gt;[Kau-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Charlie Kaufman, Internet Key Exchange (IKEv2) Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-ikev2-17.txt draft-ietf-ipsec-ikev2-17.txt], Internet Draft, 4 Octobre 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;LAU03&amp;quot;&amp;gt;[LAU03]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Laurent-Maknavicius, Le protocole IPsec, [http://www.techniques-ingenieur.fr/affichage/DispIntro.asp?nGcmID=TE7545 TE7545], [http://www.techniques-ingenieur.fr/ Techniques de l'Ingénieur], Sécurité des systèmes d'information, Novembre 2003.&lt;br /&gt;
&lt;br /&gt;
[LAU04-A]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, M. Gardie, LDAP et la certification, Rapport de recherche du GET, 04001 LOR, 2004.&lt;br /&gt;
 &lt;br /&gt;
[LAU04-B]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, La sécurité de l'accès distant, Technique et Science Informatiques (TSI), 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;MHF-id&amp;quot;&amp;gt;[MHF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ambarish Malpani, Russ Housley, Trevor Freeman, Simple Certificate Validation Protocol (SCVP), [http://www.watersprings.org/pub/id/draft-ietf-pkix-scvp-22.txt draft-ietf-pkix-scvp-22.txt], Internet Draft, Octobre 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Mos-id&amp;quot;&amp;gt;[Mos-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Moskowitz, Host Identity Protocol, [http://www.watersprings.org/pub/id/draft-ietf-hip-base-04.txt draft-ietf-hip-base-04.txt], Internet Draft, 24 Octobre 2005, Work in progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-A&amp;quot;&amp;gt;[Pui02-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse critique d'IPsec, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-analyse-rapport/ipsec-analyse-rapport.pdf rapport de recherche 03 004 LOR], 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-B&amp;quot;&amp;gt;[Pui02-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse de l'impact de la mise en oeuvre d'IPsec dans les architectures de Communication, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-interactions-rapport/ipsec-interactions-rapport.pdf rapport de recherche 03 002 LOR], octobre 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui03&amp;quot;&amp;gt;[Pui03]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects ARP), [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/environnement-reel-1-rapport/environnement-reel-1-rapport.pdf rapport de recherche 03 001 LOR], janvier 2003.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-A&amp;quot;&amp;gt;[Pui04-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Etude des interactions IPsec/DNS, [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/InteractionDNS.pdf rapport de recherche 04002 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-B&amp;quot;&amp;gt;[Pui04-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects liés à ICMP), [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/IPsec_ICMP.pdf rapport de recherche 04004 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2401bis&amp;quot;&amp;gt;[RFC2401bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Stephen Kent, Karen Seo, Security Architecture for the Internet Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2401bis-06.txt draft-ietf-ipsec-rfc2401bis-06.txt], Internet Draft, 1 Avril 2005, Work in progress&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2402bis&amp;quot;&amp;gt;[RFC2402bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Stephen Kent, IP Authentication Header, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2402bis-11.txt draft-ietf-ipsec-rfc2402bis-11.txt], Internet Draft, 21 Mars 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Rou-id]&lt;br /&gt;
&lt;br /&gt;
Shawn Routhier, Management Information Base for the Internet Protocol (IP), draft-ietf-ipv6-rfc2011-update-10.txt; Internet Draft, 24 Mai 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Sch95]&lt;br /&gt;
&lt;br /&gt;
B. Schneier: Applied Cryptography : protocols, algorithms, and source code in C, (second edition), John Wiley &amp;amp; Sons, ISBN: 0-471-12845-7, 1996.&lt;br /&gt;
 &lt;br /&gt;
[Sta99]&lt;br /&gt;
&lt;br /&gt;
William Stallings: Snmp, Snmpv2, Snmpv3, and Rmon 1 and 2, Addison Wesley, ISBN: 0-201-48534-6, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[Tout03]&lt;br /&gt;
&lt;br /&gt;
Laurent Toutain: Réseaux Locaux et Internet: des protocoles à l'interconnexion, Troisième édition revue et augmentée, Hermès, ISBN: 2-7462-0670-6, 2003.&lt;br /&gt;
 &lt;br /&gt;
[Uni31]&lt;br /&gt;
&lt;br /&gt;
ATM Forum: ATM User-Network Interface (UNI) Specification Version 3.1, Prentice Hall, Englewood Cliffs, NJ, Juin 1995.&lt;br /&gt;
 &lt;br /&gt;
[WH-id]&lt;br /&gt;
&lt;br /&gt;
Margaret Wasserman, Brian Haberman, IP Forwarding Table MIB, draft-ietf-ipv6-rfc2096-update-07.txt, Internet Draft, 12 février 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[WK99]&lt;br /&gt;
&lt;br /&gt;
M. Welsh et L. Kaufman: Le système Linux, 2e édition révisée, Éditions O'Reilly, ISBN: 2-84177-033-8, Janvier 1999.&lt;br /&gt;
&lt;br /&gt;
==Sites Web sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
;[IETF]&lt;br /&gt;
:http://www.imag.fr/pub/archive/IETF: Mirroir français du serveur de l'IETF.&lt;br /&gt;
 &lt;br /&gt;
;[6bone]&lt;br /&gt;
:http://www.6bone.net: Réseau 6bone.&lt;br /&gt;
 &lt;br /&gt;
;[G6bone]&lt;br /&gt;
:http://peirce.logique.jussieu.fr/G6/ Réseau G6-bone (partie francophone de 6bone).&lt;br /&gt;
 &lt;br /&gt;
;[hs247] &lt;br /&gt;
:http://hs247.com/ Informations sur le 6bone et IPv6 en général.&lt;br /&gt;
&lt;br /&gt;
;[ipv6.org]&lt;br /&gt;
: http://www.ipv6.org/ pages d'information sur le protocole IPv6&lt;br /&gt;
&lt;br /&gt;
;[ipv6forum] &lt;br /&gt;
:http://www.ipv6forum.org/ Groupement d'industriels pour promouvoir IPv6.&lt;br /&gt;
&lt;br /&gt;
;[playground] &lt;br /&gt;
:http://playground.sun.com/pub/ipng/html/ipng-main.html liste des mises en oeuvre d'IPv6 dans les équipements.&lt;br /&gt;
{{suivi |Bases whois|Bases whois|Accueil|Accueil}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2982</id>
		<title>Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2982"/>
				<updated>2006-02-27T14:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |Bases whois|Bases whois}}&lt;br /&gt;
= Livres sur IPv6 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BM95&amp;quot;&amp;gt;[BM95] S. O. Bradner &amp;amp; A. Mankin ed : IPng, Internet Protocol Next Generation, Addison-Wesley (IPng Series), ISBN0201633957, Septembre 1995.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Gai98] S. Gai, Internetworking IPv6 With Cisco Routers (Computer Communications), McGraw-Hill, ISBN: 0-070-22836-1, Février 1998.&lt;br /&gt;
 &lt;br /&gt;
[Hui97] C. Huitema: IPv6: The New Internet Protocol, Prentice Hall, ISBN: 0-138-50505-5, Octbre 1997.&lt;br /&gt;
 &lt;br /&gt;
[LL99] Peter Loshin &amp;amp; Pete Loshin: IPv6 Clearly Explained (Clearly Explained), Ap Professional, ISBN: 0-124-55838-0, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[MM00] Mark A. Miller &amp;amp; P. E. Miller: Implementing IPv6, second edition (Network Troubleshooting Library), IDG Books Worldwide, ISBN: 0-764-54589-2, Janvier 2000.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[Mil97] Stewart S. Miller: IPv6 : The Next Generation Internet Protocol, DigitalPress, ISBN: 1-555-58188-9, Décembre 1997.&lt;br /&gt;
 &lt;br /&gt;
[MK98] Marcus Goncalves &amp;amp; Kitty Niles: IPv6 Networks, McGraw-Hill, ISBN: 0-070-24807-9, Mai 1998.&lt;br /&gt;
 &lt;br /&gt;
[Sal00] Peter H. Salus: Big Book of IPV6 Addressing RFCs, Morgan Kaufmann Publishers, ISBN: 0-126-16770-2, Mars 2000.&lt;br /&gt;
 &lt;br /&gt;
[WR99] J. D. Wegner &amp;amp; Robert Rockwell: IP Addressing and Subnetting, Including IPv6, Syngress Media, ISBN: 1-928-99401-6, Décembre 1999.&lt;br /&gt;
 &lt;br /&gt;
== Internet Drafts sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
''Remarque : Il faut rappeler que les Internet drafts sont des documents de travail à durée de vie limitée. Ils ont vocation à devenir des RFC. Le lecteur est donc invité à vérifier quelle est la version la plus récente, ou si un RFC le remplace, en consultant l'index à jour (cf. Les RFC (Request For Comments)).''&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BCP2-id&amp;quot;&amp;gt;[BCP2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, M. Carney, C. Perkins: Extensions for the Dynamic Host Configuration Protocol for IPv6, [http://www.watersprings.org/pub/id/draft-ietf-dhcpv6exts-12.txt draft-ietf-dhc-v6exts-12.txt], Internet Draft, 5 Mai 2000 - Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BKLSPTSDY-id&amp;quot;&amp;gt;[BKLSPTSDY-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: W. Biemolt, M. Kaat, T. Larder, H. Steenman, R. van der Pol, G. Tsirtsis, Y. Sekiya, A. Durand, K. Yamamoto: On overview of the introduction of IPv6 in the Internet, draft-ietf-ngtrans-introduction-to-ipv6-transition-08.txt, Internet Draft, Février 2002. Working Group Concluded.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTM-id&amp;gt;[BTM-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, L. Toutain, O. Medina, F. Dupont, A. Durand, H Afifi,: Dual Stack Transition Mechanism (DSTM), draft-ietf-ngtrans-dstm-07.txt, Internet Draft, Aout 2002. Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BP-id&amp;quot;&amp;gt;[BP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Blanchet, F. Parent, IPv6 Tunnel Broker with the Tunnel Setup Protocol (TSP), [http://www.watersprings.org/pub/id/draft-blanchet-v6ops-tunnelbroker-tsp-03.txt draft-blanchet-v6ops-tunnelbroker-tsp-03.txt], Aout 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;CMB-id&amp;quot;&amp;gt;[CMB-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Hesham Soliman, Claude Castelluccia, Karim Malki, Ludovic Bellier, Hierarchical Mobile IPv6 mobility management (HMIPv6), [http://www.watersprings.org/pub/id/draft-ietf-mipshop-hmipv6-04.txt draft-ietf-mipshop-hmipv6-04.txt], Décembre 04. Obsolete - Experimental RFC 4140.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Craw-id&amp;quot;&amp;gt;[Craw-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Matt Crawford: IPv6 Node Information Queries, [http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-15.txt draft-ietf-ipngwg-icmp-name-lookups-15.txt, Internet Draft, 13 Février 2006. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Drave-id&amp;quot;&amp;gt;[Drave-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Draves: Default Address Selection for IPv6, draft-ietf-ipngwg-default-addr-select-06.txt, Internet Draft, 28 Septembre 2001. Obsolete - RFC 3484.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DHZ-id&amp;quot;&amp;gt;[DHZ-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: S. Deering, B. Haberman, B. Zill, T. Jinmei, E. Nordmark, A. Onoe: IP Version 6 Scoped Address Architecture, draft-ietf-ipngwg-scoping-arch-03.txt Internet Draft, 30 Novembre 2001. Obsolete - RFC 4007.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DIS-id&amp;quot;&amp;gt;[DIS-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Alain Durand, Johan Ihren, Pekka Savola, Operational Considerations and Issues with IPv6 DNS, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-issues-12.txt draft-ietf-dnsop-ipv6-dns-issues-12.txt], Internet Draft, 19 Octobre 2005,. Work in progress. &lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Dupont-id&amp;quot;&amp;gt;[Dupont-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: F. Dupont, M. Laurent-Maknavicius: AAA for mobile IPv6, draft-dupont-mipv6-AAA-01.txt, Internet Draft, 20 Novembre 2001, Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst-id&amp;quot;&amp;gt;[Ernst-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Thierry Ernst, Network Mobility Support Requirements, [http://www.watersprings.org/pub/id/draft-ietf-nemo-requirements-05.txt draft-ietf-nemo-requirements-05.txt], Octobre 2005&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner-id&amp;quot;&amp;gt;[Fenner-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Haixiang He, Brian Haberman, Hal Sandick, IGMP/MLD-based Multicast Forwarding ('IGMP/MLD Proxying'), [http://www.watersprings.org/pub/id/draft-ietf-magma-igmp-proxy-06.txt draft-ietf-magma-igmp-proxy-06.txt]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner2-id&amp;quot;&amp;gt;[Fenner2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Mark Handley, Hugh Holbrook, Isidor Kouvelas Protocol Independent Multicast - Sparse Mode (PIM -SM): Protocol Specification (Revised), IETF Internet Draft, [http://www.watersprings.org/pub/id/draft-ietf-pim-sm-v2-new-11.txt draft-ietf-pim-sm-v2-new-11.txt], 4 Octobre 2004. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Haber-id&amp;quot;&amp;gt;[Haber-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: B. Haberman: Dynamic Allocation Guidelines for IPv6 Multicast Addresses, draft-ietf-malloc-ipv6-guide-01.txt, Internet Draft, 12 Octobre 2000. Obsolete - RFC 3307.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HD-id&amp;quot;&amp;gt;[HD-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Hinden, S. Deering: IP Version 6 Addressing Architecture, [[http://tools.ietf.org/wg/ipv6/draft-ietf-ipv6-addr-arch-v4/draft-ietf-ipv6-addr-arch-v4-04.txt draft-ietf-ipv6-addr-arch-v4-04.txt]], Internet Draft, 20 Mai 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HH-id&amp;quot;&amp;gt;[HH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Robert Hinden, Brian Haberman, Centrally Assigned Unique Local IPv6 Unicast Addresses, [http://www.watersprings.org/pub/id/draft-ietf-ipv6-ula-central-01.txt draft-ietf-ipv6-ula-central-01.txt], Internet Draft, 21 Février 2005, Obsolete - See RFC 4193.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Hopps-if&amp;quot;&amp;gt;[Hopps-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. E. Hopps: Routing IPv6 with IS-IS, [http://www.ietf.org/internet-drafts/draft-ietf-isis-ipv6-06.txt draft-ietf-isis-ipv6-06.txt], Internet Draft, Octobre 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Huitema-id&amp;quot;&amp;gt;[Huitéma-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. Huitema, Teredo: Tunneling IPv6 over UDP through NATs, [http://www.watersprings.org/pub/id/draft-huitema-v6ops-teredo-05.txt draft-huitema-v6ops-teredo-05.txt], Avril 2005, Obsolete - See RFC 4380.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Jeong-id&amp;quot;&amp;gt;[Jeong-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jae-Hoon Jeong, IPv6 Host Configuration of DNS Server Information Approaches, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-configuration-06.txt draft-ietf-dnsop-ipv6-dns-configuration-06.txt], Internet Draft, 5 Mai 2005. RFC Editor Queue.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JP-id&amp;quot;&amp;gt;[JP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: D. B. Johnson, C. Perkins: Mobility Support in IPv6, draft-ietf-mobileip-ipv6-15.txt, Internet Draft, 2 Juillet 2001. Obsolete - RFC 3775.&lt;br /&gt;
 &lt;br /&gt;
; &amp;lt;div id=&amp;quot;NFG-id&amp;quot;&amp;gt;[NGF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tri Nguyen, Gerard Gastaud, Francois Le Faucheur, Dirk Ooms, Jeremy De Clercq, Stuart Prevost, Connecting IPv6 Domains across IPv4 Clouds with BGP, [http://tools.ietf.org/wg/v6ops/draft-ooms-v6ops-bgp-tunnel-06.txt draft-ooms-v6ops-bgp-tunnel-06.txt], Janvier 2006. Proposed standard.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;NPE-id&amp;quot;&amp;gt;[NPE-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Chan Wah Ng, Eun Kyoung Paik, Thierry Ernst, Analysis of Multihoming in Network Mobility Support, [http://www.ietf.org/internet-drafts/draft-ietf-nemo-multihoming-issues-04.txt draft-ietf-nemo-multihoming-issues-04.txt], 24 Octobre 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prz-id&amp;quot;&amp;gt;[Prz-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tony Przygienda, M-ISIS: Multi Topology (MT) Routing in IS-IS, [http://www.watersprings.org/pub/id/draft-ietf-isis-wg-multi-topology-11.txt draft-ietf-isis-wg-multi-topology-11.txt], 21 Octobre 2005.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prigent-id&amp;quot;&amp;gt;[Prigent-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: N. Prigent, J. Marchand, F. Dupont, B. Cousin, M. Laurent-Maknavicius, J. Bournelle: DHCPv6 Threats, draft-prigent-dhcpv6-threats-00.txt, Internet Draft, 24 mai 2001, Expired.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2547bis&amp;quot;&amp;gt;[RFC2547bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Eric C. Rosen, Yakov Rekhter, BGP/MPLS IP VPNs, [http://www.watersprings.org/pub/id/draft-ietf-l3vpn-rfc2547bis-03.txt draft-ietf-l3vpn-rfc2547bis-03.txt], Internet Draft, October 2004, Obsolete - RFC 4364.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Templin-id&amp;quot;&amp;gt;[Templin-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Fred Templin, T. Gleeson, M. Talwar D. Thaler, Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-isatap-24.txt draft-ietf-ngtrans-isatap-24.txt], Juillet 2005, Obsolete - RFC 4214.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Thubert-id&amp;quot;&amp;gt;[Thubert-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Pascal Thubert, NEMO Home Network models, [http://www.watersprings.org/pub/id/draft-ietf-nemo-home-network-models-06.txt draft-ietf-nemo-home-network-models-06.txt], 17 Fevrier 2006.&lt;br /&gt;
&lt;br /&gt;
==Autres documents de travail==&lt;br /&gt;
[FIPS-46]&lt;br /&gt;
&lt;br /&gt;
Data Encryption Standard, Federal Information Processing Standards Publication 46, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 15 Janvier 1977.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-81]&lt;br /&gt;
&lt;br /&gt;
DES Modes of Operation, Federal Information Processing Standards Publication 81, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 2 Décembre 1980.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-180-1]&lt;br /&gt;
&lt;br /&gt;
Secure Hash Standard, Federal Information Processing Standards Publication 180-1, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, Avril 1995.&lt;br /&gt;
 &lt;br /&gt;
==Autres Références==&lt;br /&gt;
[AL00]&lt;br /&gt;
&lt;br /&gt;
Mohammed Achemlal, Maryline Laurent, Analyse des fonctions des protocoles IPsec et leur intégration dans un réseau privé virtuel, Annales des télécommunications, 2000.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[AL98]&lt;br /&gt;
&lt;br /&gt;
P. Albitz and C. Liu: DNS and BIND, 3rd Edition, ISBN: 1-56592-512-2, O'Reilly and Associates, Septembre 1998.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTC02&amp;quot;&amp;gt;[BTC02]&amp;lt;/div&amp;gt;&lt;br /&gt;
: T. Bu, L. Gao, D. Towsley, On Characterizing Routing Table Growth, GlobalInternet 2002. http://www-unix.ecs.umass.edu/~lgao/globalinternet2002_tian.pdf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst01f-fr&amp;quot;&amp;gt;[Ernst01f-fr]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ernst, Thierry, Le Support des Réseaux Mobiles dans IPv6, UniversitéJoseph Fourier, Octobre 2001, Grenoble, France, http://www.inria.fr/rrrt/tu-0714.html&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst03f&amp;quot;&amp;gt;[Ernst03f]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Le Support des Réseaux Mobiles dans IPv6, CFIP: Colloque Francophone sur l'Ingenierie des Protocoles, Octobre 2003, Paris&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Fen-id]&lt;br /&gt;
&lt;br /&gt;
Bill Fenner, Management Information Base for the User Datagram Protocol (UDP), draft-ietf-ipv6-rfc2013-update-04.txt, Internet Draft, 20 Octobre 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Hui95]&lt;br /&gt;
&lt;br /&gt;
C. Huitema: Le routage dans l'Internet, Eyrolles, Octobre 1995.&lt;br /&gt;
 &lt;br /&gt;
[IEEE]&lt;br /&gt;
&lt;br /&gt;
Protocol Independant Interfaces, IEEE Std 1003.1g, DRAFT~6.6, Mars 1997.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JH-id&amp;quot;&amp;gt;[JH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jeffrey Haas, Susan Hares, Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), draft-ietf-idr-bgp4-mib-05.txt, Internet Draft, 31 Août 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JM-id]&lt;br /&gt;
&lt;br /&gt;
Dan Joyal, Vishwas Manral, Management Information Base for OSPFv3, draft-ietf-ospf-ospfv3-mib-09.txt, Internet Draft, 13 Mai 2005, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Kau-id&amp;quot;&amp;gt;[Kau-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Charlie Kaufman, Internet Key Exchange (IKEv2) Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-ikev2-17.txt draft-ietf-ipsec-ikev2-17.txt], Internet Draft, 4 Octobre 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;LAU03&amp;quot;&amp;gt;[LAU03]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Laurent-Maknavicius, Le protocole IPsec, [http://www.techniques-ingenieur.fr/affichage/DispIntro.asp?nGcmID=TE7545 TE7545], [http://www.techniques-ingenieur.fr/ Techniques de l'Ingénieur], Sécurité des systèmes d'information, Novembre 2003.&lt;br /&gt;
&lt;br /&gt;
[LAU04-A]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, M. Gardie, LDAP et la certification, Rapport de recherche du GET, 04001 LOR, 2004.&lt;br /&gt;
 &lt;br /&gt;
[LAU04-B]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, La sécurité de l'accès distant, Technique et Science Informatiques (TSI), 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;MHF-id&amp;quot;&amp;gt;[MHF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ambarish Malpani, Russ Housley, Trevor Freeman, Simple Certificate Validation Protocol (SCVP), [http://www.watersprings.org/pub/id/draft-ietf-pkix-scvp-22.txt draft-ietf-pkix-scvp-22.txt], Internet Draft, Octobre 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Mos-id&amp;quot;&amp;gt;[Mos-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Moskowitz, Host Identity Protocol, [http://www.watersprings.org/pub/id/draft-ietf-hip-base-04.txt draft-ietf-hip-base-04.txt], Internet Draft, 24 Octobre 2005, Work in progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-A&amp;quot;&amp;gt;[Pui02-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse critique d'IPsec, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-analyse-rapport/ipsec-analyse-rapport.pdf rapport de recherche 03 004 LOR], 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-B&amp;quot;&amp;gt;[Pui02-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse de l'impact de la mise en oeuvre d'IPsec dans les architectures de Communication, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-interactions-rapport/ipsec-interactions-rapport.pdf rapport de recherche 03 002 LOR], octobre 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui03&amp;quot;&amp;gt;[Pui03]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects ARP), [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/environnement-reel-1-rapport/environnement-reel-1-rapport.pdf rapport de recherche 03 001 LOR], janvier 2003.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-A&amp;quot;&amp;gt;[Pui04-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Etude des interactions IPsec/DNS, [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/InteractionDNS.pdf rapport de recherche 04002 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-B&amp;quot;&amp;gt;[Pui04-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects liés à ICMP), [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/IPsec_ICMP.pdf rapport de recherche 04004 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2401bis&amp;quot;&amp;gt;[RFC2401bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Stephen Kent, Karen Seo, Security Architecture for the Internet Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2401bis-06.txt draft-ietf-ipsec-rfc2401bis-06.txt], Internet Draft, 1 Avril 2005, Work in progress&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2402bis&amp;quot;&amp;gt;[RFC2402bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Stephen Kent, IP Authentication Header, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2402bis-11.txt draft-ietf-ipsec-rfc2402bis-11.txt], Internet Draft, 21 Mars 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Rou-id]&lt;br /&gt;
&lt;br /&gt;
Shawn Routhier, Management Information Base for the Internet Protocol (IP), draft-ietf-ipv6-rfc2011-update-10.txt; Internet Draft, 24 Mai 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Sch95]&lt;br /&gt;
&lt;br /&gt;
B. Schneier: Applied Cryptography : protocols, algorithms, and source code in C, (second edition), John Wiley &amp;amp; Sons, ISBN: 0-471-12845-7, 1996.&lt;br /&gt;
 &lt;br /&gt;
[Sta99]&lt;br /&gt;
&lt;br /&gt;
William Stallings: Snmp, Snmpv2, Snmpv3, and Rmon 1 and 2, Addison Wesley, ISBN: 0-201-48534-6, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[Tout03]&lt;br /&gt;
&lt;br /&gt;
Laurent Toutain: Réseaux Locaux et Internet: des protocoles à l'interconnexion, Troisième édition revue et augmentée, Hermès, ISBN: 2-7462-0670-6, 2003.&lt;br /&gt;
 &lt;br /&gt;
[Uni31]&lt;br /&gt;
&lt;br /&gt;
ATM Forum: ATM User-Network Interface (UNI) Specification Version 3.1, Prentice Hall, Englewood Cliffs, NJ, Juin 1995.&lt;br /&gt;
 &lt;br /&gt;
[WH-id]&lt;br /&gt;
&lt;br /&gt;
Margaret Wasserman, Brian Haberman, IP Forwarding Table MIB, draft-ietf-ipv6-rfc2096-update-07.txt, Internet Draft, 12 février 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[WK99]&lt;br /&gt;
&lt;br /&gt;
M. Welsh et L. Kaufman: Le système Linux, 2e édition révisée, Éditions O'Reilly, ISBN: 2-84177-033-8, Janvier 1999.&lt;br /&gt;
&lt;br /&gt;
==Sites Web sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
;[IETF]&lt;br /&gt;
:http://www.imag.fr/pub/archive/IETF: Mirroir français du serveur de l'IETF.&lt;br /&gt;
 &lt;br /&gt;
;[6bone]&lt;br /&gt;
:http://www.6bone.net: Réseau 6bone.&lt;br /&gt;
 &lt;br /&gt;
;[G6bone]&lt;br /&gt;
:http://peirce.logique.jussieu.fr/G6/ Réseau G6-bone (partie francophone de 6bone).&lt;br /&gt;
 &lt;br /&gt;
;[hs247] &lt;br /&gt;
:http://hs247.com/ Informations sur le 6bone et IPv6 en général.&lt;br /&gt;
&lt;br /&gt;
;[ipv6.org]&lt;br /&gt;
: http://www.ipv6.org/ pages d'information sur le protocole IPv6&lt;br /&gt;
&lt;br /&gt;
;[ipv6forum] &lt;br /&gt;
:http://www.ipv6forum.org/ Groupement d'industriels pour promouvoir IPv6.&lt;br /&gt;
&lt;br /&gt;
;[playground] &lt;br /&gt;
:http://playground.sun.com/pub/ipng/html/ipng-main.html liste des mises en oeuvre d'IPv6 dans les équipements.&lt;br /&gt;
{{suivi |Bases whois|Bases whois}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bases_whois&amp;diff=2981</id>
		<title>Bases whois</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bases_whois&amp;diff=2981"/>
				<updated>2006-02-27T14:24:16Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |La standardisation d'IPv6|La standardisation d'IPv6|Bibliographie|Bibliographie}}&lt;br /&gt;
==Définition et concepts de base==&lt;br /&gt;
&lt;br /&gt;
Les bases de type WHOIS contiennent des informations techniques et administratives permettant entre autres de savoir qui est le titulaire d'un nom de domaine, qui gère tel bloc d'adresses IP (v4 ou v6), quelle est la politique de routage de tel AS... Il s'agit de bases distribuées à accès public dont l'interrogation est possible en utilisant des outils disponibles en standard sur une grande partie des systèmes Unix (commande &amp;lt;tt&amp;gt;whois&amp;lt;/tt&amp;gt; tout simplement). Si ce n'est pas le cas, il existe un certain nombre de clients dont l'un des plus usités est celui qu'il est possible de télécharger sur le site du RIPE.&lt;br /&gt;
&lt;br /&gt;
Il existe de plus, sur les sites des organismes assurant la gestion de bases WHOIS, des outils de consultation via une interface Web. De telles interfaces peuvent être trouvées sur les sites du RIPE, de l'INTERNIC, du 6BONE, ou bien encore de l'AFNIC. En ce qui concerne la distribution de l'information, tout ce qui concerne l'adressage IP et les informations de routage se trouve réparti sur 3 bases. La base ARIN pour l'Amérique du nord et du sud, les Caraïbes et l'Afrique sub-saharienne; la base RIPE pour l'Europe et une partie de l'Afrique; enfin la base APNIC pour la zone Asie Pacifique. Pour les adresses IPv6 de test (préfixe &amp;lt;tt&amp;gt;3FFE::/16&amp;lt;/tt&amp;gt;) il existe une base spécifique gérée par le 6BONE.&lt;br /&gt;
&lt;br /&gt;
==Types de données spécifiques à IPv6==&lt;br /&gt;
&lt;br /&gt;
Il existe 2 types de données qui ont été spécialement créés pour répondre aux besoins spécifiques à IPv6. Il s'agit des types inet6num et ipv6-site.&lt;br /&gt;
&lt;br /&gt;
Les objets de type inet6num sont présents dans les bases RIPE, ARIN, APNIC et 6BONE, ceux de type ipv6-site ne sont utilisés que dans la base 6BONE car ils sont pour l'instant réservés aux adresses de test. D'ailleurs, ces deux types sont utilisés à titre expérimental et leurs format peut être amené à être modifié selon les besoins futurs.&lt;br /&gt;
&lt;br /&gt;
==Type inet6num==&lt;br /&gt;
&lt;br /&gt;
Ce type de données va permettre de définir les propriétés associées à un préfixe IPv6 donné. Le format qui est décrit ci-après ne concerne pas la base ARIN qui adopte un format minimaliste à l'image de la base INTERNIC pour les noms de domaines.&lt;br /&gt;
&lt;br /&gt;
===Format générique (template) d'un objet de type inet6num===&lt;br /&gt;
&lt;br /&gt;
Chaque ligne du template donne des informations sur un attribut. Après le nom de l'attribut, on indique sont statut (obligatoire, optionnel ou généré), s'il ne doit être présent qu'une seule fois ou non dans un objet et pour finir si cet attribut est une clef de recherche dans la base.&lt;br /&gt;
&lt;br /&gt;
 inet6num: [mandatory] [single] [primary/look-up key]&lt;br /&gt;
 netname: [mandatory] [single] [lookup key]&lt;br /&gt;
 descr: [mandatory] [multiple] [ ]&lt;br /&gt;
 country: [mandatory] [multiple] [ ]&lt;br /&gt;
 admin-c: [mandatory] [multiple] [inverse key]&lt;br /&gt;
 tech-c: [mandatory] [multiple] [inverse key]&lt;br /&gt;
 rev-srv: [optional] [multiple] [inverse key]&lt;br /&gt;
 status: [generated] [single] [ ]&lt;br /&gt;
 remarks: [optional] [multiple] [ ]&lt;br /&gt;
 notify: [optional] [multiple] [inverse key]&lt;br /&gt;
 mnt-by: [mandatory] [multiple] [inverse key]&lt;br /&gt;
 mnt-lower: [optional] [multiple] [inverse key]&lt;br /&gt;
 changed: [mandatory] [multiple] [ ]&lt;br /&gt;
 source: [mandatory] [single] [ ]&lt;br /&gt;
&lt;br /&gt;
* inet6num: Préfixe IPv6 dont on définit les attributs (format préfixe/taille du préfixe).&lt;br /&gt;
* netname: Le nom associé à la plage d'adresses définie par le préfixe.&lt;br /&gt;
* descr: Description succincte de l'objet.&lt;br /&gt;
* country: Code en 2 lettres (ISO 3166) identifiant le pays du contact administratif de l'organisme auquel appartient le préfixe.&lt;br /&gt;
* admin-c: Référence à un objet de type person/role identifiant un contact administratif pour l'objet inet6num. Cette référence est un NIC-Handle, c'est-à-dire un objet unique dans la base.&lt;br /&gt;
* tech-c: Référence à un objet de type person/role identifiant un contact technique pour l'objet inet6num. Cette référence est un NIC-Handle, c'est à dire un objet unique dans la base.&lt;br /&gt;
* rev-srv: Serveur de noms pour les reverses de la plage d'adresses définie par le préfixe.&lt;br /&gt;
* status: Type du préfixe (TLA, Sub-TLA, NLA, ...).&lt;br /&gt;
* remarks: Remarques divers et variées.&lt;br /&gt;
* notify: E-Mail de la personne qui est prévenue lors de toute modification effectuer sur l'objet.&lt;br /&gt;
* mnt-by: Référence à un objet de type mntner identifiant les personnes habilitées à modifier l'objet, ainsi que la méthode d'authentification.&lt;br /&gt;
* mnt-lower: Référence à un objet de type mntner identifiant les personnes habilitées à fournir des espaces d'adresses (avec ce préfixe) a des utilisateurs finaux.&lt;br /&gt;
* changed: E-Mail de la personne ayant effectuer la dernière mise à jour de l'objet, ainsi que la date de cette modification.&lt;br /&gt;
* source: Identification de la base où se trouve cet objet (6BONE, RIPE, APNIC, ARIN, ...)&lt;br /&gt;
&lt;br /&gt;
===Exemple d'objet de type inet6num===&lt;br /&gt;
&lt;br /&gt;
Si on utilise la commande suivante :&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; '''whois -h whois.ripe.net 2001:0660::/35'''&lt;br /&gt;
&lt;br /&gt;
On obtient le résultat suivant :&lt;br /&gt;
&lt;br /&gt;
 inet6num: 2001:0660::/35&lt;br /&gt;
 netname: FR-RENATER-20000321&lt;br /&gt;
 descr: Renater Sub-TLA block&lt;br /&gt;
 descr: Réseau National de télécommunications pour la&lt;br /&gt;
 descr: Technologie l'Enseignement et la Recherche&lt;br /&gt;
 descr: National telecommunications network&lt;br /&gt;
 descr: for Technology, Education and Research&lt;br /&gt;
 country: FR&lt;br /&gt;
 admin-c: BT261-RIPE&lt;br /&gt;
 admin-c: GR1378-RIPE&lt;br /&gt;
 tech-c: GR1378-RIPE&lt;br /&gt;
 status: SUBTLA&lt;br /&gt;
 mnt-by: RIPE-NCC-HM-MNT&lt;br /&gt;
 mnt-lower: RENATER-MNT&lt;br /&gt;
 changed: hostmaster@ripe.net 20000321&lt;br /&gt;
 changed: hostmaster@ripe.net 20000322&lt;br /&gt;
 source: RIPE&lt;br /&gt;
&lt;br /&gt;
On peut donc en déduire que le préfixe &amp;lt;tt&amp;gt;2001:0660::/35&amp;lt;/tt&amp;gt; appartient au réseau FR-RENATER-20000321, qu'il s'agit d'un sub-TLA français géré par Renater. On a aussi les NIC-handles des différents contacts techniques et administratifs.&lt;br /&gt;
&lt;br /&gt;
==Type ipv6-site==&lt;br /&gt;
&lt;br /&gt;
Ce type d'objet est uniquement utilisé, pour le moment en tout cas, dans la base 6BONE, c'est à dire sur les adresses de test IPv6 (de type &amp;lt;tt&amp;gt;3FFE::/16&amp;lt;/tt&amp;gt;). Il sert a décrire les sites utilisant des adresses en IPv6.&lt;br /&gt;
&lt;br /&gt;
===Template d'un objet de type ipv6-site===&lt;br /&gt;
&lt;br /&gt;
Le type ipv6-site est décrit dans un document dont la validité a expiré le draft draft-ietf-ngtrans-6bone-registry-03.txt.&lt;br /&gt;
&lt;br /&gt;
 ipv6-site: [mandatory] [single]&lt;br /&gt;
 origin: [mandatory] [single]&lt;br /&gt;
 descr: [mandatory] [single]&lt;br /&gt;
 location: [optional] [multiple]&lt;br /&gt;
 country: [mandatory] [multiple]&lt;br /&gt;
 prefix: [mandatory] [multiple]&lt;br /&gt;
 application: [optional] [multiple]&lt;br /&gt;
 tunnel: [optional] [multiple]&lt;br /&gt;
 native: [optional] [multiple]&lt;br /&gt;
 contact: [mandatory] [multiple]&lt;br /&gt;
 remarks: [optional] [multiple]&lt;br /&gt;
 url: [optional] [multiple]&lt;br /&gt;
 notify: [optional] [multiple]&lt;br /&gt;
 mnt-by: [optional] [multiple]&lt;br /&gt;
 changed: [mandatory] [multiple]&lt;br /&gt;
 source: [mandatory] [single]&lt;br /&gt;
&lt;br /&gt;
* ipv6-site: Nom du site.&lt;br /&gt;
* origin: Numéro de l'AS (Autonomous System) dont fait partie le site.&lt;br /&gt;
* descr: Description succinte de l'objet.&lt;br /&gt;
* location: &amp;quot;Coordonnées terrestre&amp;quot; du site, pour plus de détails, se référer au RFC 1876.&lt;br /&gt;
* country: Code en 2 lettres (ISO 3166) identifiant le pays du contact administratif de l'organisme auquel appartient le site.&lt;br /&gt;
* prefix: Liste des préfixes IPv6 utilisés sur ce site.&lt;br /&gt;
* application: Liste des applications disponibles sur le site. En plus du nom de l'application, on indique l'équipement sur lequel elle est accessible. Par exemple &amp;quot;http://www.ipv6.toto.fr&amp;quot;.&lt;br /&gt;
* tunnel: Les tunnels permettent d'encapsuler un protocole dans un autre. En l'occurrence, il s'agit principalement de tunnels IPv6 au-dessus d'une infrastructure en IPv4. On indique le protocole du tunnel, celui de l'infrastructure, le nom de la machine sur le site qui fait une des extrémités du tunnel, le nom de la machine distante qui fait l'autre bout du tunnel, le site où cette machine se trouve (optionnel), et pour finir le protocole de routage utilisé : STATIC, BGP4+... (optionnel). Par exemple:&lt;br /&gt;
&lt;br /&gt;
 IPv6 in IPv4 popeye.site1.fr -&amp;gt; olive.site2.fr OLIVE-SITE BGP4+&lt;br /&gt;
&lt;br /&gt;
* native: Similaire a l'attribut &amp;quot;tunnel&amp;quot;, à ceci près que cette fois-ci on décrit les connexion natives IPv6. La syntaxe est la même.&lt;br /&gt;
* contact: Référence à un objet de type &amp;quot;person&amp;quot; identifiant un contact pour le site.&lt;br /&gt;
* remarks: Remarques diverses et variées sur le fonctionnement général du site.&lt;br /&gt;
* url: Pointeurs sur quelques pages d'informations supplémentaires à propos du site.&lt;br /&gt;
* notify: E-Mail de la personne qui est prévenue lors de toute modification effectuée sur l'objet.&lt;br /&gt;
* mnt-by: Référence à un objet de type mntner identifiant les personnes habilitées à modifier l'objet, ainsi que la méthode d'authentification.&lt;br /&gt;
* changed: E-Mail de la personne ayant effectuée la dernière mise à jour de l'objet, ainsi que la date de cette modification.&lt;br /&gt;
* source: Identification de la base où se trouve cet objet (6BONE, RIPE, APNIC, ARIN, ...)&lt;br /&gt;
&lt;br /&gt;
===Exemple d'objet de type ipv6-site===&lt;br /&gt;
&lt;br /&gt;
Si on utilise la commande suivante :&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; '''whois -h whois.6bone.net G6-UTBM'''&lt;br /&gt;
&lt;br /&gt;
On obtient le résultat suivant :&lt;br /&gt;
&lt;br /&gt;
 ipv6-site: G6-UTBM&lt;br /&gt;
 origin: AS1717&lt;br /&gt;
 descr: Université de Technologie de Belfort-Montbéliard&lt;br /&gt;
 country: FR&lt;br /&gt;
 prefix: 3FFE:303:22::/48&lt;br /&gt;
 tunnel: IPv6 in IPv4 testnm.utbm.fr -&amp;gt;&lt;br /&gt;
 ipv6-cisco.ipv6.u-strasbg.fr G6-PIR-GE STTIC&lt;br /&gt;
 contact: TN1-6BONE&lt;br /&gt;
 remarks: This object is automatically converted from the RIPE181 registry&lt;br /&gt;
 changed: noel@dpt-info.u-strasbg.fr 20000315&lt;br /&gt;
 changed: auto-dbm@whois.6bone.net 20010117&lt;br /&gt;
 source: 6BONE&lt;br /&gt;
&lt;br /&gt;
==Création, modification et suppression d'objets==&lt;br /&gt;
&lt;br /&gt;
Les différentes opérations possibles sur les objets contenus dans les bases de type WHOIS se passent toutes de la même manière, il suffit d'envoyer un mail a une adresse spécifique :&lt;br /&gt;
&lt;br /&gt;
* auto-dbm@whois.6bone.net pour la base du 6BONE,&lt;br /&gt;
* auto-dbm@ripe.net pour la base RIPE.&lt;br /&gt;
&lt;br /&gt;
Certains sites proposent des interfaces plus pratiques, comme sur le site de Viagenie65 qui permettent de réaliser tous les types d'opérations beaucoup plus facilement en évitant les habituelles erreurs de syntaxes qui ne manquent pas d'arriver en utilisant la technique des mails.&lt;br /&gt;
&lt;br /&gt;
===Création===&lt;br /&gt;
&lt;br /&gt;
Avant toute création, il est nécessaire d'avoir au moins un objet de type &amp;quot;person&amp;quot; ou &amp;quot;role&amp;quot; dans la base où l'on souhaite travailler afin d'obtenir un identifiant unique, plus communément appelé NIC-handle. Un objet de type &amp;quot;person&amp;quot; va être créé pour définir une personne physique.&lt;br /&gt;
&lt;br /&gt;
L'objet de type role, lui, définit plus une fonction qu'un individu et son utilisation principale est de décrire par exemple une équipe technique d'un organisme. Lorsqu'un des membres de cette équipe s'en va ou qu'un nouveau arrive il suffit de modifier le contenu de l'objet de type role, il n'y a pas besoin de mettre à jour les autres objets qui référencent ce NIC-handle. Donc, la technique la plus approprié pour débuter tout enregistrement dans une base est de créer les objets &amp;quot;person&amp;quot; nécessaires afin d'obtenir des NIC-Handles, puis de créer le ou les objets &amp;quot;role&amp;quot; qui référencent les objets de types &amp;quot;person&amp;quot; précédemment créés et c'est ce dernier NIC-Handle obtenu que l'on choisira d'utiliser en priorité pour les contacts techniques ou administratifs. Si on choisit d'utiliser la technique de création par mail, il suffit d'envoyer un template correspondant à l'objet a créer correctement rempli. Pour avoir le format exact et la syntaxe de chaque attribut, il faut utiliser la commande suivante :&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; '''whois -h whois.6bone.net -v ipv6-site'''&lt;br /&gt;
&lt;br /&gt;
La commande précédente permet d'obtenir une documentation complète de l'objet de type ipv6-site tel qu'il est défini dans la base du 6BONE. Selon le même principe on peut demander la documentation concernant un objet de type person dans la base RIPE :&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; '''whois -h whois.ripe.net -v person'''&lt;br /&gt;
&lt;br /&gt;
Si jamais l'option &amp;quot;-v&amp;quot; n'est pas prise en compte par le client whois de votre système, il faut télécharger une version prenant quelques options avancées66.&lt;br /&gt;
&lt;br /&gt;
===Modification===&lt;br /&gt;
&lt;br /&gt;
Pour la modification par mail, il faut récupérer l'objet tel qu'il est stocké dans la base en utilisant tout simplement la commande whois, modifier le contenu et envoyer le mail ainsi compose.&lt;br /&gt;
&lt;br /&gt;
===Suppression===&lt;br /&gt;
&lt;br /&gt;
Pour la suppression, il faut récupérer l'objet dans la base et le renvoyer en ajoutant un attribut supplémentaire &amp;quot;delete&amp;quot; dans le template. Cela donnera quelque chose comme :&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 remarks: Ceci est un objet de test&lt;br /&gt;
 delete: Un texte quelconque&lt;br /&gt;
 changed: test@test.tt 20011111&lt;br /&gt;
 source: G6BONE&lt;br /&gt;
&lt;br /&gt;
Toutefois, si l'objet est protégé, il ne pourra être supprimé que si l'on connaît la méthode d'authentification.&lt;br /&gt;
&lt;br /&gt;
==Problèmes spécifiques à WHOIS==&lt;br /&gt;
&lt;br /&gt;
Le principal problème des bases WHOIS est qu'il existe deux grandes tendances au niveau du format des données, le style INTERNIC, minimaliste et à la lecture peu aisée et le style RIPE, plus complet et plus facile à comprendre.&lt;br /&gt;
&lt;br /&gt;
Le second problème, qui en découle, est que les informations ne sont plus centralisées comme cela a été le cas à une époque. Si cela n'est pas trop dramatique en ce qui concerne les adresses IP puisqu'il n'y a que 3 bases (ARIN, APNIC et RIPE), cela est beaucoup plus gênant pour les noms de domaines puisque pratiquement chaque organisme d'enregistrement possède sa propre base. Et bien entendu, chacun utilise des templates plus ou moins différents dérivés des style RIPE et INTERNIC.&lt;br /&gt;
&lt;br /&gt;
Le troisième problème, qui résulte des deux précédents, est qu'une même information stockée dans deux bases différentes n'aura pas du tout le même format et donc offrira plus ou moins de détails. Pour finir, il faut savoir que ces bases ne sont là qu'à titre d'information et leur contenu n'influence pas le fonctionnement de l'Internet. Il arrive donc que l'information que l'on obtient soit incomplète ou erronée.&lt;br /&gt;
&lt;br /&gt;
Conclusion, si les bases de type WHOIS sont des alliés précieux pour obtenir des informations rapidement et facilement, une analyse technique un peu plus poussée est souvent nécessaire pour en vérifier la véracité et la complétude.&lt;br /&gt;
{{suivi |La standardisation d'IPv6|La standardisation d'IPv6|Bibliographie|Bibliographie}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=La_standardisation_d%27IPv6&amp;diff=2980</id>
		<title>La standardisation d'IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=La_standardisation_d%27IPv6&amp;diff=2980"/>
				<updated>2006-02-27T14:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |Historique de la standardisation d’IPv6|Historique de la standardisation d’IPv6|Bases whois|Bases whois}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Dans cette première phase, commencée en août 1990 lors de la réunion IETF de Vancouver, le taux de croissance continu de l'Internet met en évidence le gaspillage des adresses dû à la structure en classes de l'adressage IPv4. L'activité a surtout consisté à quantifier le problème et à proposer quelques solutions à plus ou moins court terme.&lt;br /&gt;
Un certain nombre de sites ne peuvent plus se contenter d'un simple réseau de classe C pour les équipements qu'ils ont à mettre en réseau. Leurs besoins d'adressage sont intermédiaires entre un réseau de classe C (254 adresses disponibles) et un réseau de classe B (65534 adresses disponibles). Une simulation montre alors que si chacun de ces sites fait une demande de réseau de classe B, compte tenu de la vitesse de croissance de l'Internet, il n'y aurait plus eu de réseaux de classe B disponibles pour de nouvelles allocations vers mars 1994.&lt;br /&gt;
&lt;br /&gt;
La solution adoptée, qui consiste à attribuer plusieurs réseaux de classe C à un même site va générer un autre problème qui est la saturation de la mémoire disponible pour maintenir les tables de routage sur les routeurs principaux de l'Internet.&lt;br /&gt;
&lt;br /&gt;
La question de fond commence alors à émerger : faut-il conserver le protocole IP en l'adaptant tant bien que mal aux exigences de l'évolution de l'Internet et  en acceptant les contraintes (en particulier la limitation de la croissance à cause de la pénurie prévisible d'adresses), ou bien opter pour la modification de la structure des adresses et refondre le standard IP en acceptant le bouleversement que cela va provoquer ?&lt;br /&gt;
&lt;br /&gt;
En novembre 1991, lors de la réunion IETF de Santa Fe, les groupes de travail ROAD (''Routing and Addressing'') et ALE (''Address Lifetime Expectations'') sont créés.  Ils sont chargés d'étudier les trois problèmes suivants pour guider l'IETF dans ses choix :&lt;br /&gt;
*la pénurie des réseaux de classe B,&lt;br /&gt;
*la croissance des tables de routage des routeurs principaux,&lt;br /&gt;
*la pénurie des adresses de machines.&lt;br /&gt;
&lt;br /&gt;
==L'émergence des premières idées==&lt;br /&gt;
&lt;br /&gt;
En mars 1992, lors de la réunion IETF de San Diego, le groupe ROAD rend compte de ses travaux et propose pour le court terme d'adopter CIDR (''Classless Inter-Domain Routing'') qui règle provisoirement le problème de la croissance des tables de routage par l'agrégation des préfixes contigus.&lt;br /&gt;
&lt;br /&gt;
Pour le long terme, il propose de faire un appel à propositions et de former des groupes de travail chargés d'étudier différentes approches possibles pour un nouveau protocole IP doté d'un espace d'adressage plus grand qu'IPv4. Quatre groupes sont alors au travail avec des propositions sérieuses, il s'agit de :&lt;br /&gt;
*PIP : The ‘P’ Internet Protocol, qui introduit la notion d'identificateur et de localisateur,&lt;br /&gt;
*TUBA : TCP and UDP with Bigger Addresses ([RFC 1347]) basée sur CLNS,&lt;br /&gt;
*IPAE : IP Address Encapsulation, basée sur une extension des adresses IPv4,&lt;br /&gt;
*SIP : Simple Internet Protocol, version simplifiée de IPv4 avec des adresses à 64 bits.&lt;br /&gt;
&lt;br /&gt;
Parallèlement à ce travail, l'IAB produit une version 7 du protocole IP basée sur CNLP (''Connectionless Protocol'') de l'ISO.&lt;br /&gt;
&lt;br /&gt;
D'autre part, plusieurs propositions indépendantes ont vu le jour. On peut citer notamment CATNIP [RFC 1707], proposant une standardisation de l'interface entre les couches réseau et transport.  Après discussions, l'IETF décide de rejeter la proposition de l'IAB et adopte les propositions du groupe ROAD.&lt;br /&gt;
&lt;br /&gt;
En juillet 1992, lors de la réunion IETF de Cambridge, un appel à propositions est donc lancé à la communauté mondiale pour définir les caractéristiques de l'IP de nouvelle génération (IPng).&lt;br /&gt;
&lt;br /&gt;
==Définition du cahier des charges du nouvel IP==&lt;br /&gt;
&lt;br /&gt;
En novembre 1992, lors de la réunion IETF de Washington, CIDR est adopté par l'IESG pour répondre au problème de la croissance trop rapide des tables de routage. Il sera rapidement inclus dans les protocoles de routage externe comme BGP4.&lt;br /&gt;
&lt;br /&gt;
L'IESG publie le RFC 1380 &amp;quot;Délibérations de l'IESG pour le routage et l'adressage&amp;quot;. Ce document fixe un premier cahier des charges que devront respecter les propositions pour le nouveau standard IP, et une grille d'évaluation qui sera utilisée pour les comparer.  Ainsi, le nouveau standard devra être capable :&lt;br /&gt;
*d'adresser au moins un milliard de réseaux,&lt;br /&gt;
*de proposer un plan de transition &amp;quot;sans jour J&amp;quot;,&lt;br /&gt;
*de prendre en compte à terme la mobilité, la réservation de ressources, les hauts débits, etc.&lt;br /&gt;
&lt;br /&gt;
Les propositions devront préciser les changements induits sur :&lt;br /&gt;
*les machines,&lt;br /&gt;
*les routeurs intérieurs et extérieurs,&lt;br /&gt;
*la sécurité et l'authentification,&lt;br /&gt;
*la gestion du réseau et les outils (ping, traceroute, etc.),&lt;br /&gt;
*les modes opératoires et les procédures d'administration,&lt;br /&gt;
*les autres protocoles (ARP, RARP, IP, ICMP...).&lt;br /&gt;
&lt;br /&gt;
Et étudier :&lt;br /&gt;
*l'impact sur les performances et la sécurité,&lt;br /&gt;
*un schéma complet de routage et d'adressage,&lt;br /&gt;
*un plan de déploiement.&lt;br /&gt;
&lt;br /&gt;
Tous les groupes sont invités à présenter leurs propositions pour la réunion IETF de mars 1993 à Columbus. Lors de cette réunion, les groupes IPAE, PIP, SIP, TUBA présentent leurs premiers travaux et parfois des premières implémentations de leurs protocoles.  Les groupes SIP/IPAE fusionnent en gardant le nom de SIP. Mais la compétition entre les groupes qui défendent chacun leur solution est très forte et tend à disperser les efforts tout en ralentissant le processus d'émergence du nouveau standard. Aussi en juillet 1993, lors de la réunion IETF d'Amsterdam, et sous la pression des acteurs industriels, l'objectif est redéfini : il faut arriver rapidement à produire un standard minimum fondé sur tous les éléments techniques pour lesquels il y a consensus. L'IESG est également chargé de clarifier le processus de sélection. Pour limiter la dispersion des efforts due à la concurrence de groupes de travail rivaux, un domaine IPng (IP next generation) est formellement créé pour coordonner leur action [RFC 1454].&lt;br /&gt;
En novembre 93, lors de la réunion IETF de Houston, le groupe ALE présente des projections de croissance de l'Internet et propose les mesures suivantes pour prolonger la vie d'IPv4 :&lt;br /&gt;
*récupération des numéros de réseaux assignés non utilisés ou sous-utilisés,&lt;br /&gt;
*durcissement de la politique d'allocation de réseaux, &lt;br /&gt;
*incitation des sites largement pourvus à renuméroter pour restituer une partie de leurs numéros de réseaux ou pour revenir dans l'espace d'adressage de leur fournisseur d'accès.&lt;br /&gt;
&lt;br /&gt;
Lors de cette même réunion, les groupes de travail PIP et SIP fusionnent dans le groupe SIPP (Simple Internet Protocol Plus [RFC 1710]). L'IESG publie un livre blanc ([RFC 1550]) qui est un appel à propositions pour définir les critères qui serviront à apprécier les propositions des différents groupes de travail sur le nouveau protocole IP.  En mars 1994, lors de la réunion IETF de Seattle, le groupe ALE dans son étude sur la croissance du nombre de machines connectées à l'Internet prédit qu'il n'y aura plus d'adresses disponibles en 2008 (à 3 ans près) sur la base du taux de croissance actuel. Il propose de standardiser quelques numéros de réseaux non routables pour les utiliser dans les réseaux IP privés (Intranets).&lt;br /&gt;
Parallèlement, une forte incitation sera lancée pour utiliser l'agrégation de routes au moyen du ''Classless Interdomain Routing'' (CIDR).&lt;br /&gt;
&lt;br /&gt;
L'appel du RFC 1550 sera entendu, et un document définissant les critères de sélection du nouveau protocole IP parmi les candidats restants a pu être élaboré à partir des réponses obtenues. Un appel à commentaires est lancé avec comme objectif de pouvoir disposer d'une version définitive lors de la prochaine réunion de l'IETF en juillet 1994 à Toronto.&lt;br /&gt;
&lt;br /&gt;
==Le choix d'IPv6==&lt;br /&gt;
&lt;br /&gt;
Lors de la réunion IETF de Toronto, les projets de protocoles TUBA, CATNIP, SIPP qui ont été finalisés courant 1994 sont analysés.  Il en ressort les principaux éléments suivants :&lt;br /&gt;
*CATNIP est bien considéré, mais trop jeune. Le risque lié à un protocole très nouveau et le manque de plan de transition le font rejeter.&lt;br /&gt;
*TUBA est assez globalement rejeté à cause de la dualité IETF/ISO.&lt;br /&gt;
*SIPP, qui est devenu SIPP+ quand la taille de ses adresses a été portée à 16 octets, est adopté : la philosophie principale d'IPv4 est conservée et le nombre de champs de l'en-tête est moindre.&lt;br /&gt;
&lt;br /&gt;
Recommandation &amp;quot;impérative&amp;quot; est faite d'adopter le protocole SIPP+ comme successeur d'IPv4.&lt;br /&gt;
&lt;br /&gt;
Le choix de SIPP+ comme nouveau protocole a aussi le mérite d'arrêter la compétition entre groupes de travail rivaux, et de concentrer les efforts autour d'un même projet. Car si le format du paquet IP nouveau est défini, beaucoup de choses restent à faire, et notamment définir la structure de l'adressage qui reste un problème majeur non résolu à cette époque.&lt;br /&gt;
&lt;br /&gt;
Fin 1994, le nom définitif du protocole est adopté, ce sera IPv6 (la version 5 ayant déjà été attribuée à un protocole expérimental : ST-II, [RFC 1819] et la version 7 réservée au transport sur CLNP).  L'IESG approuve alors la création de deux nouveaux groupes de travail :&lt;br /&gt;
*IPng (''IP next generation'') va devoir définir complètement les spécifications du nouveau protocole sur les bases de SIPP, en respectant le cahier des charges élaboré.&lt;br /&gt;
*NGTRANS (''IPng Transition'') qui s'attèle au problème de la migration de l'Internet d'IPv4 vers IPv6.&lt;br /&gt;
&lt;br /&gt;
En même temps, les premières implémentations du protocole vont permettre des tests à plus grande échelle, en interconnectant les plates-formes de test IPv6 intra- et inter- continent.&lt;br /&gt;
&lt;br /&gt;
==Des premières implémentations au démarrage du 6bone==&lt;br /&gt;
&lt;br /&gt;
Après la publication d'une nouvelle version des recommandations pour le nouveau protocole IP [RFC 1752], en janvier 1995 et la création de l'enregistrement de type AAAA pour supporter les adresses IPv6 dans le DNS d'IPv4 en février, les trois premières souches IPv6 sont produites par DIGITAL, l'INRIA, et le NRL (''US Naval Research Laboratory''). Le 30 mars 1995, les premiers paquets IPv6 sont échangés entre des machines utilisant ces codes.&lt;br /&gt;
&lt;br /&gt;
Les choses vont s'accélérer à partir de la réunion IETF de fin avril 1995 à Denver qui donne lieu à première diffusion des souches IPv6 existantes.  Les implémentations d'IPv6 se multiplient, et début juin 1995, la liste des systèmes supportant IPv6 est la suivante : NetBSD (INRIA), BSDI (NRL), DIGITAL Unix, HP-UX (SICS).&lt;br /&gt;
&lt;br /&gt;
La fin de l'année 1995 va voir un grand nombre de tests et démonstrations d'interopérabilité d'IPv6 se dérouler. En particulier :&lt;br /&gt;
*juillet 1995 : interopérabilité démontrée à la réunion IETF de Stockholm.&lt;br /&gt;
*8-10 août 1995 : TCP/IP expo show (SICS, Mitre, INRIA, HP, DIGITAL).&lt;br /&gt;
*27-29 septembre 1995 : démonstration publique de machines échangeant du trafic IPv6 à l’Atlanta User Interop.&lt;br /&gt;
*7 décembre 1995 : rencontre des implémenteurs IPv6 à la réunion IETF de Dallas.&lt;br /&gt;
&lt;br /&gt;
La plupart de ces tests d'interopérabilité ont eu lieu sur un même réseau local. La suite logique est de vouloir étendre ces tests dans un contexte de réseau étendu pour tester les équipements et protocoles de routage.&lt;br /&gt;
&lt;br /&gt;
C'est ainsi que  naît l'idée du G6 en France. Ce groupe se donne un double objectif :&lt;br /&gt;
*regrouper les expérimentateurs d'IPv6 en France en les aidant à partager leur expérience et en coordonnant des actions communes. &lt;br /&gt;
*faire connaître et promouvoir le proctocole IPv6.&lt;br /&gt;
&lt;br /&gt;
Il tient sa première réunion le 20 décembre 1995.&lt;br /&gt;
&lt;br /&gt;
Au plan international, c'est à la réunion IETF de Los Angeles en mars 1996 que germe l'idée de créer un réseau mondial de machines implémentant IPv6. Il est appelé le 6bone. Lors de la réunion IETF suivante à Montréal en Juillet 1996, il est imaginé de construire le 6bone à partir d’un ensemble de tunnels reliant entre eux des îlots de machines.&lt;br /&gt;
&lt;br /&gt;
Le 15 juillet 1996 comme prévu à Montréal, a lieu le démarrage officiel du 6bone reliant l'IMAG en France pour le G6, Uni-C au Danemark et le projet WIDE au Japon. En Décembre 1996, lors de la réunion IETF de San José, le 6bone devient un groupe de travail de l'IETF. Il est décidé de structurer géographiquement le réseau, tous les tunnels d'un même pays arrivant sur un ou quelques noeuds qui échangent eux-même leurs trafics.&lt;br /&gt;
&lt;br /&gt;
Pendant toute l'année 1997, le 6bone raccorde de plus en plus de sites, jouant son rôle de terrain d'expérimentation pour IPv6.  Dans le domaine du routage, il utilise d'abord RIPng [RFC 2080] qui est une adaptation à IPv6 de RIP et IDRPv6, puis BGP4+ qui est une adaptation à IPv6 de BGP4.&lt;br /&gt;
&lt;br /&gt;
Il permet surtout de déployer et de tester à grande échelle les deux plans d'adressage qui se succèdent en cette année 1997.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;plan&amp;quot;&amp;gt;Mise au point du plan d'adressage d'IPv6&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Comme on l'a vu précédemment, la structure de l'adressage n'a pas été définie lors de l'adoption du nouveau format de paquet IP en juillet 1994. La seule chose de sûre est que les adresses IPv6 ont 128 bits de long. Une des premières tâches a donc été de définir comment ces 128 bits allaient être utilisés. &lt;br /&gt;
&lt;br /&gt;
Cela va donner lieu à beaucoup d'activité et à des échanges passionnés tant les enjeux sont importants. En effet, les principaux acteurs que sont les fournisseurs d'accès au réseau, leurs clients, et les constructeurs d'équipements routage ou de postes de travail ont des intérêts et donc des points de vue qui peuvent être sensiblement opposés. Par exemple les fourniseurs d'accès sont plutôt enclins à garder captifs leurs clients en maîtrisant l'espace d'adressage, alors que les clients souhaitent garder la possibilité de changer de fournisseurs facilement. Les constructeurs quant à eux souhaitent que les protocoles soient simples à implémenter.&lt;br /&gt;
&lt;br /&gt;
Plusieurs plans d'adressages ont été étudiés pour arriver finalement au plan d'adressage dit [[Unicast Global|agrégé]] basé sur 3 niveaux d'agrégation. &lt;br /&gt;
&lt;br /&gt;
En juillet 1995, lors de la réunion IETF de Stockholm, un premier débat oppose les partisans d'un plan d'adressage géographique aux fournisseurs d'accès. Ces derniers souhaitent pouvoir faire de l'agrégation d'adresses (type CIDR) indépendamment des critères géographiques. Les premières spécifications d'IPv6 sont publiées sous forme d'une suite de RFC ([RFC 1883], [RFC 1884], [RFC 1885], [RFC 1886], [RFC 1887]) lors de la réunion IETF de Dallas en décembre 1995. Ils spécifient complètement la structure des en-têtes du paquet IPv6, le plan d'adressage est structuré par fournisseur d'accès à l'Internet.&lt;br /&gt;
&lt;br /&gt;
En décembre 1996, lors de la réunion IETF de San José la proposition &amp;quot;8+8&amp;quot; qui découpe les 16 octets de l'adresse en 8 octets fournisseur d'accès et 8 octets utilisateur est discutée. Elle a pour objectif de limiter la croissance des tables de routage et de rendre l'utilisateur indépendant de son fournisseur en effectuant une traduction partielle d'adresse sur les 8 octets réservés au fournisseur d'accès en sortie de site. En mars 1997, lors de la réunion IETF de Palo Alto, la proposition 8+8 qui est devenue GSE (''Global, Site and End-system'') est à nouveau discutée, mais est rejetée.&lt;br /&gt;
&lt;br /&gt;
===Plan d'adressage géographique (geographic-based unicast address)===&lt;br /&gt;
 &lt;br /&gt;
C'est l'un des premiers plans d'adressage proposés. Il découpe hiérarchiquement les adresses en entités géographiques (continents, pays, région, ville, etc.).  Ce plan est aujourd'hui abandonné, car difficile à mettre en œuvre pour des raisons d'ordre technique notamment. Il n'est valable que dans des situations monopolistiques où les opérateurs contrôlent une partie de territoire.&lt;br /&gt;
&lt;br /&gt;
Les adresses étaient caractérisées par le préfixe 8000::/3.&lt;br /&gt;
&lt;br /&gt;
===Plan d'adressage fournisseur (provider-based unicast address) ===&lt;br /&gt;
&lt;br /&gt;
Ce type d'adresse (cf. figure 17-4) est décrit dans le RFC 2073, classé historique. Une adresse de ce type avait pour préfixe &amp;lt;tt&amp;gt;4000::/3&amp;lt;/tt&amp;gt; et possèdait 5 niveaux hiérarchiques :&lt;br /&gt;
&lt;br /&gt;
[[image:CS214.gif]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+Allocation des valeurs des registry ID&lt;br /&gt;
!registry ID	|| Nature&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot; &lt;br /&gt;
|10000 ||	IANA      (Internet Assigned Numbers Authority)&lt;br /&gt;
|-&lt;br /&gt;
|01000 ||	RIPE NCC  (Réseaux IP Européens, Network Coordination Center)&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot; &lt;br /&gt;
|11000 ||	InterNIC  (Internet Network Information Center)&lt;br /&gt;
|-&lt;br /&gt;
|10100 ||	APNIC     (Asia-Pacific Network Information Center)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le premier niveau avait une longueur fixée à 5 bits (&amp;lt;tt&amp;gt;i=5&amp;lt;/tt&amp;gt;) et ses valeurs possibles étaient donné par le tableau précédent.&lt;br /&gt;
*Un fournisseur d'accès à l’Internet était identifié par un numéro qu'il obtient d’un des organismes mentionnés ci-dessus. &lt;br /&gt;
&lt;br /&gt;
De même, un souscripteur obtienait son identificateur de son fournisseur.  C’est un mot de 24 bits suivi de 8 bits laissés à zéro (donc &amp;lt;tt&amp;gt;k=32&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Les deux derniers niveaux, gérés par le souscripteur, étaient respectivement le numéro de sous-réseau (&amp;lt;tt&amp;gt;l=16&amp;lt;/tt&amp;gt;) et l'identificateur de l'interface (48 bits), typiquement son adresse MAC.&lt;br /&gt;
Dans ce plan d'adressage, les adresses appartiennent aux fournisseurs de connectivité IP et non pas aux utilisateurs. Tout changement de fournisseur implique donc pour un client de renuméroter toutes ses machines. De plus, si un client est abonné à un &amp;quot;petit&amp;quot; fournisseur lui-même revendant de la connectivité IP d'un plus gros fournisseur, et si le fournisseur intermédiaire décide de changer de fournisseur principal, le client final doit renuméroter tout son réseau.  Ceci a été jugé inacceptable.&lt;br /&gt;
&lt;br /&gt;
===Adresses de test dans le plan d'adressage fournisseur===&lt;br /&gt;
&lt;br /&gt;
Ces adresses (cf. figure 17-5) sont décrites dans le RFC 1897.  L'intérêt principal de ces adresses de test est de fournir un algorithme simple basé sur les adresses IPv4 existantes afin de construire des adresses IPv6 pour des équipements expérimentaux sans avoir à demander de délégation d'autorité.  Ces adresses ont été largement utilisées lors de la création du 6bone:&lt;br /&gt;
&lt;br /&gt;
[[image:CS215.gif]]&lt;br /&gt;
&lt;br /&gt;
===Plan d'adressage GSE===&lt;br /&gt;
&lt;br /&gt;
Le plan d'adressage fournisseur a été largement critiqué, surtout par les opérateurs, qui tiennent essentiellement aux problèmes de renumérotation.&lt;br /&gt;
&lt;br /&gt;
L'approche GSE (''Global, Site and End-system'') propose une construction dynamique des adresses avec une partie basse fixe d'identificateur globalement unique (au niveau de l'Internet) sur 64 bits et une partie haute variable identifiant le fournisseur d'accès, insérée à la volée par le routeur de sortie du site.&lt;br /&gt;
&lt;br /&gt;
Tant qu'un paquet reste à l'intérieur du site, la partie haute des adresses sources des paquets émis depuis le site est forcée à zéro. Il en va de même pour les adresses destinations des paquets reçus depuis l'extérieur à destination d'une machine du site.  La partie haute des paquets sortants est positionnée à la &amp;quot;bonne&amp;quot; valeur par le routeur de sortie. Si le site est connecté à plusieurs fournisseurs d'accès, ce routeur sélectionne cette valeur en fonction du fournisseur choisi. Ceci facilite le changement de fournisseur en éliminant la nécessité de renumérotation manuelle.  En outre, la gestion d'un site dépendant de plusieurs fournisseurs est facilitée.&lt;br /&gt;
&lt;br /&gt;
Le plan d'adressage proposé par GSE présente des avantages :&lt;br /&gt;
*GSE facilite la renumérotation du réseau puisqu'il suffit de changer l'adresse dans le routeur en frontière ;&lt;br /&gt;
*GSE supporte facilement les réseaux à attachements multiples (multihomed). Les réseaux ayant plusieurs attachements à des fournisseurs d'accès différents posent un problème d'adressage dans les plans d'adressages classiques~: si une station choisit l'une des adresses possibles, des exceptions doivent être introduites dans les tables de routage de l'Internet. Si la station prend toutes les adresses possibles, elle ne sait quelle adresse source optimale utiliser.  Avec GSE l'adresse de la source est construite dynamiquement au moment de la traversée du routeur en frontière, elle est donc la meilleure pour une destination donnée.&lt;br /&gt;
&lt;br /&gt;
Par contre GSE présente plusieurs inconvénients graves :&lt;br /&gt;
*TCP associe un contexte en fonction des adresses IP. Si celles-ci changent, la connexion doit quand même être maintenue, d'où l'existence d'un identifiant unique au niveau mondial ; cela implique une refonte de TCP qui n'est pas à l'ordre du jour à l'IETF ;&lt;br /&gt;
*le calcul des checksums doit être modifié puisque la station ne connaît qu'une partie de l'adresse ; &lt;br /&gt;
*la question de l'enregistrement des adresses dans le DNS inverse, faisant la correspondance entre une adresse et un nom de machine, n'est pas résolue ; &lt;br /&gt;
*la partie identificateur est supposée &amp;quot;globalement&amp;quot; unique ; on ne sait pas s'il faut une garantie absolue, et si oui, comment la vérifier ; &lt;br /&gt;
les mécanismes de mascarade (utiliser l'adresse source d'une autre machine) sont mal compris, et il semble que l'utilisation de sécurité active (IPsec) soit quasiment obligatoire.&lt;br /&gt;
&lt;br /&gt;
==Mise au point finale du cœur des spécifications d’IPv6==&lt;br /&gt;
&lt;br /&gt;
En août 1997, lors de la réunion IETF de Munich, le protocole BGP4+ est choisi de préférence à BGP5 (la possibilité d'avoir des numéros de systèmes autonomes codés sur 4 octets au lieu de 2 dans la version IPv4 n’est pas retenue).&lt;br /&gt;
&lt;br /&gt;
En décembre 1997, lors de la réunion IETF de Washington, le rapport d’un test d’interopérabilité fait par un laboratoire de l’UNH (Université du New Hampshire) est présenté au groupe IPng. Ce test qui met en oeuvre 10 machines et 6 routeurs, montre que 90% des machines et 70% des routeurs interopèrent bien (en RIPng ou BGP4+ pour ces derniers). Lors de cette même réunion, les règles d’attribution des TLA et NLA et les critères définissant les niveaux d'agrégation donnent lieu à beaucoup de controverses, ces éléments ne pourront être finalisées que mi 1998.&lt;br /&gt;
&lt;br /&gt;
Pendant cette année 1998, une intense activité de test et de déploiements de réseaux expérimentaux, permet d’affiner les propositions de standards, les implémentations (machines et routeurs) et de valider les plans d’adressage expérimentaux et de production.&lt;br /&gt;
&lt;br /&gt;
En octobre 1998, ESnet (''Energy Sciences Network'') établit une connexion IPv6 sur ATM avec les réseaux CAIRN, Internet2/vBNS et CA*net2, puis, en décembre avec WIDE (Japon). ESnet crée aussi l'initiative 6REN (''IPv6 Research and Education Networks Initiative'') qui a pour but de donner au monde de l'enseignement et la recherche américain un service IPv6 de production en complément du 6bone qui est un réseau d’expérimentation et ne peut assurer la continuité de service necessaire à un réseau de production. Le 6REN est à considérer comme un équivalent du NANOG dédié à IPv6. C’est aussi ESnet qui assure la connecticité 6BONE/6REN. On peut aussi noter à cette époque des ébauches de projets similaires en australie (AARNET: ''Australian Academic and Research Network'') et en chine (CERNET: ''China Education and Research Network''). En France, le G6bone effectue sa migration dans le nouveau plan d’adressage de test.&lt;br /&gt;
&lt;br /&gt;
Pendant la réunion IETF de décembre 1998 à Orlando, le groupe IPng décide de fusionner les codes IPv6 INRIA, NRL, et KAME dans la souche KAME regroupant ainsi sur une seule souche les efforts d’implémentation sous système d’exploitation BSD.&lt;br /&gt;
&lt;br /&gt;
Cette fin d’année 1998 marque une nouvelle étape dans l’histoire d’IPv6, en effet, 15 RFC ont été publiés (dont 4 sont passés en Draft Standard), fixant ainsi le cœur des spécifications d’IPv6 et définissant un premier plan d’adressage aggrégé. Quatre ans après l’étape décisive de fin 1994 qui avait vu fixer les éléments consensuels d’alors (les 128 bits d’adresse, et le format d’en-tête simplifié), cette étape fixe de la même manière ce qui peut l’être, laissant à la suite du processus le soin de résoudre les nombreux problèmes encore en suspens (migration, mobilité, DNS, autoconfiguration, etc...).&lt;br /&gt;
&lt;br /&gt;
==Les schémas de migration et d’intégration IPv4/IPv6==&lt;br /&gt;
&lt;br /&gt;
Bien que la standardisation d’IPv6 ne soit pas achevée, loin s’en faut, les membres de l’IETF, considèrent qu’il faut maintenant s’attaquer à un nouveau problème de taille : celui de la transition d’IPv4 vers IPv6. Lors de la réunion intérimaire de l’IETF de février 1999 (qui a lieu à l’IMAG à Grenoble) les propositions de schémas de migration et d’intégration IPv4/IPv6 sont si nombreux qu’il est décidé d’en faire une taxonomie pour y voir plus clair et faire naître des convergences.&lt;br /&gt;
 &lt;br /&gt;
Au premier trimestre 2000, la plupart des propositions sont formalisées par des RFC. On peut les répartir dans les trois grandes familles suivantes :&lt;br /&gt;
&lt;br /&gt;
Des outils au niveau réseau comme :&lt;br /&gt;
*les adresses IPv4 compatibles : utilisées au début quand il n’y avait que très peu de machines IPv6,&lt;br /&gt;
*les adresses IPv4 mappées : qui permettent à des machines IPv4 de communiquer avec des machines IPv6,&lt;br /&gt;
*les adresses ’6to4’ : qui permettent de joindre un site IPv6 à travers un réseau IPv4 sans configuration de tunnels,&lt;br /&gt;
*les tunnels configurés : utilisés pour le déploiement des réseaux de test, mais comme tous les tunnels, ils réduisent le MTU et empilent deux routages,&lt;br /&gt;
*les générateurs automatiques de tunnels (tunnels brokers) : solution permettant à une machine d’obtenir une connectivité IPv6 sans avoir intervention manuelle du gestionnaire du site offrant cette connectivité.&lt;br /&gt;
&lt;br /&gt;
Des protocoles de traduction d’adresses comme :&lt;br /&gt;
*SIIT [RFC 2765] : qui permet à des machines IPv6 de communiquer avec des machines IPv4 au moyen de traducteurs d’adresses, situés en bordure des domaines IPv4/IPv6. Ces traducteurs traitent les paquets IP et ICMP, sans introduire d’état dans le réseau,&lt;br /&gt;
*NAT-PT [RFC 2766] : semblable à SIIT, il utilise des adresses globales IPv6 (et non pas des adresses dérivées d’IPv4). Les traducteurs de bordure modifient les adresses et les en-tête, ils doivent disposer d’un préfixe IPv4,&lt;br /&gt;
*DSTM [BTM-id] : qui permet de résoudre tous les cas de communication entre les mondes IPv6 et IPv4 sans nécessiter de portage des applications IPv4. Les traducteurs de bordure doivent disposer d’un préfixe IPv4.&lt;br /&gt;
Des protocoles intervenant au niveau TCP ou des applicatifs comme :&lt;br /&gt;
*BIS [RFC 2767] : qui permet à des aplications IPv4 de fonctionner sur les machines IPv6 en effectuant les traductions d’adresses nécessaires dans le noyau du système d’exploitation,&lt;br /&gt;
*SOCKS [RFC 3089] : fonctionnellement similaire à BIS, c’est une extension du protocole SOCKS (défini dans le RFC 1928) à la communication entre des piles TCP/IPv4 et TCP/IPv6.&lt;br /&gt;
&lt;br /&gt;
Durant le reste de l’année 2000 et toute l’année 2001, ces protocoles sont retravaillés, notamment pour prendre mieux en compte les aspects sécurité et dénis de service ainsi que les mécanismes de mise à jour du DNS qui peuvent ou doivent leur être associés.&lt;br /&gt;
&lt;br /&gt;
==La longue marche vers un Internet IPv6==&lt;br /&gt;
&lt;br /&gt;
Le 14 juillet 1999, presque 3 ans jour pour jour après le démarrage du 6bone, l’IANA annonce que la première délégation officielle de préfixes IPv6 vient d’être effectuée auprès du RIPE-NCC, de l’ARIN, et de l’APNIC. On peut considérer que cette date marque la naissance du nouvel Internet IPv6. Ces organismes vont alors commencer à distribuer des sTLA à un rythme tel qu’indiqué dans le tableau suivant.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+Allocation des sTLA IPv6 par les RIR&lt;br /&gt;
!	APNIC	|| ARIN	|| RIPE-NCC&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot; &lt;br /&gt;
|mai 2000	||13 sTLA ||	3 sTLA	|| 14 sTLA&lt;br /&gt;
|-&lt;br /&gt;
|décembre 2000	||21 sTLA ||	10 sTLA	|| 23 sTLA&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot; &lt;br /&gt;
|décembre 2001	||48 sTLA ||	20 sTLA	|| 51 sTLA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Comme les chiffres le montrent, ce déploiement, s’il est bien réel, reste limité en volume et assez hétérogène géographiquement. L’hétérogénéité géographique s’explique par le fait que les utilisateurs nord américains ne sont pas en situation de pénurie d’adresses IPv4, et donc ne sollicitent que faiblement leurs opérateurs en connectivité et adresses IPv6. Le déploiement limité sur les autres continents s’explique par la non complétude de la standardisation des protocoles IPv6. C’est le deuxième axe de travail de l’IETF (en plus de celui sur les mécanismes de transition/intégration) durant les années 2000 et 2001, car cette complétude constitue un pré-requis à un développement à grande échelle d’IPv6.&lt;br /&gt;
&lt;br /&gt;
En décembre 1999, le RFC 2740 standardise la version IPv6 d’OSPF, et en juillet 2000, lors de la réunion IETF de Pittsburgh, une communication dans le groupe de travail OSPF informe les participants que le logiciel de routage Zebra dispose d’une première version IPv6 d’OSPF implémentée et testée avec succès.&lt;br /&gt;
&lt;br /&gt;
En juillet et août 2000, les RFC 2874 et RFC 2894 sont publiés, ils concernent des extensions au DNS pour l’aggrégation et la renumérotation ainsi que la renumérotation de routeurs. En fin d’année 2000, les RFC 3007 et RFC 3008 concernant la sécurisation des DNS sont publiés. Ce sont les compléments indispensables pour gérer la dynamicité introduite par les mécanismes de renumérotation.&lt;br /&gt;
&lt;br /&gt;
Début 2001, le RFC 3041 améliore la protection de la vie privée ou professionnelle qui pouvait être mis en cause par le mécanisme d’autoconfiguration. En effet, ce dernier, en construisant un identifiant d’interface unique et permanent à partir de l’adresse Ethernet aurait pu permettre la tracabilité dans le temps ou dans l’espace du possesseur d’une machine IPv6. L’introduction d’une durée de vie limitée pour les identifiants d’interface et leur remplacement régulier par d’autres règle cette question.&lt;br /&gt;
&lt;br /&gt;
Mi 2001, le groupe de travail IPng constate qu'il a presque terminé sa tâche. Il décide de changer de nom ; un nouveau groupe est créé, IPv6, qui a pour but de terminer les documents en attente et de traiter de points encore en débat (renumérotation automatique, adressage de site, ...). Un autre groupe, multi6, est créé pour s'occuper du problème de la multi-domiciliation.&lt;br /&gt;
&lt;br /&gt;
En août 2001, le RFC 3152 met en place la délégation de la racine (&amp;lt;tt&amp;gt;ip6.arpa&amp;lt;/tt&amp;gt;) de l’arbre de nommage inverse pour IPv6, complétant ainsi le dispositif pour le DNS.&lt;br /&gt;
&lt;br /&gt;
Fin 2001, les travaux de standardisation sont principalement centrés sur les mécanismes de transition comme DSTM et BIA (''Bump In the API'') ainsi que sur la gestion du multicast IPv6. Des liens sont aussi établis avec la téléphonie mobile dont la version UMTS a choisi IPv6 comme technologie de transport pour pallier les insuffisances d’IPv4 en matière d’espace d’adressage.&lt;br /&gt;
&lt;br /&gt;
Début 2002, l’ensemble des systèmes d’exploitation sont équipés d’une double pile IPv4 et IPv6, la plupart des routeurs implémentent au moins un protocole de routage interne (RIPng) et un protocole de routage externe (BGP4+). Même si la suite des protocoles IPv6 n’est pas encore aussi complète qu’il serait souhaitable, l’Internet IPv6 est bien en cours de déploiement, et des noeuds importants comme le Startap, aux Etats-Unis, le Nspixp au Japon ou le Sfinx en France échangent désormais du trafic natif IPv6.&lt;br /&gt;
{{suivi |Historique de la standardisation d’IPv6|Historique de la standardisation d’IPv6|Bases whois|Bases whois}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2979</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2979"/>
				<updated>2006-02-27T14:21:46Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |Les applications spécifiques|Les applications spécifiques|La standardisation d'IPv6|La standardisation d'IPv6}}&lt;br /&gt;
Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans (aujourd'hui v6ops) : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans le RFC 2028.&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2006, nous en sommes au numéro 4400, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou &amp;quot;''Best Current Practice''&amp;quot;. Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC &amp;quot;''Best Current Practice''&amp;quot; documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de quatre actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à cette échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;br /&gt;
{{suivi |Les applications spécifiques|Les applications spécifiques|La standardisation d'IPv6|La standardisation d'IPv6}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2978</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2978"/>
				<updated>2006-02-27T14:19:53Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Les RIR (Regional Internet Registries) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans (aujourd'hui v6ops) : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans le RFC 2028.&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2006, nous en sommes au numéro 4400, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou &amp;quot;''Best Current Practice''&amp;quot;. Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC &amp;quot;''Best Current Practice''&amp;quot; documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de quatre actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à cette échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2977</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2977"/>
				<updated>2006-02-27T14:12:10Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Les RFC (''Request For Comments'') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans (aujourd'hui v6ops) : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans le RFC 2028.&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2006, nous en sommes au numéro 4400, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou &amp;quot;''Best Current Practice''&amp;quot;. Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC &amp;quot;''Best Current Practice''&amp;quot; documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de trois actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à celle échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2976</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2976"/>
				<updated>2006-02-27T14:10:12Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Les RFC (''Request For Comments'') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans (aujourd'hui v6ops) : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans le RFC 2028.&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2006, nous en sommes au numéro 4400, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou &amp;quot;''Best Current Practice''&amp;quot;. Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC Best Current Practice documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de trois actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à celle échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2975</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2975"/>
				<updated>2006-02-27T14:06:42Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Les RFC (''Request For Comments'') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans (aujourd'hui v6ops) : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans le RFC 2028.&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2006, nous en sommes au numéro 4400, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou ''Best Current Practice''). Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC Best Current Practice documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de trois actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à celle échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2974</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2974"/>
				<updated>2006-02-27T14:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* L'IESG (''Internet Engineering Steering Group'') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans (aujourd'hui v6ops) : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans le RFC 2028.&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2002, nous en sommes au numéro 3221, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou ''Best Current Practice''). Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC Best Current Practice documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de trois actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à celle échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2973</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2973"/>
				<updated>2006-02-27T13:59:53Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* L'IETF (''Internet Engineering Task Force'') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans (aujourd'hui v6ops) : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans [RFC2028].&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2002, nous en sommes au numéro 3221, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou ''Best Current Practice''). Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC Best Current Practice documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de trois actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à celle échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2972</id>
		<title>Historique de la standardisation d’IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Historique_de_la_standardisation_d%E2%80%99IPv6&amp;diff=2972"/>
				<updated>2006-02-27T13:52:36Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* &amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette annexe décrit les principales étapes qui jalonnent la standardisation d’IPv6, depuis la prise en compte de la nécessité d’un nouveau protocole jusqu’à la production de standards. Ce processus est toujours en cours même si une grande partie du chemin a déjà été parcourue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;stand&amp;quot;&amp;gt;La standardisation de l'Internet&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Il est difficile de comprendre comment est né IPv6, et comment le protocole continue d’évoluer, si l’on ne connaît pas le processus de standardisation des protocoles utilisés dans l’Internet.&lt;br /&gt;
Les organismes qui pilotent la standardisation de l’Internet sont l’IETF, l’IESG, l’IAB, l’ISOC et l’ICANN. Le résultat final de l’activité de standardisation est la production de documents appelés RFC (Request for Comments) dont certains sont des standards. L’ensemble du processus de standardisation est décrit dans le RFC 2026.&lt;br /&gt;
&lt;br /&gt;
===L'IETF (''Internet Engineering Task Force'')===&lt;br /&gt;
&lt;br /&gt;
L’activité au sein de l'’ETF est organisée en groupes de travail (''working group''). Les groupes agissant autour d’un même thème sont regroupés dans un Domaine (Area), comme le routage, la gestion des réseaux, la sécurité... Chaque Domaine est coordonné par un directeur (Area Director).  L’ensemble des directeurs de Domaines compose l’IESG (voir ci-après).&lt;br /&gt;
Les groupes de travail de l’IETF sont constitués de personnes volontaires et bénévoles qui sont motivées pour faire évoluer les standards de l’Internet sur la base de leur expérience acquise à partir de mises en œuvre et d’essais concrets. Toute personne intéressée (et ayant des disponibilités) peut faire partie d’un groupe de travail IETF.  La participation à l’IETF et à ses groupes de travail est donc le fait d’individus proposant des contributions techniques plutôt que de représentants formels d’organisations.&lt;br /&gt;
Chaque groupe de travail définit ses objectifs dans une charte, qu’il soumet à l’IESG lors de son processus de constitution. Le groupe est dirigé par un ou plusieurs présidents (''Working Group Chairs''). Le fonctionnement des groupes de travail de l’IETF est décrit en détail dans le RFC 2418.&lt;br /&gt;
Dans un groupe le travail, les échanges de points de vue et d’expériences visant à élaborer les projets de standards (''Internet Drafts''), se font essentiellement par courrier électronique. Trois réunions annuelles permettent aux membres des groupes de se rencontrer pour une interaction plus directe. Lorsqu’un consensus est atteint, le groupe en demande la publication en tant que RFC (''Request For Comments'').&lt;br /&gt;
Quand un groupe considère que ses objectifs sont atteints, il se dissout.&lt;br /&gt;
Un certain nombre de groupes et sous-groupes IETF travaillent actuellement sur IPv6 ; on peut citer notamment:&lt;br /&gt;
*IPng (aujourd'hui IPv6) : principal groupe de travail sur la production de protocoles liés à IPv6.&lt;br /&gt;
*NGtrans : étudie les modalités de la migration d’IPv4 vers IPv6. Ce groupe gère le déploiement du 6bone, un réseau expérimental IPv6 interconnectant des sites de test à travers le monde. &lt;br /&gt;
Les groupes de travail de l’IETF doivent faire preuve d’esprit de coopération, ainsi que d’un haut degré de maturité technique ; les participants à l’IETF reconnaissent que les plus grands bénéfices pour tous les membres de la communauté de l’Internet proviennent du développement coopératif des protocoles et services (voir http://www.ietf.org pour plus de détails).&lt;br /&gt;
&lt;br /&gt;
===L'IESG (''Internet Engineering Steering Group'')===&lt;br /&gt;
&lt;br /&gt;
L’IESG est responsable de la direction des activités techniques de l’IETF. Il est composé des directeurs de Domaines (il y en a 7 actuellement) et du président de l’IETF qui est aussi le président de l’IESG.  L’IESG administre le processus de standardisation de l’Internet suivant des règles et procédures détaillées dans [RFC2028].&lt;br /&gt;
C'est donc l’IESG qui décide de l’évolution du statut des spécifications techniques émises par les groupes de travail, ce qui peut élever certaines d’entre elles au rang de Standard Internet. L’IESG approuve également la constitution des nouveaux groupes de travail.&lt;br /&gt;
&lt;br /&gt;
===Les RFC (''Request For Comments'')===&lt;br /&gt;
&lt;br /&gt;
Les RFC sont les documents officiels de l’Internet ; ils sont disponibles gratuitement sur le réseau. En France, ils sont notamment disponibles sur le site miroir officiel primaire ftp://www.imag.fr/pub/archive/IETF/rfc/. Un RFC est complètement identifié par le numéro qui lui est attribué lors de sa publication. Ce numéro n'a pas de signification ; il est attribué par ordre chronologique de publication. Les premiers RFC sont sortis en 1969 ; début 2002, nous en sommes au numéro 3221, pour un flux supérieur à 200 RFC par an.&lt;br /&gt;
Il existe plusieurs types de RFC d’importance différente pour la communauté IETF. On distingue deux catégories principales : ceux faisant partie du processus de standardisation (''Standard Track'') et les autres.&lt;br /&gt;
&lt;br /&gt;
Les documents entrant dans la première catégorie suivent un parcours bien défini. Ils sont d’abord publiés comme &amp;quot;Internet Drafts&amp;quot; par le groupe de travail. Ce sont des documents de travail à durée de vie limitée, disponibles en ligne sur les mêmes serveurs que les RFC.  Lorsqu’un consensus semble atteint, le responsable lance un appel aux derniers commentaires dans le groupe. Il transmet ensuite le document à l’IESG qui, à son tour, lance un appel aux derniers commentaires à tout l’IETF. S’il n’y a pas d’objections majeures, le document est alors publié comme RFC avec un statut de (''Proposed Standard'').&lt;br /&gt;
&lt;br /&gt;
Après une période où se succèdent mises en œuvre et retours d’informations sur le protocole décrit, le groupe de travail auteur revoit le document.&lt;br /&gt;
&lt;br /&gt;
Si seuls des changements mineurs sont nécessaires, il demande alors à l’IESG de le faire avancer en le publiant en tant que nouveau RFC mais avec un statut de Draft Standard) après un nouvel appel à commentaires. Si les changements sont majeurs, le nouveau RFC garde le statut de Proposed Standard.&lt;br /&gt;
&lt;br /&gt;
Suit alors une nouvelle période de mises en œuvre et de retours d’informations où l’on doit faire la preuve de l’interopérabilité de deux implantations indépendantes. Puis le responsable du groupe de travail demande à l’IESG de faire avancer le document en le publiant (après un dernier appel à commentaires) en tant que RFC avec un statut de type &amp;quot;Standard&amp;quot;. Il faut noter qu’à chaque étape, un nouveau numéro de RFC est attribué.  Un RFC peut passer à l’état &amp;quot;historique&amp;quot; si son utilisation est devenue déconseillée. S’il est remplacé par un autre il devient &amp;quot;obsolète&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
La publication d’un RFC hors du processus de standardisation est plus facile. L’IESG peut directement faire publier un RFC avec un statut de type &amp;quot;Information&amp;quot;, &amp;quot;Experimental&amp;quot; ou ''Best Current Practice''). Un RFC &amp;quot;Information&amp;quot; documente un protocole ou une approche particulière d’un problème. Il peut aussi donner des informations d’intérêt général. Il n’a aucune valeur de standard. Un RFC &amp;quot;Expérimental&amp;quot; décrit un protocole nécessitant que l’on mène des expériences avant de décider ou non d’entrer dans le processus de standardisation. Un RFC Best Current Practice documente une pratique d’ingénierie recommandée. La répartition par types des RFC édités en 2001 est donnée dans figure 17-2.&lt;br /&gt;
&lt;br /&gt;
===L'ISOC (Internet Society)===&lt;br /&gt;
&lt;br /&gt;
L’ISOC est une organisation internationale s’occupant de la croissance et de l’évolution de l’Internet à l’échelle mondiale et des aspects sociaux, politiques et techniques de son utilisation.  Les membres de l’ISOC sont des personnes physiques ou morales. L’ISOC est dirigée par un Bureau des Administrateurs élu par les membres individuels.&lt;br /&gt;
La standardisation de l’Internet est une activité chapeautée par l’ISOC, le Bureau des Administrateurs étant responsable de l’approbation des procédures et des règles du processus de standardisation de l’Internet.&lt;br /&gt;
Le moyen selon lequel les membres du Bureau des Administrateurs de l’ISOC sont choisis, et les autres aspects concernant le fonctionnement de l’Internet Society sont décrits dans le document ISOC By-Laws [RFC 2135] et http://www.isoc.org.&lt;br /&gt;
&lt;br /&gt;
===L’IAB (Internet Architecture Board)===&lt;br /&gt;
&lt;br /&gt;
L’IAB est chargé par les Administrateurs de l’ISOC de fournir une supervision de l’architecture de l’Internet et de ses protocoles. L’IAB désigne le président de l’IETF et approuve les autres candidats pour l’IESG, présentés par le comité de nomination.  L’IAB est aussi responsable de l’examen et de l’approbation des chartes des nouveaux groupes de travail proposés.&lt;br /&gt;
&lt;br /&gt;
L’IAB supervise le processus utilisé pour créer des Standards Internet et sert de cour d’appel pour les réclamations comme par exemple une violation des procédures de standardisation, ou pour un conflit entre les groupes de travail de l’IETF et l’IESG.  L’IAB conseille l’IETF et l’ISOC en matière technique, politique, d’architecture, de procédure se rapportant à l’Internet et aux technologies associées. Les membres de l’IAB sont nommés par un comité (le Nomcom) et approuvés par le conseil d’administration de l’ISOC.&lt;br /&gt;
&lt;br /&gt;
===L’ICANN (Internet Corporation for Assigned Names and Numbers)===&lt;br /&gt;
&lt;br /&gt;
L’ICANN est un organisme international créé en octobre 1998 pour remplacer l’IANA (Internet Assigned Numbers Authority) qui n’était contrôlé que par le gouvernement américain. &lt;br /&gt;
Beaucoup de spécifications de protocoles comportent des nombres, mots clés et paramètres qui doivent être affectés de manière unique, par exemple les numéros de versions, les numéros de protocoles, les numéros de ports et de MIB (Management Information Base).  C'est l’ICANN qui affecte les valeurs de ces paramètres pour l’Internet. L’ICANN publie aussi les tables de toutes les valeurs affectées dans des RFC nommés Assigned Numbers. L’ICANN sert aussi de &amp;quot;sommet de la pyramide&amp;quot; pour la gestion des domaines de noms (DNS) et l’affectation des adresses et en établit les règles.&lt;br /&gt;
&lt;br /&gt;
===Les RIR (Regional Internet Registries)===&lt;br /&gt;
&lt;br /&gt;
Les RIR ou RIAR (''Regional Internet Address Registries'') reçoivent une délégation de l’ICANN pour distribuer les adresses IPv4 et IPv6. Ils sont au nombre de trois actuellement, répartis sur 4 continents pour assurer une gestion de &amp;quot;proximité&amp;quot; à celle échelle. Ce sont :&lt;br /&gt;
*APNIC : Asia Pacific Network Information Centre,&lt;br /&gt;
*ARIN : American Registry for Internet Numbers,&lt;br /&gt;
*RIPE-NCC : Réseaux IP Européen (Network Coordination Centre),&lt;br /&gt;
*LACNIC : Réseaux d'Amérique Latine et des Caraïbes. &lt;br /&gt;
&lt;br /&gt;
Un cinquième, l’AFRINIC destiné à assurer la couverture du continent Africain est en cours de gestation (l’Afrique dépend actuellement du RIPE et de l’APNIC). En 2001, sept préfixes IPv4 de longueur 16 ont été affectés aux RIR pour être distribués aux opérateurs&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2971</id>
		<title>Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2971"/>
				<updated>2006-02-27T13:35:11Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Autres Références */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Livres sur IPv6 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BM95&amp;quot;&amp;gt;[BM95] S. O. Bradner &amp;amp; A. Mankin ed : IPng, Internet Protocol Next Generation, Addison-Wesley (IPng Series), ISBN0201633957, Septembre 1995.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Gai98] S. Gai, Internetworking IPv6 With Cisco Routers (Computer Communications), McGraw-Hill, ISBN: 0-070-22836-1, Février 1998.&lt;br /&gt;
 &lt;br /&gt;
[Hui97] C. Huitema: IPv6: The New Internet Protocol, Prentice Hall, ISBN: 0-138-50505-5, Octbre 1997.&lt;br /&gt;
 &lt;br /&gt;
[LL99] Peter Loshin &amp;amp; Pete Loshin: IPv6 Clearly Explained (Clearly Explained), Ap Professional, ISBN: 0-124-55838-0, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[MM00] Mark A. Miller &amp;amp; P. E. Miller: Implementing IPv6, second edition (Network Troubleshooting Library), IDG Books Worldwide, ISBN: 0-764-54589-2, Janvier 2000.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[Mil97] Stewart S. Miller: IPv6 : The Next Generation Internet Protocol, DigitalPress, ISBN: 1-555-58188-9, Décembre 1997.&lt;br /&gt;
 &lt;br /&gt;
[MK98] Marcus Goncalves &amp;amp; Kitty Niles: IPv6 Networks, McGraw-Hill, ISBN: 0-070-24807-9, Mai 1998.&lt;br /&gt;
 &lt;br /&gt;
[Sal00] Peter H. Salus: Big Book of IPV6 Addressing RFCs, Morgan Kaufmann Publishers, ISBN: 0-126-16770-2, Mars 2000.&lt;br /&gt;
 &lt;br /&gt;
[WR99] J. D. Wegner &amp;amp; Robert Rockwell: IP Addressing and Subnetting, Including IPv6, Syngress Media, ISBN: 1-928-99401-6, Décembre 1999.&lt;br /&gt;
 &lt;br /&gt;
== Internet Drafts sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
''Remarque : Il faut rappeler que les Internet drafts sont des documents de travail à durée de vie limitée. Ils ont vocation à devenir des RFC. Le lecteur est donc invité à vérifier quelle est la version la plus récente, ou si un RFC le remplace, en consultant l'index à jour (cf. Les RFC (Request For Comments)).''&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BCP2-id&amp;quot;&amp;gt;[BCP2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, M. Carney, C. Perkins: Extensions for the Dynamic Host Configuration Protocol for IPv6, [http://www.watersprings.org/pub/id/draft-ietf-dhcpv6exts-12.txt draft-ietf-dhc-v6exts-12.txt], Internet Draft, 5 Mai 2000 - Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BKLSPTSDY-id&amp;quot;&amp;gt;[BKLSPTSDY-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: W. Biemolt, M. Kaat, T. Larder, H. Steenman, R. van der Pol, G. Tsirtsis, Y. Sekiya, A. Durand, K. Yamamoto: On overview of the introduction of IPv6 in the Internet, draft-ietf-ngtrans-introduction-to-ipv6-transition-08.txt, Internet Draft, Février 2002. Working Group Concluded.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTM-id&amp;gt;[BTM-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, L. Toutain, O. Medina, F. Dupont, A. Durand, H Afifi,: Dual Stack Transition Mechanism (DSTM), draft-ietf-ngtrans-dstm-07.txt, Internet Draft, Aout 2002. Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BP-id&amp;quot;&amp;gt;[BP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Blanchet, F. Parent, IPv6 Tunnel Broker with the Tunnel Setup Protocol (TSP), [http://www.watersprings.org/pub/id/draft-blanchet-v6ops-tunnelbroker-tsp-03.txt draft-blanchet-v6ops-tunnelbroker-tsp-03.txt], Aout 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;CMB-id&amp;quot;&amp;gt;[CMB-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Hesham Soliman, Claude Castelluccia, Karim Malki, Ludovic Bellier, Hierarchical Mobile IPv6 mobility management (HMIPv6), [http://www.watersprings.org/pub/id/draft-ietf-mipshop-hmipv6-04.txt draft-ietf-mipshop-hmipv6-04.txt], Décembre 04. Obsolete - Experimental RFC 4140.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Craw-id&amp;quot;&amp;gt;[Craw-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Matt Crawford: IPv6 Node Information Queries, [http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-15.txt draft-ietf-ipngwg-icmp-name-lookups-15.txt, Internet Draft, 13 Février 2006. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Drave-id&amp;quot;&amp;gt;[Drave-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Draves: Default Address Selection for IPv6, draft-ietf-ipngwg-default-addr-select-06.txt, Internet Draft, 28 Septembre 2001. Obsolete - RFC 3484.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DHZ-id&amp;quot;&amp;gt;[DHZ-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: S. Deering, B. Haberman, B. Zill, T. Jinmei, E. Nordmark, A. Onoe: IP Version 6 Scoped Address Architecture, draft-ietf-ipngwg-scoping-arch-03.txt Internet Draft, 30 Novembre 2001. Obsolete - RFC 4007.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DIS-id&amp;quot;&amp;gt;[DIS-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Alain Durand, Johan Ihren, Pekka Savola, Operational Considerations and Issues with IPv6 DNS, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-issues-12.txt draft-ietf-dnsop-ipv6-dns-issues-12.txt], Internet Draft, 19 Octobre 2005,. Work in progress. &lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Dupont-id&amp;quot;&amp;gt;[Dupont-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: F. Dupont, M. Laurent-Maknavicius: AAA for mobile IPv6, draft-dupont-mipv6-AAA-01.txt, Internet Draft, 20 Novembre 2001, Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst-id&amp;quot;&amp;gt;[Ernst-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Thierry Ernst, Network Mobility Support Requirements, [http://www.watersprings.org/pub/id/draft-ietf-nemo-requirements-05.txt draft-ietf-nemo-requirements-05.txt], Octobre 2005&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner-id&amp;quot;&amp;gt;[Fenner-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Haixiang He, Brian Haberman, Hal Sandick, IGMP/MLD-based Multicast Forwarding ('IGMP/MLD Proxying'), [http://www.watersprings.org/pub/id/draft-ietf-magma-igmp-proxy-06.txt draft-ietf-magma-igmp-proxy-06.txt]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner2-id&amp;quot;&amp;gt;[Fenner2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Mark Handley, Hugh Holbrook, Isidor Kouvelas Protocol Independent Multicast - Sparse Mode (PIM -SM): Protocol Specification (Revised), IETF Internet Draft, [http://www.watersprings.org/pub/id/draft-ietf-pim-sm-v2-new-11.txt draft-ietf-pim-sm-v2-new-11.txt], 4 Octobre 2004. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Haber-id&amp;quot;&amp;gt;[Haber-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: B. Haberman: Dynamic Allocation Guidelines for IPv6 Multicast Addresses, draft-ietf-malloc-ipv6-guide-01.txt, Internet Draft, 12 Octobre 2000. Obsolete - RFC 3307.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HD-id&amp;quot;&amp;gt;[HD-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Hinden, S. Deering: IP Version 6 Addressing Architecture, [[http://tools.ietf.org/wg/ipv6/draft-ietf-ipv6-addr-arch-v4/draft-ietf-ipv6-addr-arch-v4-04.txt draft-ietf-ipv6-addr-arch-v4-04.txt]], Internet Draft, 20 Mai 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HH-id&amp;quot;&amp;gt;[HH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Robert Hinden, Brian Haberman, Centrally Assigned Unique Local IPv6 Unicast Addresses, [http://www.watersprings.org/pub/id/draft-ietf-ipv6-ula-central-01.txt draft-ietf-ipv6-ula-central-01.txt], Internet Draft, 21 Février 2005, Obsolete - See RFC 4193.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Hopps-if&amp;quot;&amp;gt;[Hopps-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. E. Hopps: Routing IPv6 with IS-IS, [http://www.ietf.org/internet-drafts/draft-ietf-isis-ipv6-06.txt draft-ietf-isis-ipv6-06.txt], Internet Draft, Octobre 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Huitema-id&amp;quot;&amp;gt;[Huitéma-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. Huitema, Teredo: Tunneling IPv6 over UDP through NATs, [http://www.watersprings.org/pub/id/draft-huitema-v6ops-teredo-05.txt draft-huitema-v6ops-teredo-05.txt], Avril 2005, Obsolete - See RFC 4380.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Jeong-id&amp;quot;&amp;gt;[Jeong-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jae-Hoon Jeong, IPv6 Host Configuration of DNS Server Information Approaches, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-configuration-06.txt draft-ietf-dnsop-ipv6-dns-configuration-06.txt], Internet Draft, 5 Mai 2005. RFC Editor Queue.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JP-id&amp;quot;&amp;gt;[JP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: D. B. Johnson, C. Perkins: Mobility Support in IPv6, draft-ietf-mobileip-ipv6-15.txt, Internet Draft, 2 Juillet 2001. Obsolete - RFC 3775.&lt;br /&gt;
 &lt;br /&gt;
; &amp;lt;div id=&amp;quot;NFG-id&amp;quot;&amp;gt;[NGF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tri Nguyen, Gerard Gastaud, Francois Le Faucheur, Dirk Ooms, Jeremy De Clercq, Stuart Prevost, Connecting IPv6 Domains across IPv4 Clouds with BGP, [http://tools.ietf.org/wg/v6ops/draft-ooms-v6ops-bgp-tunnel-06.txt draft-ooms-v6ops-bgp-tunnel-06.txt], Janvier 2006. Proposed standard.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;NPE-id&amp;quot;&amp;gt;[NPE-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Chan Wah Ng, Eun Kyoung Paik, Thierry Ernst, Analysis of Multihoming in Network Mobility Support, [http://www.ietf.org/internet-drafts/draft-ietf-nemo-multihoming-issues-04.txt draft-ietf-nemo-multihoming-issues-04.txt], 24 Octobre 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prz-id&amp;quot;&amp;gt;[Prz-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tony Przygienda, M-ISIS: Multi Topology (MT) Routing in IS-IS, [http://www.watersprings.org/pub/id/draft-ietf-isis-wg-multi-topology-11.txt draft-ietf-isis-wg-multi-topology-11.txt], 21 Octobre 2005.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prigent-id&amp;quot;&amp;gt;[Prigent-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: N. Prigent, J. Marchand, F. Dupont, B. Cousin, M. Laurent-Maknavicius, J. Bournelle: DHCPv6 Threats, draft-prigent-dhcpv6-threats-00.txt, Internet Draft, 24 mai 2001, Expired.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2547bis&amp;quot;&amp;gt;[RFC2547bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Eric C. Rosen, Yakov Rekhter, BGP/MPLS IP VPNs, [http://www.watersprings.org/pub/id/draft-ietf-l3vpn-rfc2547bis-03.txt draft-ietf-l3vpn-rfc2547bis-03.txt], Internet Draft, October 2004, Obsolete - RFC 4364.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Templin-id&amp;quot;&amp;gt;[Templin-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Fred Templin, T. Gleeson, M. Talwar D. Thaler, Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-isatap-24.txt draft-ietf-ngtrans-isatap-24.txt], Juillet 2005, Obsolete - RFC 4214.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Thubert-id&amp;quot;&amp;gt;[Thubert-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Pascal Thubert, NEMO Home Network models, [http://www.watersprings.org/pub/id/draft-ietf-nemo-home-network-models-06.txt draft-ietf-nemo-home-network-models-06.txt], 17 Fevrier 2006.&lt;br /&gt;
&lt;br /&gt;
==Autres documents de travail==&lt;br /&gt;
[FIPS-46]&lt;br /&gt;
&lt;br /&gt;
Data Encryption Standard, Federal Information Processing Standards Publication 46, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 15 Janvier 1977.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-81]&lt;br /&gt;
&lt;br /&gt;
DES Modes of Operation, Federal Information Processing Standards Publication 81, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 2 Décembre 1980.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-180-1]&lt;br /&gt;
&lt;br /&gt;
Secure Hash Standard, Federal Information Processing Standards Publication 180-1, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, Avril 1995.&lt;br /&gt;
 &lt;br /&gt;
==Autres Références==&lt;br /&gt;
[AL00]&lt;br /&gt;
&lt;br /&gt;
Mohammed Achemlal, Maryline Laurent, Analyse des fonctions des protocoles IPsec et leur intégration dans un réseau privé virtuel, Annales des télécommunications, 2000.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[AL98]&lt;br /&gt;
&lt;br /&gt;
P. Albitz and C. Liu: DNS and BIND, 3rd Edition, ISBN: 1-56592-512-2, O'Reilly and Associates, Septembre 1998.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTC02&amp;quot;&amp;gt;[BTC02]&amp;lt;/div&amp;gt;&lt;br /&gt;
: T. Bu, L. Gao, D. Towsley, On Characterizing Routing Table Growth, GlobalInternet 2002. http://www-unix.ecs.umass.edu/~lgao/globalinternet2002_tian.pdf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst01f-fr&amp;quot;&amp;gt;[Ernst01f-fr]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ernst, Thierry, Le Support des Réseaux Mobiles dans IPv6, UniversitéJoseph Fourier, Octobre 2001, Grenoble, France, http://www.inria.fr/rrrt/tu-0714.html&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst03f&amp;quot;&amp;gt;[Ernst03f]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Le Support des Réseaux Mobiles dans IPv6, CFIP: Colloque Francophone sur l'Ingenierie des Protocoles, Octobre 2003, Paris&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Fen-id]&lt;br /&gt;
&lt;br /&gt;
Bill Fenner, Management Information Base for the User Datagram Protocol (UDP), draft-ietf-ipv6-rfc2013-update-04.txt, Internet Draft, 20 Octobre 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Hui95]&lt;br /&gt;
&lt;br /&gt;
C. Huitema: Le routage dans l'Internet, Eyrolles, Octobre 1995.&lt;br /&gt;
 &lt;br /&gt;
[IEEE]&lt;br /&gt;
&lt;br /&gt;
Protocol Independant Interfaces, IEEE Std 1003.1g, DRAFT~6.6, Mars 1997.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JH-id&amp;quot;&amp;gt;[JH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jeffrey Haas, Susan Hares, Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), draft-ietf-idr-bgp4-mib-05.txt, Internet Draft, 31 Août 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JM-id]&lt;br /&gt;
&lt;br /&gt;
Dan Joyal, Vishwas Manral, Management Information Base for OSPFv3, draft-ietf-ospf-ospfv3-mib-09.txt, Internet Draft, 13 Mai 2005, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Kau-id&amp;quot;&amp;gt;[Kau-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Charlie Kaufman, Internet Key Exchange (IKEv2) Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-ikev2-17.txt draft-ietf-ipsec-ikev2-17.txt], Internet Draft, 4 Octobre 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;LAU03&amp;quot;&amp;gt;[LAU03]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Laurent-Maknavicius, Le protocole IPsec, [http://www.techniques-ingenieur.fr/affichage/DispIntro.asp?nGcmID=TE7545 TE7545], [http://www.techniques-ingenieur.fr/ Techniques de l'Ingénieur], Sécurité des systèmes d'information, Novembre 2003.&lt;br /&gt;
&lt;br /&gt;
[LAU04-A]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, M. Gardie, LDAP et la certification, Rapport de recherche du GET, 04001 LOR, 2004.&lt;br /&gt;
 &lt;br /&gt;
[LAU04-B]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, La sécurité de l'accès distant, Technique et Science Informatiques (TSI), 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;MHF-id&amp;quot;&amp;gt;[MHF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ambarish Malpani, Russ Housley, Trevor Freeman, Simple Certificate Validation Protocol (SCVP), [http://www.watersprings.org/pub/id/draft-ietf-pkix-scvp-22.txt draft-ietf-pkix-scvp-22.txt], Internet Draft, Octobre 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Mos-id&amp;quot;&amp;gt;[Mos-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Moskowitz, Host Identity Protocol, [http://www.watersprings.org/pub/id/draft-ietf-hip-base-04.txt draft-ietf-hip-base-04.txt], Internet Draft, 24 Octobre 2005, Work in progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-A&amp;quot;&amp;gt;[Pui02-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse critique d'IPsec, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-analyse-rapport/ipsec-analyse-rapport.pdf rapport de recherche 03 004 LOR], 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-B&amp;quot;&amp;gt;[Pui02-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse de l'impact de la mise en oeuvre d'IPsec dans les architectures de Communication, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-interactions-rapport/ipsec-interactions-rapport.pdf rapport de recherche 03 002 LOR], octobre 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui03&amp;quot;&amp;gt;[Pui03]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects ARP), [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/environnement-reel-1-rapport/environnement-reel-1-rapport.pdf rapport de recherche 03 001 LOR], janvier 2003.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-A&amp;quot;&amp;gt;[Pui04-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Etude des interactions IPsec/DNS, [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/InteractionDNS.pdf rapport de recherche 04002 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-B&amp;quot;&amp;gt;[Pui04-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects liés à ICMP), [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/IPsec_ICMP.pdf rapport de recherche 04004 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2401bis&amp;quot;&amp;gt;[RFC2401bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Stephen Kent, Karen Seo, Security Architecture for the Internet Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2401bis-06.txt draft-ietf-ipsec-rfc2401bis-06.txt], Internet Draft, 1 Avril 2005, Work in progress&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2402bis&amp;quot;&amp;gt;[RFC2402bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Stephen Kent, IP Authentication Header, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2402bis-11.txt draft-ietf-ipsec-rfc2402bis-11.txt], Internet Draft, 21 Mars 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Rou-id]&lt;br /&gt;
&lt;br /&gt;
Shawn Routhier, Management Information Base for the Internet Protocol (IP), draft-ietf-ipv6-rfc2011-update-10.txt; Internet Draft, 24 Mai 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Sch95]&lt;br /&gt;
&lt;br /&gt;
B. Schneier: Applied Cryptography : protocols, algorithms, and source code in C, (second edition), John Wiley &amp;amp; Sons, ISBN: 0-471-12845-7, 1996.&lt;br /&gt;
 &lt;br /&gt;
[Sta99]&lt;br /&gt;
&lt;br /&gt;
William Stallings: Snmp, Snmpv2, Snmpv3, and Rmon 1 and 2, Addison Wesley, ISBN: 0-201-48534-6, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[Tout03]&lt;br /&gt;
&lt;br /&gt;
Laurent Toutain: Réseaux Locaux et Internet: des protocoles à l'interconnexion, Troisième édition revue et augmentée, Hermès, ISBN: 2-7462-0670-6, 2003.&lt;br /&gt;
 &lt;br /&gt;
[Uni31]&lt;br /&gt;
&lt;br /&gt;
ATM Forum: ATM User-Network Interface (UNI) Specification Version 3.1, Prentice Hall, Englewood Cliffs, NJ, Juin 1995.&lt;br /&gt;
 &lt;br /&gt;
[WH-id]&lt;br /&gt;
&lt;br /&gt;
Margaret Wasserman, Brian Haberman, IP Forwarding Table MIB, draft-ietf-ipv6-rfc2096-update-07.txt, Internet Draft, 12 février 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[WK99]&lt;br /&gt;
&lt;br /&gt;
M. Welsh et L. Kaufman: Le système Linux, 2e édition révisée, Éditions O'Reilly, ISBN: 2-84177-033-8, Janvier 1999.&lt;br /&gt;
&lt;br /&gt;
==Sites Web sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
;[IETF]&lt;br /&gt;
:http://www.imag.fr/pub/archive/IETF: Mirroir français du serveur de l'IETF.&lt;br /&gt;
 &lt;br /&gt;
;[6bone]&lt;br /&gt;
:http://www.6bone.net: Réseau 6bone.&lt;br /&gt;
 &lt;br /&gt;
;[G6bone]&lt;br /&gt;
:http://peirce.logique.jussieu.fr/G6/ Réseau G6-bone (partie francophone de 6bone).&lt;br /&gt;
 &lt;br /&gt;
;[hs247] &lt;br /&gt;
:http://hs247.com/ Informations sur le 6bone et IPv6 en général.&lt;br /&gt;
&lt;br /&gt;
;[ipv6.org]&lt;br /&gt;
: http://www.ipv6.org/ pages d'information sur le protocole IPv6&lt;br /&gt;
&lt;br /&gt;
;[ipv6forum] &lt;br /&gt;
:http://www.ipv6forum.org/ Groupement d'industriels pour promouvoir IPv6.&lt;br /&gt;
&lt;br /&gt;
;[playground] &lt;br /&gt;
:http://playground.sun.com/pub/ipng/html/ipng-main.html liste des mises en oeuvre d'IPv6 dans les équipements.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Mise_en_%C5%93uvre_par_les_constructeurs&amp;diff=2970</id>
		<title>Mise en œuvre par les constructeurs</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Mise_en_%C5%93uvre_par_les_constructeurs&amp;diff=2970"/>
				<updated>2006-02-27T13:33:32Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Les MIBs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |Supervision|Supervision|Les applications spécifiques |Les applications spécifiques}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans cette partie, nous avons choisi un ensemble de constructeurs dont leurs équipements offrent des fonctionnalités pour la supervision des réseaux IPv6. A noter que cette liste n’est pas exhaustive.&lt;br /&gt;
Dans un premier temps, certains constructeurs implémentant des MIBs IPv6 seront passés en revue, ensuite, dans un second temps ceux proposant l’utilisation de SNMP en IPv6 seront listé. Nous présenterons ceux qui offrent la possibilité d’exporter des flux IPv6 vers un collecteur.&lt;br /&gt;
&lt;br /&gt;
===Les MIBs===&lt;br /&gt;
&lt;br /&gt;
Nous avons vu précédemment que le modèle SNMP est très utilisé ; il est donc important que les constructeurs implémentent les MIBs définies par l’IETF :&lt;br /&gt;
*Juniper a conçu une première réalisation en mettant en œuvre une MIB privée en se basant sur le RFC 2465. Cette MIB permet en autre de faire de la métrologie sur le nombre de paquets entrants et sortants. D’autre part, ce constructeur a implémenté une MIB  privée basée sur le draft [[Bibliographie#JH-id|JH-id]] qui permet de récupérer des informations sur le routage BGP4.&lt;br /&gt;
*Cisco a mis en œuvre sur ses équipements une MIB privée (CISCO-IETF-IP-MIB) permettant de récupérer un certain nombre d’informations IPv6 de base (interfaces, messages ICMP). Par contre, il n’a pas encore développé une MIB permettant de différencier le trafic sur les interfaces transportant les deux versions IP le trafic IPv6.&lt;br /&gt;
*Hitachi a développé sur ces routeurs (GR2000/GR4000) et sur les switchs (GS4000) les MIBs décrites dans les RFC 2452, RFC 2454, RFC 2465 et RFC 2466. Par contre, les MIBs unifiées ne sont pas encore prêtes.&lt;br /&gt;
*6Wind a implémenté sur ses équipements les RFC 2465 et RFC 2466.&lt;br /&gt;
&lt;br /&gt;
Le tableau suivant récapitule les MIBs implémentés par les principaux constructeurs. &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!	RFC/draft de référence ||	Nom de la MIB&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Cisco	||RFC 2466	&amp;lt;br&amp;gt; cisco-ietf-ip-mib (privé)&lt;br /&gt;
|-&lt;br /&gt;
|Juniper	|| RFC 2465 RFC 2466 &amp;lt;br&amp;gt;draft ietf-idr-bgp4-mibv2-0 &amp;lt;br&amp;gt;mib-jnx-ipv6.txt (privé) &amp;lt;br&amp;gt;mib-jnx-ipv6.txt (privé)&amp;lt;br&amp;gt; mib-jnx-bgpmib2.txt (privé)&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Hitachi	|| RFC 2452 RFC 2454 RFC 2465 RFC 2466 &amp;lt;br&amp;gt;MIBs standard implémentées&lt;br /&gt;
|- &lt;br /&gt;
|6wind	||RFC 2465 RFC 2466&amp;lt;br&amp;gt;	MIBs standard implémentées &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Le transport IPv6 du protocole SNMP===&lt;br /&gt;
&lt;br /&gt;
Afin que le transport de SNMP puisse se faire en IPv6, il est nécessaire que le serveur SNMP ainsi que les agents situés sur les équipements supportent la pile IPv6. En ce qui concerne les serveurs, il existe un nombre important d’application qui supporte déjà le transport IPv6. De même, chez un grand nombre de constructeurs, les agents SNMP sont capables de répondre à des requêtes IPv6.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Constructeur	|| Agent SNMP IPv6&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Cisco	||A partir de la version d’IOS 12.0 (27)S&lt;br /&gt;
|-&lt;br /&gt;
|Juniper	||Disponible&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Hitachi	||Disponible&lt;br /&gt;
|-&lt;br /&gt;
|6wind	||Disponible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===L’export des flux IPv6===&lt;br /&gt;
&lt;br /&gt;
[[image:CS203.png|thumb|right|200px|Figure 16-3 ''Exportation des flux'']]&lt;br /&gt;
&lt;br /&gt;
Un autre élément très important de nos jours dans la supervision des réseaux est l’export des flux. En effet, les flux permettent de caractériser le trafic acheminé sur le réseau. Il est donc essentiel de disposer de cette fonctionnalité d’export pour les flux IPv6.&lt;br /&gt;
&lt;br /&gt;
Le groupe de travail IPFIX de l’IETF travaille pour définir un format standard pour l’export des flux. Cependant, aujourd’hui chaque constructeur a développé sa propre technologie. Voici un tableau indiquant les différentes technologies utilisées par chaque constructeur et si elles supportent l’export de flux IPv6. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Constructeur	||technologie pour l'export des flux	||Export des flux IPv6&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Cisco	||Netflow (version 9)	||A partir de la version d’IOS 12.3(7)T&lt;br /&gt;
|-&lt;br /&gt;
|Juniper	||Cflowd	||Non disponible&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Hitachi	||sflow  	||Disponible&lt;br /&gt;
|-&lt;br /&gt;
|6wind	||Netflow	||Non disponible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;plateformes&amp;quot;&amp;gt;Les plates-formes.&amp;lt;/div&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les plates-formes de supervision disponibles dans le marché visent à intégrer un ensemble d’outils permettant d’administrer de façon globale le réseau. Vu que tout les éléments de base ne sont pas disponibles, il est difficile de trouver aujourd’hui une plateforme qui permette de superviser un réseau IPv6 de la même façon qu’IPv4. Cependant, certaines versions de ces plateformes disposent de quelques fonctionnalités de supervision IPv6.&lt;br /&gt;
Voici un tableau récapitulant un ensemble de fonctionnalités  avec les différentes plateformes d’administration.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Plate-forme	||outil	||Fonctionnalités disponibles&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|HP OpenView	||Network Node Manager (NMM 7.5)||	Implémentation de MIBs IPv6 standard &amp;lt;br&amp;gt;Découverte de réseau IPv6&lt;br /&gt;
|-&lt;br /&gt;
|CiscoWorks	||Campus manager 4.0	||Transport IPv6 : trace d’équipements terminaux IPv6  En phase de test&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|                       || Resource Manager Essentials (RME)	|| Inventaire et configuration d’équipements En phase de test&lt;br /&gt;
|-&lt;br /&gt;
|                      || Cisco View	|| En cours de développement&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Tivoli-Netview	 ||  ||  	Pas de fonctionnalité IPv6 disponible&lt;br /&gt;
|-&lt;br /&gt;
|Infovista	|| ||	Pas de fonctionnalité IPv6 disponible et aucune prévision d’en intégrer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{suivi |Supervision|Supervision|Les applications spécifiques |Les applications spécifiques}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Mise_en_%C5%93uvre_par_les_constructeurs&amp;diff=2969</id>
		<title>Mise en œuvre par les constructeurs</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Mise_en_%C5%93uvre_par_les_constructeurs&amp;diff=2969"/>
				<updated>2006-02-27T13:29:03Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Les MIBs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |Supervision|Supervision|Les applications spécifiques |Les applications spécifiques}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans cette partie, nous avons choisi un ensemble de constructeurs dont leurs équipements offrent des fonctionnalités pour la supervision des réseaux IPv6. A noter que cette liste n’est pas exhaustive.&lt;br /&gt;
Dans un premier temps, certains constructeurs implémentant des MIBs IPv6 seront passés en revue, ensuite, dans un second temps ceux proposant l’utilisation de SNMP en IPv6 seront listé. Nous présenterons ceux qui offrent la possibilité d’exporter des flux IPv6 vers un collecteur.&lt;br /&gt;
&lt;br /&gt;
===Les MIBs===&lt;br /&gt;
&lt;br /&gt;
Nous avons vu précédemment que le modèle SNMP est très utilisé ; il est donc important que les constructeurs implémentent les MIBs définies par l’IETF :&lt;br /&gt;
*Juniper a conçu une première réalisation en mettant en œuvre une MIB privée en se basant sur le RFC 2465. Cette MIB permet en autre de faire de la métrologie sur le nombre de paquets entrants et sortants. D’autre part, ce constructeur a implémenté une MIB  privée basée sur le draft [[Bibliographie#JH-id]] qui permet de récupérer des informations sur le routage BGP4.&lt;br /&gt;
*Cisco a mis en œuvre sur ses équipements une MIB privée (CISCO-IETF-IP-MIB) permettant de récupérer un certain nombre d’informations IPv6 de base (interfaces, messages ICMP). Par contre, il n’a pas encore développé une MIB permettant de différencier le trafic sur les interfaces transportant les deux versions IP le trafic IPv6.&lt;br /&gt;
*Hitachi a développé sur ces routeurs (GR2000/GR4000) et sur les switchs (GS4000) les MIBs décrites dans les RFC 2452, RFC 2454, RFC 2465 et RFC 2466. Par contre, les MIBs unifiées ne sont pas encore prêtes.&lt;br /&gt;
*6Wind a implémenté sur ses équipements les RFC 2465 et RFC 2466.&lt;br /&gt;
&lt;br /&gt;
Le tableau suivant récapitule les MIBs implémentés par les principaux constructeurs. &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!	RFC/draft de référence ||	Nom de la MIB&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Cisco	||RFC 2466	&amp;lt;br&amp;gt; cisco-ietf-ip-mib (privé)&lt;br /&gt;
|-&lt;br /&gt;
|Juniper	|| RFC 2465 RFC 2466 &amp;lt;br&amp;gt;draft ietf-idr-bgp4-mibv2-0 &amp;lt;br&amp;gt;mib-jnx-ipv6.txt (privé) &amp;lt;br&amp;gt;mib-jnx-ipv6.txt (privé)&amp;lt;br&amp;gt; mib-jnx-bgpmib2.txt (privé)&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Hitachi	|| RFC 2452 RFC 2454 RFC 2465 RFC 2466 &amp;lt;br&amp;gt;MIBs standard implémentées&lt;br /&gt;
|- &lt;br /&gt;
|6wind	||RFC 2465 RFC 2466&amp;lt;br&amp;gt;	MIBs standard implémentées &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Le transport IPv6 du protocole SNMP===&lt;br /&gt;
&lt;br /&gt;
Afin que le transport de SNMP puisse se faire en IPv6, il est nécessaire que le serveur SNMP ainsi que les agents situés sur les équipements supportent la pile IPv6. En ce qui concerne les serveurs, il existe un nombre important d’application qui supporte déjà le transport IPv6. De même, chez un grand nombre de constructeurs, les agents SNMP sont capables de répondre à des requêtes IPv6.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Constructeur	|| Agent SNMP IPv6&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Cisco	||A partir de la version d’IOS 12.0 (27)S&lt;br /&gt;
|-&lt;br /&gt;
|Juniper	||Disponible&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Hitachi	||Disponible&lt;br /&gt;
|-&lt;br /&gt;
|6wind	||Disponible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===L’export des flux IPv6===&lt;br /&gt;
&lt;br /&gt;
[[image:CS203.png|thumb|right|200px|Figure 16-3 ''Exportation des flux'']]&lt;br /&gt;
&lt;br /&gt;
Un autre élément très important de nos jours dans la supervision des réseaux est l’export des flux. En effet, les flux permettent de caractériser le trafic acheminé sur le réseau. Il est donc essentiel de disposer de cette fonctionnalité d’export pour les flux IPv6.&lt;br /&gt;
&lt;br /&gt;
Le groupe de travail IPFIX de l’IETF travaille pour définir un format standard pour l’export des flux. Cependant, aujourd’hui chaque constructeur a développé sa propre technologie. Voici un tableau indiquant les différentes technologies utilisées par chaque constructeur et si elles supportent l’export de flux IPv6. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Constructeur	||technologie pour l'export des flux	||Export des flux IPv6&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Cisco	||Netflow (version 9)	||A partir de la version d’IOS 12.3(7)T&lt;br /&gt;
|-&lt;br /&gt;
|Juniper	||Cflowd	||Non disponible&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Hitachi	||sflow  	||Disponible&lt;br /&gt;
|-&lt;br /&gt;
|6wind	||Netflow	||Non disponible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;plateformes&amp;quot;&amp;gt;Les plates-formes.&amp;lt;/div&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les plates-formes de supervision disponibles dans le marché visent à intégrer un ensemble d’outils permettant d’administrer de façon globale le réseau. Vu que tout les éléments de base ne sont pas disponibles, il est difficile de trouver aujourd’hui une plateforme qui permette de superviser un réseau IPv6 de la même façon qu’IPv4. Cependant, certaines versions de ces plateformes disposent de quelques fonctionnalités de supervision IPv6.&lt;br /&gt;
Voici un tableau récapitulant un ensemble de fonctionnalités  avec les différentes plateformes d’administration.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Plate-forme	||outil	||Fonctionnalités disponibles&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|HP OpenView	||Network Node Manager (NMM 7.5)||	Implémentation de MIBs IPv6 standard &amp;lt;br&amp;gt;Découverte de réseau IPv6&lt;br /&gt;
|-&lt;br /&gt;
|CiscoWorks	||Campus manager 4.0	||Transport IPv6 : trace d’équipements terminaux IPv6  En phase de test&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|                       || Resource Manager Essentials (RME)	|| Inventaire et configuration d’équipements En phase de test&lt;br /&gt;
|-&lt;br /&gt;
|                      || Cisco View	|| En cours de développement&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;    &lt;br /&gt;
|Tivoli-Netview	 ||  ||  	Pas de fonctionnalité IPv6 disponible&lt;br /&gt;
|-&lt;br /&gt;
|Infovista	|| ||	Pas de fonctionnalité IPv6 disponible et aucune prévision d’en intégrer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{suivi |Supervision|Supervision|Les applications spécifiques |Les applications spécifiques}}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2968</id>
		<title>Supervision</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2968"/>
				<updated>2006-02-27T13:28:06Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Administration d’un réseau uniquement en IPv6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
L'administration des réseaux se décompose en un ensemble de tâches, chacune ayant une fonction bien particulière qui peuvent brièvement être décrite de la manière suivante :&lt;br /&gt;
*Supervision (''Monitoring'') : La supervision est essentielle à la bonne administration d'un réseau. Elle consiste à vérifier qu'un ensemble d'équipements constituant un réseau (Routeurs, switchs, serveurs, PCs) fonctionne correctement. Elle permet de connaître à tout moment la disponibilité mais aussi les performances qu'offre le réseau.&lt;br /&gt;
*Métrologie : Elle consiste à surveiller et analyser le trafic véhiculé par les équipements réseaux. Elle permet donc d'évaluer le type et la quantité de trafic dans le réseau. La métrologie a pris ainsi une place importante dans le monde de l'administration des réseaux. Parmi les utilisateurs de ce service se trouvent les opérateurs qui l'emploient entre autres pour suivre la consommation de leurs clients et vérifier qu'elle est conforme à leur contrat (''Accounting - Billing''). De même, ils vérifient que leurs liens physiques n'atteignent pas la capacité limite. Grâce aux fonctions de quelques outils, il est possible de faire du &amp;quot;reporting&amp;quot;. Il est ainsi plus facile de prévoir le dimensionnement du réseau lors de migrations.&lt;br /&gt;
*Sécurité: Il est indispensable d'avoir une politique de sécurité dans un réseau afin d'assurer principalement l'intégrité et la confidentialité des données. Pour cela, il faut mettre en place plusieurs niveaux de sécurité :&lt;br /&gt;
**il est nécessaire de sécuriser l'accès physique aux équipements réseaux (routeurs, commutateurs) et aux serveurs (collecteurs, serveur d'authentification...).&lt;br /&gt;
**pour restreindre l'accès aux utilisateurs non autorisés, des filtres sur les adresses IP et les ports (Access List, IPTables, ACL) ainsi que sur les services applicatifs (Certificats de sécurité, PKI) sont mis en place.&lt;br /&gt;
**l'information transmise sur le réseau doit être chiffrée pour éviter que des informations confidentielles comme les mots de passe circulent en clair.&lt;br /&gt;
La plus part des outils d'administration offrent ces fonctionnalités :&lt;br /&gt;
*Découverte de la Topologie: La topologie permet de connaître à travers l'élaboration de schémas l'architecture du réseau. Il est donc très important de maintenir à jour ces schémas pour avoir une vision correcte du réseau.&lt;br /&gt;
*Inventaire: L'inventaire permet de recenser l'ensemble des équipements qui constitue un réseau. Il a aussi pour but de tenir à jour la configuration de ces équipements. Si un inventaire n'est pas fait, il se peut, par exemple, que certains équipements du réseau ne soient pas supervisés. C'est pour cela qu'il est important de maintenir à jour l'inventaire, en même temps que le réseau évolue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
[[image:Sup3.png|thumb|right|200px|Figure 16-1 ''Architecture d'administration - Interrogation des MIB'']]&lt;br /&gt;
&lt;br /&gt;
La croissance rapide des réseaux et la diversité des systèmes pendant la dernière décennie a entraîné le besoin d'une gestion globale des infrastructures réseaux. SNMP (''Simple Network Management Protocol'') s'est avéré être une bonne solution proposée et standardisée par l'IETF. Ce protocole permet de collecter diverses informations stockées dans les équipements du réseau dans des bases de données appelées MIBs (''Management Information Base''). Les équipements sont aussi capables de faire remonter des alertes (''traps'') au collecteur SNMP via ce protocole (cf. figure Architecture d'administration - Interrogation des MIB.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le protocole SNMP et les MIBs sont devenus les deux éléments principaux du modèle de supervision de réseaux.&lt;br /&gt;
Le protocole SNMP étant indépendant de l'architecture du protocole IP, son évolution vers IPv6 n'a pas représenté un problème majeur. La première implémentation de SNMP pour le protocole IPv6 a été réalisée par l'équipe du Loria de l'université de Nancy (NET-SNMP OpenSource) et a été disponible dans la version 5.0.3 de net-snmp, en mai 2002. Avant cette première version, l'administration des réseaux IPv6 était possible du fait que les équipements avaient une double pile configurée IPv4 et IPv6. En effet, il n'était possible d'accéder en SNMP sur un équipement qu'en IPv4 et de récupérer des champs de la MIB concernant IPv6. Aujourd'hui, certains réseaux projets ne véhiculent que du trafic IPv6 d'où la nécessité de disposer d'une version IPv6 pour le transport du protocole SNMP.&lt;br /&gt;
L'évolution des MIB est plus complexe. Depuis les spécifications initiales du protocole IPv6, en 1995, la définition de la MIB-2 pour l'administration des réseaux IPv6 a été modifiée à deux occasions en 1998 et en 2000 (cf. figure Evolution de la MIB.). Le problème principal était de définir le type du champ &amp;quot;IP ADDRESS&amp;quot;. En 1996, une représentation initiale du champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; est décrite dans le RFC 1902 où la longueur réservée pour ce champ est de 4 octets. Avec ce champ ne peuvent être représentées que les adresses IPv4 puisque les adresses IPv6 ayant une longueur de 128 bits. C'est pourquoi, en 1998, le RFC 2465 introduit la définition d'un champ &amp;quot;Ipv6Address&amp;quot; sur 16 octets.&lt;br /&gt;
&lt;br /&gt;
[[image:Sup4.png|thumb|none|500px|Figure 16-2 ''Evolution de la MIB'']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi de nombreuses RFCs ont été affectées par ces modifications. D'abord, avec la première approche de créer des MIBs IPv4 et IPv6 indépendantes, de nouveaux RFC ont vu le jour. Principalement, les RFCs décrivant les MIBs IPv6 sur transport TCP ou UDP (RFC 2452 et RFC 2454) ont été publiés en 1998. De même, une MIB concernant le protocole ICMPv6 a été décrite dans le RFC 2466.&lt;br /&gt;
&lt;br /&gt;
Cependant, cette approche implique une gestion indépendante des protocoles IPv4 et IPv6. Ainsi, l'IETF a décidé de définir une MIB-2 unifiée, permettant de superviser les réseaux IPv4 et IPv6 (RFC 2851 - Juin 2000). Ce RFC définit le champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; comme une structure avec deux champs. Le premier champ permet de différencier le type d'adresses (IPv4 ou IPv6). Le deuxième champ est une chaîne de caractères de longueur variable qui peut contenir des valeurs de longueur égale à 4 ou 16 octets (IPv4 ou IPv6). Il devient possible de définir dans les MIBs des tables compatibles avec les deux versions d'IP.&lt;br /&gt;
&lt;br /&gt;
Afin d'améliorer la description de la MIB, en mai 2002, le RFC4001 obsolète les RFC 2851 et RFC 3291. Des informations supplémentaires y sont décrites comme le préfixe réseau, le numéro de port utilisé par la couche transport ou le numéro d'AS (''Automous System'') correspondant à l'adresse IPv4 ou IPv6.&lt;br /&gt;
&lt;br /&gt;
Cette volonté d'avoir une MIB unifiée entraîne aussi la mise à jour des MIB déjà existantes. Actuellement, l'IETF publie des drafts de mise à jour pour les RFC 2011, RFC 2012, RFC 2013 et RFC 2096. Les dernières propositions publiées sont :&lt;br /&gt;
&lt;br /&gt;
*draft-ietf-ipv6-rfc2011-update-10.txt (mai 2004) (RFC Editor Queue), &lt;br /&gt;
*RFC 4022 (Mars 2005),&lt;br /&gt;
*RFC 4113 (Juin 2005),&lt;br /&gt;
*draft-ietf-ipv6-rfc2096-update-07.txt (février 2004) (RFC Editor Queue).&lt;br /&gt;
&lt;br /&gt;
Ces drafts concernent respectivement les MIBs IP, TCP, UDP et IP Forwarding table. Pour les MIBs concernant le routage BGP4+ et OSPFv3, les derniers drafts proposés sont &amp;lt;tt&amp;gt;draft-ietf-idr-bgp4-mibv2-05.txt&amp;lt;/tt&amp;gt; (Juillet 2005) et &amp;lt;tt&amp;gt;draft-ietf-ospf-ospfv3-mib-10.txt&amp;lt;/tt&amp;gt; (Décembre 2005) mais le premier de ces drafts a expiré en janvier 2006, ce qui laisse les MIBs concernant le routage externe IPv6 en suspens.&lt;br /&gt;
En raison de toutes ces modifications, les MIBs ne sont pas entièrement disponibles aujourd'hui. En effet, uniquement quelques réalisations ont été effectuées par les constructeurs. Nous verrons par la suite les implémentations des différents constructeurs.&lt;br /&gt;
&lt;br /&gt;
==Administration des réseaux IPv6==&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau Double Pile===&lt;br /&gt;
&lt;br /&gt;
Le fait d’administrer des réseaux IPv6 ne se traduit pas toujours par l’emploi d’outils qui transportent l’information en IPv6. En effet, la plupart des équipements sur le réseau étant en double pile (IPv4 – IPv6), l’accès peut se faire en IPv4 puis les informations concernant la supervision IPv6 sont récupérées. Cette solution est retenue très souvent car certaines applications ne supportent pas encore le transport en IPv6.&lt;br /&gt;
&lt;br /&gt;
Cela permet aussi aux NOC (''Network Operations Center'') n’ayant pas déployé encore un plan d’adressage IPv6 pour la supervision, d’administrer des réseaux aussi bien IPv4 qu’IPv6.&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau uniquement en IPv6===&lt;br /&gt;
&lt;br /&gt;
L’administration d’un réseau uniquement en IPv6 est différente de l’administration d’un réseau ayant une double pile. En effet, du fait que les équipements ne sont accessibles qu’en IPv6, toute l’information de supervision doit être récupérée via le protocole IPv6. Il est donc indispensable dans ce cas là que toutes les applications utilisées pour l’administration du réseau supportent ce protocole.&lt;br /&gt;
L’administration d’un réseau IPv6 est donc semblable à celle d’un réseau IPv4. Les informations récupérées sont souvent les mêmes dans les deux cas. Le point essentiel reste les constructeurs ainsi que les éditeurs de logiciels qui doivent rendre disponible les protocoles ainsi que les applications permettant l’administration d’un réseau IPv6.&lt;br /&gt;
&lt;br /&gt;
{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2967</id>
		<title>Supervision</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2967"/>
				<updated>2006-02-27T13:25:19Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* &amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
L'administration des réseaux se décompose en un ensemble de tâches, chacune ayant une fonction bien particulière qui peuvent brièvement être décrite de la manière suivante :&lt;br /&gt;
*Supervision (''Monitoring'') : La supervision est essentielle à la bonne administration d'un réseau. Elle consiste à vérifier qu'un ensemble d'équipements constituant un réseau (Routeurs, switchs, serveurs, PCs) fonctionne correctement. Elle permet de connaître à tout moment la disponibilité mais aussi les performances qu'offre le réseau.&lt;br /&gt;
*Métrologie : Elle consiste à surveiller et analyser le trafic véhiculé par les équipements réseaux. Elle permet donc d'évaluer le type et la quantité de trafic dans le réseau. La métrologie a pris ainsi une place importante dans le monde de l'administration des réseaux. Parmi les utilisateurs de ce service se trouvent les opérateurs qui l'emploient entre autres pour suivre la consommation de leurs clients et vérifier qu'elle est conforme à leur contrat (''Accounting - Billing''). De même, ils vérifient que leurs liens physiques n'atteignent pas la capacité limite. Grâce aux fonctions de quelques outils, il est possible de faire du &amp;quot;reporting&amp;quot;. Il est ainsi plus facile de prévoir le dimensionnement du réseau lors de migrations.&lt;br /&gt;
*Sécurité: Il est indispensable d'avoir une politique de sécurité dans un réseau afin d'assurer principalement l'intégrité et la confidentialité des données. Pour cela, il faut mettre en place plusieurs niveaux de sécurité :&lt;br /&gt;
**il est nécessaire de sécuriser l'accès physique aux équipements réseaux (routeurs, commutateurs) et aux serveurs (collecteurs, serveur d'authentification...).&lt;br /&gt;
**pour restreindre l'accès aux utilisateurs non autorisés, des filtres sur les adresses IP et les ports (Access List, IPTables, ACL) ainsi que sur les services applicatifs (Certificats de sécurité, PKI) sont mis en place.&lt;br /&gt;
**l'information transmise sur le réseau doit être chiffrée pour éviter que des informations confidentielles comme les mots de passe circulent en clair.&lt;br /&gt;
La plus part des outils d'administration offrent ces fonctionnalités :&lt;br /&gt;
*Découverte de la Topologie: La topologie permet de connaître à travers l'élaboration de schémas l'architecture du réseau. Il est donc très important de maintenir à jour ces schémas pour avoir une vision correcte du réseau.&lt;br /&gt;
*Inventaire: L'inventaire permet de recenser l'ensemble des équipements qui constitue un réseau. Il a aussi pour but de tenir à jour la configuration de ces équipements. Si un inventaire n'est pas fait, il se peut, par exemple, que certains équipements du réseau ne soient pas supervisés. C'est pour cela qu'il est important de maintenir à jour l'inventaire, en même temps que le réseau évolue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
[[image:Sup3.png|thumb|right|200px|Figure 16-1 ''Architecture d'administration - Interrogation des MIB'']]&lt;br /&gt;
&lt;br /&gt;
La croissance rapide des réseaux et la diversité des systèmes pendant la dernière décennie a entraîné le besoin d'une gestion globale des infrastructures réseaux. SNMP (''Simple Network Management Protocol'') s'est avéré être une bonne solution proposée et standardisée par l'IETF. Ce protocole permet de collecter diverses informations stockées dans les équipements du réseau dans des bases de données appelées MIBs (''Management Information Base''). Les équipements sont aussi capables de faire remonter des alertes (''traps'') au collecteur SNMP via ce protocole (cf. figure Architecture d'administration - Interrogation des MIB.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le protocole SNMP et les MIBs sont devenus les deux éléments principaux du modèle de supervision de réseaux.&lt;br /&gt;
Le protocole SNMP étant indépendant de l'architecture du protocole IP, son évolution vers IPv6 n'a pas représenté un problème majeur. La première implémentation de SNMP pour le protocole IPv6 a été réalisée par l'équipe du Loria de l'université de Nancy (NET-SNMP OpenSource) et a été disponible dans la version 5.0.3 de net-snmp, en mai 2002. Avant cette première version, l'administration des réseaux IPv6 était possible du fait que les équipements avaient une double pile configurée IPv4 et IPv6. En effet, il n'était possible d'accéder en SNMP sur un équipement qu'en IPv4 et de récupérer des champs de la MIB concernant IPv6. Aujourd'hui, certains réseaux projets ne véhiculent que du trafic IPv6 d'où la nécessité de disposer d'une version IPv6 pour le transport du protocole SNMP.&lt;br /&gt;
L'évolution des MIB est plus complexe. Depuis les spécifications initiales du protocole IPv6, en 1995, la définition de la MIB-2 pour l'administration des réseaux IPv6 a été modifiée à deux occasions en 1998 et en 2000 (cf. figure Evolution de la MIB.). Le problème principal était de définir le type du champ &amp;quot;IP ADDRESS&amp;quot;. En 1996, une représentation initiale du champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; est décrite dans le RFC 1902 où la longueur réservée pour ce champ est de 4 octets. Avec ce champ ne peuvent être représentées que les adresses IPv4 puisque les adresses IPv6 ayant une longueur de 128 bits. C'est pourquoi, en 1998, le RFC 2465 introduit la définition d'un champ &amp;quot;Ipv6Address&amp;quot; sur 16 octets.&lt;br /&gt;
&lt;br /&gt;
[[image:Sup4.png|thumb|none|500px|Figure 16-2 ''Evolution de la MIB'']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi de nombreuses RFCs ont été affectées par ces modifications. D'abord, avec la première approche de créer des MIBs IPv4 et IPv6 indépendantes, de nouveaux RFC ont vu le jour. Principalement, les RFCs décrivant les MIBs IPv6 sur transport TCP ou UDP (RFC 2452 et RFC 2454) ont été publiés en 1998. De même, une MIB concernant le protocole ICMPv6 a été décrite dans le RFC 2466.&lt;br /&gt;
&lt;br /&gt;
Cependant, cette approche implique une gestion indépendante des protocoles IPv4 et IPv6. Ainsi, l'IETF a décidé de définir une MIB-2 unifiée, permettant de superviser les réseaux IPv4 et IPv6 (RFC 2851 - Juin 2000). Ce RFC définit le champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; comme une structure avec deux champs. Le premier champ permet de différencier le type d'adresses (IPv4 ou IPv6). Le deuxième champ est une chaîne de caractères de longueur variable qui peut contenir des valeurs de longueur égale à 4 ou 16 octets (IPv4 ou IPv6). Il devient possible de définir dans les MIBs des tables compatibles avec les deux versions d'IP.&lt;br /&gt;
&lt;br /&gt;
Afin d'améliorer la description de la MIB, en mai 2002, le RFC4001 obsolète les RFC 2851 et RFC 3291. Des informations supplémentaires y sont décrites comme le préfixe réseau, le numéro de port utilisé par la couche transport ou le numéro d'AS (''Automous System'') correspondant à l'adresse IPv4 ou IPv6.&lt;br /&gt;
&lt;br /&gt;
Cette volonté d'avoir une MIB unifiée entraîne aussi la mise à jour des MIB déjà existantes. Actuellement, l'IETF publie des drafts de mise à jour pour les RFC 2011, RFC 2012, RFC 2013 et RFC 2096. Les dernières propositions publiées sont :&lt;br /&gt;
&lt;br /&gt;
*draft-ietf-ipv6-rfc2011-update-10.txt (mai 2004) (RFC Editor Queue), &lt;br /&gt;
*RFC 4022 (Mars 2005),&lt;br /&gt;
*RFC 4113 (Juin 2005),&lt;br /&gt;
*draft-ietf-ipv6-rfc2096-update-07.txt (février 2004) (RFC Editor Queue).&lt;br /&gt;
&lt;br /&gt;
Ces drafts concernent respectivement les MIBs IP, TCP, UDP et IP Forwarding table. Pour les MIBs concernant le routage BGP4+ et OSPFv3, les derniers drafts proposés sont &amp;lt;tt&amp;gt;draft-ietf-idr-bgp4-mibv2-05.txt&amp;lt;/tt&amp;gt; (Juillet 2005) et &amp;lt;tt&amp;gt;draft-ietf-ospf-ospfv3-mib-10.txt&amp;lt;/tt&amp;gt; (Décembre 2005) mais le premier de ces drafts a expiré en janvier 2006, ce qui laisse les MIBs concernant le routage externe IPv6 en suspens.&lt;br /&gt;
En raison de toutes ces modifications, les MIBs ne sont pas entièrement disponibles aujourd'hui. En effet, uniquement quelques réalisations ont été effectuées par les constructeurs. Nous verrons par la suite les implémentations des différents constructeurs.&lt;br /&gt;
&lt;br /&gt;
==Administration des réseaux IPv6==&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau Double Pile===&lt;br /&gt;
&lt;br /&gt;
Le fait d’administrer des réseaux IPv6 ne se traduit pas toujours par l’emploi d’outils qui transportent l’information en IPv6. En effet, la plupart des équipements sur le réseau étant en double pile (IPv4 – IPv6), l’accès peut se faire en IPv4 puis les informations concernant la supervision IPv6 sont récupérées. Cette solution est retenue très souvent car certaines applications ne supportent pas encore le transport en IPv6.&lt;br /&gt;
&lt;br /&gt;
Cela permet aussi aux NOC (''Network Operations Center'') n’ayant pas déployé encore un plan d’adressage IPv6 pour la supervision, d’administrer des réseaux aussi bien IPv4 qu’IPv6.&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau uniquement en IPv6===&lt;br /&gt;
&lt;br /&gt;
L’administration d’un réseau uniquement en IPv6 est différente de l’administration d’un réseau ayant une double pile. En effet, du fait que les équipements ne sont accessibles qu’en IPv6, toute l’information de supervision doit être récupérée via le protocole IPv6. Il est donc indispensable dans ce cas là que toutes les applications utilisées pour l’administration du réseau supporte ce protocole.&lt;br /&gt;
L’administration d’un réseau IPv6 est donc semblable à celle d’un réseau IPv4. Les informations récupérées sont souvent les mêmes dans les deux cas. Le point essentiel reste les constructeurs ainsi que les éditeurs de logiciels qui doivent rendre disponible les protocoles ainsi que les applications permettant l’administration d’un réseau IPv6.&lt;br /&gt;
&lt;br /&gt;
{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2966</id>
		<title>Supervision</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2966"/>
				<updated>2006-02-27T13:22:22Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* &amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
L'administration des réseaux se décompose en un ensemble de tâches, chacune ayant une fonction bien particulière qui peuvent brièvement être décrite de la manière suivante :&lt;br /&gt;
*Supervision (''Monitoring'') : La supervision est essentielle à la bonne administration d'un réseau. Elle consiste à vérifier qu'un ensemble d'équipements constituant un réseau (Routeurs, switchs, serveurs, PCs) fonctionne correctement. Elle permet de connaître à tout moment la disponibilité mais aussi les performances qu'offre le réseau.&lt;br /&gt;
*Métrologie : Elle consiste à surveiller et analyser le trafic véhiculé par les équipements réseaux. Elle permet donc d'évaluer le type et la quantité de trafic dans le réseau. La métrologie a pris ainsi une place importante dans le monde de l'administration des réseaux. Parmi les utilisateurs de ce service se trouvent les opérateurs qui l'emploient entre autres pour suivre la consommation de leurs clients et vérifier qu'elle est conforme à leur contrat (''Accounting - Billing''). De même, ils vérifient que leurs liens physiques n'atteignent pas la capacité limite. Grâce aux fonctions de quelques outils, il est possible de faire du &amp;quot;reporting&amp;quot;. Il est ainsi plus facile de prévoir le dimensionnement du réseau lors de migrations.&lt;br /&gt;
*Sécurité: Il est indispensable d'avoir une politique de sécurité dans un réseau afin d'assurer principalement l'intégrité et la confidentialité des données. Pour cela, il faut mettre en place plusieurs niveaux de sécurité :&lt;br /&gt;
**il est nécessaire de sécuriser l'accès physique aux équipements réseaux (routeurs, commutateurs) et aux serveurs (collecteurs, serveur d'authentification...).&lt;br /&gt;
**pour restreindre l'accès aux utilisateurs non autorisés, des filtres sur les adresses IP et les ports (Access List, IPTables, ACL) ainsi que sur les services applicatifs (Certificats de sécurité, PKI) sont mis en place.&lt;br /&gt;
**l'information transmise sur le réseau doit être chiffrée pour éviter que des informations confidentielles comme les mots de passe circulent en clair.&lt;br /&gt;
La plus part des outils d'administration offrent ces fonctionnalités :&lt;br /&gt;
*Découverte de la Topologie: La topologie permet de connaître à travers l'élaboration de schémas l'architecture du réseau. Il est donc très important de maintenir à jour ces schémas pour avoir une vision correcte du réseau.&lt;br /&gt;
*Inventaire: L'inventaire permet de recenser l'ensemble des équipements qui constitue un réseau. Il a aussi pour but de tenir à jour la configuration de ces équipements. Si un inventaire n'est pas fait, il se peut, par exemple, que certains équipements du réseau ne soient pas supervisés. C'est pour cela qu'il est important de maintenir à jour l'inventaire, en même temps que le réseau évolue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
[[image:Sup3.png|thumb|right|200px|Figure 16-1 ''Architecture d'administration - Interrogation des MIB'']]&lt;br /&gt;
&lt;br /&gt;
La croissance rapide des réseaux et la diversité des systèmes pendant la dernière décennie a entraîné le besoin d'une gestion globale des infrastructures réseaux. SNMP (''Simple Network Management Protocol'') s'est avéré être une bonne solution proposée et standardisée par l'IETF. Ce protocole permet de collecter diverses informations stockées dans les équipements du réseau dans des bases de données appelées MIBs (''Management Information Base''). Les équipements sont aussi capables de faire remonter des alertes (''traps'') au collecteur SNMP via ce protocole (cf. figure Architecture d'administration - Interrogation des MIB.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le protocole SNMP et les MIBs sont devenus les deux éléments principaux du modèle de supervision de réseaux.&lt;br /&gt;
Le protocole SNMP étant indépendant de l'architecture du protocole IP, son évolution vers IPv6 n'a pas représenté un problème majeur. La première implémentation de SNMP pour le protocole IPv6 a été réalisée par l'équipe du Loria de l'université de Nancy (NET-SNMP OpenSource) et a été disponible dans la version 5.0.3 de net-snmp, en mai 2002. Avant cette première version, l'administration des réseaux IPv6 était possible du fait que les équipements avaient une double pile configurée IPv4 et IPv6. En effet, il n'était possible d'accéder en SNMP sur un équipement qu'en IPv4 et de récupérer des champs de la MIB concernant IPv6. Aujourd'hui, certains réseaux projets ne véhiculent que du trafic IPv6 d'où la nécessité de disposer d'une version IPv6 pour le transport du protocole SNMP.&lt;br /&gt;
L'évolution des MIB est plus complexe. Depuis les spécifications initiales du protocole IPv6, en 1995, la définition de la MIB-2 pour l'administration des réseaux IPv6 a été modifiée à deux occasions en 1998 et en 2000 (cf. figure Evolution de la MIB.). Le problème principal était de définir le type du champ &amp;quot;IP ADDRESS&amp;quot;. En 1996, une représentation initiale du champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; est décrite dans le RFC 1902 où la longueur réservée pour ce champ est de 4 octets. Avec ce champ ne peuvent être représentées que les adresses IPv4 puisque les adresses IPv6 ayant une longueur de 128 bits. C'est pourquoi, en 1998, le RFC 2465 introduit la définition d'un champ &amp;quot;Ipv6Address&amp;quot; sur 16 octets.&lt;br /&gt;
&lt;br /&gt;
[[image:Sup4.png|thumb|none|500px|Figure 16-2 ''Evolution de la MIB'']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi de nombreuses RFCs ont été affectées par ces modifications. D'abord, avec la première approche de créer des MIBs IPv4 et IPv6 indépendantes, de nouveaux RFC ont vu le jour. Principalement, les RFCs décrivant les MIBs IPv6 sur transport TCP ou UDP (RFC 2452 et RFC 2454) ont été publiés en 1998. De même, une MIB concernant le protocole ICMPv6 a été décrite dans le RFC 2466.&lt;br /&gt;
&lt;br /&gt;
Cependant, cette approche implique une gestion indépendante des protocoles IPv4 et IPv6. Ainsi, l'IETF a décidé de définir une MIB-2 unifiée, permettant de superviser les réseaux IPv4 et IPv6 (RFC 2851 - Juin 2000). Ce RFC définit le champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; comme une structure avec deux champs. Le premier champ permet de différencier le type d'adresses (IPv4 ou IPv6). Le deuxième champ est une chaîne de caractères de longueur variable qui peut contenir des valeurs de longueur égale à 4 ou 16 octets (IPv4 ou IPv6). Il devient possible de définir dans les MIBs des tables compatibles avec les deux versions d'IP.&lt;br /&gt;
&lt;br /&gt;
Afin d'améliorer la description de la MIB, en mai 2002, le RFC4001 obsolète les RFC 2851 et RFC 3291. Des informations supplémentaires y sont décrites comme le préfixe réseau, le numéro de port utilisé par la couche transport ou le numéro d'AS (''Automous System'') correspondant à l'adresse IPv4 ou IPv6.&lt;br /&gt;
&lt;br /&gt;
Cette volonté d'avoir une MIB unifiée entraîne aussi la mise à jour des MIB déjà existantes. Actuellement, l'IETF publie des drafts de mise à jour pour les RFC 2011, RFC 2012, RFC 2013 et RFC 2096. Les dernières propositions publiées sont :&lt;br /&gt;
&lt;br /&gt;
*draft-ietf-ipv6-rfc2011-update-10.txt (mai 2004), RFC 4022 (Mars 2005),&lt;br /&gt;
*draft-ietf-ipv6-rfc2013-update-04.txt (octobre 2004),&lt;br /&gt;
*draft-ietf-ipv6-rfc2096-update-07.txt (février 2004).&lt;br /&gt;
&lt;br /&gt;
Ces drafts concernent respectivement les MIBs IP, TCP, UDP et IP Forwarding table. Pour les MIBs concernant le routage BGP4+ et OSPFv3, les derniers drafts proposés sont &amp;lt;tt&amp;gt;draft-ietf-idr-bgp4-mibv2-05.txt&amp;lt;/tt&amp;gt; (Juillet 2005) et &amp;lt;tt&amp;gt;draft-ietf-ospf-ospfv3-mib-10.txt&amp;lt;/tt&amp;gt; (Décembre 2005) mais le premier de ces drafts a expiré en janvier 2006, ce qui laisse les MIBs concernant le routage externe IPv6 en suspens.&lt;br /&gt;
En raison de toutes ces modifications, les MIBs ne sont pas entièrement disponibles aujourd'hui. En effet, uniquement quelques réalisations ont été effectuées par les constructeurs. Nous verrons par la suite les implémentations des différents constructeurs.&lt;br /&gt;
&lt;br /&gt;
==Administration des réseaux IPv6==&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau Double Pile===&lt;br /&gt;
&lt;br /&gt;
Le fait d’administrer des réseaux IPv6 ne se traduit pas toujours par l’emploi d’outils qui transportent l’information en IPv6. En effet, la plupart des équipements sur le réseau étant en double pile (IPv4 – IPv6), l’accès peut se faire en IPv4 puis les informations concernant la supervision IPv6 sont récupérées. Cette solution est retenue très souvent car certaines applications ne supportent pas encore le transport en IPv6.&lt;br /&gt;
&lt;br /&gt;
Cela permet aussi aux NOC (''Network Operations Center'') n’ayant pas déployé encore un plan d’adressage IPv6 pour la supervision, d’administrer des réseaux aussi bien IPv4 qu’IPv6.&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau uniquement en IPv6===&lt;br /&gt;
&lt;br /&gt;
L’administration d’un réseau uniquement en IPv6 est différente de l’administration d’un réseau ayant une double pile. En effet, du fait que les équipements ne sont accessibles qu’en IPv6, toute l’information de supervision doit être récupérée via le protocole IPv6. Il est donc indispensable dans ce cas là que toutes les applications utilisées pour l’administration du réseau supporte ce protocole.&lt;br /&gt;
L’administration d’un réseau IPv6 est donc semblable à celle d’un réseau IPv4. Les informations récupérées sont souvent les mêmes dans les deux cas. Le point essentiel reste les constructeurs ainsi que les éditeurs de logiciels qui doivent rendre disponible les protocoles ainsi que les applications permettant l’administration d’un réseau IPv6.&lt;br /&gt;
&lt;br /&gt;
{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2965</id>
		<title>Supervision</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2965"/>
				<updated>2006-02-27T13:19:52Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* &amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
L'administration des réseaux se décompose en un ensemble de tâches, chacune ayant une fonction bien particulière qui peuvent brièvement être décrite de la manière suivante :&lt;br /&gt;
*Supervision (''Monitoring'') : La supervision est essentielle à la bonne administration d'un réseau. Elle consiste à vérifier qu'un ensemble d'équipements constituant un réseau (Routeurs, switchs, serveurs, PCs) fonctionne correctement. Elle permet de connaître à tout moment la disponibilité mais aussi les performances qu'offre le réseau.&lt;br /&gt;
*Métrologie : Elle consiste à surveiller et analyser le trafic véhiculé par les équipements réseaux. Elle permet donc d'évaluer le type et la quantité de trafic dans le réseau. La métrologie a pris ainsi une place importante dans le monde de l'administration des réseaux. Parmi les utilisateurs de ce service se trouvent les opérateurs qui l'emploient entre autres pour suivre la consommation de leurs clients et vérifier qu'elle est conforme à leur contrat (''Accounting - Billing''). De même, ils vérifient que leurs liens physiques n'atteignent pas la capacité limite. Grâce aux fonctions de quelques outils, il est possible de faire du &amp;quot;reporting&amp;quot;. Il est ainsi plus facile de prévoir le dimensionnement du réseau lors de migrations.&lt;br /&gt;
*Sécurité: Il est indispensable d'avoir une politique de sécurité dans un réseau afin d'assurer principalement l'intégrité et la confidentialité des données. Pour cela, il faut mettre en place plusieurs niveaux de sécurité :&lt;br /&gt;
**il est nécessaire de sécuriser l'accès physique aux équipements réseaux (routeurs, commutateurs) et aux serveurs (collecteurs, serveur d'authentification...).&lt;br /&gt;
**pour restreindre l'accès aux utilisateurs non autorisés, des filtres sur les adresses IP et les ports (Access List, IPTables, ACL) ainsi que sur les services applicatifs (Certificats de sécurité, PKI) sont mis en place.&lt;br /&gt;
**l'information transmise sur le réseau doit être chiffrée pour éviter que des informations confidentielles comme les mots de passe circulent en clair.&lt;br /&gt;
La plus part des outils d'administration offrent ces fonctionnalités :&lt;br /&gt;
*Découverte de la Topologie: La topologie permet de connaître à travers l'élaboration de schémas l'architecture du réseau. Il est donc très important de maintenir à jour ces schémas pour avoir une vision correcte du réseau.&lt;br /&gt;
*Inventaire: L'inventaire permet de recenser l'ensemble des équipements qui constitue un réseau. Il a aussi pour but de tenir à jour la configuration de ces équipements. Si un inventaire n'est pas fait, il se peut, par exemple, que certains équipements du réseau ne soient pas supervisés. C'est pour cela qu'il est important de maintenir à jour l'inventaire, en même temps que le réseau évolue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
[[image:Sup3.png|thumb|right|200px|Figure 16-1 ''Architecture d'administration - Interrogation des MIB'']]&lt;br /&gt;
&lt;br /&gt;
La croissance rapide des réseaux et la diversité des systèmes pendant la dernière décennie a entraîné le besoin d'une gestion globale des infrastructures réseaux. SNMP (''Simple Network Management Protocol'') s'est avéré être une bonne solution proposée et standardisée par l'IETF. Ce protocole permet de collecter diverses informations stockées dans les équipements du réseau dans des bases de données appelées MIBs (''Management Information Base''). Les équipements sont aussi capables de faire remonter des alertes (''traps'') au collecteur SNMP via ce protocole (cf. figure Architecture d'administration - Interrogation des MIB.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le protocole SNMP et les MIBs sont devenus les deux éléments principaux du modèle de supervision de réseaux.&lt;br /&gt;
Le protocole SNMP étant indépendant de l'architecture du protocole IP, son évolution vers IPv6 n'a pas représenté un problème majeur. La première implémentation de SNMP pour le protocole IPv6 a été réalisée par l'équipe du Loria de l'université de Nancy (NET-SNMP OpenSource) et a été disponible dans la version 5.0.3 de net-snmp, en mai 2002. Avant cette première version, l'administration des réseaux IPv6 était possible du fait que les équipements avaient une double pile configurée IPv4 et IPv6. En effet, il n'était possible d'accéder en SNMP sur un équipement qu'en IPv4 et de récupérer des champs de la MIB concernant IPv6. Aujourd'hui, certains réseaux projets ne véhiculent que du trafic IPv6 d'où la nécessité de disposer d'une version IPv6 pour le transport du protocole SNMP.&lt;br /&gt;
L'évolution des MIB est plus complexe. Depuis les spécifications initiales du protocole IPv6, en 1995, la définition de la MIB-2 pour l'administration des réseaux IPv6 a été modifiée à deux occasions en 1998 et en 2000 (cf. figure Evolution de la MIB.). Le problème principal était de définir le type du champ &amp;quot;IP ADDRESS&amp;quot;. En 1996, une représentation initiale du champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; est décrite dans le RFC 1902 où la longueur réservée pour ce champ est de 4 octets. Avec ce champ ne peuvent être représentées que les adresses IPv4 puisque les adresses IPv6 ayant une longueur de 128 bits. C'est pourquoi, en 1998, le RFC 2465 introduit la définition d'un champ &amp;quot;Ipv6Address&amp;quot; sur 16 octets.&lt;br /&gt;
&lt;br /&gt;
[[image:Sup4.png|thumb|none|500px|Figure 16-2 ''Evolution de la MIB'']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi de nombreuses RFCs ont été affectées par ces modifications. D'abord, avec la première approche de créer des MIBs IPv4 et IPv6 indépendantes, de nouveaux RFC ont vu le jour. Principalement, les RFCs décrivant les MIBs IPv6 sur transport TCP ou UDP (RFC 2452 et RFC 2454) ont été publiés en 1998. De même, une MIB concernant le protocole ICMPv6 a été décrite dans le RFC 2466.&lt;br /&gt;
&lt;br /&gt;
Cependant, cette approche implique une gestion indépendante des protocoles IPv4 et IPv6. Ainsi, l'IETF a décidé de définir une MIB-2 unifiée, permettant de superviser les réseaux IPv4 et IPv6 (RFC 2851 - Juin 2000). Ce RFC définit le champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; comme une structure avec deux champs. Le premier champ permet de différencier le type d'adresses (IPv4 ou IPv6). Le deuxième champ est une chaîne de caractères de longueur variable qui peut contenir des valeurs de longueur égale à 4 ou 16 octets (IPv4 ou IPv6). Il devient possible de définir dans les MIBs des tables compatibles avec les deux versions d'IP.&lt;br /&gt;
&lt;br /&gt;
Afin d'améliorer la description de la MIB, en mai 2002, le RFC4001 obsolète les RFC 2851 et RFC 3291. Des informations supplémentaires y sont décrites comme le préfixe réseau, le numéro de port utilisé par la couche transport ou le numéro d'AS (''Automous System'') correspondant à l'adresse IPv4 ou IPv6.&lt;br /&gt;
&lt;br /&gt;
Cette volonté d'avoir une MIB unifiée entraîne aussi la mise à jour des MIB déjà existantes. Actuellement, l'IETF publie des drafts de mise à jour pour les RFC 2011, RFC 2012, RFC 2013 et RFC 2096. Les dernières propositions publiées sont :&lt;br /&gt;
&lt;br /&gt;
*draft-ietf-ipv6-rfc2011-update-10.txt (mai 2004), RFC 4022 (Mars 2005),&lt;br /&gt;
*draft-ietf-ipv6-rfc2013-update-04.txt (octobre 2004),&lt;br /&gt;
*draft-ietf-ipv6-rfc2096-update-07.txt (février 2004).&lt;br /&gt;
&lt;br /&gt;
Ces drafts concernent respectivement les MIBs IP, TCP, UDP et IP Forwarding table. Pour les MIBs concernant le routage BGP4+ et OSPFv3, les derniers drafts proposés sont &amp;lt;tt&amp;gt;draft-ietf-idr-bgp4-mibv2-05.txt&amp;lt;/tt&amp;gt; (Août 2004) et &amp;lt;tt&amp;gt;draft-ietf-ospf-ospfv3-mib-09.txt&amp;lt;/tt&amp;gt; (avril 2004) mais le premier de ces drafts a expiré en juin 2004, ce qui laisse les MIBs concernant le routage externe IPv6 en suspens.&lt;br /&gt;
En raison de toutes ces modifications, les MIBs ne sont pas entièrement disponibles aujourd'hui. En effet, uniquement quelques réalisations ont été effectuées par les constructeurs. Nous verrons par la suite les implémentations des différents constructeurs.&lt;br /&gt;
&lt;br /&gt;
==Administration des réseaux IPv6==&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau Double Pile===&lt;br /&gt;
&lt;br /&gt;
Le fait d’administrer des réseaux IPv6 ne se traduit pas toujours par l’emploi d’outils qui transportent l’information en IPv6. En effet, la plupart des équipements sur le réseau étant en double pile (IPv4 – IPv6), l’accès peut se faire en IPv4 puis les informations concernant la supervision IPv6 sont récupérées. Cette solution est retenue très souvent car certaines applications ne supportent pas encore le transport en IPv6.&lt;br /&gt;
&lt;br /&gt;
Cela permet aussi aux NOC (''Network Operations Center'') n’ayant pas déployé encore un plan d’adressage IPv6 pour la supervision, d’administrer des réseaux aussi bien IPv4 qu’IPv6.&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau uniquement en IPv6===&lt;br /&gt;
&lt;br /&gt;
L’administration d’un réseau uniquement en IPv6 est différente de l’administration d’un réseau ayant une double pile. En effet, du fait que les équipements ne sont accessibles qu’en IPv6, toute l’information de supervision doit être récupérée via le protocole IPv6. Il est donc indispensable dans ce cas là que toutes les applications utilisées pour l’administration du réseau supporte ce protocole.&lt;br /&gt;
L’administration d’un réseau IPv6 est donc semblable à celle d’un réseau IPv4. Les informations récupérées sont souvent les mêmes dans les deux cas. Le point essentiel reste les constructeurs ainsi que les éditeurs de logiciels qui doivent rendre disponible les protocoles ainsi que les applications permettant l’administration d’un réseau IPv6.&lt;br /&gt;
&lt;br /&gt;
{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2964</id>
		<title>Supervision</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Supervision&amp;diff=2964"/>
				<updated>2006-02-27T13:14:41Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* &amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
L'administration des réseaux se décompose en un ensemble de tâches, chacune ayant une fonction bien particulière qui peuvent brièvement être décrite de la manière suivante :&lt;br /&gt;
*Supervision (''Monitoring'') : La supervision est essentielle à la bonne administration d'un réseau. Elle consiste à vérifier qu'un ensemble d'équipements constituant un réseau (Routeurs, switchs, serveurs, PCs) fonctionne correctement. Elle permet de connaître à tout moment la disponibilité mais aussi les performances qu'offre le réseau.&lt;br /&gt;
*Métrologie : Elle consiste à surveiller et analyser le trafic véhiculé par les équipements réseaux. Elle permet donc d'évaluer le type et la quantité de trafic dans le réseau. La métrologie a pris ainsi une place importante dans le monde de l'administration des réseaux. Parmi les utilisateurs de ce service se trouvent les opérateurs qui l'emploient entre autres pour suivre la consommation de leurs clients et vérifier qu'elle est conforme à leur contrat (''Accounting - Billing''). De même, ils vérifient que leurs liens physiques n'atteignent pas la capacité limite. Grâce aux fonctions de quelques outils, il est possible de faire du &amp;quot;reporting&amp;quot;. Il est ainsi plus facile de prévoir le dimensionnement du réseau lors de migrations.&lt;br /&gt;
*Sécurité: Il est indispensable d'avoir une politique de sécurité dans un réseau afin d'assurer principalement l'intégrité et la confidentialité des données. Pour cela, il faut mettre en place plusieurs niveaux de sécurité :&lt;br /&gt;
**il est nécessaire de sécuriser l'accès physique aux équipements réseaux (routeurs, commutateurs) et aux serveurs (collecteurs, serveur d'authentification...).&lt;br /&gt;
**pour restreindre l'accès aux utilisateurs non autorisés, des filtres sur les adresses IP et les ports (Access List, IPTables, ACL) ainsi que sur les services applicatifs (Certificats de sécurité, PKI) sont mis en place.&lt;br /&gt;
**l'information transmise sur le réseau doit être chiffrée pour éviter que des informations confidentielles comme les mots de passe circulent en clair.&lt;br /&gt;
La plus part des outils d'administration offrent ces fonctionnalités :&lt;br /&gt;
*Découverte de la Topologie: La topologie permet de connaître à travers l'élaboration de schémas l'architecture du réseau. Il est donc très important de maintenir à jour ces schémas pour avoir une vision correcte du réseau.&lt;br /&gt;
*Inventaire: L'inventaire permet de recenser l'ensemble des équipements qui constitue un réseau. Il a aussi pour but de tenir à jour la configuration de ces équipements. Si un inventaire n'est pas fait, il se peut, par exemple, que certains équipements du réseau ne soient pas supervisés. C'est pour cela qu'il est important de maintenir à jour l'inventaire, en même temps que le réseau évolue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;MIBIPv6&amp;quot;&amp;gt;MIBs IPv6&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
[[image:Sup3.png|thumb|right|200px|Figure 16-1 ''Architecture d'administration - Interrogation des MIB'']]&lt;br /&gt;
&lt;br /&gt;
La croissance rapide des réseaux et la diversité des systèmes pendant la dernière décennie a entraîné le besoin d'une gestion globale des infrastructures réseaux. SNMP (''Simple Network Management Protocol'') s'est avéré être une bonne solution proposée et standardisée par l'IETF. Ce protocole permet de collecter diverses informations stockées dans les équipements du réseau dans des bases de données appelées MIBs (''Management Information Base''). Les équipements sont aussi capables de faire remonter des alertes (''traps'') au collecteur SNMP via ce protocole (cf. figure Architecture d'administration - Interrogation des MIB.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le protocole SNMP et les MIBs sont devenus les deux éléments principaux du modèle de supervision de réseaux.&lt;br /&gt;
Le protocole SNMP étant indépendant de l'architecture du protocole IP, son évolution vers IPv6 n'a pas représenté un problème majeur. La première implémentation de SNMP pour le protocole IPv6 a été réalisée par l'équipe du Loria de l'université de Nancy (NET-SNMP OpenSource) et a été disponible dans la version 5.0.3 de net-snmp, en mai 2002. Avant cette première version, l'administration des réseaux IPv6 était possible du fait que les équipements avaient une double pile configurée IPv4 et IPv6. En effet, il n'était possible d'accéder en SNMP sur un équipement qu'en IPv4 et de récupérer des champs de la MIB concernant IPv6. Aujourd'hui, certains réseaux projets ne véhiculent que du trafic IPv6 d'où la nécessité de disposer d'une version IPv6 pour le transport du protocole SNMP.&lt;br /&gt;
L'évolution des MIB est plus complexe. Depuis les spécifications initiales du protocole IPv6, en 1995, la définition de la MIB-2 pour l'administration des réseaux IPv6 a été modifiée à deux occasions en 1998 et en 2000 (cf. figure Evolution de la MIB.). Le problème principal était de définir le type du champ &amp;quot;IP ADDRESS&amp;quot;. En 1996, une représentation initiale du champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; est décrite dans le RFC 1902 où la longueur réservée pour ce champ est de 4 octets. Avec ce champ ne peuvent être représentées que les adresses IPv4 puisque les adresses IPv6 ayant une longueur de 128 bits. C'est pourquoi, en 1998, le RFC 2465 introduit la définition d'un champ &amp;quot;Ipv6Address&amp;quot; sur 16 octets.&lt;br /&gt;
&lt;br /&gt;
[[image:Sup4.png|thumb|none|500px|Figure 16-2 ''Evolution de la MIB'']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi de nombreuses RFCs ont été affectées par ces modifications. D'abord, avec la première approche de créer des MIBs IPv4 et IPv6 indépendantes, de nouveaux RFC ont vu le jour. Principalement, les RFCs décrivant les MIBs IPv6 sur transport TCP ou UDP (RFC 2452 et RFC 2454) ont été publiés en 1998. De même, une MIB concernant le protocole ICMPv6 a été décrite dans le RFC 2466.&lt;br /&gt;
&lt;br /&gt;
Cependant, cette approche implique une gestion indépendante des protocoles IPv4 et IPv6. Ainsi, l'IETF a décidé de définir une MIB-2 unifiée, permettant de superviser les réseaux IPv4 et IPv6 (RFC 2851 - Juin 2000). Ce RFC définit le champ &amp;lt;tt&amp;gt;IP ADDRESS&amp;lt;/tt&amp;gt; comme une structure avec deux champs. Le premier champ permet de différencier le type d'adresses (IPv4 ou IPv6). Le deuxième champ est une chaîne de caractères de longueur variable qui peut contenir des valeurs de longueur égale à 4 ou 16 octets (IPv4 ou IPv6). Il devient possible de définir dans les MIBs des tables compatibles avec les deux versions d'IP.&lt;br /&gt;
&lt;br /&gt;
Afin d'améliorer la description de la MIB, en mai 2002, le RFC4001 obsolète les RFC 2851 et RFC 3291. Des informations supplémentaires y sont décrites comme le préfixe réseau, le numéro de port utilisé par la couche transport ou le numéro d'AS (''Automous System'') correspondant à l'adresse IPv4 ou IPv6.&lt;br /&gt;
&lt;br /&gt;
Cette volonté d'avoir une MIB unifiée entraîne aussi la mise à jour des MIB déjà existantes. Actuellement, l'IETF publie des drafts de mise à jour pour les RFC 2011, RFC 2012, RFC 2013 et RFC 2096. Les dernières propositions publiées sont :&lt;br /&gt;
&lt;br /&gt;
*draft-ietf-ipv6-rfc2011-update-10.txt (mai 2004), RFC 4022 (Mars 2005),&lt;br /&gt;
*draft-ietf-ipv6-rfc2013-update-04.txt (octobre 2004),&lt;br /&gt;
*draft-ietf-ipv6-rfc2096-update-07.txt (février 2004).&lt;br /&gt;
&lt;br /&gt;
Ces drafts concernent respectivement les MIBs IP, TCP, UDP et IP Forwarding table. Pour les MIBs concernant le routage BGP4+ et OSPFv3, les derniers drafts proposés sont &amp;lt;tt&amp;gt;draft-ietf-idr-bgp4-mibv2-15.txt&amp;lt;/tt&amp;gt; (Août 2004) et &amp;lt;tt&amp;gt;draft-ietf-ospf-ospfv3-mib-09.txt&amp;lt;/tt&amp;gt; (avril 2004) mais le premier de ces drafts a expiré en juin 2004, ce qui laisse les MIBs concernant le routage externe IPv6 en suspens.&lt;br /&gt;
En raison de toutes ces modifications, les MIBs ne sont pas entièrement disponibles aujourd'hui. En effet, uniquement quelques réalisations ont été effectuées par les constructeurs. Nous verrons par la suite les implémentations des différents constructeurs.&lt;br /&gt;
&lt;br /&gt;
==Administration des réseaux IPv6==&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau Double Pile===&lt;br /&gt;
&lt;br /&gt;
Le fait d’administrer des réseaux IPv6 ne se traduit pas toujours par l’emploi d’outils qui transportent l’information en IPv6. En effet, la plupart des équipements sur le réseau étant en double pile (IPv4 – IPv6), l’accès peut se faire en IPv4 puis les informations concernant la supervision IPv6 sont récupérées. Cette solution est retenue très souvent car certaines applications ne supportent pas encore le transport en IPv6.&lt;br /&gt;
&lt;br /&gt;
Cela permet aussi aux NOC (''Network Operations Center'') n’ayant pas déployé encore un plan d’adressage IPv6 pour la supervision, d’administrer des réseaux aussi bien IPv4 qu’IPv6.&lt;br /&gt;
&lt;br /&gt;
===Administration d’un réseau uniquement en IPv6===&lt;br /&gt;
&lt;br /&gt;
L’administration d’un réseau uniquement en IPv6 est différente de l’administration d’un réseau ayant une double pile. En effet, du fait que les équipements ne sont accessibles qu’en IPv6, toute l’information de supervision doit être récupérée via le protocole IPv6. Il est donc indispensable dans ce cas là que toutes les applications utilisées pour l’administration du réseau supporte ce protocole.&lt;br /&gt;
L’administration d’un réseau IPv6 est donc semblable à celle d’un réseau IPv4. Les informations récupérées sont souvent les mêmes dans les deux cas. Le point essentiel reste les constructeurs ainsi que les éditeurs de logiciels qui doivent rendre disponible les protocoles ainsi que les applications permettant l’administration d’un réseau IPv6.&lt;br /&gt;
&lt;br /&gt;
{{suivi |L'exemple « mini-ping » revisité|L'exemple « mini-ping » revisité|Mise en œuvre par les constructeurs | Mise en œuvre par les constructeurs }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27exemple_%C2%AB_mini-ping_%C2%BB_revisit%C3%A9&amp;diff=2963</id>
		<title>L'exemple « mini-ping » revisité</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27exemple_%C2%AB_mini-ping_%C2%BB_revisit%C3%A9&amp;diff=2963"/>
				<updated>2006-02-27T12:52:49Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| L'implémentation | L'implémentation | Supervision | Supervision }}&lt;br /&gt;
Le programme &amp;lt;tt&amp;gt;one_ping6.c&amp;lt;/tt&amp;gt; va être repris afin de lui ajouter deux fonctionnalités dont l'implémentation s'appuiera sur l'usage de données auxiliaires. On souhaite d'une part afficher le nombre de sauts (''hop limit'') du paquet ECHO_REPLY (éventuellement) reçu et d'autre part de permettre, à l'instar de la commande &amp;lt;tt&amp;gt;ping6&amp;lt;/tt&amp;gt;, de passer une liste de relais par lesquels le paquet ECHO_REQUEST devra transiter avant d'être envoyé à l'hôte destinataire (routage par la source).&lt;br /&gt;
&lt;br /&gt;
Par exemple, pour envoyer un paquet ECHO_REQUEST à la machine &amp;lt;tt&amp;gt;ipv6.imag.fr&amp;lt;/tt&amp;gt; tout en transitant tout d'abord par les machines &amp;lt;tt&amp;gt;www.kame.net&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;relai.imag.fr&amp;lt;/tt&amp;gt;, la commande &amp;lt;tt&amp;gt;xapi_ping6&amp;lt;/tt&amp;gt; sera :&lt;br /&gt;
&lt;br /&gt;
 $ '''xapi_ping6 www.kame.net relais.imag.fr ipv6.imag.fr'''&lt;br /&gt;
 Sending ECHO REQUEST to: ipv6.imag.fr via:&lt;br /&gt;
 www.kame.net&lt;br /&gt;
 relais.imag.fr&lt;br /&gt;
 Waiting for answer (timeout = 5s)...&lt;br /&gt;
 Got answer from 2001:660:9510:25::632 (seq = 0, hoplimit = 241)&lt;br /&gt;
&lt;br /&gt;
L'affichage du nombre de sauts a déjà été en grande partie traité dans l'exemple du paragraphe consacré à l'implémentation de l'API avancée. Nous indiquerons donc seulement les changements significatifs par rapport à la version originale. Ces changements concernent essentiellement la routine &amp;lt;tt&amp;gt;wait_for_echo_reply6&amp;lt;/tt&amp;gt;. La première tâche à effectuer est, comme dans l'exemple précédent, de positionner l'option &amp;lt;tt&amp;gt;IPV6_RECVHOPLIMIT&amp;lt;/tt&amp;gt;, juste après avoir mis en place le filtrage ICMPv6. L'instruction :&lt;br /&gt;
&lt;br /&gt;
 noc = recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *) from, &amp;amp;from_len);&lt;br /&gt;
&lt;br /&gt;
est remplacée par la nouvelle instruction :&lt;br /&gt;
&lt;br /&gt;
 noc = recv_data(sock, buf, sizeof(buf), 0, (struct sockaddr *) from, &amp;amp;from_len, &amp;amp;hoplimit);&lt;br /&gt;
&lt;br /&gt;
où &amp;lt;tt&amp;gt;hoplimit&amp;lt;/tt&amp;gt; est un entier qui a été précédemment déclaré dans le corps de la fonction &amp;lt;tt&amp;gt;wait_for_echo_reply6&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;recv_data&amp;lt;/tt&amp;gt; a pour texte :&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  1| #ifdef sun /* For Solaris */&lt;br /&gt;
  2| #define _XOPEN_SOURCE 500 /* correct recvmsg/sendmsg/msg/CMSG_xx syntax */&lt;br /&gt;
  3| #define __EXTENSIONS__&lt;br /&gt;
  4| #endif&lt;br /&gt;
  5| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  6| #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
  7| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
  8| #include &amp;lt;sys/uio.h&amp;gt;&lt;br /&gt;
  9| #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 10| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 11| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
 12| #include &amp;lt;netinet/ip6.h&amp;gt;&lt;br /&gt;
 13| #ifndef CMSG_SPACE /* Solaris &amp;lt;= 9 */&lt;br /&gt;
 14| #define CMSG_SPACE(l) ((size_t)_CMSG_HDR_ALIGN(sizeof (struct cmsghdr) + (l)))&lt;br /&gt;
 15| #define CMSG_LEN(l) ((size_t)_CMSG_DATA_ALIGN(sizeof (struct cmsghdr)) + (l))&lt;br /&gt;
 16| #endif&lt;br /&gt;
 17|  &lt;br /&gt;
 18| int recv_data(int sock, void *buf, int len, unsigned int flags,&lt;br /&gt;
 19|               struct sockaddr *from, socklen_t *fromlen, int *hoplimit)&lt;br /&gt;
 20| {&lt;br /&gt;
 21| int ret, found = 0, cmsgspace = CMSG_SPACE(sizeof(int));&lt;br /&gt;
 22| struct iovec iov = {buf, len};&lt;br /&gt;
 23| struct cmsghdr *cmsg = (struct cmsghdr *) malloc(cmsgspace), *ptr;&lt;br /&gt;
 24| struct msghdr msg = {&lt;br /&gt;
 25|    (caddr_t) from, *fromlen, &amp;amp;iov, 1,&lt;br /&gt;
 26|    (caddr_t) cmsg, cmsgspace&lt;br /&gt;
 27| };&lt;br /&gt;
 28|  &lt;br /&gt;
 29| if (cmsg == NULL) {&lt;br /&gt;
 30|    perror(&amp;quot;recv_data: malloc&amp;quot;);&lt;br /&gt;
 31|    return -1;&lt;br /&gt;
 32| }&lt;br /&gt;
 33| ret = recvmsg(sock, &amp;amp;msg, flags);&lt;br /&gt;
 34| if (ret &amp;lt; 0) {&lt;br /&gt;
 35|    perror(&amp;quot;recv_data: recvmsg&amp;quot;);&lt;br /&gt;
 36|    goto done;&lt;br /&gt;
 37| }&lt;br /&gt;
 38| if (msg.msg_flags &amp;amp; MSG_TRUNC) {&lt;br /&gt;
 39|    fprintf(stderr, &amp;quot;recv_data: recvmsg: data discarded before delivery\n&amp;quot;);&lt;br /&gt;
 40|    goto bad;&lt;br /&gt;
 41| }&lt;br /&gt;
 42| if (msg.msg_flags &amp;amp; MSG_CTRUNC) {&lt;br /&gt;
 43|    fprintf(stderr,&lt;br /&gt;
 44|            &amp;quot;recv_data: recvmsg: control data lost before delivery\n&amp;quot;);&lt;br /&gt;
 45|    goto bad;&lt;br /&gt;
 46| }&lt;br /&gt;
 47| if (msg.msg_controllen)&lt;br /&gt;
 48|    for (ptr = CMSG_FIRSTHDR(&amp;amp;msg); ptr; ptr = CMSG_NXTHDR(&amp;amp;msg, ptr)) {&lt;br /&gt;
 49|       if (ptr-&amp;gt;cmsg_level==IPPROTO_IPV6 &amp;amp;&amp;amp; ptr-&amp;gt;cmsg_type==IPV6_HOPLIMIT) {&lt;br /&gt;
 50|          if (ptr-&amp;gt;cmsg_len != CMSG_LEN(sizeof(int))) {&lt;br /&gt;
 51|             fprintf(stderr,&lt;br /&gt;
 52|                     &amp;quot;recvmsg: ancillary data with invalid length\n&amp;quot;);&lt;br /&gt;
 53|             goto bad;&lt;br /&gt;
 54|          }&lt;br /&gt;
 55|          *hoplimit = *((int *) CMSG_DATA(ptr));&lt;br /&gt;
 56|          goto done;&lt;br /&gt;
 57|       }&lt;br /&gt;
 58|    }&lt;br /&gt;
 59|    fprintf(stderr,&lt;br /&gt;
 60|            &amp;quot;recv_data: recvmsg: hoplimit not found in ancillary data\n&amp;quot;);&lt;br /&gt;
 61|  bad:&lt;br /&gt;
 62|    ret = -1;&lt;br /&gt;
 63|  done:&lt;br /&gt;
 64|    free(cmsg);&lt;br /&gt;
 65|    return ret;&lt;br /&gt;
 66| }&lt;br /&gt;
&lt;br /&gt;
Le code de la fonction &amp;lt;tt&amp;gt;recv_data&amp;lt;/tt&amp;gt; ne sera pas commenté car la réception du nombre de sauts via une donnée auxiliaire a été étudiée dans un précédent exemple, la seule différence étant que la gestion des erreurs est ici plus détaillée.&lt;br /&gt;
&lt;br /&gt;
Il faut enfin modifier trivialement le code de la routine &amp;lt;tt&amp;gt;recv_icmp_pkt&amp;lt;/tt&amp;gt; afin que celle-ci imprime le nombre de sauts du paquet ECHO_REPLY (éventuellement) reçu. Nous en laissons le soin au lecteur.&lt;br /&gt;
&lt;br /&gt;
Pour l'autre donnée auxiliaire (cette fois ci en émission), à savoir le routage par la source, il faut naturellement tout d'abord modifier la fonction &amp;lt;tt&amp;gt;send_echo_request6&amp;lt;/tt&amp;gt; et en premier lieu son prototype qui devient :&lt;br /&gt;
&lt;br /&gt;
 int send_echo_request6(int sock, struct sockaddr_in6 *dst, uint16_t id,&lt;br /&gt;
                        uint16_t seq, char *opt_data, int opt_data_size,&lt;br /&gt;
                        struct in6_addr *seg, int nseg)&lt;br /&gt;
&lt;br /&gt;
La routine &amp;lt;tt&amp;gt;send_echo_request6&amp;lt;/tt&amp;gt; modifié possède deux arguments supplémentaires ajoutés à la fin. Le premier de ces nouveaux arguments est un pointeur vers un tableau contenant les adresses IPv6 des relais par lesquels on souhaite effectuer le routage par la source. Le dernier argument est le nombre d'éléments de ce tableau, c'est-à-dire le nombre de relais.&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite substituer dans le corps de la fonction &amp;lt;tt&amp;gt;send_echo_request6&amp;lt;/tt&amp;gt; l'instruction suivante :&lt;br /&gt;
&lt;br /&gt;
 noc = sendto(sock, (char *) icmp, icmp_pkt_size, 0, (struct sockaddr *) dst,&lt;br /&gt;
&lt;br /&gt;
par :&lt;br /&gt;
&lt;br /&gt;
 noc = send_data(sock, (void *) icmp, icmp_pkt_size, 0, &lt;br /&gt;
                 (struct sockaddr *) dst, sizeof(struct sockaddr_in6),&lt;br /&gt;
                 seg, nseg);&lt;br /&gt;
&lt;br /&gt;
Si la variable &amp;lt;tt&amp;gt;seg&amp;lt;/tt&amp;gt; est le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, la liste des relais est vide. On fait appel à la fonction &amp;lt;tt&amp;gt;send_data&amp;lt;/tt&amp;gt;, dont le code va être commenté en détails :&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  1| #ifdef sun /* For Solaris */&lt;br /&gt;
  2| #define _XOPEN_SOURCE 500 /* correct recvmsg/sendmsg/msg/CMSG_xx syntax */&lt;br /&gt;
  3| #define __EXTENSIONS__&lt;br /&gt;
  4| #endif&lt;br /&gt;
  5| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  6| #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
  7| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
  8| #include &amp;lt;sys/uio.h&amp;gt;&lt;br /&gt;
  9| #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 10| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 11| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
 12| #include &amp;lt;netinet/ip6.h&amp;gt;&lt;br /&gt;
 13| #ifndef CMSG_SPACE /* Solaris &amp;lt;= 9 */&lt;br /&gt;
 14| #define CMSG_SPACE(l) ((size_t)_CMSG_HDR_ALIGN(sizeof (struct cmsghdr) + (l)))&lt;br /&gt;
 15| #define CMSG_LEN(l) ((size_t)_CMSG_DATA_ALIGN(sizeof (struct cmsghdr)) + (l))&lt;br /&gt;
 16| #endif&lt;br /&gt;
 17| #ifndef IPV6_RECVHOPLIMIT&lt;br /&gt;
 18| #define IPV6_RECVHOPLIMIT IPV6_HOPLIMIT&lt;br /&gt;
 19| #endif&lt;br /&gt;
 20|  &lt;br /&gt;
 21| extern void * inet6_rth_init(); /* sometimes not in ip6.h */&lt;br /&gt;
 22| &lt;br /&gt;
 23| int send_data(int sock, void *buf, int len, unsigned int flags,&lt;br /&gt;
 24|               struct sockaddr *to, socklen_t tolen,&lt;br /&gt;
 25|               struct in6_addr *seg, int nseg)&lt;br /&gt;
 26| {&lt;br /&gt;
 27| int ret = -1, rthsp, cmsgspace;&lt;br /&gt;
 28| void *data;&lt;br /&gt;
 29| struct in6_addr *in6;&lt;br /&gt;
 30| struct iovec iov = {buf, len};&lt;br /&gt;
 31| struct cmsghdr *cmsg = NULL;&lt;br /&gt;
 32| struct msghdr msg = {&lt;br /&gt;
 33|                     (caddr_t) to, tolen, &amp;amp;iov, 1,&lt;br /&gt;
 34|                     NULL, 0, 0&lt;br /&gt;
 35|                     };&lt;br /&gt;
 36|  &lt;br /&gt;
 37|    if (seg != NULL) {&lt;br /&gt;
 38|       rthsp = inet6_rth_space(IPV6_RTHDR_TYPE_0, nseg);&lt;br /&gt;
 39|       cmsgspace = CMSG_SPACE(rthsp);&lt;br /&gt;
 40|       msg.msg_control = cmsg = (struct cmsghdr *) malloc(cmsgspace);&lt;br /&gt;
 41|       if (cmsg == NULL) {&lt;br /&gt;
 42|          perror(&amp;quot;recv_data: malloc&amp;quot;);&lt;br /&gt;
 43|          goto bad;&lt;br /&gt;
 44|       }&lt;br /&gt;
 45|       cmsg-&amp;gt;cmsg_level = IPPROTO_IPV6;&lt;br /&gt;
 46|       msg.msg_controllen = cmsg-&amp;gt;cmsg_len = CMSG_LEN(rthsp);&lt;br /&gt;
 47|       cmsg-&amp;gt;cmsg_type = IPV6_RTHDR;&lt;br /&gt;
 48|       data = CMSG_DATA(cmsg);&lt;br /&gt;
 49|       data = (void *)inet6_rth_init(data, rthsp, IPV6_RTHDR_TYPE_0, nseg);&lt;br /&gt;
 50|       if (!data) {&lt;br /&gt;
 51|          fprintf(stderr, &amp;quot;send_data: inet6_rth_init failed\n&amp;quot;);&lt;br /&gt;
 52|          goto bad;&lt;br /&gt;
 53|       }&lt;br /&gt;
 54|       for (in6 = seg; in6 - seg &amp;lt; nseg; in6++)&lt;br /&gt;
 55|          if (inet6_rth_add(data, in6) == -1) {&lt;br /&gt;
 56|             fprintf(stderr, &amp;quot;send_data: inet6_rth_add failed\n&amp;quot;);&lt;br /&gt;
 57|             goto bad;&lt;br /&gt;
 58|          }&lt;br /&gt;
 59|    }&lt;br /&gt;
 60|    ret = sendmsg(sock, &amp;amp;msg, flags);&lt;br /&gt;
 61|    if (ret &amp;lt; 0) {&lt;br /&gt;
 62|       perror(&amp;quot;send_data: sendmsg&amp;quot;);&lt;br /&gt;
 63|       goto bad;&lt;br /&gt;
 64|    }&lt;br /&gt;
 65| bad:&lt;br /&gt;
 66|    if (cmsg)&lt;br /&gt;
 67|    free(cmsg);&lt;br /&gt;
 68|    return ret;&lt;br /&gt;
 69| }&lt;br /&gt;
&lt;br /&gt;
Les six premiers paramètres de la fonction &amp;lt;tt&amp;gt;send_data&amp;lt;/tt&amp;gt; sont identiques à ceux de la primitive système &amp;lt;tt&amp;gt;sendto&amp;lt;/tt&amp;gt;, les deux derniers étant quant à eux identiques aux deux derniers arguments de la routine &amp;lt;tt&amp;gt;send_echo_request6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si la liste de relais est vide, on appelle &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; sans données auxiliaires (&amp;lt;tt&amp;gt;msg.msg_control&amp;lt;/tt&amp;gt; est nul). Sinon on alloue (ligne 40) un tampon pour contenir les données auxiliaires.&lt;br /&gt;
&lt;br /&gt;
La routine &amp;lt;tt&amp;gt;inet6_rth_space&amp;lt;/tt&amp;gt; est l'une des six nouvelles routines proposées par l'API avancée afin de faciliter la tâche du programmeur lors de la manipulation des en-têtes de routage. Elle prend en arguments le type de l'extension de routage (en l'occurrence la constante &amp;lt;tt&amp;gt;IPV6_RTHDR_TYPE_0&amp;lt;/tt&amp;gt; dont la valeur numérique est 0 est qui est définie dans &amp;lt;tt&amp;gt;&amp;lt;netinet/in.h&amp;gt;&amp;lt;/tt&amp;gt;) et le nombre de relais contenus dans cette extension (pour ce type d'extension, ce nombre doit être compris entre 0 et 127 inclus). Elle retourne la taille en octets nécessaire pour contenir cette en-tête de routage. Ici cette routine va permettre d'initialiser, via la variable &amp;lt;tt&amp;gt;rthsp&amp;lt;/tt&amp;gt; et à l'aide de la macro &amp;lt;tt&amp;gt;CMSG_SPACE&amp;lt;/tt&amp;gt;, la variable &amp;lt;tt&amp;gt;cmsgspace&amp;lt;/tt&amp;gt; à la taille en octets de la donnée auxiliaire associée à cette extension de routage.&lt;br /&gt;
&lt;br /&gt;
En lignes 45 à 47, la longueur des données auxiliaires et la structure &amp;lt;tt&amp;gt;cmsg&amp;lt;/tt&amp;gt; sont initialisés au moyen de la macro &amp;lt;tt&amp;gt;CMSG_LEN&amp;lt;/tt&amp;gt; pour le champ &amp;lt;tt&amp;gt;cmsg_len&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant initialiser les données transmises par la donnée auxiliaire avec l'en-tête routage (lignes 48 à 53). Nous allons nous servir de la routine &amp;lt;tt&amp;gt;inet6_rth_init&amp;lt;/tt&amp;gt; fournie par l'API avancée. Celle-ci prend en premier argument un pointeur vers la zone mémoire qui contiendra l'en-tête de routage, le deuxième argument étant la taille en octets de cette zone mémoire. Les deux derniers arguments sont identiques à ceux de la routine &amp;lt;tt&amp;gt;inet6_rth_space&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;inet6_rth_init&amp;lt;/tt&amp;gt; retourne un pointeur vers cette zone mémoire ou le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; si la taille de celle-ci est insuffisante.&lt;br /&gt;
&lt;br /&gt;
Après ces diverses initialisations, la donnée auxiliaire est représentée à la figure Initialisation de l'en-tête de routage où l'on a supposé, afin de fixer les idées, que l'on est en présence d'une architecture 32 bits et que l'alignement se fait sur 32 bits également (autrement dit il n'y a pas de bourrage entre la structure cmsg et le début des données transmises, cf. [[figure Structure des données auxiliaires]]).&lt;br /&gt;
&lt;br /&gt;
[[image:CS197.gif]]&lt;br /&gt;
&lt;br /&gt;
Dans la boucle qui suit (lignes 54 à 58), l'initialisation de l'en-tête de routage se termine en ajoutant successivement les adresses IPv6 des relais du routage par la source. Ces ajouts se font au moyen de la fonction &amp;lt;tt&amp;gt;inet6_rth_add&amp;lt;/tt&amp;gt; qui prend en premier argument la zone mémoire contenant l'en-tête de routage et en deuxième argument un pointeur (de type &amp;lt;tt&amp;gt;struct in6_addr *&amp;lt;/tt&amp;gt;) vers l'adresse du relais à ajouter.&lt;br /&gt;
&lt;br /&gt;
A l'issue de cette boucle, si l'on reprend l'exemple qui nous a servi à présenter la nouvelle version de la commande one_ping6 :&lt;br /&gt;
&lt;br /&gt;
 $ '''xapi_ping6 www.kame.net relais.imag.fr ipv6.imag.fr'''&lt;br /&gt;
&lt;br /&gt;
la donnée auxiliaire sera maintenant comme représentée à la figure Adjonction des deux relais dans l'en-tête de routage, (avec les mêmes hypothèses sur l'architecture et l'alignement). Le message ainsi construit est expédié tout en gérant les erreurs éventuelles (nous laissons le soin au lecteur l'adaptation de la fonction main afin de prendre en compte les nouveaux arguments (optionnels) du programme &amp;lt;tt&amp;gt;one_ping6&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
[[image:CS198.gif]]&lt;br /&gt;
&lt;br /&gt;
On remarque que la donnée auxiliaire contient les adresses des relais intermédiaires, alors que dans un paquet IPv6, [[Les extensions#routage|l'en-tête de routage]] contient les adresses à partir du deuxième relais et l'adresse destination finale, l'adresse du premier relais étant dans l'en-tête IPv6. Le noyau lors du &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; va permuter les adresses pour rétablir l'ordre correct.&lt;br /&gt;
&lt;br /&gt;
===Portabilité du code===&lt;br /&gt;
&lt;br /&gt;
Solaris définit des prototypes de &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt; variables selon les modes de compilation. De plus, jusqu'à la version 9 incluse, il ne définit pas les macros &amp;lt;tt&amp;gt;CMSG_SPACE&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;CMSG_LEN&amp;lt;/tt&amp;gt;. Les lignes 1 à 4 et 13 à 19 du programme servent à éviter ces problèmes de compatibilité.&lt;br /&gt;
&lt;br /&gt;
D'autre part, les fonctions &amp;lt;tt&amp;gt;inet6_rth_xxx&amp;lt;/tt&amp;gt;, définies dans le RFC 3542 sont encore souvent absentes de la librairie système (c'est le cas pour Solaris 9, FreeBSD4.x, NetBSD1.x, et Linux). Le lecteur peut les remplacer par un codage à la main, ou récupérer leur texte, par exemple dans la distribution KAME.&lt;br /&gt;
{{suivi| L'implémentation | L'implémentation | Supervision | Supervision }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27impl%C3%A9mentation&amp;diff=2962</id>
		<title>L'implémentation</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27impl%C3%A9mentation&amp;diff=2962"/>
				<updated>2006-02-27T11:08:57Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Programmation avancée | Programmation avancée | L'exemple « mini-ping » revisité | L'exemple « mini-ping » revisité }}&lt;br /&gt;
Comme indiqué précédemment, l'implémentation de l'API avancée repose principalement sur les primitives &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt; dont les prototypes sont les suivants :&lt;br /&gt;
&lt;br /&gt;
 int sendmsg(int s, const struct msghdr *msg, int flags);&lt;br /&gt;
 int recvmsg(int s, struct msghdr *msg, unsigned int flags);&lt;br /&gt;
&lt;br /&gt;
Le premier paramètre s désigne le descripteur d'E/S associée à la socket et le dernier paramètre flags est identique au 3ème paramètre des primitives sendto et recvfrom. Le second paramètre est une structure définie (dans &amp;lt;tt&amp;gt;&amp;lt;sys/socket.h&amp;gt;&amp;lt;/tt&amp;gt;) comme suit :&lt;br /&gt;
&lt;br /&gt;
 struct msghdr {&lt;br /&gt;
    void *msg_name;           /* pointeur vers l'adresse de la socket */&lt;br /&gt;
    socklen_t msg_namelen;    /* longueur de l'adresse de la socket */&lt;br /&gt;
    struct iovec *msg_iov;    /* tampon mémoire vectoriel (scatter/gather array) */&lt;br /&gt;
    int msg_iovlen;           /* nombre d'éléments de msg_iov */&lt;br /&gt;
    void *msg_control;        /* données auxiliaires */&lt;br /&gt;
    socklen_t msg_controllen; /* longueur des données auxiliaires */&lt;br /&gt;
    int msg_flags;            /* drapeaux des messages reçus */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Les deux premiers champs spécifient pour &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; (respectivement &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt;) l'adresse de destination (respectivement d'origine). Le premier champ peut être le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; en mode connecté. Les deux champs suivants contiennent le tampon mémoire vectoriel en émission ou en réception suivant le cas (voir le manuel de la primitive &amp;lt;tt&amp;gt;readv&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Les champs &amp;lt;tt&amp;gt;msg_control&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;msg_controllen&amp;lt;/tt&amp;gt; spécifient le tableau des données auxiliaires reçues ou émises, le champ &amp;lt;tt&amp;gt;msg_control&amp;lt;/tt&amp;gt; pouvant être le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; s'il n'y a aucune donnée auxiliaire à émettre ou recevoir. Chaque donnée auxiliaire se présente sous la forme d'une structure de type struct &amp;lt;tt&amp;gt;cmsghdr&amp;lt;/tt&amp;gt; définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 struct cmsghdr {&lt;br /&gt;
    socklen_t cmsg_len; /* longueur en octet, en-tête inclus */&lt;br /&gt;
    int cmsg_level;     /* protocole (IPPROTO_IPV6, ...) */&lt;br /&gt;
    int cmsg_type;      /* sous-type dans le protocole (IPV6_RTHDR, ...) */&lt;br /&gt;
                        /* suivi par unsigned char cmsg_data[]; */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
En raison de problèmes d'alignement (cf. figure Structure des données auxiliaires), l'accès au tableau des données auxiliaires ainsi que la manipulation de ces dernières ne doivent se faire qu'au moyen de cinq macros appropriées, définies dans &amp;lt;tt&amp;gt;&amp;lt;sys/socket.h&amp;gt;&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
[[image:CS196.gif]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;struct cmsghdr *CMSG_FIRSTHDR(const struct msghdr *msgh);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_FIRSTHDR&amp;lt;/tt&amp;gt; renvoie un pointeur vers la première donnée auxiliaire contenue dans la structure de type &amp;lt;tt&amp;gt;struct msghdr&amp;lt;/tt&amp;gt; pointée par &amp;lt;tt&amp;gt;msgh&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;struct cmsghdr *CMSG_NXTHDR(const struct msghdr *msgh, const struct cmsghdr *cmsg);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_NXTHDR&amp;lt;/tt&amp;gt; renvoie un pointeur vers la donnée auxiliaire qui suit celle pointée par &amp;lt;tt&amp;gt;cmsg&amp;lt;/tt&amp;gt; ou le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; s'il n'y en a pas. Si &amp;lt;tt&amp;gt;cmsg&amp;lt;/tt&amp;gt; est le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;CMSG_NXTHDR&amp;lt;/tt&amp;gt; renvoie un pointeur vers la première donnée auxiliaire. Ainsi, &amp;lt;tt&amp;gt;CMSG_NXTHDR(msgh, NULL)&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;CMSG_FIRSTHDR(msgh)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;socklen_t CMSG_SPACE(socklen_t length);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_SPACE&amp;lt;/tt&amp;gt; renvoie le nombre d'octets occupés par une donnée auxiliaire dont la taille des données transmises est &amp;lt;tt&amp;gt;length&amp;lt;/tt&amp;gt;, tout en tenant compte des alignements.&lt;br /&gt;
* &amp;lt;tt&amp;gt;socklen_t CMSG_LEN(socklen_t length);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_LEN&amp;lt;/tt&amp;gt; retourne la valeur à stocker dans le champ &amp;lt;tt&amp;gt;cmsg_len&amp;lt;/tt&amp;gt; de la structure (de type &amp;lt;tt&amp;gt;struct cmsghdr&amp;lt;/tt&amp;gt;) associée à une donnée auxiliaire dont la taille des données transmises est &amp;lt;tt&amp;gt;length&amp;lt;/tt&amp;gt;, ceci en tenant compte des alignements.&lt;br /&gt;
* &amp;lt;tt&amp;gt;unsigned char *CMSG_DATA(const struct cmsghdr *cmsg);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_DATA&amp;lt;/tt&amp;gt; retourne un pointeur vers les données contenues dans la donnée auxiliaire pointée par le paramètre &amp;lt;tt&amp;gt;cmsg&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le dernier champ &amp;lt;tt&amp;gt;msg_flags&amp;lt;/tt&amp;gt; de la structure msghdr est rempli au retour de &amp;lt;tt&amp;gt;recvmsg()&amp;lt;/tt&amp;gt;. Plusieurs drapeaux peuvent avoir été levés dont le drapeau &amp;lt;tt&amp;gt;MSG_TRUNC&amp;lt;/tt&amp;gt; pour indiquer que les données ont été tronquées ou le drapeau &amp;lt;tt&amp;gt;MSG_CTRUNC&amp;lt;/tt&amp;gt; pour indiquer que les données auxiliaires ont été tronquées.&lt;br /&gt;
&lt;br /&gt;
Afin de recevoir toute donnée auxiliaire sur une socket, il faut auparavant le demander en positionnant l'option correspondante. Plus précisément, le RFC 3542 liste de manière exhaustive des options disponibles et comment les positionner :&lt;br /&gt;
&lt;br /&gt;
 int on = 1;&lt;br /&gt;
 /* interface de réception / adresse destination */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* nombre de sauts */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* en-tête de routage */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVRTHDR, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* options proche-en-proche */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPOPTS, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* option destination */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVDSTOPTS, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* classe de trafic */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVTCLASS, &amp;amp;on, sizeof(on));&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne l'émission d'une donnée auxiliaire, deux possibilités s'offrent au programmeur :&lt;br /&gt;
&lt;br /&gt;
* soit il fait appel à la primitive &amp;lt;tt&amp;gt;setsockopt&amp;lt;/tt&amp;gt; pour positionner l'option correspondante avec les données adéquates. Ce sont alors des options dites permanentes (''sticky'') car elles s'appliquent à tous les paquets transmis par la suite et ce jusqu'à un nouvel appel à &amp;lt;tt&amp;gt;setsockopt&amp;lt;/tt&amp;gt; ou une surcharge par une donnée auxiliaire.&lt;br /&gt;
* soit il utilise &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; et les données auxiliaires affectent uniquement le datagramme concerné (non applicable au socket de type &amp;lt;tt&amp;gt;SOCK_STREAM&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Le tableau Options de données auxiliaires en émission, extrait du RFC 3542, donne la liste des options disponibles en émission (avec leur type de données associées) :&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+'''''Options de données auxiliaires en émission'''''&lt;br /&gt;
|-&lt;br /&gt;
!opt level / cmsg_level || optname / cmsg_type || optval / cmsg_data[]&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_PKTINFO ||structure in6_pktinfo&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_HOPLIMIT ||int&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_NEXTHOP || structure sockaddr_in6&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_RTHDR || structure ip6_rthdr&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_HOPOPTS (prochain saut / next hop) || structure ip6_hbh&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_DSTOPTS || structure ip6_dest&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_RTHDRDSTOPTS || structure ip6_dest&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_TCLASS || int&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les options proposées par cette API avancée, ne seront pas toutes détaillées dans ce chapitre. Nous recommandons au lecteur intéressé de se reporter au RFC 3542. L'exemple simple qui suit, met en oeuvre ces notions. Il s'agit d'un extrait de programme qui, outre les données habituelles, souhaite recevoir également deux données auxiliaires :&lt;br /&gt;
&lt;br /&gt;
* index de l'interface de réception du paquet / adresse destination du paquet reçu (option &amp;lt;tt&amp;gt;  IPV6_RECVPKTINFO&amp;lt;/tt&amp;gt;) et&lt;br /&gt;
* le nombre de sauts (hop limit) du paquet reçu (option &amp;lt;tt&amp;gt;IPV6_RECVHOPLIMIT&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
La première partie de ce programme, où les variables sont déclarées et initialisées ne présente aucune difficulté. On notera l'usage de la macro &amp;lt;tt&amp;gt;CMSG_SPACE&amp;lt;/tt&amp;gt; afin d'initialiser la variable &amp;lt;tt&amp;gt;cmsg_buf&amp;lt;/tt&amp;gt; destinée à accueillir les données auxiliaires demandées.&lt;br /&gt;
&lt;br /&gt;
 int noc, o = 1, s;&lt;br /&gt;
 struct sockaddr_storage from;&lt;br /&gt;
 char buf[1024];&lt;br /&gt;
 struct iovec iov = {buf, sizeof(buf)};&lt;br /&gt;
 char cmsg_buf[CMSG_SPACE(sizeof(struct in6_pktinfo)) + CMSG_SPACE(sizeof(int))];&lt;br /&gt;
 struct cmsghdr *cmsg;&lt;br /&gt;
 struct msghdr msg = {(void *) &amp;amp;from, sizeof(from), &amp;amp;iov, 1,&lt;br /&gt;
                      (void *) cmsg_buf, sizeof(cmsg_buf), 0};&lt;br /&gt;
&lt;br /&gt;
Actuellement, un grand nombre d'implémentations ne sont pas à jour du RFC 3542 (bien que publié en mai 2003). En particulier, certaines implémentations ne distinguent toujours pas entre les options de réception et les options d'émission. Si bien qu'il peut être nécessaire d'ajouter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
 #ifndef IPV6_RECVHOPLIMIT&lt;br /&gt;
 #define IPV6_RECVHOPLIMIT IPV6_HOPLIMIT&lt;br /&gt;
 #endif&lt;br /&gt;
 #ifndef IPV6_RECVPKTINFO&lt;br /&gt;
 #define IPV6_RECVPKTINFO IPV6_PKTINFO&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
Ensuite on indique par l'intermédiaire de la primitive &amp;lt;tt&amp;gt;setsockopt&amp;lt;/tt&amp;gt; que les données auxiliaires mentionnées plus haut doivent être reçues. La variable &amp;lt;tt&amp;gt;s&amp;lt;/tt&amp;gt; est un descripteur d'entrées/sorties associé à une socket &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &amp;amp;o, sizeof(o)) ||&lt;br /&gt;
    setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &amp;amp;o, sizeof(o))) {&lt;br /&gt;
      /* traitement de l'erreur */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
La primitive &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt; est exécutée et les erreurs éventuelles sont traitées :&lt;br /&gt;
&lt;br /&gt;
 if ((noc = recvmsg(s, &amp;amp;msg, 0)) &amp;lt; 0) {&lt;br /&gt;
 /* traitement de l'erreur */&lt;br /&gt;
 }&lt;br /&gt;
 if (msg.msg_flags &amp;amp; MSG_TRUNC) {&lt;br /&gt;
 /* traitement de l'erreur (les données sont tronquées) */&lt;br /&gt;
 }&lt;br /&gt;
 if (msg.msg_flags &amp;amp; MSG_CTRUNC) {&lt;br /&gt;
 /* traitement de l'erreur (les données auxiliaires sont tronquées) */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Finalement, au moyen des macros &amp;lt;tt&amp;gt;CMSG_FIRSTHDR&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;CMSG_NXTHDR&amp;lt;/tt&amp;gt; précédemment décrites, une boucle traite les données auxiliaires reçues :&lt;br /&gt;
&lt;br /&gt;
 for (cmsg = CMSG_FIRSTHDR(&amp;amp;msg); cmsg; cmsg = CMSG_NXTHDR(&amp;amp;msg, cmsg)) {&lt;br /&gt;
    if ((cmsg-&amp;gt;cmsg_level == IPPROTO_IPV6) &amp;amp;&amp;amp; (cmsg-&amp;gt;cmsg_type == IPV6_PKTINFO)) {&lt;br /&gt;
       struct in6_pktinfo *pi = (struct in6_pktinfo *) CMSG_DATA(cmsg);&lt;br /&gt;
       /* suite du traitement */&lt;br /&gt;
    }&lt;br /&gt;
    if ((cmsg-&amp;gt;cmsg_level == IPPROTO_IPV6) &amp;amp;&amp;amp; (cmsg-&amp;gt;cmsg_type == IPV6_HOPLIMIT)) {&lt;br /&gt;
        int hlim = *(int *)CMSG_DATA(cmsg);&lt;br /&gt;
        /* suite du traitement */&lt;br /&gt;
    }&lt;br /&gt;
 /* suite du programme */&lt;br /&gt;
 }&lt;br /&gt;
{{suivi| Programmation avancée | Programmation avancée | L'exemple « mini-ping » revisité | L'exemple « mini-ping » revisité }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27impl%C3%A9mentation&amp;diff=2961</id>
		<title>L'implémentation</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27impl%C3%A9mentation&amp;diff=2961"/>
				<updated>2006-02-27T11:07:53Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Programmation avancée | Programmation avancée | L'exemple « mini-ping » revisité | L'exemple « mini-ping » revisité }}&lt;br /&gt;
Comme indiqué précédemment, l'implémentation de l'API avancée repose principalement sur les primitives &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt; dont les prototypes sont les suivants :&lt;br /&gt;
&lt;br /&gt;
 int sendmsg(int s, const struct msghdr *msg, int flags);&lt;br /&gt;
 int recvmsg(int s, struct msghdr *msg, unsigned int flags);&lt;br /&gt;
&lt;br /&gt;
Le premier paramètre s désigne le descripteur d'E/S associée à la socket et le dernier paramètre flags est identique au 3ème paramètre des primitives sendto et recvfrom. Le second paramètre est une structure définie (dans &amp;lt;tt&amp;gt;&amp;lt;sys/socket.h&amp;gt;&amp;lt;/tt&amp;gt;) comme suit :&lt;br /&gt;
&lt;br /&gt;
 struct msghdr {&lt;br /&gt;
    void *msg_name;           /* pointeur vers l'adresse de la socket */&lt;br /&gt;
    socklen_t msg_namelen;    /* longueur de l'adresse de la socket */&lt;br /&gt;
    struct iovec *msg_iov;    /* tampon mémoire vectoriel (scatter/gather array) */&lt;br /&gt;
    int msg_iovlen;           /* nombre d'éléments de msg_iov */&lt;br /&gt;
    void *msg_control;        /* données auxiliaires */&lt;br /&gt;
    socklen_t msg_controllen; /* longueur des données auxiliaires */&lt;br /&gt;
    int msg_flags;            /* drapeaux des messages reçus */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Les deux premiers champs spécifient pour &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; (respectivement &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt;) l'adresse de destination (respectivement d'origine). Le premier champ peut être le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; en mode connecté. Les deux champs suivants contiennent le tampon mémoire vectoriel en émission ou en réception suivant le cas (voir le manuel de la primitive &amp;lt;tt&amp;gt;readv&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Les champs &amp;lt;tt&amp;gt;msg_control&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;msg_controllen&amp;lt;/tt&amp;gt; spécifient le tableau des données auxiliaires reçues ou émises, le champ &amp;lt;tt&amp;gt;msg_control&amp;lt;/tt&amp;gt; pouvant être le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; s'il n'y a aucune donnée auxiliaire à émettre ou recevoir. Chaque donnée auxiliaire se présente sous la forme d'une structure de type struct &amp;lt;tt&amp;gt;cmsghdr&amp;lt;/tt&amp;gt; définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 struct cmsghdr {&lt;br /&gt;
    socklen_t cmsg_len; /* longueur en octet, en-tête inclus */&lt;br /&gt;
    int cmsg_level;     /* protocole (IPPROTO_IPV6, ...) */&lt;br /&gt;
    int cmsg_type;      /* sous-type dans le protocole (IPV6_RTHDR, ...) */&lt;br /&gt;
                        /* suivi par unsigned char cmsg_data[]; */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
En raison de problèmes d'alignement (cf. figure Structure des données auxiliaires), l'accès au tableau des données auxiliaires ainsi que la manipulation de ces dernières ne doivent se faire qu'au moyen de cinq macros appropriées, définies dans &amp;lt;tt&amp;gt;&amp;lt;sys/socket.h&amp;gt;&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
[[image:CS196.gif]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;struct cmsghdr *CMSG_FIRSTHDR(const struct msghdr *msgh);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_FIRSTHDR&amp;lt;/tt&amp;gt; renvoie un pointeur vers la première donnée auxiliaire contenue dans la structure de type &amp;lt;tt&amp;gt;struct msghdr&amp;lt;/tt&amp;gt; pointée par &amp;lt;tt&amp;gt;msgh&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;struct cmsghdr *CMSG_NXTHDR(const struct msghdr *msgh, const struct cmsghdr *cmsg);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_NXTHDR&amp;lt;/tt&amp;gt; renvoie un pointeur vers la donnée auxiliaire qui suit celle pointée par &amp;lt;tt&amp;gt;cmsg&amp;lt;/tt&amp;gt; ou le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; s'il n'y en a pas. Si &amp;lt;tt&amp;gt;cmsg&amp;lt;/tt&amp;gt; est le pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;CMSG_NXTHDR&amp;lt;/tt&amp;gt; renvoie un pointeur vers la première donnée auxiliaire. Ainsi, &amp;lt;tt&amp;gt;CMSG_NXTHDR(msgh, NULL)&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;CMSG_FIRSTHDR(msgh)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;socklen_t CMSG_SPACE(socklen_t length);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_SPACE&amp;lt;/tt&amp;gt; renvoie le nombre d'octets occupés par une donnée auxiliaire dont la taille des données transmises est &amp;lt;tt&amp;gt;length&amp;lt;/tt&amp;gt;, tout en tenant compte des alignements.&lt;br /&gt;
* &amp;lt;tt&amp;gt;socklen_t CMSG_LEN(socklen_t length);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_LEN&amp;lt;/tt&amp;gt; retourne la valeur à stocker dans le champ &amp;lt;tt&amp;gt;cmsg_len&amp;lt;/tt&amp;gt; de la structure (de type &amp;lt;tt&amp;gt;struct cmsghdr&amp;lt;/tt&amp;gt;) associée à une donnée auxiliaire dont la taille des données transmises est &amp;lt;tt&amp;gt;length&amp;lt;/tt&amp;gt;, ceci en tenant compte des alignements.&lt;br /&gt;
* &amp;lt;tt&amp;gt;unsigned char *CMSG_DATA(const struct cmsghdr *cmsg);&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;CMSG_DATA&amp;lt;/tt&amp;gt; retourne un pointeur vers les données contenues dans la donnée auxiliaire pointée par le paramètre &amp;lt;tt&amp;gt;cmsg&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le dernier champ &amp;lt;tt&amp;gt;msg_flags&amp;lt;/tt&amp;gt; de la structure msghdr est rempli au retour de &amp;lt;tt&amp;gt;recvmsg()&amp;lt;/tt&amp;gt;. Plusieurs drapeaux peuvent avoir été levés dont le drapeau &amp;lt;tt&amp;gt;MSG_TRUNC&amp;lt;/tt&amp;gt; pour indiquer que les données ont été tronquées ou le drapeau &amp;lt;tt&amp;gt;MSG_CTRUNC&amp;lt;/tt&amp;gt; pour indiquer que les données auxiliaires ont été tronquées.&lt;br /&gt;
&lt;br /&gt;
Afin de recevoir toute donnée auxiliaire sur une socket, il faut auparavant le demander en positionnant l'option correspondante. Plus précisément, le RFC 3542 liste de manière exhaustive des options disponibles et comment les positionner :&lt;br /&gt;
&lt;br /&gt;
 int on = 1;&lt;br /&gt;
 /* interface de réception / adresse destination */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* nombre de sauts */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* en-tête de routage */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVRTHDR, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* options proche-en-proche */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPOPTS, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* option destination */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVDSTOPTS, &amp;amp;on, sizeof(on));&lt;br /&gt;
 /* classe de trafic */&lt;br /&gt;
 setsockopt(s, IPPROTO_IPV6, IPV6_RECVTCLASS, &amp;amp;on, sizeof(on));&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne l'émission d'une donnée auxiliaire, deux possibilités s'offrent au programmeur :&lt;br /&gt;
&lt;br /&gt;
* soit il fait appel à la primitive &amp;lt;tt&amp;gt;setsockopt&amp;lt;/tt&amp;gt; pour positionner l'option correspondante avec les données adéquates. Ce sont alors des options dites permanentes (''sticky'') car elles s'appliquent à tous les paquets transmis par la suite et ce jusqu'à un nouvel appel à &amp;lt;tt&amp;gt;setsockopt&amp;lt;/tt&amp;gt; ou une surcharge par une donnée auxiliaire.&lt;br /&gt;
* soit il utilise &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; et les données auxiliaires affectent uniquement le datagramme concerné (non applicable au socket de type &amp;lt;tt&amp;gt;SOCK_STREAM&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Le tableau Options de données auxiliaires en émission, extrait du RFC 3542, donne la liste des options disponibles en émission (avec leur type de données associées) :&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+'''''Options de données auxiliaires en émission'''''&lt;br /&gt;
|-&lt;br /&gt;
!opt level / cmsg_level || optname / cmsg_type || optval / cmsg_data[]&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_PKTINFO ||structure in6_pktinfo&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_HOPLIMIT ||int&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_NEXTHOP || structure sockaddr_in6&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_RTHDR || structure ip6_rthdr&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_HOPOPTS (prochain saut / next hop) || structure ip6_hbh&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_DSTOPTS || structure ip6_dest&lt;br /&gt;
|-style=&amp;quot;background:silver&amp;quot;  &lt;br /&gt;
|IPPROTO_IPV6 || IPV6_RTHDRDSTOPTS || structure ip6_dest&lt;br /&gt;
|-&lt;br /&gt;
|IPPROTO_IPV6 || IPV6_TCLASS || int&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les options proposées par cette API avancée, ne seront pas toutes détaillées dans ce chapitre. Nous recommandons au lecteur intéressé de se reporter au RFC 3542. L'exemple simple qui suit, met en oeuvre ces notions. Il s'agit d'un extrait de programme qui, outre les données habituelles, souhaite recevoir également deux données auxiliaires :&lt;br /&gt;
&lt;br /&gt;
* index de l'interface de réception du paquet / adresse destination du paquet reçu (option &amp;lt;tt&amp;gt;  IPV6_RECVPKTINFO&amp;lt;/tt&amp;gt;) et&lt;br /&gt;
* le nombre de sauts (hop limit) du paquet reçu (option &amp;lt;tt&amp;gt;IPV6_RECVHOPLIMIT&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
La première partie de ce programme, où les variables sont déclarées et initialisées ne présente aucune difficulté. On notera l'usage de la macro &amp;lt;tt&amp;gt;CMSG_SPACE&amp;lt;/tt&amp;gt; afin d'initialiser la variable &amp;lt;tt&amp;gt;cmsg_buf&amp;lt;/tt&amp;gt; destinée à accueillir les données auxiliaires demandées.&lt;br /&gt;
&lt;br /&gt;
 int noc, o = 1, s;&lt;br /&gt;
 struct sockaddr_storage from;&lt;br /&gt;
 char buf[1024];&lt;br /&gt;
 struct iovec iov = {buf, sizeof(buf)};&lt;br /&gt;
 char cmsg_buf[CMSG_SPACE(sizeof(struct in6_pktinfo)) + CMSG_SPACE(sizeof(int))];&lt;br /&gt;
 struct cmsghdr *cmsg;&lt;br /&gt;
 struct msghdr msg = {(void *) &amp;amp;from, sizeof(from), &amp;amp;iov, 1,&lt;br /&gt;
                      (void *) cmsg_buf, sizeof(cmsg_buf), 0};&lt;br /&gt;
&lt;br /&gt;
Actuellement, un grand nombre d'implémentations ne sont pas à jour du RFC 3542 (bien que publié en mai 2003). En particulier, certaines implémentations ne distinguent toujours pas entre les options de réception et les options d'émission. Si bien qu'il peut être nécessaire d'ajouter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
 #ifndef IPV6_RECVHOPLIMIT&lt;br /&gt;
 #define IPV6_RECVHOPLIMIT IPV6_HOPLIMIT&lt;br /&gt;
 #endif&lt;br /&gt;
 #ifndef IPV6_RECVPKTINFO&lt;br /&gt;
 #define IPV6_RECVPKTINFO IPV6_PKTINFO&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
Ensuite on indique par l'intermédiaire de la primitive &amp;lt;tt&amp;gt;setsockopt&amp;lt;/tt&amp;gt; que les données auxiliaires mentionnées plus haut doivent être reçues. La variable &amp;lt;tt&amp;gt;s&amp;lt;/tt&amp;gt; est un descripteur d'entrées/sorties associé à une socket &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &amp;amp;o, sizeof(o)) ||&lt;br /&gt;
    setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &amp;amp;o, sizeof(o))) {&lt;br /&gt;
      /* traitement de l'erreur */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
La primitive &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt; est exécutée et les erreurs éventuelles sont traitées :&lt;br /&gt;
&lt;br /&gt;
 if ((noc = recvmsg(s, &amp;amp;msg, 0)) &amp;lt; 0) {&lt;br /&gt;
 /* traitement de l'erreur */&lt;br /&gt;
 }&lt;br /&gt;
 if (msg.msg_flags &amp;amp; MSG_TRUNC) {&lt;br /&gt;
 /* traitement de l'erreur (les données sont tronquées) */&lt;br /&gt;
 }&lt;br /&gt;
 if (msg.msg_flags &amp;amp; MSG_CTRUNC) {&lt;br /&gt;
 /* traitement de l'erreur (les données auxiliaires sont tronquées) */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Finalement, au moyen des macros &amp;lt;tt&amp;gt;CMSG_FIRSTHDR&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;CMSG_NXTHDR&amp;lt;/tt&amp;gt; précédemment décrites, une boucle traite les données auxiliaires reçues :&lt;br /&gt;
&lt;br /&gt;
 for (cmsg = CMSG_FIRSTHDR(&amp;amp;msg); cmsg; cmsg = CMSG_NXTHDR(&amp;amp;msg, cmsg)) {&lt;br /&gt;
    if ((cmsg-&amp;gt;cmsg_level == IPPROTO_IPV6) &amp;amp;&amp;amp; (cmsg-&amp;gt;cmsg_type == IPV6_PKTINFO)) {&lt;br /&gt;
       struct in6_pktinfo *pi = (struct in6_pktinfo *) CMSG_DATA(cmsg);&lt;br /&gt;
       /* suite du traitement */&lt;br /&gt;
    }&lt;br /&gt;
    if ((cmsg-&amp;gt;cmsg_level == IPPROTO_IPV6) &amp;amp;&amp;amp; (cmsg-&amp;gt;cmsg_type == IPV6_HOPLIMIT)) {&lt;br /&gt;
        int hlim = *(int *)CMSG_DATA(cmsg);&lt;br /&gt;
        /* suite du traitement */&lt;br /&gt;
    }&lt;br /&gt;
 /* suite du programme */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Programmation_avanc%C3%A9e&amp;diff=2960</id>
		<title>Programmation avancée</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Programmation_avanc%C3%A9e&amp;diff=2960"/>
				<updated>2006-02-27T11:06:34Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Utilisation du multicast | Utilisation du multicast | L'implémentation | L'implémentation }}&lt;br /&gt;
L'API « avancée » (''Advanced API''), définie par le RFC 3542, a pour objet la standardisation de la manipulation en émission/réception des datagrammes IPv6. Elle permet notamment au programmeur d'écrire des applications utilisant les nouvelles fonctionnalités proposées par le protocole IPv6 et ce de façon portable.&lt;br /&gt;
&lt;br /&gt;
Cette API avancée concerne essentiellement les sockets de type &amp;lt;tt&amp;gt;SOCK_DGRAM&amp;lt;/tt&amp;gt; (UDP) ou de type &amp;lt;tt&amp;gt;SOCK_RAW&amp;lt;/tt&amp;gt; (ICMPv6,...). En effet, comme il n'y a pas de correspondance biunivoque entre les opérations de réception (respectivement d'émission) et les segments TCP reçus (respectivement émis), la plupart des options proposées ne sont pas applicables ou voire dénuées de sens pour une socket de type &amp;lt;tt&amp;gt;SOCK_STREAM&amp;lt;/tt&amp;gt;. L'API avancée est utile pour programmer des applications comme &amp;lt;tt&amp;gt;ping&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;traceroute&amp;lt;/tt&amp;gt;, des implémentations de protocoles de routage et, de manière générale, toute application construite avec des sockets de type &amp;lt;tt&amp;gt;SOCK_RAW&amp;lt;/tt&amp;gt; et devant accéder aux champs des en-têtes IPv6 ou ICMPv6.&lt;br /&gt;
&lt;br /&gt;
La standardisation des appels systèmes et de fonctions a pour but de fournir un interface uniforme, évitant ainsi l'hétérogénéité qui existe en IPv4.&lt;br /&gt;
&lt;br /&gt;
Les opérations disponibles sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
* Calcul/vérification des checksums par le noyau (pour les sockets de type &amp;lt;tt&amp;gt;SOCK_RAW&amp;lt;/tt&amp;gt;)&lt;br /&gt;
* Filtrage des réceptions des paquets ICMPv6&lt;br /&gt;
* Modification des caractéristiques du datagramme IPv6 (packet information)&lt;br /&gt;
* Manipulation des en-têtes d'extension IPv6&lt;br /&gt;
* proche-en-proche (hop-by-hop)&lt;br /&gt;
* routage par la source (routing header)&lt;br /&gt;
* destination (destination)&lt;br /&gt;
* Gestion du MTU et du mécanisme de découverte du PMTU (Path MTU discovery)&lt;br /&gt;
&lt;br /&gt;
En outre, des fonctions facilitant le traitement des en-têtes d'extension IPv6 ont été définies ainsi qu'une interface étendant les primitives &amp;lt;tt&amp;gt;rresvport&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rcmd&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;rexec&amp;lt;/tt&amp;gt; à IPv6. Cette API avancée ne prend pas en compte les en-têtes d'extension IPv6 liés à IPsec.&lt;br /&gt;
&lt;br /&gt;
L'implémentation de ce nouveau standard est réalisé à l'aide des primitives &amp;lt;tt&amp;gt;sendmsg&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;recvmsg&amp;lt;/tt&amp;gt;, les données en émission/réception étant traitées via les données auxiliaires (ancillary data) associées à la socket et gérées par ces primitives. Également, de nouvelles options ont été définies pour les sockets.&lt;br /&gt;
{{suivi| Utilisation du multicast | Utilisation du multicast | L'implémentation | L'implémentation }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Utilisation_du_multicast&amp;diff=2959</id>
		<title>Utilisation du multicast</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Utilisation_du_multicast&amp;diff=2959"/>
				<updated>2006-02-27T11:05:18Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| mini-ping | mini-ping | Programmation avancée | Programmation avancée }}&lt;br /&gt;
La programmation avec les groupes multicast n'est pas standardisée en IPv4. La nouvelle API &amp;quot;socket&amp;quot; propose un ensemble de structures et appels systèmes pour étendre l'interface de programmation sockets aux applications utilisant le multicast. Cet exemple va illustrer ce point.&lt;br /&gt;
&lt;br /&gt;
Le but des deux programmes est d'échanger des données par multicast. Le programme &amp;lt;tt&amp;gt;in2multi6&amp;lt;/tt&amp;gt; diffuse les données lues en entrée (&amp;quot;standard input&amp;quot;) vers un groupe multicast donné. Le programme &amp;lt;tt&amp;gt;multi2out6&amp;lt;/tt&amp;gt; écoute les paquets transmis dans ce groupe et les copie sur la sortie standard (&amp;quot;stdout&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==multi2out6==&lt;br /&gt;
&lt;br /&gt;
Pour ce faire &amp;lt;tt&amp;gt;multi2out6&amp;lt;/tt&amp;gt; va faire des appels systèmes qui vont produire des paquets d'abonnement (et de désabonnement) à un groupe multicast. L'abonnement sera réalisé grâce à l'envoi de deux messages ICMPv6 successifs de type 131, c'est-à-dire des &amp;quot;rapports d'abonnement&amp;quot;. Puis les messages émis dans le groupe sont reçus par le programme. Lorsque le programme s'arrête, le code de l'interface va automatiquement provoquer l'émission d'un message de réduction d'un groupe de multicast (132).&lt;br /&gt;
&lt;br /&gt;
Le programme multi2out6 est appelé de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 '''multi2out6 [-i interface] &amp;lt;adresse de groupe multicast&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Voici le code complet du programme. Le port utilisé (ligne 15) est quelconque mais ne doit bien sûr pas correspondre à un service déjà existant.&lt;br /&gt;
	&lt;br /&gt;
  1| #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
  2| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
  3| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
  4| #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
  5| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  6| #include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
  7| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
  8|  &lt;br /&gt;
  9| #ifndef SO_REUSEPORT&lt;br /&gt;
 10| #define SO_REUSEPORT SO_REUSEADDR&lt;br /&gt;
 11| #endif&lt;br /&gt;
 12|   &lt;br /&gt;
 13| struct sockaddr_in6 sin6;&lt;br /&gt;
 14|  &lt;br /&gt;
 15| #define IPPORT 54321&lt;br /&gt;
 16|  &lt;br /&gt;
 17| void Perror(const char *c)&lt;br /&gt;
 18| {&lt;br /&gt;
 19|    perror(c);&lt;br /&gt;
 20|    exit(1);&lt;br /&gt;
 21| }&lt;br /&gt;
 22|  &lt;br /&gt;
 23| void Usage ()&lt;br /&gt;
 24| {&lt;br /&gt;
 25|    fprintf(stderr, &amp;quot;%s\n&amp;quot;, &amp;quot;Usage: multi2out6 [-i interface] addr&amp;quot;);&lt;br /&gt;
 26|    exit(1);&lt;br /&gt;
 27| }&lt;br /&gt;
 28|  &lt;br /&gt;
 29| void BrokenPipe(int Signal)&lt;br /&gt;
 30| {&lt;br /&gt;
 31|    signal(SIGPIPE, BrokenPipe);&lt;br /&gt;
 32|    return;&lt;br /&gt;
 33| }&lt;br /&gt;
 34| &lt;br /&gt;
  &lt;br /&gt;
La partie principale du programme traite les options éventuelles. En fait, il n'y en a qu'une, le choix de l'interface à abonner au groupe multicast. Une fois ces operations effectuées, il faut créer et attacher une socket à une adresse. Ces opérations sont réalisées par l'utilisation des fonctions classiques socket et bind.&lt;br /&gt;
&lt;br /&gt;
On utilise une structure de données spéciale pour stocker l'adresse multicast du groupe (définie dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 struct ipv6_mreq {&lt;br /&gt;
 struct in6_addr ipv6mr_multiaddr; /* IPv6 mcast address of group */&lt;br /&gt;
 unsigned int ipv6mr_interface; /* local IPv6 address of interface */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 35| main(int argc, char **argv)&lt;br /&gt;
 36| {&lt;br /&gt;
 37| struct ipv6_mreq mreq;&lt;br /&gt;
 38| int cc, ccb, ch, s;&lt;br /&gt;
 39| char buf[10240];&lt;br /&gt;
 40| u_int one = 1;&lt;br /&gt;
 41| u_int ifi = 0;&lt;br /&gt;
 42|  &lt;br /&gt;
 43|    signal(SIGPIPE, BrokenPipe);&lt;br /&gt;
 44|    while ((ch = getopt(argc, argv, &amp;quot;i:&amp;quot;)) != -1)&lt;br /&gt;
 45|       switch(ch) {&lt;br /&gt;
 46|       case 'i':&lt;br /&gt;
 47|          if (sscanf(optarg, &amp;quot;%u\0&amp;quot;, &amp;amp;ifi) != 1 &amp;amp;&amp;amp;&lt;br /&gt;
 48|                       (ifi = if_nametoindex(optarg)) == 0)&lt;br /&gt;
 49|             Usage();&lt;br /&gt;
 50|          break;&lt;br /&gt;
 51|       default:&lt;br /&gt;
 52|          Usage();&lt;br /&gt;
 53|       }&lt;br /&gt;
 54|    argc -= optind;&lt;br /&gt;
 55|    argv += optind;&lt;br /&gt;
 56|    if (argc != 1)&lt;br /&gt;
 57|       Usage();&lt;br /&gt;
 58|  &lt;br /&gt;
 59|    if ((s = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)) &amp;lt; 0)&lt;br /&gt;
 60|       Perror(&amp;quot;socket&amp;quot;);&lt;br /&gt;
 61|    setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &amp;amp;one, sizeof(one));&lt;br /&gt;
 62|  &lt;br /&gt;
 63| #ifdef SIN6_LEN&lt;br /&gt;
 64|    sin6.sin6_len = sizeof(sin6);&lt;br /&gt;
 65| #endif&lt;br /&gt;
 66|    sin6.sin6_family = AF_INET6;&lt;br /&gt;
 67|    sin6.sin6_port = htons(IPPORT);&lt;br /&gt;
 68|    if (bind(s, (struct sockaddr *)&amp;amp;sin6, sizeof(sin6)) &amp;lt; 0)&lt;br /&gt;
 69|       Perror(&amp;quot;bind&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
La fonction &amp;lt;tt&amp;gt;inet_pton&amp;lt;/tt&amp;gt; va permettre la conversion du nom de groupe passé en option sous une forme textuelle (par exemple &amp;lt;tt&amp;gt;ff12::1234:5678&amp;lt;/tt&amp;gt;) en forme numérique. Le résultat est directement stocké dans la variable &amp;lt;tt&amp;gt;mreq&amp;lt;/tt&amp;gt; qui sera utilisée par la commande &amp;lt;tt&amp;gt;setsockop&amp;lt;/tt&amp;gt;. On passe en paramètre à cette fonction l'option &amp;lt;tt&amp;gt;IPV6_JOIN_GROUP&amp;lt;/tt&amp;gt; avec la variable &amp;lt;tt&amp;gt;mreq&amp;lt;/tt&amp;gt;. À partir de ce moment, il y a émission de deux messages d'abonnement. La boucle qui suit va permettre la lecture des informations envoyées sur le groupe auquel on vient de s'abonner et les afficher sur la sortie standard ainsi que leur longueur sur la sortie erreur standard.&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
 70|    if (inet_pton(AF_INET6, *argv, &amp;amp;mreq.ipv6mr_multiaddr) != 1)&lt;br /&gt;
 71|       Usage();&lt;br /&gt;
 72|    mreq.ipv6mr_interface = ifi;&lt;br /&gt;
 73|    if (setsockopt(s,IPPROTO_IPV6, IPV6_JOIN_GROUP, &amp;amp;mreq, sizeof(mreq)) &amp;lt; 0)&lt;br /&gt;
 74|       Perror(&amp;quot;setsockopt IPV6_JOIN_GROUP&amp;quot;);&lt;br /&gt;
 75|    for (;;) {&lt;br /&gt;
 76|       cc = read(s, buf, 10240);&lt;br /&gt;
 77|       if (cc &amp;lt; 0)&lt;br /&gt;
 78|          Perror(&amp;quot;read socket&amp;quot;);&lt;br /&gt;
 79|       if (cc == 0) {&lt;br /&gt;
 80|          fprintf(stderr, &amp;quot;..\n&amp;quot;);&lt;br /&gt;
 81|          exit (0);&lt;br /&gt;
 82|       }&lt;br /&gt;
 83|       ccb = write(1, buf, cc);&lt;br /&gt;
 84|       if (ccb != cc)&lt;br /&gt;
 85|          Perror(&amp;quot;write file&amp;quot;);&lt;br /&gt;
 86|       fprintf(stderr, &amp;quot;&amp;lt;-%d-\n&amp;quot;, cc);&lt;br /&gt;
 87|    }&lt;br /&gt;
 88| }&lt;br /&gt;
&lt;br /&gt;
Lorsque le programme s'arrête, un &amp;lt;tt&amp;gt;close(s)&amp;lt;/tt&amp;gt; implicite a lieu, et le code de l'interface va envoyer un message de réduction de groupe si elle est la dernière à avoir envoyé un rapport d'abonnement au groupe.&lt;br /&gt;
&lt;br /&gt;
==in2multi6==&lt;br /&gt;
&lt;br /&gt;
Le programme est appelé de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 '''in2multi6 [-i interface][-h max-hop-count][-l loop] &amp;lt;adresse de groupe multicast&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Le code est relativement simple, principalement une analyse des arguments, le positionnement d'option et une boucle lecture--émission. En effet il n'est pas nécessaire de s'abonner pour faire de l'émission multicast.&lt;br /&gt;
&lt;br /&gt;
Il y a quatre arguments, trois optionnels qui sont l'interface d'émission (nom ou index numérique), le &amp;quot;ttl&amp;quot; mis dans les paquets multicast (voir le manuel de la primitive &amp;lt;tt&amp;gt;readv&amp;lt;/tt&amp;gt;), et un drapeau qui sert à dire si la machine émettrice reçoit ou non les paquet émis. Le dernier argument est l'adresse du groups sous forme numérique.&lt;br /&gt;
&lt;br /&gt;
Voici le code complet du programme. Le port utilisé (ligne 10) est naturellement celui de &amp;lt;tt&amp;gt;in2multi6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
  1| #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
  2| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
  3| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
  4| #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
  5| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  6| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
  7|  &lt;br /&gt;
  8| struct sockaddr_in6 sin6;&lt;br /&gt;
  9|  &lt;br /&gt;
 10| #define IPPORT 54321&lt;br /&gt;
 11|  &lt;br /&gt;
 12| void Perror(const char *c)&lt;br /&gt;
 13| {&lt;br /&gt;
 14|    perror(c);&lt;br /&gt;
 15|    exit(1);&lt;br /&gt;
 16| }&lt;br /&gt;
 17|  &lt;br /&gt;
 18| void Usage ()&lt;br /&gt;
 19| {&lt;br /&gt;
 20|    fprintf(stderr, &amp;quot;%s\n&amp;quot;, &amp;quot;Usage: in2multi6 [-i interface][-h hop][-l loop] addr&amp;quot;);&lt;br /&gt;
 21|    exit(1);&lt;br /&gt;
 22| }&lt;br /&gt;
 23|  &lt;br /&gt;
 24| main(int argc, char **argv)&lt;br /&gt;
 25| {&lt;br /&gt;
 26| u_int hops = 1,       /* as defined in rfc2553 */&lt;br /&gt;
 27|       loop = 1,       /* as defined in rfc2553 */&lt;br /&gt;
 28|       ifi = 0;&lt;br /&gt;
 29| int s, cc, ch;&lt;br /&gt;
 30| char buf[1024];&lt;br /&gt;
 31| struct in6_addr addr6;&lt;br /&gt;
 32| extern char *optarg;&lt;br /&gt;
 33| extern int optind;&lt;br /&gt;
 34|  &lt;br /&gt;
 35|    addr6 = in6addr_any;&lt;br /&gt;
 36|    if ((s = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)) &amp;lt; 0)&lt;br /&gt;
 37|       Perror(&amp;quot;socket&amp;quot;);&lt;br /&gt;
 38|    while ((ch = getopt(argc, argv, &amp;quot;h:t:l:i:&amp;quot;)) != -1)&lt;br /&gt;
 39|       switch(ch) {&lt;br /&gt;
 40|       case 'h':&lt;br /&gt;
 41|       case 't':&lt;br /&gt;
 42|          hops = atoi(optarg);&lt;br /&gt;
 43|          break;&lt;br /&gt;
 44|       case 'l':&lt;br /&gt;
 45|          loop = atoi(optarg);&lt;br /&gt;
 46|          break;&lt;br /&gt;
 47|       case 'i':&lt;br /&gt;
 48|          if (sscanf(optarg, &amp;quot;%u\0&amp;quot;, &amp;amp;ifi) != 1) {&lt;br /&gt;
 49|             ifi = if_nametoindex(optarg);&lt;br /&gt;
 50|             if (ifi == 0)&lt;br /&gt;
 51|                Usage();&lt;br /&gt;
 52|          }&lt;br /&gt;
 53|          break;&lt;br /&gt;
 54|       default:&lt;br /&gt;
 55|          Usage();&lt;br /&gt;
 56|    }&lt;br /&gt;
 57|    argc -= optind;&lt;br /&gt;
 58|    argv += optind;&lt;br /&gt;
 59|    if (argc != 1 || inet_pton(AF_INET6, *argv, &amp;amp;addr6) &amp;lt;= 0)&lt;br /&gt;
 60|       Usage();&lt;br /&gt;
 61|    if (setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,&lt;br /&gt;
 62|                   &amp;amp;hops, sizeof(hops)) &amp;lt; 0)&lt;br /&gt;
 63|       Perror(&amp;quot;setsockopt IPV6_MULTICAST_HOPS&amp;quot;);&lt;br /&gt;
 64|    if (setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,&lt;br /&gt;
 65|                   &amp;amp;loop, sizeof(loop)) &amp;lt; 0)&lt;br /&gt;
 66|       Perror(&amp;quot;setsockopt IPV6_MULTICAST_LOOP&amp;quot;);&lt;br /&gt;
 67|    if (ifi &amp;amp;&amp;amp; (setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_IF,&lt;br /&gt;
 68|                           &amp;amp;ifi, sizeof(u_int)) &amp;lt; 0))&lt;br /&gt;
 69|       Perror(&amp;quot;setsockopt IPV6_MULTICAST_IF&amp;quot;);&lt;br /&gt;
 70|  &lt;br /&gt;
 71| #ifdef SIN6_LEN&lt;br /&gt;
 72|    sin6.sin6_len = sizeof(sin6);&lt;br /&gt;
 73| #endif&lt;br /&gt;
 74|    sin6.sin6_family = AF_INET6;&lt;br /&gt;
 75|    sin6.sin6_addr = addr6;&lt;br /&gt;
 76|    sin6.sin6_port = htons(54321);&lt;br /&gt;
 77|  &lt;br /&gt;
 78|    for (;;) {&lt;br /&gt;
 79|       cc = read(0, buf, 1024);&lt;br /&gt;
 80|       if (cc &amp;lt; 0)&lt;br /&gt;
 81|          Perror(&amp;quot;read file&amp;quot;);&lt;br /&gt;
 82|       if (cc == 0) {&lt;br /&gt;
 83|          fprintf(stderr, &amp;quot;.\n&amp;quot;, cc);&lt;br /&gt;
 84|          exit (0);&lt;br /&gt;
 85|       }&lt;br /&gt;
 86|       if (sendto(s, buf, cc, 0,&lt;br /&gt;
 87|                  (struct sockaddr *)&amp;amp;sin6, sizeof(sin6)) &amp;lt; 0)&lt;br /&gt;
 88|          Perror(&amp;quot;sendto&amp;quot;);&lt;br /&gt;
 89|       fprintf(stderr, &amp;quot;-%d-&amp;gt;\n&amp;quot;, cc);&lt;br /&gt;
 90|    }&lt;br /&gt;
 91| }&lt;br /&gt;
{{suivi| mini-ping | mini-ping | Programmation avancée | Programmation avancée }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Mini-ping&amp;diff=2958</id>
		<title>Mini-ping</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Mini-ping&amp;diff=2958"/>
				<updated>2006-02-27T11:04:21Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Exemple de client/serveur TCP | Exemple de client/serveur TCP | Utilisation du multicast | Utilisation du multicast }}&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
La commande proposée est une version très simplifiée de &amp;lt;tt&amp;gt;ping6&amp;lt;/tt&amp;gt;. Néanmoins, cela permettra de comprendre l'essentiel du fonctionnement de cette commande. Son principe est le suivant, on émet un paquet ICMPv6 du type ECHO_REQUEST et on active une temporisation. Si, le délai étant expiré, on n'a pas reçu de paquet ICMPv6 de type ECHO_REPLY en provenance de la machine cible, on imprime un message d'erreur. Dans le cas contraire, on imprime le nom de la machine émettrice de l'ECHO_REPLY. Par exemple, si le nom donné à cette commande est one_ping6 :&lt;br /&gt;
&lt;br /&gt;
 $ '''one_ping6 peirce'''&lt;br /&gt;
 Sending ECHO REQUEST to: peirce.ipv6.logique.jussieu.fr&lt;br /&gt;
 Waiting for answer (timeout = 5s)...&lt;br /&gt;
 Got answer from 2001:660:101:201:200:f8ff:fe31:1942 (seq = 0)&lt;br /&gt;
 $&lt;br /&gt;
&lt;br /&gt;
Remarque : ICMP étant un protocole non fiable, il peut arriver qu'un premier paquet soit perdu, par exemple à cause du temps passé à exécuter le protocole de &amp;quot;recherche de voisins&amp;quot;. Il suffit en général de relancer la commande pour que la réponse apparaisse la seconde fois.&lt;br /&gt;
&lt;br /&gt;
one_ping6 accepte les options suivantes :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;-d données&amp;lt;/tt&amp;gt;. Ces données seront incluses dans le paquet ECHO_REQUEST.&lt;br /&gt;
* &amp;lt;tt&amp;gt;-s numéro de séquence&amp;lt;/tt&amp;gt;. La valeur défaut est zéro.&lt;br /&gt;
* &amp;lt;tt&amp;gt;-t durée de la temporisation&amp;lt;/tt&amp;gt;. La valeur par défaut est fixée lors de la compilation via la macro-définition TIMEOUT.&lt;br /&gt;
&lt;br /&gt;
Par exemple,&lt;br /&gt;
&lt;br /&gt;
 $ '''one_ping6 -d 'Un petit essai' -s 12 -t 3 peirce'''&lt;br /&gt;
 Sending ECHO REQUEST to: peirce.ipv6.logique.jussieu.fr&lt;br /&gt;
 Waiting for answer (timeout = 3s)...&lt;br /&gt;
 Got answer from 2001:660:101:201:200:f8ff:fe31:1942 (seq = 12)&lt;br /&gt;
 with data [&lt;br /&gt;
 Un petit essai&lt;br /&gt;
 ] (end of data)&lt;br /&gt;
 $&lt;br /&gt;
&lt;br /&gt;
Les sources de ce programme se composent de trois fichiers : le programme principal, le source de la fonction assurant l'émission du paquet ECHO_REQUEST et le source de la fonction ayant en charge la gestion de la temporisation et la réception du paquet ECHO_REPLY.&lt;br /&gt;
&lt;br /&gt;
==Envoi du paquet ECHO_REQUEST==&lt;br /&gt;
&lt;br /&gt;
Rappelons tout d'abord que le nouveau protocole ICMPv6 est une refonte presque complète d'ICMP (sur IPv4). Néanmoins, le format des paquets ECHO_REQUEST et ECHO_REPLY est inchangé excepté la valeur du champ type (cf. figure format d'un message ICMPv6 demande et réponse d'écho).&lt;br /&gt;
&lt;br /&gt;
[[image:CS43.gif]]&lt;br /&gt;
&lt;br /&gt;
La préparation d'un paquet ECHO_REQUEST est similaire en ICMP(v4) ou ICMPv6. La seule différence est que le calcul du checksum n'est maintenant plus à la charge du programmeur mais effectué par le noyau. Plus précisément, ainsi qu'il est spécifié dans l'API &amp;quot;avancée&amp;quot;, pour toutes les sockets de type &amp;lt;tt&amp;gt;SOCK_RAW&amp;lt;/tt&amp;gt; et de protocole &amp;lt;tt&amp;gt;IPPROTO_ICMPV6&amp;lt;/tt&amp;gt;, c'est le noyau qui doit calculer le checksum des paquets ICMPv6 sortants (dans le cas des Linux anciens, il faut activer le calcul du checksum, comme on le voit en lignes 81 à 95 du fichier [[#progprinc|ping.c]] ).&lt;br /&gt;
&lt;br /&gt;
Le paquet ICMPv6 de type ECHO_REQUEST, étant ainsi constitué, on l'expédie, via la primitive sendto à la machine cible.&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
  1| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  2| #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
  3| #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
  4| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
  5| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
  6| #include &amp;lt;netinet/ip6.h&amp;gt;&lt;br /&gt;
  7| #include &amp;lt;netinet/icmp6.h&amp;gt;&lt;br /&gt;
  8| #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
  9| #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
 10|  &lt;br /&gt;
 11| #ifndef MAX_DATALEN&lt;br /&gt;
 12| #define MAX_DATALEN (1280 - sizeof(struct ip6_hdr) - sizeof(struct icmp6_hdr))&lt;br /&gt;
 13| #endif&lt;br /&gt;
 14|  &lt;br /&gt;
 15| static u_char buf[sizeof(struct icmp6_hdr) + MAX_DATALEN]; &lt;br /&gt;
 16| &lt;br /&gt;
 17| int send_echo_request6(int sock, struct sockaddr_in6 *dst, uint16_t id,&lt;br /&gt;
 18|                        uint16_t seq, char *opt_data, int opt_data_size)&lt;br /&gt;
 19| {&lt;br /&gt;
 20| int noc, icmp_pkt_size = sizeof(struct icmp6_hdr);&lt;br /&gt;
 21| struct icmp6_hdr *icmp;   &lt;br /&gt;
 22| &lt;br /&gt;
 23|    if (opt_data &amp;amp;&amp;amp; opt_data_size &amp;gt; MAX_DATALEN) {&lt;br /&gt;
 24|       fprintf(stderr, &amp;quot;send_echo_request6: too much data (%d &amp;gt; %d)\n&amp;quot;,&lt;br /&gt;
 25|       opt_data_size, MAX_DATALEN);&lt;br /&gt;
 26|       return -1;&lt;br /&gt;
 27|    }&lt;br /&gt;
 28| &lt;br /&gt;
 29|    memset((void *) buf, 0, sizeof(buf));&lt;br /&gt;
 30|    icmp = (struct icmp6_hdr *) buf;&lt;br /&gt;
 31|    icmp-&amp;gt;icmp6_type = ICMP6_ECHO_REQUEST;&lt;br /&gt;
 32|    icmp-&amp;gt;icmp6_id = id;&lt;br /&gt;
 33|    icmp-&amp;gt;icmp6_seq = seq;&lt;br /&gt;
 34|    if (opt_data) {&lt;br /&gt;
 35|       memcpy(buf + sizeof(struct icmp6_hdr), opt_data, opt_data_size);&lt;br /&gt;
 36|       icmp_pkt_size += opt_data_size;&lt;br /&gt;
 37|    } &lt;br /&gt;
 39|    noc = sendto(sock, (char *) icmp, icmp_pkt_size, 0,&lt;br /&gt;
 39|                 (struct sockaddr *) dst, sizeof(struct sockaddr_in6));&lt;br /&gt;
 40|    if (noc &amp;lt; 0) {&lt;br /&gt;
 41|       perror(&amp;quot;send_echo_request6: sendto&amp;quot;);&lt;br /&gt;
 42|       return -1;&lt;br /&gt;
 43|    }&lt;br /&gt;
 44|    if (noc != icmp_pkt_size) {&lt;br /&gt;
 45|       fprintf(stderr, &amp;quot;send_echo_request6: wrote %d bytes, ret=%d\n&amp;quot;,&lt;br /&gt;
 46|               icmp_pkt_size, noc);&lt;br /&gt;
 47|       return -1;&lt;br /&gt;
 48|    }&lt;br /&gt;
 49|    return 0;&lt;br /&gt;
 50| }&lt;br /&gt;
&lt;br /&gt;
Une dernière remarque avant de clore cette section. On a vu que l'on pouvait inclure des données dans le paquet ICMPv6 émis. La taille maximale de celles-ci a été choisie (ligne 12) pour que les paquets ne soient jamais fragmentés (le protocole IPv6 exigeant une taille de paquet minimale de 1280 octets, en-têtes comprises). Une taille plus grande serait possible, les paquets ICMP ECHO pouvant parfaitement être fragmentés.&lt;br /&gt;
&lt;br /&gt;
==La réception du paquet ECHO_REPLY==&lt;br /&gt;
&lt;br /&gt;
C'est la fonction wait_for_echo_reply6 qui gère la réception du paquet ECHO_REPLY. Cette fonction tout d'abord (lignes 32 à 35) utilise le mécanisme de filtrage des paquets ICMPv6, mécanisme défini dans l'API &amp;quot;étendue&amp;quot;, afin que seuls les paquets ICMPv6 de type ECHO_REPLY soient reçus sur la socket d'écoute.&lt;br /&gt;
&lt;br /&gt;
On trouve ensuite une boucle sans fin dont on sort soit sur réception du signal SIGALRM (armé juste avant l'entrée de la boucle à la ligne 36), c'est-à-dire lorsque le délai de temporisation (argument timeout) est expiré, soit lorsque la fonction &amp;lt;tt&amp;gt;recv_icmp_pkt&amp;lt;/tt&amp;gt;, qui analyse tous les paquets ICMPv6 de type ECHO_REPLY reçus sur la socket d'écoute (argument sock) par l'émetteur, retourne 0, c'est-à-dire lorsque le paquet ECHO_REPLY en provenance de la machine cible a été détecté.&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
   1| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
   2| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
   3| #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
   4| #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
   5| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
   6| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
   7| #include &amp;lt;netinet/ip6.h&amp;gt;&lt;br /&gt;
   8| #include &amp;lt;netinet/icmp6.h&amp;gt;&lt;br /&gt;
   9| #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
  10| #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
  11| #include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
  12| #include &amp;lt;setjmp.h&amp;gt;&lt;br /&gt;
  13|  &lt;br /&gt;
  14| #ifndef MAX_DATALEN&lt;br /&gt;
  15| #define MAX_DATALEN (1280 - sizeof(struct ip6_hdr) - sizeof(struct icmp6_hdr))&lt;br /&gt;
  16| #endif&lt;br /&gt;
  17|  &lt;br /&gt;
  18| static void on_timeout(int);&lt;br /&gt;
  19| static int recv_icmp_pkt(int, struct sockaddr_in6 *, uint16_t, uint16_t);&lt;br /&gt;
  20|  &lt;br /&gt;
  21| static u_char buf[sizeof(struct icmp6_hdr) + MAX_DATALEN];&lt;br /&gt;
  22| static jmp_buf j_buf;&lt;br /&gt;
  23|  &lt;br /&gt;
  24| void wait_for_echo_reply6(int sock, struct sockaddr_in6 *from, uint16_t id,&lt;br /&gt;
  25|                           uint16_t seq, int timeout)&lt;br /&gt;
  26| {&lt;br /&gt;
  27| struct icmp6_filter filter;&lt;br /&gt;
  28| char from_ascii[INET6_ADDRSTRLEN];&lt;br /&gt;
  29|  &lt;br /&gt;
  30|    inet_ntop(AF_INET6, &amp;amp;from-&amp;gt;sin6_addr, from_ascii, INET6_ADDRSTRLEN);&lt;br /&gt;
  31|  &lt;br /&gt;
  32|    ICMP6_FILTER_SETBLOCKALL(&amp;amp;filter);&lt;br /&gt;
  33|    ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY, &amp;amp;filter);&lt;br /&gt;
  34|    setsockopt(sock, IPPROTO_ICMPV6, ICMP6_FILTER, (const void *) &amp;amp;filter,&lt;br /&gt;
  35|               sizeof(filter));&lt;br /&gt;
  36|    signal(SIGALRM, on_timeout);&lt;br /&gt;
  37|    alarm(timeout);&lt;br /&gt;
  38|    for (;;) {&lt;br /&gt;
  39|       int noc, from_len = sizeof(struct sockaddr_in6);&lt;br /&gt;
  40|  &lt;br /&gt;
  41|       if (setjmp(j_buf) == SIGALRM) {&lt;br /&gt;
  42|          fprintf(stderr, &amp;quot;No answer from %s\n&amp;quot;, from_ascii);&lt;br /&gt;
  43|          break;&lt;br /&gt;
  44|       }&lt;br /&gt;
  45|       noc = recvfrom(sock, buf, sizeof(buf), 0,&lt;br /&gt;
  46|                      (struct sockaddr *) from, &amp;amp;from_len);&lt;br /&gt;
  47|       if (noc &amp;lt; 0) {&lt;br /&gt;
  48|          if (errno == EINTR)&lt;br /&gt;
  49|             continue;&lt;br /&gt;
  50|          perror(&amp;quot;wait_for_echo_reply6: recvfrom&amp;quot;);&lt;br /&gt;
  51|          continue;&lt;br /&gt;
  52|       }&lt;br /&gt;
  53|       if (recv_icmp_pkt(noc, from, id, seq) == 0)&lt;br /&gt;
  54|          break;&lt;br /&gt;
  55|    }&lt;br /&gt;
  56|    alarm(0);&lt;br /&gt;
  57|    signal(SIGALRM, SIG_DFL);&lt;br /&gt;
  58|    return;&lt;br /&gt;
  59| }&lt;br /&gt;
  60|  &lt;br /&gt;
  61| static void on_timeout(int sig)&lt;br /&gt;
  62| {&lt;br /&gt;
  63|    longjmp(j_buf, sig);&lt;br /&gt;
  64| } &lt;br /&gt;
&lt;br /&gt;
Contrairement à ce qui se passait en IPv4, l'entête IPv6 n'est pas incluse lors de la réception d'un paquet ICMPv6 (sauf si l'option I&amp;lt;tt&amp;gt;P_HDRINCL&amp;lt;/tt&amp;gt; est positionnée). Ainsi dans la fonction &amp;lt;tt&amp;gt;recv_icmp_pkt&amp;lt;/tt&amp;gt;, on commence directement par tester le champ identificateur et le numéro de séquence (lignes 84 et 85). Si ce test a été passé avec succès, c'est-à-dire que l'on a bien reçu le paquet attendu, la fonction &amp;lt;tt&amp;gt;recv_icmp_pkt&amp;lt;/tt&amp;gt; retourne &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; après avoir, s'il y en a, imprimé les données incluses dans le paquet. Dans le cas contraire, la valeur retournée est 1.&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
  65| static int recv_icmp_pkt(int noc, struct sockaddr_in6 *from, uint16_t id,&lt;br /&gt;
  66|                          uint16_t seq)&lt;br /&gt;
  67| {&lt;br /&gt;
  68| int opt_data_size;&lt;br /&gt;
  69| char from_ascii[INET6_ADDRSTRLEN];&lt;br /&gt;
  70| struct icmp6_hdr *icmp;&lt;br /&gt;
  71|  &lt;br /&gt;
  72|    if (inet_ntop(AF_INET6, &amp;amp;from-&amp;gt;sin6_addr, from_ascii,&lt;br /&gt;
  73|                  INET6_ADDRSTRLEN) == NULL) {&lt;br /&gt;
  74|       perror(&amp;quot;inet_ntop&amp;quot;);&lt;br /&gt;
  75|       return -1;&lt;br /&gt;
  76|    }&lt;br /&gt;
  77|    if (noc &amp;lt; sizeof(struct icmp6_hdr)) {&lt;br /&gt;
  78|       fprintf(stderr, &amp;quot;recv_icmp_pkt: packet too short from %s\n&amp;quot;,&lt;br /&gt;
  79|               from_ascii);&lt;br /&gt;
  80|       return -1;&lt;br /&gt;
  81|    }&lt;br /&gt;
  82|    opt_data_size = noc - sizeof(struct icmp6_hdr);&lt;br /&gt;
  83|    icmp = (struct icmp6_hdr *) buf;&lt;br /&gt;
  84|    if (icmp-&amp;gt;icmp6_id != id || icmp-&amp;gt;icmp6_seq != seq)&lt;br /&gt;
  85|       return 1;&lt;br /&gt;
  86|    fprintf(stdout, &amp;quot;Got answer from %s (seq = %d)\n&amp;quot;, from_ascii, seq);&lt;br /&gt;
  87|    if (opt_data_size &amp;gt; 0) {&lt;br /&gt;
  88|       fprintf(stdout, &amp;quot;with data [\n&amp;quot;);&lt;br /&gt;
  89|       fflush(stdout);&lt;br /&gt;
  90|       if (opt_data_size &amp;gt; MAX_DATALEN) {&lt;br /&gt;
  91|          fprintf(stderr,&lt;br /&gt;
  92|                  &amp;quot;recv_icmp_pkt: received too much data from %s\n&amp;quot;,&lt;br /&gt;
  93|                  from_ascii);&lt;br /&gt;
  94|       }&lt;br /&gt;
  95|       else&lt;br /&gt;
  96|          write(1, (char *) icmp + sizeof(struct icmp6_hdr), opt_data_size);&lt;br /&gt;
  97|       fprintf(stdout, &amp;quot;\n] (end of data)\n&amp;quot;);&lt;br /&gt;
  98|    }&lt;br /&gt;
  99|    return 0;&lt;br /&gt;
 100| }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;progprinc&amp;quot;&amp;gt;Programme principal&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Le programme principal ne présente pas de difficulté particulière puisqu'il est une application directe des fonctions décrites dans les deux sections précédentes.&lt;br /&gt;
&lt;br /&gt;
La première partie est triviale : elle concerne le traitement des (éventuelles) options.&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
   1| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
   2| #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
   3| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
   4| #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
   5| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
   6| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
   7| #include &amp;lt;netinet/icmp6.h&amp;gt;&lt;br /&gt;
   8| #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
   9| #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
  10| #ifdef __linux__&lt;br /&gt;
  11| #include &amp;lt;linux/version.h&amp;gt;&lt;br /&gt;
  12| #if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,4,19)&lt;br /&gt;
  13| #define LINUX_CKSUM_CALCUL_EXPLICITE&lt;br /&gt;
  14| #endif&lt;br /&gt;
  15| #endif&lt;br /&gt;
  16|  &lt;br /&gt;
  17| #ifndef TIMEOUT&lt;br /&gt;
  18| #define TIMEOUT 5&lt;br /&gt;
  19| #endif&lt;br /&gt;
  20|  &lt;br /&gt;
  21| extern int send_echo_request6(int, struct sockaddr_in6 *, uint16_t,&lt;br /&gt;
  22|                               uint16_t, char *, int);&lt;br /&gt;
  23| extern void wait_for_echo_reply6(int, struct sockaddr_in6 *, uint16_t,&lt;br /&gt;
  24|                                  uint16_t, int);&lt;br /&gt;
  25|  &lt;br /&gt;
  26| static void usage(char *);&lt;br /&gt;
  27|  &lt;br /&gt;
  28| int main(int argc, char **argv)&lt;br /&gt;
  29| {&lt;br /&gt;
  30| int sock, timeout = TIMEOUT, a, ecode;&lt;br /&gt;
  31| char *opt_data = NULL, *dst_ascii;&lt;br /&gt;
  32| int opt_data_size = 0;&lt;br /&gt;
  33| uint16_t id, seq = 0;&lt;br /&gt;
  34| struct sockaddr_in6 *dst;&lt;br /&gt;
  35| struct addrinfo *res;&lt;br /&gt;
  36| struct addrinfo hints = {&lt;br /&gt;
  37|                          AI_CANONNAME,&lt;br /&gt;
  38|                          PF_INET6,&lt;br /&gt;
  39|                          SOCK_RAW,&lt;br /&gt;
  40|                          IPPROTO_ICMPV6,&lt;br /&gt;
  41|                          0,&lt;br /&gt;
  42|                          NULL,&lt;br /&gt;
  43|                          NULL,&lt;br /&gt;
  44|                          NULL&lt;br /&gt;
  45|                         };&lt;br /&gt;
  46|  &lt;br /&gt;
  47|    while((a = getopt(argc, argv, &amp;quot;d:s:t:&amp;quot;)) != EOF)&lt;br /&gt;
  48|       switch(a) {&lt;br /&gt;
  49|       case 'd':&lt;br /&gt;
  50|          opt_data = optarg;&lt;br /&gt;
  51|          opt_data_size = strlen(optarg) + 1;&lt;br /&gt;
  52|          break;&lt;br /&gt;
  53|       case 's':&lt;br /&gt;
  54|          seq = (uint16_t) atoi(optarg);&lt;br /&gt;
  55|          break;&lt;br /&gt;
  56|       case 't':&lt;br /&gt;
  57|          timeout = atoi(optarg);&lt;br /&gt;
  58|          break;&lt;br /&gt;
  59|       default:&lt;br /&gt;
  60|          usage(*argv);&lt;br /&gt;
  61|       }&lt;br /&gt;
  62|       argc -= optind;&lt;br /&gt;
  63|       if (argc != 1)&lt;br /&gt;
  64|          usage(*argv);&lt;br /&gt;
  65|       argv += optind; &lt;br /&gt;
&lt;br /&gt;
Ensuite c'est la préparation de l'adresse de la socket distante, opération qui est devenue maintenant familière. Noter que l'on a affecté au champ &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt; de la structure &amp;lt;tt&amp;gt;hints&amp;lt;/tt&amp;gt; la valeur &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; lors de sa déclaration (ligne 38) : on doit s'assurer que la machine cible est une machine IPv6 (il n'existe pas de mode double pile avec utilisation d'[[Autres types d'adresses#mappee|adresse IPv4 mappé]] pour le protocole ICMP, car celui-ci a fortement changé entre IPv4 et IPv6). On s'est interdit des adresses destination de type multicast (lignes 73 à 76) car, comme l'on ne traite qu'un paquet en réception, cela n'aurait guère d'intérêt.&lt;br /&gt;
&lt;br /&gt;
On crée la socket qui servira à l'émission du paquet ECHO_REQUEST et à la réception du paquet ECHO_REPLY en provenance de la machine cible.&lt;br /&gt;
&lt;br /&gt;
À la ligne 96, la valeur du champ identificateur du paquet ICMPv6 est calculée en fonction du numéro de processus en prenant les 16 premiers bits. C'est une technique sûre (et simple) quant à la garantie de l'unicité de l'identificateur. Enfin le paquet ECHO_REQUEST est émis (&amp;lt;tt&amp;gt;send_echo_request6&amp;lt;/tt&amp;gt;) puis on attend la réponse éventuelle (&amp;lt;tt&amp;gt;wait_for_echo_reply6&amp;lt;/tt&amp;gt;).&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
  66|       ecode = getaddrinfo(*argv, NULL, &amp;amp;hints, &amp;amp;res);&lt;br /&gt;
  67|       if (ecode) {&lt;br /&gt;
  68|          fprintf(stderr, &amp;quot;getaddrinfo: %s\n&amp;quot;, gai_strerror(ecode));&lt;br /&gt;
  69|          exit(1);&lt;br /&gt;
  70|       }&lt;br /&gt;
  71|       dst_ascii = res-&amp;gt;ai_canonname ? res-&amp;gt;ai_canonname : *argv;&lt;br /&gt;
  72|       dst = (struct sockaddr_in6 *) res-&amp;gt;ai_addr;&lt;br /&gt;
  73|       if (IN6_IS_ADDR_MULTICAST(&amp;amp;dst-&amp;gt;sin6_addr)) {&lt;br /&gt;
  74|          fprintf(stderr, &amp;quot;%s multicast address not supported\n&amp;quot;, dst_ascii);&lt;br /&gt;
  75|          exit(1);&lt;br /&gt;
  76|       }&lt;br /&gt;
  77|       if ((sock = socket(res-&amp;gt;ai_family, res-&amp;gt;ai_socktype, res-&amp;gt;ai_protocol)) &amp;lt; 0) {&lt;br /&gt;
  78|          perror(&amp;quot;socket (RAW)&amp;quot;);&lt;br /&gt;
  79|          exit(1);&lt;br /&gt;
  80|       }&lt;br /&gt;
  81| #ifdef LINUX_CKSUM_CALCUL_EXPLICITE&lt;br /&gt;
  82|       {&lt;br /&gt;
  83|       /*&lt;br /&gt;
  84|        * Pour linux avant 2.4.19, il faut demander le calcul des checksums&lt;br /&gt;
  85|        * sur les sockets raw, meme pour des paquets icmpv6&lt;br /&gt;
  86|        */&lt;br /&gt;
  87| #define OFFSETOF(TYPE, MEMBER) ((size_t) &amp;amp;((TYPE *)0)-&amp;gt;MEMBER)&lt;br /&gt;
  88|        int off = OFFSETOF(struct icmp6_hdr, icmp6_cksum);&lt;br /&gt;
  89|  &lt;br /&gt;
  90|           if (setsockopt(sock, SOL_RAW, IPV6_CHECKSUM, &amp;amp;off, sizeof off) &amp;lt; 0) {&lt;br /&gt;
  91|              perror(&amp;quot;setsockopt (IPV6_CHECKSUM)&amp;quot;);&lt;br /&gt;
  92|              exit(1);&lt;br /&gt;
  93|           }&lt;br /&gt;
  94|      }&lt;br /&gt;
  95| #endif&lt;br /&gt;
  96|      id = (uint16_t) (getpid() &amp;amp; 0xffff);&lt;br /&gt;
  97|      fprintf(stdout, &amp;quot;Sending ECHO REQUEST to: %s\n&amp;quot;, dst_ascii);&lt;br /&gt;
  98|      if (send_echo_request6(sock, dst, id, seq, opt_data,&lt;br /&gt;
  99|                             opt_data_size) &amp;lt; 0)&lt;br /&gt;
 100|         exit(1);&lt;br /&gt;
 101|      fprintf(stdout, &amp;quot;Waiting for answer (timeout = %ds)...\n&amp;quot;, timeout);&lt;br /&gt;
 102|      wait_for_echo_reply6(sock, dst, id, seq, timeout);&lt;br /&gt;
 103|      close(sock);&lt;br /&gt;
 104|      exit(0);&lt;br /&gt;
 105| }&lt;br /&gt;
 106|  &lt;br /&gt;
 107| static void usage(char *s)&lt;br /&gt;
 108| {&lt;br /&gt;
 109|    fprintf(stderr, &amp;quot;Usage: %s [-d data] [-s seq] [-t timeout] host | addr\n&amp;quot;, s);&lt;br /&gt;
 110|    exit(1);&lt;br /&gt;
 111| }&lt;br /&gt;
{{suivi| Exemple de client/serveur TCP | Exemple de client/serveur TCP | Utilisation du multicast | Utilisation du multicast }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Exemple_de_client/serveur_TCP&amp;diff=2957</id>
		<title>Exemple de client/serveur TCP</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Exemple_de_client/serveur_TCP&amp;diff=2957"/>
				<updated>2006-02-27T11:02:26Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| La commande haah (host-address-address-host) | La commande haah (host-address-address-host) | mini-ping | mini-ping }}&lt;br /&gt;
==Vue d'ensemble==&lt;br /&gt;
&lt;br /&gt;
Le client/serveur choisi est particulièrement simple quant à sa fonction de service, de façon à privilégier l'aspect réseau dans la présentation. Il calcule le nombre d'utilisateurs connectés sur une machine donnée. Plus précisément :&lt;br /&gt;
&lt;br /&gt;
 $ '''nbus bernays'''&lt;br /&gt;
 3 user(s) logged on bernays&lt;br /&gt;
 $&lt;br /&gt;
&lt;br /&gt;
Il se compose de cinq fichiers sources :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;nbus.h&amp;lt;/tt&amp;gt; le fichier d'en-tête commun aux fichiers sources du client et du serveur&lt;br /&gt;
* &amp;lt;tt&amp;gt;nbus.c&amp;lt;/tt&amp;gt; le fichier source principal du client&lt;br /&gt;
* &amp;lt;tt&amp;gt;open_conn.c&amp;lt;/tt&amp;gt; le fichier source qui gère les connexions du côté client&lt;br /&gt;
* &amp;lt;tt&amp;gt;nbusd.c&amp;lt;/tt&amp;gt; le fichier source du serveur propre au service&lt;br /&gt;
* &amp;lt;tt&amp;gt;serv_daemon.c&amp;lt;/tt&amp;gt; le fichier source qui gère les connexions du côté serveur&lt;br /&gt;
&lt;br /&gt;
Le client, prend en argument un nom de machine (ou une adresse numérique), le convertit en une adresse IPv4 ou IPv6 et ainsi envoie ses requêtes à un serveur.&lt;br /&gt;
&lt;br /&gt;
Le fichier source du serveur, selon les options de compilation, génère un code IPv6 ou un code IPv4. Dans le premier cas, le serveur est à même de satisfaire les requêtes d'un client IPv6 mais aussi d'un client IPv4. Dans le second cas, seuls les clients IPv4 pourront être pris en compte.&lt;br /&gt;
&lt;br /&gt;
Il faut noter qu'il existe deux modes de fonctionnement pour une machine à double pile IPv4 et IPv6, la figure Le client/serveur nbus résume la situation. Soit les espaces d'adresses sont disjoints, et dans ce cas il faut deux serveurs, un qui écoute les requêtes IPv4 (&amp;lt;tt&amp;gt;nbus4d&amp;lt;/tt&amp;gt;) et un qui écoute les requêtes IPv6 (&amp;lt;tt&amp;gt;nbus6d&amp;lt;/tt&amp;gt;) (ou un seul serveur, &amp;lt;tt&amp;gt;nbusd&amp;lt;/tt&amp;gt;, avec deux sockets IPv4 et IPv6 séparées). Soit l'espace d'adresse IPv4 est inclus dans l'espace IPv6 et dans ce cas il suffit d'un serveur IPv6 (&amp;lt;tt&amp;gt;nbus6d&amp;lt;/tt&amp;gt;) qui recevra les requêtes venant en IPv4 comme une requête IPv6 venant d'une adresse &amp;quot;IPv4 mappée&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[image:CS192.gif]]&lt;br /&gt;
&lt;br /&gt;
Suivant les systèmes le mode de fonctionnement est prédéfini, configurable globalement dans le noyeau, ou configurable séparément pour chaque socket IPv6. Ainsi en FreeBSD le mode par défaut est &amp;quot;espace partagé&amp;quot; (choix modifiable par &amp;quot;&amp;lt;tt&amp;gt;sysctl -w net.inet6.ip6.v6only=1&amp;lt;/tt&amp;gt;&amp;quot;) et modifiable pour chaque socket, en précisant tcp4, tcp6 ou tcp46 dans le fichier de configuration d'inetd, ou en utilisant &amp;quot;&amp;lt;tt&amp;gt;setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY,&amp;amp;val)&amp;lt;/tt&amp;gt;&amp;quot; dans le code du serveur.&lt;br /&gt;
&lt;br /&gt;
Deux mêmes programmes serveur ne peuvent s'exécuter en même temps sur une machine : chaque serveur réserve le port nbus (par un bind) et par suite si un serveur est lancé, tout autre serveur échouera avec une erreur &amp;quot;port en service&amp;quot; (&amp;lt;tt&amp;gt;EADDRINUSE&amp;lt;/tt&amp;gt;). Cela peut être aussi vrai entre les deux types de serveurs, nbus4d et nbus6d sur une machine &amp;quot;double pile avec espace partagé&amp;quot;, car les espaces de service TCP et UDP sont communs à IPv4 et IPv6 et un port en service l'est aussi bien en IPv4 qu'en IPv6 ; simplement si le port correspond à une socket &amp;lt;tt&amp;gt;PF_INET&amp;lt;/tt&amp;gt;, une requête de connexion IPv6 sera rejetée avec une erreur &amp;quot;port inaccessible&amp;quot;. Dans la réalité le comportement est plus complexe. Même en mode &amp;quot;double pile avec espace partagé&amp;quot;, on peut avoir deux sockets, l'une PF_INET et l'autre PF_INET6, comme le montre le programme nbusd.&lt;br /&gt;
&lt;br /&gt;
Le code des différents serveurs est très semblable, le choix est fait en donnant une option à la compilation : &amp;lt;tt&amp;gt;nbusd&amp;lt;/tt&amp;gt; par défaut, &amp;lt;tt&amp;gt;nbus4d&amp;lt;/tt&amp;gt; si on ajoute l'option -DIPV4,et &amp;lt;tt&amp;gt;nbus6d&amp;lt;/tt&amp;gt; si on ajoute l'option &amp;lt;tt&amp;gt;-DIPV6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le fichier d'en-tête &amp;lt;tt&amp;gt;nbus.h&amp;lt;/tt&amp;gt; ne contient que le nom du service correspondant.&lt;br /&gt;
&lt;br /&gt;
 #define SERVICE &amp;quot;nbus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ainsi doit-on trouver, par exemple, dans le fichier &amp;lt;tt&amp;gt;/etc/services&amp;lt;/tt&amp;gt; des machines concernées, la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
 nbus 20000/tcp&lt;br /&gt;
&lt;br /&gt;
Le programme client nbus établit tout d'abord une connexion TCP avec la machine cible (donnée en argument à &amp;lt;tt&amp;gt;nbus&amp;lt;/tt&amp;gt;) via la fonction &amp;lt;tt&amp;gt;open_conn&amp;lt;/tt&amp;gt; (cette fonction sera décrite ci-après). Il lit ensuite un entier court, résultat du calcul du nombre d'utilisateurs connectés sur la machine cible, puis l'imprime.&lt;br /&gt;
&lt;br /&gt;
On notera la présence de la macro &amp;lt;tt&amp;gt;ntohs&amp;lt;/tt&amp;gt; rendue nécessaire du fait des représentations différentes des entiers selon les machines.&lt;br /&gt;
 &lt;br /&gt;
  1| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  2| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
  3|  &lt;br /&gt;
  4| #include &amp;quot;nbus.h&amp;quot;&lt;br /&gt;
  5|  &lt;br /&gt;
  6| extern open_conn(char *, char *);&lt;br /&gt;
  7|  &lt;br /&gt;
  8| int main(int argc, char **argv)&lt;br /&gt;
  9| {&lt;br /&gt;
 10|    int sock;&lt;br /&gt;
 11|    short nu; &lt;br /&gt;
 12| &lt;br /&gt;
 13|    if (argc != 2) {&lt;br /&gt;
 14|       fprintf(stderr, &amp;quot;Usage: %s host\n&amp;quot;, argv[0]);&lt;br /&gt;
 15|       exit(1);&lt;br /&gt;
 16|    }&lt;br /&gt;
 17|    if ((sock = open_conn(argv[1], SERVICE)) &amp;lt; 0)&lt;br /&gt;
 18|       exit(1);&lt;br /&gt;
 19|    read(sock, (char *) &amp;amp;nu, sizeof(nu));&lt;br /&gt;
 20|    nu = ntohs(nu);&lt;br /&gt;
 21|    if (nu == -1) {&lt;br /&gt;
 22|       fprintf(stderr, &amp;quot;Can't read \&amp;quot;utmp\&amp;quot; on %s\n&amp;quot;, argv[1]);&lt;br /&gt;
 23|       exit(1);&lt;br /&gt;
 24|    }&lt;br /&gt;
 25|    if (nu) {&lt;br /&gt;
 26|       fprintf(stdout, &amp;quot;%d user(s) logged on %s\n&amp;quot;, nu, argv[1]);&lt;br /&gt;
 27|       exit(0);&lt;br /&gt;
 28|    }&lt;br /&gt;
 29|    fprintf(stdout, &amp;quot;Nobody on %s\n&amp;quot;, argv[1]);&lt;br /&gt;
 30|    exit(0);&lt;br /&gt;
 31| }&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;tt&amp;gt;nbusd&amp;lt;/tt&amp;gt;, quant à lui, lance en tâche de fond un processus &amp;quot;démon&amp;quot; qui exécutera la fonction de service nbus (lignes 28 à 60) à chaque requête d'un client. Ce processus démon est réalisé par la fonction &amp;lt;tt&amp;gt;serv_daemon&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
  1| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  2| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
  3| #include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
  4| #include &amp;lt;utmp.h&amp;gt;&lt;br /&gt;
  5| #include &amp;lt;sys/socket.h&amp;gt; &lt;br /&gt;
  6| &lt;br /&gt;
  7| #include &amp;quot;nbus.h&amp;quot; &lt;br /&gt;
  8|  &lt;br /&gt;
  9| &lt;br /&gt;
 10| #if defined(IPV6)&lt;br /&gt;
 11| #define FAMILY PF_INET6&lt;br /&gt;
 12| #elif defined(IPV4)&lt;br /&gt;
 13| #define FAMILY PF_INET&lt;br /&gt;
 14| #else&lt;br /&gt;
 15| #define FAMILY PF_UNSPEC&lt;br /&gt;
 16| #endif&lt;br /&gt;
 17| &lt;br /&gt;
 18| extern serv_daemon(int, char *, void (*)(int), char *);&lt;br /&gt;
 19| &lt;br /&gt;
 20| void nbus(int);&lt;br /&gt;
 21| &lt;br /&gt;
 22| int main(void)&lt;br /&gt;
 23| {&lt;br /&gt;
 24|    serv_daemon(FAMILY, SERVICE, nbus, NULL);&lt;br /&gt;
 25|   exit(0);&lt;br /&gt;
 26| }&lt;br /&gt;
 27| &lt;br /&gt;
 28| void nbus(int sock)&lt;br /&gt;
 29| {&lt;br /&gt;
 30|    short nu = -1;&lt;br /&gt;
 31| #ifdef USER_PROCESS /* Solaris/Linux, use getutent */&lt;br /&gt;
 32|    struct utmp *up;&lt;br /&gt;
 33| &lt;br /&gt;
 34|    up = getutent();&lt;br /&gt;
 35|    if (up != NULL) {&lt;br /&gt;
 36|       for (nu = 0; up != NULL; up = getutent())&lt;br /&gt;
 37|       if (up-&amp;gt;ut_type == USER_PROCESS)&lt;br /&gt;
 38|       nu++;&lt;br /&gt;
 39|    }&lt;br /&gt;
 40|    endutent();&lt;br /&gt;
 41| #else /* *BSD read directly utmp file */&lt;br /&gt;
 42| #ifndef UTMP&lt;br /&gt;
 43| #define UTMP &amp;quot;/var/run/utmp&amp;quot; /* for FreeBSD/NetBSD */&lt;br /&gt;
 44| #endif&lt;br /&gt;
 45| &lt;br /&gt;
 46|    struct utmp ut;&lt;br /&gt;
 47|    int fd;&lt;br /&gt;
 48| &lt;br /&gt;
 49|   if ((fd = open(UTMP, O_RDONLY)) &amp;gt;= 0) {&lt;br /&gt;
 50|       nu = 0;&lt;br /&gt;
 51|       while (read(fd, (char *) &amp;amp;ut, sizeof(ut)) == sizeof(ut))&lt;br /&gt;
 52|       if (ut.ut_name[0])&lt;br /&gt;
 53|       nu++;&lt;br /&gt;
 54|    }&lt;br /&gt;
 55|    close(fd);&lt;br /&gt;
 56| #endif&lt;br /&gt;
 57|    nu = htons(nu);&lt;br /&gt;
 58|    write(sock, (char *) &amp;amp;nu, sizeof(nu));&lt;br /&gt;
 59|    return;&lt;br /&gt;
 60| }&lt;br /&gt;
&lt;br /&gt;
==L'établissement d'une connexion TCP, côté client==&lt;br /&gt;
&lt;br /&gt;
Comme on l'a vu plus haut dans le code du client &amp;lt;tt&amp;gt;nbus.c&amp;lt;/tt&amp;gt;, l'établissement de la connexion TCP se fait au moyen de la fonction &amp;lt;tt&amp;gt;open_conn&amp;lt;/tt&amp;gt;. Cette fonction prend en premier argument le nom de la machine avec laquelle on va établir la connexion TCP et en deuxième argument le nom du service tel qu'il apparaît dans le fichier &amp;lt;tt&amp;gt;/etc/services&amp;lt;/tt&amp;gt;. La valeur retournée par &amp;lt;tt&amp;gt;open_conn&amp;lt;/tt&amp;gt; est soit &amp;lt;tt&amp;gt;-1&amp;lt;/tt&amp;gt; en cas d'erreur, soit le descripteur associé à la socket réalisant la connexion. La figure Algorithme du client visualise l'algorithme employé.&lt;br /&gt;
&lt;br /&gt;
[[image:CS193.gif]]&lt;br /&gt;
&lt;br /&gt;
La première étape sera la construction de l'adresse de la socket distante, ceci via la primitive getaddrinfo. On remarquera que le champ &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt; de la structure &amp;lt;tt&amp;gt;hints&amp;lt;/tt&amp;gt; a été initialisé à la valeur &amp;lt;tt&amp;gt;PF_UNSPEC&amp;lt;/tt&amp;gt;, ce qui signifie que, suivant que l'on donne en argument à la commande nbus un nom de machine (ou une adresse numérique) IPv4 ou IPv6, on travaillera avec une socket soit dans la famille des protocoles &amp;lt;tt&amp;gt;PF_INET&amp;lt;/tt&amp;gt;, soit dans la famille des protocoles &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt;. Si on avait fait le choix de forcer la famille des protocoles à la valeur &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt;, il aurait fallu initialiser les champs &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt; respectivement aux valeurs &amp;lt;tt&amp;gt;AI_V4MAPPED&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; (les adresses IPv4 seraient dans ce cas &amp;quot;mappées&amp;quot;). Si, comme dans l'exemple proposé, on ne fait pas ce choix, on notera qu'il n'y a aucune différence entre le code IPv4 et le code IPv6.&lt;br /&gt;
&lt;br /&gt;
Ensuite, après avoir créé une socket, on la connecte au serveur de la machine cible (primitive &amp;lt;tt&amp;gt;connect&amp;lt;/tt&amp;gt;). Là encore, le code est le même pour IPv4 et IPv6. Remarquons que &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; peut avoir rendu plusieurs valeurs. Un programme plus évolué devrait essayer de se connecter à chaque adresse rendue jusqu'à obtenir une réponse.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  1| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  2| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
  3| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
  4| #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
  5| 	&lt;br /&gt;
  6| int open_conn(char *host, char *serv)&lt;br /&gt;
  7| {&lt;br /&gt;
  8|    int sock, ecode;&lt;br /&gt;
  9|    struct addrinfo *res;&lt;br /&gt;
 10|    struct addrinfo hints = {&lt;br /&gt;
 11|       0,&lt;br /&gt;
 12|       PF_UNSPEC,&lt;br /&gt;
 13|       SOCK_STREAM,&lt;br /&gt;
 14|       0,&lt;br /&gt;
 15|       0,&lt;br /&gt;
 16|       NULL,&lt;br /&gt;
 17|       NULL,&lt;br /&gt;
 18|       NULL&lt;br /&gt;
 19|    };&lt;br /&gt;
 20| &lt;br /&gt;
 21|    ecode = getaddrinfo(host, serv, &amp;amp;hints, &amp;amp;res);&lt;br /&gt;
 22| &lt;br /&gt;
 23|    if (ecode) {&lt;br /&gt;
 24|       fprintf(stderr, &amp;quot;getaddrinfo: %s\n&amp;quot;, gai_strerror(ecode));&lt;br /&gt;
 25|       exit(1);&lt;br /&gt;
 26|    }&lt;br /&gt;
 27| &lt;br /&gt;
 28|    if ((sock = socket(res-&amp;gt;ai_family, res-&amp;gt;ai_socktype, res-&amp;gt;ai_protocol)) &amp;lt; 0) {&lt;br /&gt;
 29|       freeaddrinfo(res);&lt;br /&gt;
 30|       perror(&amp;quot;socket&amp;quot;);&lt;br /&gt;
 31|       return -1;&lt;br /&gt;
 32|    }&lt;br /&gt;
 33|  &lt;br /&gt;
 34|   if (connect(sock, res-&amp;gt;ai_addr, res-&amp;gt;ai_addrlen) &amp;lt; 0) {&lt;br /&gt;
 35|       close(sock);&lt;br /&gt;
 36|       freeaddrinfo(res);&lt;br /&gt;
 37|       perror(&amp;quot;connect&amp;quot;);&lt;br /&gt;
 38|       return -1;&lt;br /&gt;
 39|    }&lt;br /&gt;
 40|    freeaddrinfo(res);&lt;br /&gt;
 41|    return sock;&lt;br /&gt;
 42| }&lt;br /&gt;
&lt;br /&gt;
==Le serveur==&lt;br /&gt;
&lt;br /&gt;
Le serveur proprement dit est réalisé par une unique fonction. C'est la fonction &amp;lt;tt&amp;gt;serv_daemon&amp;lt;/tt&amp;gt; qui a quatre arguments. Le premier est la famille d'adresse gérée, &amp;lt;tt&amp;gt;PF_INET&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt;, ou &amp;lt;tt&amp;gt;PF_UNSPEC&amp;lt;/tt&amp;gt; pour écouter dans les deux familles. Le deuxième est, comme dans le cas de &amp;lt;tt&amp;gt;open_conn&amp;lt;/tt&amp;gt;, le nom du service tel qu'il apparaît dans le fichier &amp;lt;tt&amp;gt;/etc/services&amp;lt;/tt&amp;gt;. Le troisième argument est un pointeur vers la fonction de service dont le type &amp;lt;tt&amp;gt;(int(*)(void))&amp;lt;/tt&amp;gt; sera commenté ultérieurement. Enfin le dernier argument est le nom passé au démon &amp;lt;tt&amp;gt;syslogd&amp;lt;/tt&amp;gt; lors de l'impression des messages d'erreur [[(ligne See )]]. Si le dernier argument est le pointeur nul, ce nom est par défaut le nom du service. Un aperçu du déroulement de la fonction &amp;lt;tt&amp;gt;serv_daemon&amp;lt;/tt&amp;gt; est donné par la figure Algorithme du serveur.&lt;br /&gt;
&lt;br /&gt;
[[image:CS194.gif]]&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
   1| #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
   2| #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
   3| #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
   4| #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
   5| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
   6| #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
   7| #include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
   8| #include &amp;lt;syslog.h&amp;gt;&lt;br /&gt;
   9| #include &amp;lt;sys/select.h&amp;gt;&lt;br /&gt;
  10| #include &amp;lt;sys/wait.h&amp;gt;&lt;br /&gt;
  11|  &lt;br /&gt;
  12| static void reap_child(int); &lt;br /&gt;
  13| 	&lt;br /&gt;
  14| void serv_daemon(int family, char *serv, void (*serv_funct)(int), char *serv_logname)&lt;br /&gt;
  15| {&lt;br /&gt;
  16|    int sock[2], ecode, n = 0;&lt;br /&gt;
  17|    struct addrinfo *res, *rres, hints;&lt;br /&gt;
  18|   &lt;br /&gt;
  19|    memset(&amp;amp;hints, 0, sizeof hints) ;&lt;br /&gt;
  20|    hints.ai_flags = AI_PASSIVE;&lt;br /&gt;
  21|    hints.ai_socktype = SOCK_STREAM;&lt;br /&gt;
  22|    hints.ai_family = family;&lt;br /&gt;
  23|    ecode = getaddrinfo(NULL, serv, &amp;amp;hints, &amp;amp;rres);&lt;br /&gt;
  24|    if (ecode) {&lt;br /&gt;
  25|       fprintf(stderr, &amp;quot;getaddrinfo: %s\n&amp;quot;, gai_strerror(ecode));&lt;br /&gt;
  26|       exit(1);&lt;br /&gt;
  27|    }&lt;br /&gt;
  28|    for (res = rres; res; res = res-&amp;gt;ai_next) {&lt;br /&gt;
  29|       if (n == 2) { /* au plus 2 : anyaddr PF_INET et anyaddr PF_INET6 */&lt;br /&gt;
  30|         fprintf(stderr, &amp;quot;erreur interne: trop d'adresses\n&amp;quot;);&lt;br /&gt;
  31|         exit(1);&lt;br /&gt;
  32|       }&lt;br /&gt;
  33|       sock[n] = socket(res-&amp;gt;ai_family, res-&amp;gt;ai_socktype, res-&amp;gt;ai_protocol);&lt;br /&gt;
  34|       if (sock[n] &amp;lt; 0) {&lt;br /&gt;
  35|          perror(&amp;quot;socket&amp;quot;);&lt;br /&gt;
  36|          exit(1);&lt;br /&gt;
  37|       }&lt;br /&gt;
  38|       if (bind(sock[n], res-&amp;gt;ai_addr, res-&amp;gt;ai_addrlen) &amp;lt; 0) {&lt;br /&gt;
  39|          perror(&amp;quot;bind&amp;quot;);&lt;br /&gt;
  40|          exit(1);&lt;br /&gt;
  41|       }&lt;br /&gt;
  42|       listen(sock[n], SOMAXCONN);&lt;br /&gt;
  43|       n++;&lt;br /&gt;
  44|       #ifdef __linux__&lt;br /&gt;
  45|                       /* En Linux, utiliser seulement la premiere&lt;br /&gt;
  46|                        * reponse, sinon on a un conflit sur bind */&lt;br /&gt;
  47|       break;&lt;br /&gt;
  48|       #endif&lt;br /&gt;
  49|    }&lt;br /&gt;
  50|    freeaddrinfo(rres);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première étape consiste en la préparation de l'adresse de la socket d'écoute du serveur en faisant appel, comme d'habitude, à la primitive &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt;. Comme il s'agit d'une socket d'écoute, le champ &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; de la structure &amp;lt;tt&amp;gt;hints&amp;lt;/tt&amp;gt; a été initialisé à la valeur &amp;lt;tt&amp;gt;AI_PASSIVE&amp;lt;/tt&amp;gt; tandis que le champ &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt; de cette même structure a lui été initialisé à la valeur passé en argument à l'appel.&lt;br /&gt;
&lt;br /&gt;
Pour chaque réponse de getaddrinfo (une seule si la famille est définie, deux si la famille est &amp;lt;tt&amp;gt;PF_UNSPEC&amp;lt;/tt&amp;gt;), on crée une socket d'écoute, puis effectue son attachement en faisant appel à la primitive &amp;lt;tt&amp;gt;bind&amp;lt;/tt&amp;gt;. La socket d'écoute créée et attachée à une adresse, le serveur doit signifier au système qu'il est prêt à accepter les demandes de connexions. C'est l'objet de la primitive listen dont le deuxième argument &amp;lt;tt&amp;gt;SOMAXCONN&amp;lt;/tt&amp;gt; (macro-définition que l'on trouve dans le fichier &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;) est le nombre maximal de connexions pendantes.&lt;br /&gt;
&lt;br /&gt;
Dans les lignes qui suivent (51 à 58), le processus est détaché du terminal de contrôle et est lancé en tâche de fond (processus &amp;quot;démon&amp;quot;), sauf en Solaris, le code étant trop différent, si le fichier source n'est pas compilé avec l'option &amp;lt;tt&amp;gt;-DDEBUG&amp;lt;/tt&amp;gt; (dans le cas contraire, cela peut être bien utile lors de la phase de mise au point).&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
  51|    #ifndef DEBUG&lt;br /&gt;
  52|    #ifndef sun /* no daemon function in Solaris */&lt;br /&gt;
  53|    if (daemon(0, 0) &amp;lt; 0) {&lt;br /&gt;
  54|       perror(&amp;quot;daemon&amp;quot;);&lt;br /&gt;
  55|       exit(1);&lt;br /&gt;
  56|    }&lt;br /&gt;
  57|    #endif&lt;br /&gt;
  58|    #endif &lt;br /&gt;
&lt;br /&gt;
Dans la boucle sans fin [[(lignes See à See )]], on attend les connexions. Comme il peut y avoir plusieurs sockets actives, on utilise select [[(lignes See à See )]] pour attendre sur toutes les sockets ouverts. Au retour de &amp;lt;tt&amp;gt;select&amp;lt;/tt&amp;gt;, on teste les sockets qui ont des connexions pendantes [[(ligne See )]], chaque connexion pendante dans la file d'attente associée à la socket d'écoute est extraite par le serveur et le circuit virtuel avec la socket du client est établi via la création d'une nouvelle socket. Ce travail est effectué par la primitive &amp;lt;tt&amp;gt;accept&amp;lt;/tt&amp;gt; dont la valeur de retour est le descripteur d'E/S de la socket nouvellement créée. Ensuite le serveur crée un processus fils [[(ligne See )]] qui exécutera la fonction de service à laquelle on passe en argument la valeur retournée par la primitive accept.&lt;br /&gt;
&lt;br /&gt;
Il faut également veiller à ce que chaque processus fils, lors de sa terminaison (qui se produit à la fin de l'exécution de la fonction de service), ne devienne un processus &amp;quot;zombie&amp;quot;, ce qui à terme peut provoquer une saturation de la table des processus. Pour cela il faut, sous UNIX BSD, capter le signal &amp;lt;tt&amp;gt;SIGCHLD&amp;lt;/tt&amp;gt; [[(ligne See , fonction reap_child)]]. Notons qu'en SYSTEM V, on pourrait simplement ignorer le signal &amp;lt;tt&amp;gt;SIGCLD&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
	&lt;br /&gt;
  59|       signal(SIGCHLD, reap_child);&lt;br /&gt;
  60|       if (!serv_logname)&lt;br /&gt;
  61|          serv_logname = serv;&lt;br /&gt;
  62|       openlog(serv_logname, LOG_PID | LOG_CONS, LOG_USER);&lt;br /&gt;
  63|       for (;;) {&lt;br /&gt;
  64|          int a, f, len, fd, m = -1;&lt;br /&gt;
  65|          struct sockaddr_storage from;&lt;br /&gt;
  66|          fd_set fdset;&lt;br /&gt;
  67|   &lt;br /&gt;
  68|          FD_ZERO(&amp;amp;fdset);&lt;br /&gt;
  69|          for (fd = 0; fd &amp;lt; n; fd++) {&lt;br /&gt;
  70|             if (m &amp;lt; sock[fd])&lt;br /&gt;
  71|                m = sock[fd];&lt;br /&gt;
  72|             FD_SET(sock[fd], &amp;amp;fdset);&lt;br /&gt;
  73|          }&lt;br /&gt;
  74|          ecode = select(m+1, &amp;amp;fdset, NULL, NULL, NULL);&lt;br /&gt;
  75|          if (ecode &amp;lt; 0)&lt;br /&gt;
  76|             syslog(LOG_ERR, &amp;quot;%s: select: %m&amp;quot;, serv);&lt;br /&gt;
  77|          if (ecode &amp;lt;= 0)&lt;br /&gt;
  78|             break;&lt;br /&gt;
  79|          for (fd = 0; fd &amp;lt; n; fd++) {&lt;br /&gt;
  80|            if (FD_ISSET(sock[fd], &amp;amp;fdset)) {&lt;br /&gt;
  81|               len = sizeof from;&lt;br /&gt;
  82|               a = accept(sock[fd], (struct sockaddr *)&amp;amp;from, &amp;amp;len);&lt;br /&gt;
  83|               if (a &amp;lt; 0) {&lt;br /&gt;
  84|                  if (errno != EINTR)&lt;br /&gt;
  85|                   syslog(LOG_ERR, &amp;quot;%s: accept: %m&amp;quot;, serv);&lt;br /&gt;
  86|                   continue;&lt;br /&gt;
  87|               }&lt;br /&gt;
  88|               f = fork(); &lt;br /&gt;
  89|               if (f == 0) {&lt;br /&gt;
  80|                  /* Par correction, il faudrait fermer dans le fils&lt;br /&gt;
  90|                   * tous les descripteurs hérités (i.e. tous sauf a) */&lt;br /&gt;
  91|                  serv_funct(a);&lt;br /&gt;
  92|                  exit(0);&lt;br /&gt;
  93|               }&lt;br /&gt;
  94|               close(a);&lt;br /&gt;
  95|               if (f == -1) {&lt;br /&gt;
  96|                   syslog(LOG_ERR, &amp;quot;%s: fork: %m&amp;quot;, serv);&lt;br /&gt;
  97|                   continue;&lt;br /&gt;
  98|               }&lt;br /&gt;
  99|           }&lt;br /&gt;
 100|        }&lt;br /&gt;
 101|    }&lt;br /&gt;
 102| }&lt;br /&gt;
 103|   &lt;br /&gt;
 104| static void reap_child(int sig)&lt;br /&gt;
 105| {&lt;br /&gt;
 106|    int status;&lt;br /&gt;
 107|  &lt;br /&gt;
 108|    while (wait3(&amp;amp;status, WNOHANG, NULL) &amp;gt; 0);&lt;br /&gt;
 109| }&lt;br /&gt;
&lt;br /&gt;
Une dernière remarque toujours à propos de la similitude des codes IPv6 et IPv4 : la seule différence dans le code de &amp;lt;tt&amp;gt;serv_daemon&amp;lt;/tt&amp;gt; entre IPv4 et IPv6 est la valeur du premier argument, qui définit la famille d'adresses écoutée.&lt;br /&gt;
{{suivi| La commande haah (host-address-address-host) | La commande haah (host-address-address-host) | mini-ping | mini-ping }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=La_commande_haah_(host-address-address-host)&amp;diff=2956</id>
		<title>La commande haah (host-address-address-host)</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=La_commande_haah_(host-address-address-host)&amp;diff=2956"/>
				<updated>2006-02-27T10:53:51Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Les primitives de conversion entre noms et adresses | Les primitives de conversion entre noms et adresses | Exemple de client/serveur TCP | Exemple de client/serveur TCP }}&lt;br /&gt;
L'exemple proposé n'est autre qu'une sorte de nslookup (très) simplifié. Si par exemple on lui donne en argument une adresse numérique (IPv4 ou IPv6), il imprime le nom complètement qualifié correspondant lorsque la requête DNS aboutit. L'extrait de session qui suit illustre l'utilisation de cette commande.&lt;br /&gt;
&lt;br /&gt;
 $ '''haah bernays'''&lt;br /&gt;
 Canonical name:&lt;br /&gt;
 bernays.ipv6.logique.jussieu.fr&lt;br /&gt;
 Adresses:&lt;br /&gt;
 2001:660:101:101:200:f8ff:fe31:17ec&lt;br /&gt;
 3ffe:304:101:1:200:f8ff:fe31:17ec&lt;br /&gt;
 $ '''haah 134.157.19.71'''&lt;br /&gt;
 Canonical name:&lt;br /&gt;
 bernays.logique.jussieu.fr&lt;br /&gt;
 Adresses:&lt;br /&gt;
 134.157.19.71&lt;br /&gt;
 $&lt;br /&gt;
&lt;br /&gt;
Le programme réalisant la commande &amp;lt;tt&amp;gt;haah&amp;lt;/tt&amp;gt; ne présente aucune difficulté. C'est une simple application des primitives précédemment décrites.&lt;br /&gt;
&lt;br /&gt;
  1| #include &amp;lt;stdio.h&amp;gt; &amp;lt;/tt&amp;gt;&lt;br /&gt;
  2|&lt;br /&gt;
  3| #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
  4| #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
  5| #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
  6| #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
  7| #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
  8| #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
  9| #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
 10|&lt;br /&gt;
 11| &lt;br /&gt;
 12| int main(int argc, char **argv)&lt;br /&gt;
 13| {&lt;br /&gt;
 14|    int ret;&lt;br /&gt;
 15|    struct addrinfo *res, *ptr;&lt;br /&gt;
 16|    struct addrinfo hints = {&lt;br /&gt;
 17|       AI_CANONNAME,&lt;br /&gt;
 18|       PF_UNSPEC,&lt;br /&gt;
 19|       SOCK_STREAM,&lt;br /&gt;
 20|       0,&lt;br /&gt;
 21|       0,&lt;br /&gt;
 22|       NULL,&lt;br /&gt;
 23|       NULL,&lt;br /&gt;
 24|       NULL&lt;br /&gt;
 25|    };&lt;br /&gt;
 26|  	&lt;br /&gt;
 27|    if (argc != 2) {&lt;br /&gt;
 28|       fprintf(stderr, &amp;quot;%s: usage: %s host | addr.\n&amp;quot;, *argv, *argv);&lt;br /&gt;
 29|       exit(1);&lt;br /&gt;
 30|    }&lt;br /&gt;
 31|    ret = getaddrinfo(argv[1], NULL, &amp;amp;hints, &amp;amp;res);&lt;br /&gt;
 32|    if (ret) {&lt;br /&gt;
 33|       fprintf(stderr, &amp;quot;getaddrinfo: %s\n&amp;quot;, gai_strerror(ret));&lt;br /&gt;
 34|       exit(1);&lt;br /&gt;
 35|    }&lt;br /&gt;
 37|    for (ptr = res; ptr; ptr = ptr-&amp;gt;ai_next) {&lt;br /&gt;
 38|       if (ptr-&amp;gt;ai_canonname)&lt;br /&gt;
 39|          fprintf(stdout,&amp;quot;Canonical name:\n%s\nAdresses:\n&amp;quot;, ptr-&amp;gt;ai_canonname);&lt;br /&gt;
 40|       switch (ptr-&amp;gt;ai_family) {&lt;br /&gt;
 41|          case AF_INET:&lt;br /&gt;
 42|          {&lt;br /&gt;
 43|             char dst[INET_ADDRSTRLEN];&lt;br /&gt;
 44|             struct in_addr *src = &amp;amp;((struct sockaddr_in *) ptr-&amp;gt;ai_addr)-&amp;gt;sin_addr;&lt;br /&gt;
 45|      &lt;br /&gt;
 46|             if(!inet_ntop(AF_INET, (const void *) src, dst, sizeof(dst))) {&lt;br /&gt;
 47|                fprintf(stderr, &amp;quot;inet_ntop: %s\n&amp;quot;, strerror(errno));&lt;br /&gt;
 48|                break;&lt;br /&gt;
 49|             }&lt;br /&gt;
 50|             fprintf(stdout, &amp;quot;%s\n&amp;quot;, dst);&lt;br /&gt;
 51|             break;&lt;br /&gt;
 52|          } &lt;br /&gt;
 53|          case AF_INET6:&lt;br /&gt;
 54|          {&lt;br /&gt;
 55|             char dst[INET6_ADDRSTRLEN];&lt;br /&gt;
 56|             struct in6_addr *src=&amp;amp;((struct sockaddr_in6 *)ptr-&amp;gt;ai_addr)-&amp;gt;sin6_addr;&lt;br /&gt;
 57|     &lt;br /&gt;
 58|             if (!inet_ntop(AF_INET6, (const void *) src, dst, sizeof(dst))) {&lt;br /&gt;
 59|                fprintf(stderr, &amp;quot;inet_ntop: %s\n&amp;quot;, strerror(errno));&lt;br /&gt;
 60|                break;&lt;br /&gt;
 61|             }&lt;br /&gt;
 62|             fprintf(stdout, &amp;quot;%s\n&amp;quot;, dst);&lt;br /&gt;
 63|             break;&lt;br /&gt;
 64|          }&lt;br /&gt;
 65|          default:&lt;br /&gt;
 66|             fprintf(stderr, &amp;quot;getaddrinfo: %s\n&amp;quot;, strerror(EAFNOSUPPORT));&lt;br /&gt;
 67|       }&lt;br /&gt;
 68|    } &lt;br /&gt;
 69|    freeaddrinfo(res);&lt;br /&gt;
 70|    exit(0);&lt;br /&gt;
 71| }&lt;br /&gt;
{{suivi| Les primitives de conversion entre noms et adresses | Les primitives de conversion entre noms et adresses | Exemple de client/serveur TCP | Exemple de client/serveur TCP }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Les_primitives_de_conversion_entre_noms_et_adresses&amp;diff=2955</id>
		<title>Les primitives de conversion entre noms et adresses</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Les_primitives_de_conversion_entre_noms_et_adresses&amp;diff=2955"/>
				<updated>2006-02-27T10:52:02Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| L'interface socket | L'interface socket | La commande haah (host-address-address-host) | La commande haah (host-address-address-host) }}&lt;br /&gt;
Les primitives &amp;lt;tt&amp;gt;gethostbyname&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;gethostbyaddr&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;getservbyname&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getservbyport&amp;lt;/tt&amp;gt; ont été remplacées par les deux primitives indépendantes de la famille d'adresses et normalisées par la RFC 3493 &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 int&lt;br /&gt;
 getaddrinfo(const char *nodename, const char *servname,&lt;br /&gt;
 const struct addrinfo *hints, struct addrinfo **res);&lt;br /&gt;
  &lt;br /&gt;
 void freeaddrinfo(struct addrinfo *res);&lt;br /&gt;
  &lt;br /&gt;
 const char *gai_strerror(int errcode);&lt;br /&gt;
&lt;br /&gt;
Le type &amp;lt;tt&amp;gt;struct addrinfo&amp;lt;/tt&amp;gt; est défini comme suit :&lt;br /&gt;
&lt;br /&gt;
 struct addrinfo {&lt;br /&gt;
    int ai_flags;             /* AI_PASSIVE, AI_CANONNAME, ... */&lt;br /&gt;
    int ai_family;            /* PF_xxx */&lt;br /&gt;
    int ai_socktype;          /* SOCK_xxx */&lt;br /&gt;
    int ai_protocol;          /* 0 ou IPPROTO_xxx pour IPv4 et IPv6 */&lt;br /&gt;
    size_t ai_addrlen;        /* la taille de l'adresse binaire ai_addr */&lt;br /&gt;
    char *ai_canonname;       /* le nom complétement qualifié */&lt;br /&gt;
    struct sockaddr *ai_addr; /* l'adresse binaire */&lt;br /&gt;
    struct addrinfo *ai_next; /* la structure suivante dans la liste chaînée */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; prend en entrée le nom d'une machine (&amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt;) et le nom d'un service (&amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt;). S'il n'y a pas d'erreur, &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; rend 0 et res pointe sur une liste dynamiquement allouée de &amp;lt;tt&amp;gt;struct addrinfo&amp;lt;/tt&amp;gt;. Chaque élément de cette liste contient la description et l'adresse d'une &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt; initialisée pour fournir l'accès au service servname sur nodename. Les champs &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;ai_protocol&amp;lt;/tt&amp;gt; ont la valeur utilisable dans l'appel système socket.&lt;br /&gt;
&lt;br /&gt;
Lorsque la liste de résultat n'est plus nécessaire, la mémoire allouée peut être libérée par la primitive &amp;lt;tt&amp;gt;freeaddrinfo&amp;lt;/tt&amp;gt;. En cas d'erreur, &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; rend un code d'erreur non nul qui peut être imprimé par la fonction &amp;lt;tt&amp;gt;gai_strerror&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; peut donner des réponses de la famille d'adresses IPv4 ou IPv6, et des réponses pour les protocoles connectés ou non (&amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; peut valoir &amp;lt;tt&amp;gt;SOCK_DGRAM&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;SOCK_STREAM&amp;lt;/tt&amp;gt;). L'argument &amp;lt;tt&amp;gt;hints&amp;lt;/tt&amp;gt; permet de choisir les réponses souhaitées. Un argument égal à &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; signifie que la liste des réponses doit contenir toutes les adresses et tous les protocoles. Sinon &amp;lt;tt&amp;gt;hints&amp;lt;/tt&amp;gt; doit pointer sur une structure dont les champs &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;ai_protocol&amp;lt;/tt&amp;gt; définissent les types de résultat attendus. Une valeur de &amp;lt;tt&amp;gt;PF_UNSPEC&amp;lt;/tt&amp;gt; du champ &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt; signifie que toutes les familles d'adresse (IPv4 et IPv6) sont admises, un &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; dans les champs &amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;ai_protocol&amp;lt;/tt&amp;gt;) signifie que tous les types de socket (resp. protocole) sont admis. Le champ &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; permet de préciser des options supplémentaires.&lt;br /&gt;
&lt;br /&gt;
L'argument &amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt; peut être le nom d'un service ou un nombre décimal. De même, l'argument &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; peut être un nom (au format DNS habituel) ou une adresse sous forme numérique IPv4 ou IPv6 (si &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; contient le bit &amp;lt;tt&amp;gt;AI_NUMERICHOST&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; doit être sous forme numérique et aucun appel au serveur de nom n'est fait). De plus l'un ou l'autre des arguments &amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; peut être un pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, mais pas tous les deux. Si &amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt; est &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, le champ &amp;lt;tt&amp;gt;port&amp;lt;/tt&amp;gt; des réponses ne sera pas initialisé (il restera égal à &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;). Si &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; est &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, l'adresse réseau dans les réponses est mis à &amp;quot;non initialisé&amp;quot; (&amp;lt;tt&amp;gt;INADDR_ANY&amp;lt;/tt&amp;gt; en IPv4, &amp;lt;tt&amp;gt;IN6ADDR_ANY_INIT&amp;lt;/tt&amp;gt; en IPv6) si &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; contient le bit &amp;lt;tt&amp;gt;AI_PASSIVE&amp;lt;/tt&amp;gt;, et à l'adresse de &amp;quot;loopback&amp;quot; (&amp;lt;tt&amp;gt;INADDR_LOOPBACK&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;IN6ADDR_LOOPBACK_INIT&amp;lt;/tt&amp;gt;) sinon. Le cas &amp;lt;tt&amp;gt;AI_PASSIVE&amp;lt;/tt&amp;gt; sert donc à obtenir des réponses utilisables par un programme serveur dans un ''bind'' pour recevoir des requêtes. Enfin si le bit &amp;lt;tt&amp;gt;AI_CANONNAME&amp;lt;/tt&amp;gt; est positionné, le champ &amp;lt;tt&amp;gt;ai_canonname&amp;lt;/tt&amp;gt; de la réponse contient le nom canonique de &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
La primitive &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; remplace les primitives &amp;lt;tt&amp;gt;gethostbyaddr&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getservbyport&amp;lt;/tt&amp;gt;. Elle effectue la traduction d'une adresse vers un nom :&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 int getnameinfo(const struct sockaddr *sa, socklen_t salen,&lt;br /&gt;
 char *host, size_t hostlen,&lt;br /&gt;
 char *serv, size_t servlen, int flags);&lt;br /&gt;
&lt;br /&gt;
En entrée l'argument sa pointe vers une structure d'adresse générique (de type &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;) et salen contient sa longueur. Le champ &amp;lt;tt&amp;gt;host&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;serv&amp;lt;/tt&amp;gt;) doit pointer sur une zone de longueur &amp;lt;tt&amp;gt;hostlen&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;servlen&amp;lt;/tt&amp;gt;) caractères. &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; retourne la valeur &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; si tout est correct et un code d'erreur non nul si une erreur est détectée. S'il n'y a pas d'erreur, le champ &amp;lt;tt&amp;gt;host&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;serv&amp;lt;/tt&amp;gt;) reçoit en sortie le nom de la machine (resp. du service) correspondant. Les arguments &amp;lt;tt&amp;gt;host&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;serv&amp;lt;/tt&amp;gt; peuvent être &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; si la réponse est inutile. Deux constantes sont définies pour permettre de réserver des zones de réponses de longueur raisonnable :&lt;br /&gt;
&lt;br /&gt;
 # define NI_MAXHOST 1025&lt;br /&gt;
 # define NI_MAXSERV 32&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;lt;tt&amp;gt;flags&amp;lt;/tt&amp;gt; permet de modifier la réponse : si flags contient le bit &amp;lt;tt&amp;gt;NI_NUMERICHOST&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;NI_NUMERICSERV&amp;lt;/tt&amp;gt;) la réponse sera l'adresse et non le nom de la machine (resp. le numéro et non le nom du service) ; si on ne sait pas trouver dans le serveur de nom le nom de la machine, &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; rendra une erreur si le bit &amp;lt;tt&amp;gt;NI_NAMEREQD&amp;lt;/tt&amp;gt; est positionné et l'adresse numérique sinon ; le bit &amp;lt;tt&amp;gt;NI_DGRAM&amp;lt;/tt&amp;gt; indique si le service est sur UDP et non sur TCP.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;conv&amp;quot;&amp;gt;Les fonctions de conversion numériques d'adresses&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Elles sont l'analogue des fonctions &amp;lt;tt&amp;gt;inet_addr&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;inet_ntoa&amp;lt;/tt&amp;gt; d'IPv4, la seule véritable différence étant qu'elles ont un argument précisant la famille d'adresse et peuvent donc aussi bien convertir les adresses IPv4 que les adresses IPv6. Comme la plupart des programmes manipulent des &amp;lt;tt&amp;gt;struct sockaddr*&amp;lt;/tt&amp;gt;, il est souvent préferable d'utiliser les fonctions &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt;, au besoin avec le flag &amp;lt;tt&amp;gt;AI_NUMERICHOST&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 int&lt;br /&gt;
 inet_pton(af, src, dst)&lt;br /&gt;
 int af;              /* AF_INET ou AF_INET6 */&lt;br /&gt;
 const char *src;     /* l'adresse (chaine de caract.) à traiter */&lt;br /&gt;
 void *dst;           /* le tampon où est rangé le résultat */&lt;br /&gt;
  &lt;br /&gt;
 char *&lt;br /&gt;
 inet_ntop(af, src, dst, size)&lt;br /&gt;
 int af;              /* AF_INET ou AF_INET6 */&lt;br /&gt;
 const void *src;     /* l'adresse binaire à traiter */&lt;br /&gt;
 char *dst;           /* le tampon où est rangé le résultat */&lt;br /&gt;
 size_t size;         /* la taille de ce tampon */&lt;br /&gt;
&lt;br /&gt;
La primitive &amp;lt;tt&amp;gt;inet_pton&amp;lt;/tt&amp;gt; convertit une adresse textuelle en sa forme binaire. Elle retourne &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; lorsque la conversion a été réussie, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; si la chaine de caractères qui lui a été fournie n'est pas une adresse valide et &amp;lt;tt&amp;gt;-1&amp;lt;/tt&amp;gt; en cas d'erreur, c'est-à-dire lorsque la famille d'adresses (premier argument) n'est pas supportée. Actuellement, les deux seules familles d'adresses supportées sont &amp;lt;tt&amp;gt;AF_INET&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
La primitive duale &amp;lt;tt&amp;gt;inet_ntop&amp;lt;/tt&amp;gt; convertit une adresse sous forme binaire en sa forme textuelle. Le troisième argument est un tampon destiné à recevoir le résultat de la conversion. Il doit être d'une taille suffisante, à savoir 16 octets pour les adresses IPv4 et 46 octets pour les adresses IPv6. Ces deux tailles sont définies dans le fichier &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 #define INET_ADDRSTRLEN 16&lt;br /&gt;
 #define INET6_ADDRSTRLEN 46&lt;br /&gt;
&lt;br /&gt;
Si la conversion est réussie, &amp;lt;tt&amp;gt;inet_ntop&amp;lt;/tt&amp;gt; retourne un pointeur vers le tampon où est rangé le résultat de la conversion. Dans le cas contraire, &amp;lt;tt&amp;gt;inet_ntop&amp;lt;/tt&amp;gt; retourne le pointeur nul, ce qui se produit soit lorsque la famille d'adresses n'est pas reconnue, soit lorsque la taille du tampon est insuffisante.&lt;br /&gt;
{{suivi| L'interface socket | L'interface socket | La commande haah (host-address-address-host) | La commande haah (host-address-address-host) }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Les_primitives_de_conversion_entre_noms_et_adresses&amp;diff=2954</id>
		<title>Les primitives de conversion entre noms et adresses</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Les_primitives_de_conversion_entre_noms_et_adresses&amp;diff=2954"/>
				<updated>2006-02-27T10:44:56Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| L'interface socket | L'interface socket | La commande haah (host-address-address-host) | La commande haah (host-address-address-host) }}&lt;br /&gt;
Les primitives &amp;lt;tt&amp;gt;gethostbyname&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;gethostbyaddr&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;getservbyname&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getservbyport&amp;lt;/tt&amp;gt; ont été remplacées par les deux primitives indépendantes de la famille d'adresses et normalisées par [[Bibliographie#RFC2401bis|[RFC2401bis]]] &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 int&lt;br /&gt;
 getaddrinfo(const char *nodename, const char *servname,&lt;br /&gt;
 const struct addrinfo *hints, struct addrinfo **res);&lt;br /&gt;
  &lt;br /&gt;
 void freeaddrinfo(struct addrinfo *res);&lt;br /&gt;
  &lt;br /&gt;
 const char *gai_strerror(int errcode);&lt;br /&gt;
&lt;br /&gt;
Le type &amp;lt;tt&amp;gt;struct addrinfo&amp;lt;/tt&amp;gt; est défini comme suit :&lt;br /&gt;
&lt;br /&gt;
 struct addrinfo {&lt;br /&gt;
    int ai_flags;             /* AI_PASSIVE, AI_CANONNAME, ... */&lt;br /&gt;
    int ai_family;            /* PF_xxx */&lt;br /&gt;
    int ai_socktype;          /* SOCK_xxx */&lt;br /&gt;
    int ai_protocol;          /* 0 ou IPPROTO_xxx pour IPv4 et IPv6 */&lt;br /&gt;
    size_t ai_addrlen;        /* la taille de l'adresse binaire ai_addr */&lt;br /&gt;
    char *ai_canonname;       /* le nom complétement qualifié */&lt;br /&gt;
    struct sockaddr *ai_addr; /* l'adresse binaire */&lt;br /&gt;
    struct addrinfo *ai_next; /* la structure suivante dans la liste chaînée */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; prend en entrée le nom d'une machine (&amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt;) et le nom d'un service (&amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt;). S'il n'y a pas d'erreur, &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; rend 0 et res pointe sur une liste dynamiquement allouée de &amp;lt;tt&amp;gt;struct addrinfo&amp;lt;/tt&amp;gt;. Chaque élément de cette liste contient la description et l'adresse d'une &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt; initialisée pour fournir l'accès au service servname sur nodename. Les champs &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;ai_protocol&amp;lt;/tt&amp;gt; ont la valeur utilisable dans l'appel système socket.&lt;br /&gt;
&lt;br /&gt;
Lorsque la liste de résultat n'est plus nécessaire, la mémoire allouée peut être libérée par la primitive &amp;lt;tt&amp;gt;freeaddrinfo&amp;lt;/tt&amp;gt;. En cas d'erreur, &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; rend un code d'erreur non nul qui peut être imprimé par la fonction &amp;lt;tt&amp;gt;gai_strerror&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; peut donner des réponses de la famille d'adresses IPv4 ou IPv6, et des réponses pour les protocoles connectés ou non (&amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; peut valoir &amp;lt;tt&amp;gt;SOCK_DGRAM&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;SOCK_STREAM&amp;lt;/tt&amp;gt;). L'argument &amp;lt;tt&amp;gt;hints&amp;lt;/tt&amp;gt; permet de choisir les réponses souhaitées. Un argument égal à &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; signifie que la liste des réponses doit contenir toutes les adresses et tous les protocoles. Sinon &amp;lt;tt&amp;gt;hints&amp;lt;/tt&amp;gt; doit pointer sur une structure dont les champs &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;ai_protocol&amp;lt;/tt&amp;gt; définissent les types de résultat attendus. Une valeur de &amp;lt;tt&amp;gt;PF_UNSPEC&amp;lt;/tt&amp;gt; du champ &amp;lt;tt&amp;gt;ai_family&amp;lt;/tt&amp;gt; signifie que toutes les familles d'adresse (IPv4 et IPv6) sont admises, un &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; dans les champs &amp;lt;tt&amp;gt;ai_socktype&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;ai_protocol&amp;lt;/tt&amp;gt;) signifie que tous les types de socket (resp. protocole) sont admis. Le champ &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; permet de préciser des options supplémentaires.&lt;br /&gt;
&lt;br /&gt;
L'argument &amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt; peut être le nom d'un service ou un nombre décimal. De même, l'argument &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; peut être un nom (au format DNS habituel) ou une adresse sous forme numérique IPv4 ou IPv6 (si &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; contient le bit &amp;lt;tt&amp;gt;AI_NUMERICHOST&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; doit être sous forme numérique et aucun appel au serveur de nom n'est fait). De plus l'un ou l'autre des arguments &amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; peut être un pointeur &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, mais pas tous les deux. Si &amp;lt;tt&amp;gt;servname&amp;lt;/tt&amp;gt; est &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, le champ &amp;lt;tt&amp;gt;port&amp;lt;/tt&amp;gt; des réponses ne sera pas initialisé (il restera égal à &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;). Si &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt; est &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, l'adresse réseau dans les réponses est mis à &amp;quot;non initialisé&amp;quot; (&amp;lt;tt&amp;gt;INADDR_ANY&amp;lt;/tt&amp;gt; en IPv4, &amp;lt;tt&amp;gt;IN6ADDR_ANY_INIT&amp;lt;/tt&amp;gt; en IPv6) si &amp;lt;tt&amp;gt;ai_flags&amp;lt;/tt&amp;gt; contient le bit &amp;lt;tt&amp;gt;AI_PASSIVE&amp;lt;/tt&amp;gt;, et à l'adresse de &amp;quot;loopback&amp;quot; (&amp;lt;tt&amp;gt;INADDR_LOOPBACK&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;IN6ADDR_LOOPBACK_INIT&amp;lt;/tt&amp;gt;) sinon. Le cas &amp;lt;tt&amp;gt;AI_PASSIVE&amp;lt;/tt&amp;gt; sert donc à obtenir des réponses utilisables par un programme serveur dans un ''bind'' pour recevoir des requêtes. Enfin si le bit &amp;lt;tt&amp;gt;AI_CANONNAME&amp;lt;/tt&amp;gt; est positionné, le champ &amp;lt;tt&amp;gt;ai_canonname&amp;lt;/tt&amp;gt; de la réponse contient le nom canonique de &amp;lt;tt&amp;gt;nodename&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
La primitive &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; remplace les primitives &amp;lt;tt&amp;gt;gethostbyaddr&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getservbyport&amp;lt;/tt&amp;gt;. Elle effectue la traduction d'une adresse vers un nom :&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 int getnameinfo(const struct sockaddr *sa, socklen_t salen,&lt;br /&gt;
 char *host, size_t hostlen,&lt;br /&gt;
 char *serv, size_t servlen, int flags);&lt;br /&gt;
&lt;br /&gt;
En entrée l'argument sa pointe vers une structure d'adresse générique (de type &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;) et salen contient sa longueur. Le champ &amp;lt;tt&amp;gt;host&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;serv&amp;lt;/tt&amp;gt;) doit pointer sur une zone de longueur &amp;lt;tt&amp;gt;hostlen&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;servlen&amp;lt;/tt&amp;gt;) caractères. &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; retourne la valeur &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; si tout est correct et un code d'erreur non nul si une erreur est détectée. S'il n'y a pas d'erreur, le champ &amp;lt;tt&amp;gt;host&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;serv&amp;lt;/tt&amp;gt;) reçoit en sortie le nom de la machine (resp. du service) correspondant. Les arguments &amp;lt;tt&amp;gt;host&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;serv&amp;lt;/tt&amp;gt; peuvent être &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; si la réponse est inutile. Deux constantes sont définies pour permettre de réserver des zones de réponses de longueur raisonnable :&lt;br /&gt;
&lt;br /&gt;
 # define NI_MAXHOST 1025&lt;br /&gt;
 # define NI_MAXSERV 32&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;lt;tt&amp;gt;flags&amp;lt;/tt&amp;gt; permet de modifier la réponse : si flags contient le bit &amp;lt;tt&amp;gt;NI_NUMERICHOST&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;NI_NUMERICSERV&amp;lt;/tt&amp;gt;) la réponse sera l'adresse et non le nom de la machine (resp. le numéro et non le nom du service) ; si on ne sait pas trouver dans le serveur de nom le nom de la machine, &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt; rendra une erreur si le bit &amp;lt;tt&amp;gt;NI_NAMEREQD&amp;lt;/tt&amp;gt; est positionné et l'adresse numérique sinon ; le bit &amp;lt;tt&amp;gt;NI_DGRAM&amp;lt;/tt&amp;gt; indique si le service est sur UDP et non sur TCP.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;conv&amp;quot;&amp;gt;Les fonctions de conversion numériques d'adresses&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Elles sont l'analogue des fonctions &amp;lt;tt&amp;gt;inet_addr&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;inet_ntoa&amp;lt;/tt&amp;gt; d'IPv4, la seule véritable différence étant qu'elles ont un argument précisant la famille d'adresse et peuvent donc aussi bien convertir les adresses IPv4 que les adresses IPv6. Comme la plupart des programmes manipulent des &amp;lt;tt&amp;gt;struct sockaddr*&amp;lt;/tt&amp;gt;, il est souvent préferable d'utiliser les fonctions &amp;lt;tt&amp;gt;getaddrinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;getnameinfo&amp;lt;/tt&amp;gt;, au besoin avec le flag &amp;lt;tt&amp;gt;AI_NUMERICHOST&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 int&lt;br /&gt;
 inet_pton(af, src, dst)&lt;br /&gt;
 int af;              /* AF_INET ou AF_INET6 */&lt;br /&gt;
 const char *src;     /* l'adresse (chaine de caract.) à traiter */&lt;br /&gt;
 void *dst;           /* le tampon où est rangé le résultat */&lt;br /&gt;
  &lt;br /&gt;
 char *&lt;br /&gt;
 inet_ntop(af, src, dst, size)&lt;br /&gt;
 int af;              /* AF_INET ou AF_INET6 */&lt;br /&gt;
 const void *src;     /* l'adresse binaire à traiter */&lt;br /&gt;
 char *dst;           /* le tampon où est rangé le résultat */&lt;br /&gt;
 size_t size;         /* la taille de ce tampon */&lt;br /&gt;
&lt;br /&gt;
La primitive &amp;lt;tt&amp;gt;inet_pton&amp;lt;/tt&amp;gt; convertit une adresse textuelle en sa forme binaire. Elle retourne &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; lorsque la conversion a été réussie, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; si la chaine de caractères qui lui a été fournie n'est pas une adresse valide et &amp;lt;tt&amp;gt;-1&amp;lt;/tt&amp;gt; en cas d'erreur, c'est-à-dire lorsque la famille d'adresses (premier argument) n'est pas supportée. Actuellement, les deux seules familles d'adresses supportées sont &amp;lt;tt&amp;gt;AF_INET&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
La primitive duale &amp;lt;tt&amp;gt;inet_ntop&amp;lt;/tt&amp;gt; convertit une adresse sous forme binaire en sa forme textuelle. Le troisième argument est un tampon destiné à recevoir le résultat de la conversion. Il doit être d'une taille suffisante, à savoir 16 octets pour les adresses IPv4 et 46 octets pour les adresses IPv6. Ces deux tailles sont définies dans le fichier &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 #define INET_ADDRSTRLEN 16&lt;br /&gt;
 #define INET6_ADDRSTRLEN 46&lt;br /&gt;
&lt;br /&gt;
Si la conversion est réussie, &amp;lt;tt&amp;gt;inet_ntop&amp;lt;/tt&amp;gt; retourne un pointeur vers le tampon où est rangé le résultat de la conversion. Dans le cas contraire, &amp;lt;tt&amp;gt;inet_ntop&amp;lt;/tt&amp;gt; retourne le pointeur nul, ce qui se produit soit lorsque la famille d'adresses n'est pas reconnue, soit lorsque la taille du tampon est insuffisante.&lt;br /&gt;
{{suivi| L'interface socket | L'interface socket | La commande haah (host-address-address-host) | La commande haah (host-address-address-host) }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_socket&amp;diff=2953</id>
		<title>L'interface socket</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_socket&amp;diff=2953"/>
				<updated>2006-02-27T10:42:04Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| L'interface de programmation &amp;quot;socket&amp;quot; IPv6 | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 | Les primitives de conversion entre noms et adresses | Les primitives de conversion entre noms et adresses }}&lt;br /&gt;
La création d'une socket se fait comme auparavant en appelant la primitive socket. La distinction entre les protocoles IPv4 et IPv6 se fait sur la valeur du premier argument passé à &amp;lt;tt&amp;gt;socket&amp;lt;/tt&amp;gt;, à savoir la famille d'adresses (ou de protocoles), c'est-à-dire ici &amp;lt;tt&amp;gt;PF_INET&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt;. Par exemple, si on veut créer un socket IPv4/UDP, on écrira :&lt;br /&gt;
&lt;br /&gt;
 sock = socket(PF_INET, SOCK_DGRAM, 0);&lt;br /&gt;
&lt;br /&gt;
tandis qu'une création de socket IPv6/UDP se fera ainsi :&lt;br /&gt;
&lt;br /&gt;
 sock = socket(PF_INET6, SOCK_DGRAM, 0);&lt;br /&gt;
&lt;br /&gt;
Une erreur de programmation classique consiste à utiliser &amp;lt;tt&amp;gt;AF_INET&amp;lt;/tt&amp;gt; à la place de &amp;lt;tt&amp;gt;PF_INET&amp;lt;/tt&amp;gt;. Cela n'a pas d'effet en général car rares sont les systèmes pour lesquels ces deux constantes diffèrent. Pour éviter en IPv6 des problèmes liés à cette erreur, il est demandé que les deux constantes &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt; soient identiques.&lt;br /&gt;
&lt;br /&gt;
Quant aux autres primitives constituant l'interface socket, leur syntaxe reste inchangée. Il faut simplement leur fournir des adresses IPv6, en l'occurrence des pointeurs vers des structures de type &amp;lt;tt&amp;gt;struct sockaddr_in6&amp;lt;/tt&amp;gt; au préalable convertis en des pointeurs vers des structures génériques de type &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Donnons pour mémoire une liste des primitives les plus importantes :&lt;br /&gt;
&lt;br /&gt;
 bind()    connect()     sendmsg()&lt;br /&gt;
 sendto()  accept()      recvfrom()&lt;br /&gt;
 recvmsg() getsockname() getpeername()&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;wildcard&amp;quot;&amp;gt;L'adresse &amp;quot;wildcard&amp;quot;&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Lors du nommage d'une socket via la primitive &amp;lt;tt&amp;gt;bind&amp;lt;/tt&amp;gt;, il arrive fréquemment qu'une application (par exemple un serveur TCP) laisse au système la détermination de l'adresse source pour elle. En IPv4, pour ce faire, elle passe à bind une structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt; avec le champ &amp;lt;tt&amp;gt;sin_addr.s_addr&amp;lt;/tt&amp;gt; ayant pour valeur la constante &amp;lt;tt&amp;gt;INADDR_ANY&amp;lt;/tt&amp;gt;, constante définie dans le fichier &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En IPv6, il y a deux manières de faire cela, à cause des règles du langage C sur les initialisations et affectations de structures. La première est d'initialiser une structure de type &amp;lt;tt&amp;gt;struct in6_addr&amp;lt;/tt&amp;gt; par la constante &amp;lt;tt&amp;gt;IN6ADDR_ANY_INIT&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 struct in6_addr any_addr = IN6ADDR_ANY_INIT;&lt;br /&gt;
&lt;br /&gt;
Attention, ceci ne peut se faire qu'au moment de la déclaration. Par exemple le code qui suit est incorrect (en C il est interdit d'affecter une constante complexe à une structure) :&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_in6 sin6;&lt;br /&gt;
  &lt;br /&gt;
 sin6.sin6_addr = IN6ADDR_ANY_INIT; /* erreur de syntaxe !! */&lt;br /&gt;
&lt;br /&gt;
La seconde manière utilise une variable globale :&lt;br /&gt;
&lt;br /&gt;
 extern const struct in6_addr in6addr_any;&lt;br /&gt;
 struct sockaddr_in6 sin6;&lt;br /&gt;
  &lt;br /&gt;
 sin6.sin6_addr = in6addr_any;&lt;br /&gt;
&lt;br /&gt;
Cette méthode n'est pas possible dans une déclaration de variable globale ou statique.&lt;br /&gt;
&lt;br /&gt;
La constante &amp;lt;tt&amp;gt;IN6ADDR_ANY_INIT&amp;lt;/tt&amp;gt; et la variable &amp;lt;tt&amp;gt;in6addr_any&amp;lt;/tt&amp;gt; sont toutes deux définies dans le fichier &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;loopback&amp;quot;&amp;gt;L'adresse de bouclage&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
En IPv4, c'est la constante &amp;lt;tt&amp;gt;INADDR_LOOPBACK&amp;lt;/tt&amp;gt;. En IPv6, de manière tout à fait similaire à l'adresse &amp;quot;wildcard&amp;quot;, il y a deux façons d'affecter cette adresse. Ceci peut se faire au moment de la déclaration avec la constante &amp;lt;tt&amp;gt;IN6ADDR_LOOPBACK_INIT&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 struct in6_addr loopback_addr = IN6ADDR_LOOPBACK_INIT;&lt;br /&gt;
&lt;br /&gt;
ou via la variable globale &amp;lt;tt&amp;gt;in6addr_loopback&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 extern const struct in6_addr in6addr_loopback;&lt;br /&gt;
 struct sockaddr_in6 sin6;&lt;br /&gt;
&lt;br /&gt;
 sin6.sin6_addr = in6addr_loopback;&lt;br /&gt;
&lt;br /&gt;
Cette constante et cette variable sont définies dans le fichier &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{{suivi| L'interface de programmation &amp;quot;socket&amp;quot; IPv6 | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 | Les primitives de conversion entre noms et adresses | Les primitives de conversion entre noms et adresses }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2952</id>
		<title>L'interface de programmation &quot;socket&quot; IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2952"/>
				<updated>2006-02-27T10:40:58Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* &amp;lt;div id=&amp;quot;struct&amp;quot;&amp;gt;Les structures de données d'adresses&amp;lt;/div&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;br /&gt;
==&amp;lt;div id=&amp;quot;change&amp;quot;&amp;gt;Ce qui a changé&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Les changements opérés de façon à intégrer IPv6 concernent les quatre domaines suivants :&lt;br /&gt;
&lt;br /&gt;
* les structures de données d'adresses ;&lt;br /&gt;
* l'interface socket ;&lt;br /&gt;
* les primitives de conversion entre noms et adresses ;&lt;br /&gt;
* les fonctions de conversions d'adresses.&lt;br /&gt;
&lt;br /&gt;
Ces changements ont été minimisés autant que possible de manière à faciliter le portage des applications IPv4 existantes. En outre, et ce point est important, cette nouvelle API doit permettre l'interopérabilité entre machines IPv4 et machines IPv6 grâce au mécanisme de double pile décrit ci-après.&lt;br /&gt;
&lt;br /&gt;
L'API décrite ici est celle utilisée en Solaris, Linux et systèmes *BSD. Elle correspond à celle définie dans le RFC 3493 avec quelques modifications nécessaires pour prendre en compte les dernières évolutions des protocoles sous-jacents. Cette API est explicitement conçue pour fonctionner sur des machines possédant la double pile IPv4 et IPv6 (cf. See Double pile IPv4/IPv6 pour le schéma d'implémentation d'une telle double pile sous UNIX 4.4BSD). Cette API &amp;quot;socket&amp;quot; est celle disponible dans de nombreux environnements de programmation tels que Java, perl, python, ruby, ...&lt;br /&gt;
&lt;br /&gt;
[[image:CS191.gif]]&lt;br /&gt;
&lt;br /&gt;
Une API &amp;quot;avancée&amp;quot;, décrite dans le RFC 3542 permet de programmer les échanges réseaux de manière très précise. Elle sera également utilisée mais de manière succinte et essentiellement par le biais de l'exemple [[one_ping6]].&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;struct&amp;quot;&amp;gt;Les structures de données d'adresses&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Une nouvelle famille d'adresses ayant pour nom &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt; et dont la valeur peut varier d'une implémentation à l'autre, a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). Également, une nouvelle famille de protocoles ayant pour nom &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). En principe, on doit avoir :&lt;br /&gt;
&lt;br /&gt;
 #define PF_INET6 AF_INET6&lt;br /&gt;
&lt;br /&gt;
La structure de données destinée à contenir une adresse IPv6 est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 struct in6_addr {&lt;br /&gt;
    uint8_t s6_addr[16];&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
les octets constituant l'adresse étant rangés comme d'habitude dans l'ordre réseau (''network byte order'').&lt;br /&gt;
&lt;br /&gt;
La structure de données IPv6 &amp;lt;tt&amp;gt;struct sockaddr_in6&amp;lt;/tt&amp;gt;, est équivalente à la structure &amp;lt;tt&amp;gt;struct sockaddr_in&amp;lt;/tt&amp;gt; d'IPv4. Elle est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;) pour les systèmes dérivés d'UNIX 4.3BSD :&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_in6 {&lt;br /&gt;
    sa_family_t sin6_family;   /* AF_INET6 */&lt;br /&gt;
    in_port_t sin6_port;       /* numéro de port */&lt;br /&gt;
    uint32_t sin6_flowinfo;    /* identificateur de flux */&lt;br /&gt;
    struct in6_addr sin6_addr; /* adresse IPv6 */&lt;br /&gt;
    uint32_t sin6_scope_id;    /* ensemble d'interfaces correspondant&lt;br /&gt;
                                * à la portée de l'adresse */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Il faut noter que cette structure a une longueur de 28 octets, et est donc plus grande que le type générique &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt;. Il n'est donc plus possible de réserver une &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt; si la valeur à stocker peut être une &amp;lt;tt&amp;gt;struct sockaddr_in6&amp;lt;/tt&amp;gt;. Afin de faciliter la tâche des implémenteurs, une nouvelle structure de données, &amp;lt;tt&amp;gt;struct sockaddr_storage&amp;lt;/tt&amp;gt;, a été définie. Celle-ci est de taille suffisante afin de pouvoir prendre en compte tous les protocoles supportés et alignée de telle sorte que les conversions de type entre pointeurs vers les structures de données d'adresse des protocoles supportés et pointeurs vers elle-même n'engendrent pas de problèmes d'alignement. Un exemple d'utilisation pourrait être le suivant :&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_storage ss;&lt;br /&gt;
  &lt;br /&gt;
 struct sockaddr_in *sin = (struct sockaddr_in *) &amp;amp;ss;&lt;br /&gt;
 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) &amp;amp;ss;&lt;br /&gt;
&lt;br /&gt;
Dans la version 4.4 d'UNIX BSD, la longueur du champ &amp;lt;tt&amp;gt;sin6_family&amp;lt;/tt&amp;gt; est passée de 2 octets à 1 octet. L'octet ainsi récupéré contient la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt; et sert à effectuer correctement la conversion de type vers la structure de données générique &amp;lt;tt&amp;gt;sockaddr&amp;lt;/tt&amp;gt; utilisée par bon nombre de primitives de l'interface socket.&lt;br /&gt;
&lt;br /&gt;
La macro-définition &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt;, présente dans toute implémentation 4.4BSD, permet alors de distinguer les versions. Les autres champs restant inchangés, cette structure est presque identique à celle de la précédente version :&lt;br /&gt;
&lt;br /&gt;
 #define SIN6_LEN&lt;br /&gt;
  &lt;br /&gt;
 struct sockaddr_in6 {&lt;br /&gt;
    u_int8_t sin6_len;         /* la longueur de cette structure */&lt;br /&gt;
    sa_family_t sin6_family;   /* AF_INET6 */&lt;br /&gt;
    in_port_t sin6_port;       /* numéro de port */&lt;br /&gt;
    uint32_t sin6_flowinfo;    /* identificateur de flux */&lt;br /&gt;
    struct in6_addr sin6_addr; /* adresse IPv6 */&lt;br /&gt;
    uint32_t sin6_scope_id;    /* ensemble d'interfaces correspondant&lt;br /&gt;
                                * à la portée de l'adresse */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien-local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;br /&gt;
{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2951</id>
		<title>L'interface de programmation &quot;socket&quot; IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2951"/>
				<updated>2006-02-27T10:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;br /&gt;
==&amp;lt;div id=&amp;quot;change&amp;quot;&amp;gt;Ce qui a changé&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Les changements opérés de façon à intégrer IPv6 concernent les quatre domaines suivants :&lt;br /&gt;
&lt;br /&gt;
* les structures de données d'adresses ;&lt;br /&gt;
* l'interface socket ;&lt;br /&gt;
* les primitives de conversion entre noms et adresses ;&lt;br /&gt;
* les fonctions de conversions d'adresses.&lt;br /&gt;
&lt;br /&gt;
Ces changements ont été minimisés autant que possible de manière à faciliter le portage des applications IPv4 existantes. En outre, et ce point est important, cette nouvelle API doit permettre l'interopérabilité entre machines IPv4 et machines IPv6 grâce au mécanisme de double pile décrit ci-après.&lt;br /&gt;
&lt;br /&gt;
L'API décrite ici est celle utilisée en Solaris, Linux et systèmes *BSD. Elle correspond à celle définie dans le RFC 3493 avec quelques modifications nécessaires pour prendre en compte les dernières évolutions des protocoles sous-jacents. Cette API est explicitement conçue pour fonctionner sur des machines possédant la double pile IPv4 et IPv6 (cf. See Double pile IPv4/IPv6 pour le schéma d'implémentation d'une telle double pile sous UNIX 4.4BSD). Cette API &amp;quot;socket&amp;quot; est celle disponible dans de nombreux environnements de programmation tels que Java, perl, python, ruby, ...&lt;br /&gt;
&lt;br /&gt;
[[image:CS191.gif]]&lt;br /&gt;
&lt;br /&gt;
Une API &amp;quot;avancée&amp;quot;, décrite dans le RFC 3542 permet de programmer les échanges réseaux de manière très précise. Elle sera également utilisée mais de manière succinte et essentiellement par le biais de l'exemple [[one_ping6]].&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;div id=&amp;quot;struct&amp;quot;&amp;gt;Les structures de données d'adresses&amp;lt;/div&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Une nouvelle famille d'adresses ayant pour nom &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt; et dont la valeur peut varier d'une implémentation à l'autre, a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). Également, une nouvelle famille de protocoles ayant pour nom &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). En principe, on doit avoir :&lt;br /&gt;
&lt;br /&gt;
 #define PF_INET6 AF_INET6&lt;br /&gt;
&lt;br /&gt;
La structure de données destinée à contenir une adresse IPv6 est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 struct in6_addr {&lt;br /&gt;
    uint8_t s6_addr[16];&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
les octets constituant l'adresse étant rangés comme d'habitude dans l'ordre réseau (''network byte order'').&lt;br /&gt;
&lt;br /&gt;
La structure de données IPv6 &amp;lt;tt&amp;gt;struct sockaddr_in6&amp;lt;/tt&amp;gt;, est équivalente à la structure &amp;lt;tt&amp;gt;struct sockaddr_in&amp;lt;/tt&amp;gt; d'IPv4. Elle est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;) pour les systèmes dérivés d'UNIX 4.3BSD :&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_in6 {&lt;br /&gt;
    sa_family_t sin6_family;   /* AF_INET6 */&lt;br /&gt;
    in_port_t sin6_port;       /* numéro de port */&lt;br /&gt;
    uint32_t sin6_flowinfo;    /* identificateur de flux */&lt;br /&gt;
    struct in6_addr sin6_addr; /* adresse IPv6 */&lt;br /&gt;
    uint32_t sin6_scope_id;    /* ensemble d'interfaces correspondant&lt;br /&gt;
                                * à la portée de l'adresse */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Il faut noter que cette structure a une longueur de 28 octets, et est donc plus grande que le type générique &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt;. Il n'est donc plus possible de réserver une &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt; si la valeur à stocker peut être une &amp;lt;tt&amp;gt;struct sockaddr_in6&amp;lt;/tt&amp;gt;. Afin de faciliter la tâche des implémenteurs, une nouvelle structure de données, &amp;lt;tt&amp;gt;struct sockaddr_storage&amp;lt;/tt&amp;gt;, a été définie. Celle-ci est de taille suffisante afin de pouvoir prendre en compte tous les protocoles supportés et alignée de telle sorte que les conversions de type entre pointeurs vers les structures de données d'adresse des protocoles supportés et pointeurs vers elle-même n'engendrent pas de problèmes d'alignement. Un exemple d'utilisation pourrait être le suivant :&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_storage ss;&lt;br /&gt;
  &lt;br /&gt;
 struct sockaddr_in *sin = (struct sockaddr_in *) &amp;amp;ss;&lt;br /&gt;
 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) &amp;amp;ss;&lt;br /&gt;
&lt;br /&gt;
Dans la version 4.4 d'UNIX BSD, la longueur du champ &amp;lt;tt&amp;gt;sin6_family&amp;lt;/tt&amp;gt; est passée de 2 octets à 1 octet. L'octet ainsi récupéré contient la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt; et sert à effectuer correctement la conversion de type vers la structure de données générique &amp;lt;tt&amp;gt;sockaddr&amp;lt;/tt&amp;gt; utilisée par bon nombre de primitives de l'interface socket.&lt;br /&gt;
&lt;br /&gt;
La macro-définition &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt;, présente dans toute implémentation 4.4BSD, permet alors de distinguer les versions. Les autres champs restant inchangés, cette structure est presque identique à celle de la précédente version :&lt;br /&gt;
&lt;br /&gt;
 #define SIN6_LEN&lt;br /&gt;
  &lt;br /&gt;
 struct sockaddr_in6 {&lt;br /&gt;
    u_int8_t sin6_len;         /* la longueur de cette structure */&lt;br /&gt;
    sa_family_t sin6_family;   /* AF_INET6 */&lt;br /&gt;
    in_port_t sin6_port;       /* numéro de port */&lt;br /&gt;
    uint32_t sin6_flowinfo;    /* identificateur de flux */&lt;br /&gt;
    struct in6_addr sin6_addr; /* adresse IPv6 */&lt;br /&gt;
    uint32_t sin6_scope_id;    /* ensemble d'interfaces correspondant&lt;br /&gt;
                                * à la portée de l'adresse */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien-local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;br /&gt;
{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Programmation_d%27applications&amp;diff=2950</id>
		<title>Programmation d'applications</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Programmation_d%27applications&amp;diff=2950"/>
				<updated>2006-02-27T10:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Mécanismes d'interopérabilité | Mécanismes d'interopérabilité | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 }}&lt;br /&gt;
L'évolution de IPv4 vers IPv6 a été conçue pour minimiser les changements visibles. Un grand nombre de concepts n'ont pas changé : les noms, les &amp;quot;ports&amp;quot;, l'envoi et la réception de données,... Un certain nombre de points ont malgré tout dû être modifiés. Le principal est lié à la taille de l'adresse : en IPv4, une adresse a une longueur de 32 bits (et de nombreux programmes confondent les types adresse et entier) alors qu'en IPv6 une adresse a une longueur de 128 bits ; les types liés aux adresses doivent donc être modifiés. En fait l'effet est plus profond : les nouvelles structures sont plus grandes, et certaines réservations de mémoire avec conversion de type implicite (en particulier : un entier pour une adresse, une &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt; pour une &amp;lt;tt&amp;gt;struct sockaddr_in&amp;lt;/tt&amp;gt;, un tampon de 16 octets pour afficher une adresse sous forme numérique) doivent être corrigés sous peine de débordement de mémoire.&lt;br /&gt;
&lt;br /&gt;
L'interface de programmation réseau (&amp;quot;API&amp;quot;) la plus connue est l'interface &amp;quot;socket&amp;quot; (dite aussi interface &amp;quot;BSD&amp;quot;). Le but de ce chapitre est de présenter pour cette interface de programmation les modifications introduites pour supporter IPv6, et notamment de donner une brève description des nouvelles primitives d'appel au DNS et de conversion d'adresses.&lt;br /&gt;
&lt;br /&gt;
Ces modifications ont été définies pour être aussi transparentes que possible, et, s'il est en pratique toujours nécessaire de modifier un programme pour le porter de IPv4 à IPv6, un programme conçu avec des règles de typage strict est portable sans grandes modifications.&lt;br /&gt;
&lt;br /&gt;
Ce chapitre illustrera l'interface de programmation &amp;quot;socket&amp;quot; pour IPv6 en présentant plusieurs exemples de programmes. Plus précisément, il détaillera successivement :&lt;br /&gt;
&lt;br /&gt;
* un programme combinant les différentes fonctions de conversion d'adresse ;&lt;br /&gt;
* un client/serveur TCP calculant le nombre d'utilisateurs connectés sur une machine cible. En particulier, on aura soin de comparer les codes IPv4 et IPv6 de ce client/serveur, ce qui amènera à constater qu'à ce niveau de programmation, la migration vers IPv6 n'offre aucune difficulté ;&lt;br /&gt;
* un &amp;quot;mini ping&amp;quot; qui permettra de se familiariser avec le protocole ICMPv6 qui présente de notables différences avec son prédécesseur le protocole ICMPv4 ;&lt;br /&gt;
* un exemple qui génère un trafic multicast, avec abonnement et désabonnement ;&lt;br /&gt;
* un programme illustant l'utilisation de l'API socket avancée.&lt;br /&gt;
{{suivi| Mécanismes d'interopérabilité | Mécanismes d'interopérabilité | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Programmation_d%27applications&amp;diff=2949</id>
		<title>Programmation d'applications</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Programmation_d%27applications&amp;diff=2949"/>
				<updated>2006-02-27T10:27:26Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Accès des entreprises et des particuliers à l'Internet IPv6 | Accès des entreprises et des particuliers à l'Internet IPv6 | Programmation d'applications | Programmation d'applications }}&lt;br /&gt;
L'évolution de IPv4 vers IPv6 a été conçue pour minimiser les changements visibles. Un grand nombre de concepts n'ont pas changé : les noms, les &amp;quot;ports&amp;quot;, l'envoi et la réception de données,... Un certain nombre de points ont malgré tout dû être modifiés. Le principal est lié à la taille de l'adresse : en IPv4, une adresse a une longueur de 32 bits (et de nombreux programmes confondent les types adresse et entier) alors qu'en IPv6 une adresse a une longueur de 128 bits ; les types liés aux adresses doivent donc être modifiés. En fait l'effet est plus profond : les nouvelles structures sont plus grandes, et certaines réservations de mémoire avec conversion de type implicite (en particulier : un entier pour une adresse, une &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt; pour une &amp;lt;tt&amp;gt;struct sockaddr_in&amp;lt;/tt&amp;gt;, un tampon de 16 octets pour afficher une adresse sous forme numérique) doivent être corrigés sous peine de débordement de mémoire.&lt;br /&gt;
&lt;br /&gt;
L'interface de programmation réseau (&amp;quot;API&amp;quot;) la plus connue est l'interface &amp;quot;socket&amp;quot; (dite aussi interface &amp;quot;BSD&amp;quot;). Le but de ce chapitre est de présenter pour cette interface de programmation les modifications introduites pour supporter IPv6, et notamment de donner une brève description des nouvelles primitives d'appel au DNS et de conversion d'adresses.&lt;br /&gt;
&lt;br /&gt;
Ces modifications ont été définies pour être aussi transparentes que possible, et, s'il est en pratique toujours nécessaire de modifier un programme pour le porter de IPv4 à IPv6, un programme conçu avec des règles de typage strict est portable sans grandes modifications.&lt;br /&gt;
&lt;br /&gt;
Ce chapitre illustrera l'interface de programmation &amp;quot;socket&amp;quot; pour IPv6 en présentant plusieurs exemples de programmes. Plus précisément, il détaillera successivement :&lt;br /&gt;
&lt;br /&gt;
* un programme combinant les différentes fonctions de conversion d'adresse ;&lt;br /&gt;
* un client/serveur TCP calculant le nombre d'utilisateurs connectés sur une machine cible. En particulier, on aura soin de comparer les codes IPv4 et IPv6 de ce client/serveur, ce qui amènera à constater qu'à ce niveau de programmation, la migration vers IPv6 n'offre aucune difficulté ;&lt;br /&gt;
* un &amp;quot;mini ping&amp;quot; qui permettra de se familiariser avec le protocole ICMPv6 qui présente de notables différences avec son prédécesseur le protocole ICMPv4 ;&lt;br /&gt;
* un exemple qui génère un trafic multicast, avec abonnement et désabonnement ;&lt;br /&gt;
* un programme illustant l'utilisation de l'API socket avancée.&lt;br /&gt;
{{suivi| Mécanismes d'interopérabilité | Mécanismes d'interopérabilité | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 | L'interface de programmation &amp;quot;socket&amp;quot; IPv6 }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2948</id>
		<title>Mécanismes d'interopérabilité</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2948"/>
				<updated>2006-02-27T10:26:22Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Accès des entreprises et des particuliers à l'Internet IPv6 | Accès des entreprises et des particuliers à l'Internet IPv6 | Programmation d'applications | Programmation d'applications }}&lt;br /&gt;
==Relais applicatifs==&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs ou ALG (''Application Level Gateway'') représentent le moyen le plus simple pour assurer une relation entre le monde IPv4 et le monde IPv6. Il s'agit de machines avec une double pile (cf. figure Exemple de relais applicatif pour le courrier électronique) configurées pour accéder aux deux versions du protocole. Les équipements IPv6 émettent leur requête vers le relais applicatif qui interprète le contenu de la requête et la retransmet en IPv4.&lt;br /&gt;
&lt;br /&gt;
Un ou plusieurs relais peuvent être installés en fonction des services rendus disponibles sur le réseau (par exemple serveur d'impression, serveur de messagerie, relais http, ...). Les machines clientes doivent être configurées pour adresser leurs requêtes applicatives à ces relais.&lt;br /&gt;
&lt;br /&gt;
L'usage de ces techniques est très fréquent dans les réseaux privés pour communiquer avec l'extérieur. Tous les protocoles ne peuvent pas utiliser les relais applicatifs, par exemple telnet. Mais comme la liste précédente l'indique, les ALG concernent des applications courantes qui représentent une partie importante du trafic. Cela permet également d'alléger le travail d'autres mécanismes de transition qui sont plus complexes à mettre en œuvre.&lt;br /&gt;
&lt;br /&gt;
[[image:CS186.gif]]&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs regroupent :&lt;br /&gt;
&lt;br /&gt;
* les proxies et les caches web,&lt;br /&gt;
* les spoolers d'impression,&lt;br /&gt;
* les serveurs de courrier électronique,&lt;br /&gt;
* les serveurs DNS,&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Configuration d'un relais applicatif pour le Web===&lt;br /&gt;
&lt;br /&gt;
Le listing suivant donne un extrait de la configuration d'un serveur apache pour que celui-ci serve de relais aux requêtes émises par des navigateurs. Aucune configuration n'est relative au protocole IPv6. Il suffit d'activer la fonction de proxy.&lt;br /&gt;
&lt;br /&gt;
 #cat /usr/local/etc/apache/httpd.conf&lt;br /&gt;
 #&lt;br /&gt;
 # Proxy Server directives. Uncomment the following lines to&lt;br /&gt;
 # enable the proxy server:&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;IfModule mod_proxy.c&amp;gt;&lt;br /&gt;
 ProxyRequests On&lt;br /&gt;
 &amp;lt;Directory proxy:*&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # Enable/disable the handling of HTTP/1.1 &amp;quot;Via:&amp;quot; headers.&lt;br /&gt;
 # (&amp;quot;Full&amp;quot; adds the server ver.;&amp;quot;Block&amp;quot; removes all outgoing Via: headers)&lt;br /&gt;
 # Set to one of: Off | On | Full | Block&lt;br /&gt;
 #&lt;br /&gt;
 ProxyVia On&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 # End of proxy directives.&lt;br /&gt;
&lt;br /&gt;
==SOCKS==&lt;br /&gt;
&lt;br /&gt;
Cette technique est aussi issue des solutions pour passer d'un adressage privé à un adressage public. SOCKS ajoute un &amp;quot;canal de signalisation&amp;quot; aux données transportées, ce qui permet de piloter à distance l'ouverture de connexion. En IPv4, cette technique permet d'utiliser un adressage privé en interne pour atteindre un relais SOCKS qui se trouve dans une zone démilitarisée. Le relais SOCKS se charge d'ouvrir une connexion normale avec l'équipement distant. Le relais SOCKS se plaçant dans le modèle architectural en dessous de l'application, il est relativement indépendant de celle-ci, il n'est pas nécessaire de recourir à différents types de relais. De plus, SOCKS permet aussi bien les communications entrantes que sortantes.&lt;br /&gt;
&lt;br /&gt;
SOCKS s'applique à tout type de réseau, ainsi qu'à des réseaux utilisant l'adressage privé IPv4.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 étend ce mécanisme en permettant les deux versions du protocole IP. Quatre scénarios sont possibles, comme l'indique la figure suivante :&lt;br /&gt;
&lt;br /&gt;
[[image:CS187.gif]]&lt;br /&gt;
&lt;br /&gt;
* les protocoles X et Y sont IPv4. On est dans le cadre d'une utilisation classique de SOCKS telle qu'elle est prévue dans le RFC 1928 initial pour permettre à des équipements utilisant un plan d'adressage privé d'accéder aux ressources de l'Internet et de contrôler l'accès au réseau.&lt;br /&gt;
* le protocole X est IPv4 et le protocole Y est IPv6. Ce scénario permet de v6fier une application ne connaissant qu'IPv4.&lt;br /&gt;
* le protocole X est IPv6 et le protocole Y est IPv4. Ce scénario permet à une application IPv6 d'accéder à des ressources uniquement disponibles en IPv4&lt;br /&gt;
* les protocoles X et Y sont IPv6. Vu la taille des adresses IPv6, il est peu probable qu'il y ait toujours un plan d'adressage privé, non routable sur l'Internet. L'utilisation de SOCKS dans ce cas serait surtout pour contrôler l'usage des ressources réseau.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 prévoit aussi l'enchaînement de plusieurs relais SOCKS.&lt;br /&gt;
&lt;br /&gt;
La principale difficulté introduite par l'utilisation de SOCKS pour la transition provient de l'interrogation du DNS. Dans le cas du deuxième scénario, où X vaut 4 et Y vaut 6, l'application ne peut que manipuler des adresses IPv4. En particulier les appels aux serveurs DNS pour la résolution de nom ne portent que sur des ''Resource Records'' de type &amp;lt;tt&amp;gt;A&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le RFC 1928 prévoit que dans la partie &amp;quot;signalisation&amp;quot;, le nom de l'équipement distant peut être envoyé de trois manières différentes :&lt;br /&gt;
&lt;br /&gt;
* une adresse IPv4,&lt;br /&gt;
* un nom de machine,&lt;br /&gt;
* une adresse IPv6.&lt;br /&gt;
&lt;br /&gt;
Si l'application utilise un nom de machine (FQDN : ''Fully Qualified Domain Name''), SOCKS intercepte l'appel procédural pour la résolution et retourne à l'application une fausse adresse IP prise dans un poule. Quand l'application ouvre une connexion en utilisant cette adresse, le nom de la machine distante peut être retrouvé et est envoyé au relais SOCKS qui pourra, si le DNS retourne un enregistrement &amp;lt;tt&amp;gt;AAAA&amp;lt;/tt&amp;gt;, ouvrir la connexion en utilisant le protocole IPv6.&lt;br /&gt;
&lt;br /&gt;
==DSTM==&lt;br /&gt;
&lt;br /&gt;
L'objectif de DSTM (''Dual Stack Transition Mechanism'') est de donner une connectivité IPv4 temporaire à un terminal dual-stack connecté à un réseau uniquement IPv6. La connectivité IPv4 n'est disponible que le temps nécessaire à une communication avec un terminal distant qui ne possède qu'une pile IPv4. Dans le principe, DSTM est en quelque sorte la réciproque du Tunnel Broker.&lt;br /&gt;
&lt;br /&gt;
En général DSTM est identifié comme un mécanisme intervenant en fin de période de cohabitation IPv4/IPv6, lorsque les réseaux IPv6 sont dévenus majoritaires. Dans ce cas, DSTM peut typiquement s'appliquer soit à un réseau d'entreprise, soit à un réseau d'ISP.&lt;br /&gt;
&lt;br /&gt;
DSTM se place dans la situation où une partie d'un site est passée en IPv6, mais où certaines applications continuent à utiliser IPv4. DSTM utilise une interface spéciale DTI (''Dynamic Tunneling Interface'') qui permet l'encapsulation des paquets IPv4 dans des paquets IPv6. Du point de vue de l'application, ce mécanisme est relativement transparent, puisque l'interface DTI est considérée comme une interface réseau classique.&lt;br /&gt;
&lt;br /&gt;
Un routeur particulier appelé TEP (''Tunnel End Point'') possédant la connectivité entre le monde IPv4 et le monde IPv6 effectue l'encapsulation et la désencapsulation des données.&lt;br /&gt;
&lt;br /&gt;
Initialement, les interfaces sont actives, mais ne disposent pas d'adresses IPv4, l'attribution d'une adresse n'est faite que lorsqu'un premier paquet est routé vers l'interface DTI. Dans ce cas, une demande d'allocation est envoyée par la machine à un serveur et une adresse IPv4 est allouée pendant la durée d'utilisation de l'interface DTI. Les paquets IPv4 sont envoyés à un TEP dont l'adresse IPv6 est généralement obtenue en même temps que l'adresse IPv4 temporaire. Le TEP garde en mémoire la correspondance entre les adresses sources IPv4 et IPv6 des paquets qu'il reçoit. De cette manière quand le destinataire sur le réseau IPv4 répond, le TEP peut déterminer vers quel équipement il peut tunneler les paquets.&lt;br /&gt;
&lt;br /&gt;
[[image:CS188.gif]]&lt;br /&gt;
&lt;br /&gt;
L'usage de DSTM permet de ne configurer que la pile IPv6 d'un équipement. La pile IPv4 est configurée à la demande en fonction des besoins applicatifs. Le travail de configuation, de routage et de supervision de l'administrateur est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
Le fait d'utiliser des tunnels facilite l'allocation des adresses IPv4, car celles-ci perdent leur fonction de localisation, elles doivent juste conserver leur propriété d'unicité, ce qui est relativement facile à garantir.&lt;br /&gt;
&lt;br /&gt;
==NAT-PT==&lt;br /&gt;
&lt;br /&gt;
Le principe reste identique à celui de NAT pour IPv4. Il s'agit ici de traduire les en-têtes des datagrammes IPv6 en en-têtes de datagrammes IPv4. NAT-PT permet le déploiement de réseaux uniquement IPv6 et offrir une « compatibilité » avec le monde IPv4. Les boitiers NAT-PT sont des routeurs réalisant la traduction des paquets IPv6 en paquets IPv4 et servant de proxy DNS. Les autres équipements du réseau (derrière le boitier NAT-PT) n'ont besoin de rien de spécial pour que ce mécanisme puisse être utilisé.&lt;br /&gt;
&lt;br /&gt;
* NAT-PT permet de s'affranchir d'IPv4 tout en permettant de continuer à bénéficier des services qui lui sont encore associés. Ce mécanisme introduit apres la phase de mise en œuvre (qui n'est pas très simple) un réel allègement de la tâche de l'administrateur.&lt;br /&gt;
* Le mécanisme NAT-PT est en discussion dans le groupe v6ops de l'IETF pour être classé historique, son usage semble devoir être limité (voire confiné) à des situations qui ne peuvent être gérées autrement. Un document de travail inventorie les scénarios qui en ont « absolument » besoin et tente de proposer des mécanismes de remplacement.&lt;br /&gt;
&lt;br /&gt;
Le principe de fonctionnement de NAT-PT pour passer d'une version à l'autre du protocole IP est le même que pour passer d'un adressage privé à une adressage public, avec également les mêmes limitations, par exemple, si les paquets transportent des adresses. Par contre, ce mécanisme offre une certaine transparence au niveau du réseau.&lt;br /&gt;
&lt;br /&gt;
Les paquets émis vers un équipement uniquement IPv4 utilisent l'adresse IPv4 mappée. Par contre, l'adresse source est une des adresses IPv6 globale que possède la machine émettrice. Le préfixe des adresses IPv4 mappées est routé vers un boîtier de traduction. Ce dernier dispose d'un poule d'adresses IPv4 officielles. Quand une nouvelle session est initiée par une machine IPv6, le boîtier alloue à la nouvelle adresse IPv6, une adresse IPv4 du poule, et construit un paquet IPv4 en extrayant de l'adresse IPv4, l'adresse IPv4 mappée de destination.&lt;br /&gt;
{{suivi| Accès des entreprises et des particuliers à l'Internet IPv6 | Accès des entreprises et des particuliers à l'Internet IPv6 | Programmation d'applications | Programmation d'applications }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2947</id>
		<title>Mécanismes d'interopérabilité</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2947"/>
				<updated>2006-02-27T10:24:43Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* NAT-PT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Relais applicatifs==&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs ou ALG (''Application Level Gateway'') représentent le moyen le plus simple pour assurer une relation entre le monde IPv4 et le monde IPv6. Il s'agit de machines avec une double pile (cf. figure Exemple de relais applicatif pour le courrier électronique) configurées pour accéder aux deux versions du protocole. Les équipements IPv6 émettent leur requête vers le relais applicatif qui interprète le contenu de la requête et la retransmet en IPv4.&lt;br /&gt;
&lt;br /&gt;
Un ou plusieurs relais peuvent être installés en fonction des services rendus disponibles sur le réseau (par exemple serveur d'impression, serveur de messagerie, relais http, ...). Les machines clientes doivent être configurées pour adresser leurs requêtes applicatives à ces relais.&lt;br /&gt;
&lt;br /&gt;
L'usage de ces techniques est très fréquent dans les réseaux privés pour communiquer avec l'extérieur. Tous les protocoles ne peuvent pas utiliser les relais applicatifs, par exemple telnet. Mais comme la liste précédente l'indique, les ALG concernent des applications courantes qui représentent une partie importante du trafic. Cela permet également d'alléger le travail d'autres mécanismes de transition qui sont plus complexes à mettre en œuvre.&lt;br /&gt;
&lt;br /&gt;
[[image:CS186.gif]]&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs regroupent :&lt;br /&gt;
&lt;br /&gt;
* les proxies et les caches web,&lt;br /&gt;
* les spoolers d'impression,&lt;br /&gt;
* les serveurs de courrier électronique,&lt;br /&gt;
* les serveurs DNS,&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Configuration d'un relais applicatif pour le Web===&lt;br /&gt;
&lt;br /&gt;
Le listing suivant donne un extrait de la configuration d'un serveur apache pour que celui-ci serve de relais aux requêtes émises par des navigateurs. Aucune configuration n'est relative au protocole IPv6. Il suffit d'activer la fonction de proxy.&lt;br /&gt;
&lt;br /&gt;
 #cat /usr/local/etc/apache/httpd.conf&lt;br /&gt;
 #&lt;br /&gt;
 # Proxy Server directives. Uncomment the following lines to&lt;br /&gt;
 # enable the proxy server:&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;IfModule mod_proxy.c&amp;gt;&lt;br /&gt;
 ProxyRequests On&lt;br /&gt;
 &amp;lt;Directory proxy:*&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # Enable/disable the handling of HTTP/1.1 &amp;quot;Via:&amp;quot; headers.&lt;br /&gt;
 # (&amp;quot;Full&amp;quot; adds the server ver.;&amp;quot;Block&amp;quot; removes all outgoing Via: headers)&lt;br /&gt;
 # Set to one of: Off | On | Full | Block&lt;br /&gt;
 #&lt;br /&gt;
 ProxyVia On&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 # End of proxy directives.&lt;br /&gt;
&lt;br /&gt;
==SOCKS==&lt;br /&gt;
&lt;br /&gt;
Cette technique est aussi issue des solutions pour passer d'un adressage privé à un adressage public. SOCKS ajoute un &amp;quot;canal de signalisation&amp;quot; aux données transportées, ce qui permet de piloter à distance l'ouverture de connexion. En IPv4, cette technique permet d'utiliser un adressage privé en interne pour atteindre un relais SOCKS qui se trouve dans une zone démilitarisée. Le relais SOCKS se charge d'ouvrir une connexion normale avec l'équipement distant. Le relais SOCKS se plaçant dans le modèle architectural en dessous de l'application, il est relativement indépendant de celle-ci, il n'est pas nécessaire de recourir à différents types de relais. De plus, SOCKS permet aussi bien les communications entrantes que sortantes.&lt;br /&gt;
&lt;br /&gt;
SOCKS s'applique à tout type de réseau, ainsi qu'à des réseaux utilisant l'adressage privé IPv4.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 étend ce mécanisme en permettant les deux versions du protocole IP. Quatre scénarios sont possibles, comme l'indique la figure suivante :&lt;br /&gt;
&lt;br /&gt;
[[image:CS187.gif]]&lt;br /&gt;
&lt;br /&gt;
* les protocoles X et Y sont IPv4. On est dans le cadre d'une utilisation classique de SOCKS telle qu'elle est prévue dans le RFC 1928 initial pour permettre à des équipements utilisant un plan d'adressage privé d'accéder aux ressources de l'Internet et de contrôler l'accès au réseau.&lt;br /&gt;
* le protocole X est IPv4 et le protocole Y est IPv6. Ce scénario permet de v6fier une application ne connaissant qu'IPv4.&lt;br /&gt;
* le protocole X est IPv6 et le protocole Y est IPv4. Ce scénario permet à une application IPv6 d'accéder à des ressources uniquement disponibles en IPv4&lt;br /&gt;
* les protocoles X et Y sont IPv6. Vu la taille des adresses IPv6, il est peu probable qu'il y ait toujours un plan d'adressage privé, non routable sur l'Internet. L'utilisation de SOCKS dans ce cas serait surtout pour contrôler l'usage des ressources réseau.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 prévoit aussi l'enchaînement de plusieurs relais SOCKS.&lt;br /&gt;
&lt;br /&gt;
La principale difficulté introduite par l'utilisation de SOCKS pour la transition provient de l'interrogation du DNS. Dans le cas du deuxième scénario, où X vaut 4 et Y vaut 6, l'application ne peut que manipuler des adresses IPv4. En particulier les appels aux serveurs DNS pour la résolution de nom ne portent que sur des ''Resource Records'' de type &amp;lt;tt&amp;gt;A&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le RFC 1928 prévoit que dans la partie &amp;quot;signalisation&amp;quot;, le nom de l'équipement distant peut être envoyé de trois manières différentes :&lt;br /&gt;
&lt;br /&gt;
* une adresse IPv4,&lt;br /&gt;
* un nom de machine,&lt;br /&gt;
* une adresse IPv6.&lt;br /&gt;
&lt;br /&gt;
Si l'application utilise un nom de machine (FQDN : ''Fully Qualified Domain Name''), SOCKS intercepte l'appel procédural pour la résolution et retourne à l'application une fausse adresse IP prise dans un poule. Quand l'application ouvre une connexion en utilisant cette adresse, le nom de la machine distante peut être retrouvé et est envoyé au relais SOCKS qui pourra, si le DNS retourne un enregistrement &amp;lt;tt&amp;gt;AAAA&amp;lt;/tt&amp;gt;, ouvrir la connexion en utilisant le protocole IPv6.&lt;br /&gt;
&lt;br /&gt;
==DSTM==&lt;br /&gt;
&lt;br /&gt;
L'objectif de DSTM (''Dual Stack Transition Mechanism'') est de donner une connectivité IPv4 temporaire à un terminal dual-stack connecté à un réseau uniquement IPv6. La connectivité IPv4 n'est disponible que le temps nécessaire à une communication avec un terminal distant qui ne possède qu'une pile IPv4. Dans le principe, DSTM est en quelque sorte la réciproque du Tunnel Broker.&lt;br /&gt;
&lt;br /&gt;
En général DSTM est identifié comme un mécanisme intervenant en fin de période de cohabitation IPv4/IPv6, lorsque les réseaux IPv6 sont dévenus majoritaires. Dans ce cas, DSTM peut typiquement s'appliquer soit à un réseau d'entreprise, soit à un réseau d'ISP.&lt;br /&gt;
&lt;br /&gt;
DSTM se place dans la situation où une partie d'un site est passée en IPv6, mais où certaines applications continuent à utiliser IPv4. DSTM utilise une interface spéciale DTI (''Dynamic Tunneling Interface'') qui permet l'encapsulation des paquets IPv4 dans des paquets IPv6. Du point de vue de l'application, ce mécanisme est relativement transparent, puisque l'interface DTI est considérée comme une interface réseau classique.&lt;br /&gt;
&lt;br /&gt;
Un routeur particulier appelé TEP (''Tunnel End Point'') possédant la connectivité entre le monde IPv4 et le monde IPv6 effectue l'encapsulation et la désencapsulation des données.&lt;br /&gt;
&lt;br /&gt;
Initialement, les interfaces sont actives, mais ne disposent pas d'adresses IPv4, l'attribution d'une adresse n'est faite que lorsqu'un premier paquet est routé vers l'interface DTI. Dans ce cas, une demande d'allocation est envoyée par la machine à un serveur et une adresse IPv4 est allouée pendant la durée d'utilisation de l'interface DTI. Les paquets IPv4 sont envoyés à un TEP dont l'adresse IPv6 est généralement obtenue en même temps que l'adresse IPv4 temporaire. Le TEP garde en mémoire la correspondance entre les adresses sources IPv4 et IPv6 des paquets qu'il reçoit. De cette manière quand le destinataire sur le réseau IPv4 répond, le TEP peut déterminer vers quel équipement il peut tunneler les paquets.&lt;br /&gt;
&lt;br /&gt;
[[image:CS188.gif]]&lt;br /&gt;
&lt;br /&gt;
L'usage de DSTM permet de ne configurer que la pile IPv6 d'un équipement. La pile IPv4 est configurée à la demande en fonction des besoins applicatifs. Le travail de configuation, de routage et de supervision de l'administrateur est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
Le fait d'utiliser des tunnels facilite l'allocation des adresses IPv4, car celles-ci perdent leur fonction de localisation, elles doivent juste conserver leur propriété d'unicité, ce qui est relativement facile à garantir.&lt;br /&gt;
&lt;br /&gt;
==NAT-PT==&lt;br /&gt;
&lt;br /&gt;
Le principe reste identique à celui de NAT pour IPv4. Il s'agit ici de traduire les en-têtes des datagrammes IPv6 en en-têtes de datagrammes IPv4. NAT-PT permet le déploiement de réseaux uniquement IPv6 et offrir une « compatibilité » avec le monde IPv4. Les boitiers NAT-PT sont des routeurs réalisant la traduction des paquets IPv6 en paquets IPv4 et servant de proxy DNS. Les autres équipements du réseau (derrière le boitier NAT-PT) n'ont besoin de rien de spécial pour que ce mécanisme puisse être utilisé.&lt;br /&gt;
&lt;br /&gt;
* NAT-PT permet de s'affranchir d'IPv4 tout en permettant de continuer à bénéficier des services qui lui sont encore associés. Ce mécanisme introduit apres la phase de mise en œuvre (qui n'est pas très simple) un réel allègement de la tâche de l'administrateur.&lt;br /&gt;
* Le mécanisme NAT-PT est en discussion dans le groupe v6ops de l'IETF pour être classé historique, son usage semble devoir être limité (voire confiné) à des situations qui ne peuvent être gérées autrement. Un document de travail inventorie les scénarios qui en ont « absolument » besoin et tente de proposer des mécanismes de remplacement.&lt;br /&gt;
&lt;br /&gt;
Le principe de fonctionnement de NAT-PT pour passer d'une version à l'autre du protocole IP est le même que pour passer d'un adressage privé à une adressage public, avec également les mêmes limitations, par exemple, si les paquets transportent des adresses. Par contre, ce mécanisme offre une certaine transparence au niveau du réseau.&lt;br /&gt;
&lt;br /&gt;
Les paquets émis vers un équipement uniquement IPv4 utilisent l'adresse IPv4 mappée. Par contre, l'adresse source est une des adresses IPv6 globale que possède la machine émettrice. Le préfixe des adresses IPv4 mappées est routé vers un boîtier de traduction. Ce dernier dispose d'un poule d'adresses IPv4 officielles. Quand une nouvelle session est initiée par une machine IPv6, le boîtier alloue à la nouvelle adresse IPv6, une adresse IPv4 du poule, et construit un paquet IPv4 en extrayant de l'adresse IPv4, l'adresse IPv4 mappée de destination.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2946</id>
		<title>Mécanismes d'interopérabilité</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2946"/>
				<updated>2006-02-27T10:19:31Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Relais applicatifs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Relais applicatifs==&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs ou ALG (''Application Level Gateway'') représentent le moyen le plus simple pour assurer une relation entre le monde IPv4 et le monde IPv6. Il s'agit de machines avec une double pile (cf. figure Exemple de relais applicatif pour le courrier électronique) configurées pour accéder aux deux versions du protocole. Les équipements IPv6 émettent leur requête vers le relais applicatif qui interprète le contenu de la requête et la retransmet en IPv4.&lt;br /&gt;
&lt;br /&gt;
Un ou plusieurs relais peuvent être installés en fonction des services rendus disponibles sur le réseau (par exemple serveur d'impression, serveur de messagerie, relais http, ...). Les machines clientes doivent être configurées pour adresser leurs requêtes applicatives à ces relais.&lt;br /&gt;
&lt;br /&gt;
L'usage de ces techniques est très fréquent dans les réseaux privés pour communiquer avec l'extérieur. Tous les protocoles ne peuvent pas utiliser les relais applicatifs, par exemple telnet. Mais comme la liste précédente l'indique, les ALG concernent des applications courantes qui représentent une partie importante du trafic. Cela permet également d'alléger le travail d'autres mécanismes de transition qui sont plus complexes à mettre en œuvre.&lt;br /&gt;
&lt;br /&gt;
[[image:CS186.gif]]&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs regroupent :&lt;br /&gt;
&lt;br /&gt;
* les proxies et les caches web,&lt;br /&gt;
* les spoolers d'impression,&lt;br /&gt;
* les serveurs de courrier électronique,&lt;br /&gt;
* les serveurs DNS,&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Configuration d'un relais applicatif pour le Web===&lt;br /&gt;
&lt;br /&gt;
Le listing suivant donne un extrait de la configuration d'un serveur apache pour que celui-ci serve de relais aux requêtes émises par des navigateurs. Aucune configuration n'est relative au protocole IPv6. Il suffit d'activer la fonction de proxy.&lt;br /&gt;
&lt;br /&gt;
 #cat /usr/local/etc/apache/httpd.conf&lt;br /&gt;
 #&lt;br /&gt;
 # Proxy Server directives. Uncomment the following lines to&lt;br /&gt;
 # enable the proxy server:&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;IfModule mod_proxy.c&amp;gt;&lt;br /&gt;
 ProxyRequests On&lt;br /&gt;
 &amp;lt;Directory proxy:*&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # Enable/disable the handling of HTTP/1.1 &amp;quot;Via:&amp;quot; headers.&lt;br /&gt;
 # (&amp;quot;Full&amp;quot; adds the server ver.;&amp;quot;Block&amp;quot; removes all outgoing Via: headers)&lt;br /&gt;
 # Set to one of: Off | On | Full | Block&lt;br /&gt;
 #&lt;br /&gt;
 ProxyVia On&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 # End of proxy directives.&lt;br /&gt;
&lt;br /&gt;
==SOCKS==&lt;br /&gt;
&lt;br /&gt;
Cette technique est aussi issue des solutions pour passer d'un adressage privé à un adressage public. SOCKS ajoute un &amp;quot;canal de signalisation&amp;quot; aux données transportées, ce qui permet de piloter à distance l'ouverture de connexion. En IPv4, cette technique permet d'utiliser un adressage privé en interne pour atteindre un relais SOCKS qui se trouve dans une zone démilitarisée. Le relais SOCKS se charge d'ouvrir une connexion normale avec l'équipement distant. Le relais SOCKS se plaçant dans le modèle architectural en dessous de l'application, il est relativement indépendant de celle-ci, il n'est pas nécessaire de recourir à différents types de relais. De plus, SOCKS permet aussi bien les communications entrantes que sortantes.&lt;br /&gt;
&lt;br /&gt;
SOCKS s'applique à tout type de réseau, ainsi qu'à des réseaux utilisant l'adressage privé IPv4.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 étend ce mécanisme en permettant les deux versions du protocole IP. Quatre scénarios sont possibles, comme l'indique la figure suivante :&lt;br /&gt;
&lt;br /&gt;
[[image:CS187.gif]]&lt;br /&gt;
&lt;br /&gt;
* les protocoles X et Y sont IPv4. On est dans le cadre d'une utilisation classique de SOCKS telle qu'elle est prévue dans le RFC 1928 initial pour permettre à des équipements utilisant un plan d'adressage privé d'accéder aux ressources de l'Internet et de contrôler l'accès au réseau.&lt;br /&gt;
* le protocole X est IPv4 et le protocole Y est IPv6. Ce scénario permet de v6fier une application ne connaissant qu'IPv4.&lt;br /&gt;
* le protocole X est IPv6 et le protocole Y est IPv4. Ce scénario permet à une application IPv6 d'accéder à des ressources uniquement disponibles en IPv4&lt;br /&gt;
* les protocoles X et Y sont IPv6. Vu la taille des adresses IPv6, il est peu probable qu'il y ait toujours un plan d'adressage privé, non routable sur l'Internet. L'utilisation de SOCKS dans ce cas serait surtout pour contrôler l'usage des ressources réseau.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 prévoit aussi l'enchaînement de plusieurs relais SOCKS.&lt;br /&gt;
&lt;br /&gt;
La principale difficulté introduite par l'utilisation de SOCKS pour la transition provient de l'interrogation du DNS. Dans le cas du deuxième scénario, où X vaut 4 et Y vaut 6, l'application ne peut que manipuler des adresses IPv4. En particulier les appels aux serveurs DNS pour la résolution de nom ne portent que sur des ''Resource Records'' de type &amp;lt;tt&amp;gt;A&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le RFC 1928 prévoit que dans la partie &amp;quot;signalisation&amp;quot;, le nom de l'équipement distant peut être envoyé de trois manières différentes :&lt;br /&gt;
&lt;br /&gt;
* une adresse IPv4,&lt;br /&gt;
* un nom de machine,&lt;br /&gt;
* une adresse IPv6.&lt;br /&gt;
&lt;br /&gt;
Si l'application utilise un nom de machine (FQDN : ''Fully Qualified Domain Name''), SOCKS intercepte l'appel procédural pour la résolution et retourne à l'application une fausse adresse IP prise dans un poule. Quand l'application ouvre une connexion en utilisant cette adresse, le nom de la machine distante peut être retrouvé et est envoyé au relais SOCKS qui pourra, si le DNS retourne un enregistrement &amp;lt;tt&amp;gt;AAAA&amp;lt;/tt&amp;gt;, ouvrir la connexion en utilisant le protocole IPv6.&lt;br /&gt;
&lt;br /&gt;
==DSTM==&lt;br /&gt;
&lt;br /&gt;
L'objectif de DSTM (''Dual Stack Transition Mechanism'') est de donner une connectivité IPv4 temporaire à un terminal dual-stack connecté à un réseau uniquement IPv6. La connectivité IPv4 n'est disponible que le temps nécessaire à une communication avec un terminal distant qui ne possède qu'une pile IPv4. Dans le principe, DSTM est en quelque sorte la réciproque du Tunnel Broker.&lt;br /&gt;
&lt;br /&gt;
En général DSTM est identifié comme un mécanisme intervenant en fin de période de cohabitation IPv4/IPv6, lorsque les réseaux IPv6 sont dévenus majoritaires. Dans ce cas, DSTM peut typiquement s'appliquer soit à un réseau d'entreprise, soit à un réseau d'ISP.&lt;br /&gt;
&lt;br /&gt;
DSTM se place dans la situation où une partie d'un site est passée en IPv6, mais où certaines applications continuent à utiliser IPv4. DSTM utilise une interface spéciale DTI (''Dynamic Tunneling Interface'') qui permet l'encapsulation des paquets IPv4 dans des paquets IPv6. Du point de vue de l'application, ce mécanisme est relativement transparent, puisque l'interface DTI est considérée comme une interface réseau classique.&lt;br /&gt;
&lt;br /&gt;
Un routeur particulier appelé TEP (''Tunnel End Point'') possédant la connectivité entre le monde IPv4 et le monde IPv6 effectue l'encapsulation et la désencapsulation des données.&lt;br /&gt;
&lt;br /&gt;
Initialement, les interfaces sont actives, mais ne disposent pas d'adresses IPv4, l'attribution d'une adresse n'est faite que lorsqu'un premier paquet est routé vers l'interface DTI. Dans ce cas, une demande d'allocation est envoyée par la machine à un serveur et une adresse IPv4 est allouée pendant la durée d'utilisation de l'interface DTI. Les paquets IPv4 sont envoyés à un TEP dont l'adresse IPv6 est généralement obtenue en même temps que l'adresse IPv4 temporaire. Le TEP garde en mémoire la correspondance entre les adresses sources IPv4 et IPv6 des paquets qu'il reçoit. De cette manière quand le destinataire sur le réseau IPv4 répond, le TEP peut déterminer vers quel équipement il peut tunneler les paquets.&lt;br /&gt;
&lt;br /&gt;
[[image:CS188.gif]]&lt;br /&gt;
&lt;br /&gt;
L'usage de DSTM permet de ne configurer que la pile IPv6 d'un équipement. La pile IPv4 est configurée à la demande en fonction des besoins applicatifs. Le travail de configuation, de routage et de supervision de l'administrateur est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
Le fait d'utiliser des tunnels facilite l'allocation des adresses IPv4, car celles-ci perdent leur fonction de localisation, elles doivent juste conserver leur propriété d'unicité, ce qui est relativement facile à garantir.&lt;br /&gt;
&lt;br /&gt;
==NAT-PT==&lt;br /&gt;
&lt;br /&gt;
Le principe reste identique à celui de NAT pour IPv4. Il s'agit ici de traduire les en-têtes des datagrammes IPv6 en en-têtes de datagrammes IPv4. NAT-PT permet le déploiement de réseaux uniquement IPv6 et offrir une « compatibilité » avec le monde IPv4. Les boitiers NAT-PT sont des routeurs réalisant la traduction des paquets IPv6 en paquets IPv4 et servant de proxy DNS. Les autres équipements du réseau (derrière le boitier NAT-PT) n'ont besoin de rien de spécial pour que ce mécanisme puisse être utilisé.&lt;br /&gt;
&lt;br /&gt;
* NAT-PT permet de s'affranchir d'IPv4 tout en permettant de continuer à bénéficier des services qui lui sont encore associés. Ce mécanisme introduit apres la phase de mise en ?uvre (qui n'est pas très simple) un réel allègement de la tâche de l'administrateur.&lt;br /&gt;
* Le mécanisme NAT-PT est en discussion dans le groupe v6ops de l'IETF pour être classé historique, son usage semble devoir être limité (voire confiné) à des situations qui ne peuvent être gérées autrement. Un document de travail inventorie les scénarios qui en ont « absolument » besoin et tente de proposer des mécanismes de remplacement.&lt;br /&gt;
&lt;br /&gt;
Le principe de fonctionnement de NAT-PT pour passer d'une version à l'autre du protocole IP est le même que pour passer d'un adressage privé à une adressage public, avec également les mêmes limitations, par exemple, si les paquets transportent des adresses. Par contre, ce mécanisme offre une certaine transparence au niveau du réseau.&lt;br /&gt;
&lt;br /&gt;
Les paquets émis vers un équipement uniquement IPv4 utilisent l'adresse IPv4 mappée. Par contre, l'adresse source est une des adresses IPv6 globale que possède la machine émettrice. Le préfixe des adresses IPv4 mappées est routé vers un boîtier de traduction. Ce dernier dispose d'un poule d'adresses IPv4 officielles. Quand une nouvelle session est initiée par une machine IPv6, le boîtier alloue à la nouvelle adresse IPv6, une adresse IPv4 du poule, et construit un paquet IPv4 en extrayant de l'adresse IPv4, l'adresse IPv4 mappée de destination.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2945</id>
		<title>Mécanismes d'interopérabilité</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2945"/>
				<updated>2006-02-27T10:17:43Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Relais applicatifs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Relais applicatifs==&lt;br /&gt;
&lt;br /&gt;
Un relais applicatif est une machine avec une double pile IP configurée pour accéder aux deux versions du protocole. Les équipements IPv6 émettent leurs requêtes vers un relais applicatif qui interprète le contenu de la requête et la retransmet en IPv4.&lt;br /&gt;
&lt;br /&gt;
Un ou plusieurs relais peuvent être installés en fonction des services rendus disponibles sur le réseau (par exemple serveur d'impression, serveur de messagerie, relais http, ...). Les machines clientes doivent être configurées pour adresser leurs requêtes applicatives à ces relais.&lt;br /&gt;
&lt;br /&gt;
L'usage de ces techniques est très fréquent dans les réseaux privés pour communiquer avec l'extérieur. Tous les protocoles ne peuvent pas utiliser les relais applicatifs, par exemple telnet. Mais comme la liste précédente l'indique, les ALG (''Application Level Gateway'') concernent des applications courantes qui représentent une partie importante du trafic. Cela permet également d'alléger le travail d'autres mécanismes de transition qui sont plus complexes à mettre en œuvre.&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs ou ALG (''Application Level Gateway'') représentent le moyen le plus simple pour assurer une relation entre le monde IPv4 et le monde IPv6. Il s'agit de machines avec une double pile (cf. figure Exemple de relais applicatif pour le courrier électronique) configurées pour accéder aux deux versions du protocole. Les équipements IPv6 émettent leur requête vers le relais applicatif qui interprète le contenu de la requête et la retransmet en IPv4.&lt;br /&gt;
&lt;br /&gt;
[[image:CS186.gif]]&lt;br /&gt;
&lt;br /&gt;
Ils regroupent :&lt;br /&gt;
&lt;br /&gt;
* les proxies et les caches web,&lt;br /&gt;
* les spoolers d'impression,&lt;br /&gt;
* les serveurs de courrier électronique,&lt;br /&gt;
* les serveurs DNS,&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Configuration d'un relais applicatif pour le Web===&lt;br /&gt;
&lt;br /&gt;
Le listing suivant donne un extrait de la configuration d'un serveur apache pour que celui-ci serve de relais aux requêtes émises par des navigateurs. Aucune configuration n'est relative au protocole IPv6. Il suffit d'activer la fonction de proxy.&lt;br /&gt;
&lt;br /&gt;
 #cat /usr/local/etc/apache/httpd.conf&lt;br /&gt;
 #&lt;br /&gt;
 # Proxy Server directives. Uncomment the following lines to&lt;br /&gt;
 # enable the proxy server:&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;IfModule mod_proxy.c&amp;gt;&lt;br /&gt;
 ProxyRequests On&lt;br /&gt;
 &amp;lt;Directory proxy:*&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # Enable/disable the handling of HTTP/1.1 &amp;quot;Via:&amp;quot; headers.&lt;br /&gt;
 # (&amp;quot;Full&amp;quot; adds the server ver.;&amp;quot;Block&amp;quot; removes all outgoing Via: headers)&lt;br /&gt;
 # Set to one of: Off | On | Full | Block&lt;br /&gt;
 #&lt;br /&gt;
 ProxyVia On&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 # End of proxy directives.&lt;br /&gt;
&lt;br /&gt;
==SOCKS==&lt;br /&gt;
&lt;br /&gt;
Cette technique est aussi issue des solutions pour passer d'un adressage privé à un adressage public. SOCKS ajoute un &amp;quot;canal de signalisation&amp;quot; aux données transportées, ce qui permet de piloter à distance l'ouverture de connexion. En IPv4, cette technique permet d'utiliser un adressage privé en interne pour atteindre un relais SOCKS qui se trouve dans une zone démilitarisée. Le relais SOCKS se charge d'ouvrir une connexion normale avec l'équipement distant. Le relais SOCKS se plaçant dans le modèle architectural en dessous de l'application, il est relativement indépendant de celle-ci, il n'est pas nécessaire de recourir à différents types de relais. De plus, SOCKS permet aussi bien les communications entrantes que sortantes.&lt;br /&gt;
&lt;br /&gt;
SOCKS s'applique à tout type de réseau, ainsi qu'à des réseaux utilisant l'adressage privé IPv4.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 étend ce mécanisme en permettant les deux versions du protocole IP. Quatre scénarios sont possibles, comme l'indique la figure suivante :&lt;br /&gt;
&lt;br /&gt;
[[image:CS187.gif]]&lt;br /&gt;
&lt;br /&gt;
* les protocoles X et Y sont IPv4. On est dans le cadre d'une utilisation classique de SOCKS telle qu'elle est prévue dans le RFC 1928 initial pour permettre à des équipements utilisant un plan d'adressage privé d'accéder aux ressources de l'Internet et de contrôler l'accès au réseau.&lt;br /&gt;
* le protocole X est IPv4 et le protocole Y est IPv6. Ce scénario permet de v6fier une application ne connaissant qu'IPv4.&lt;br /&gt;
* le protocole X est IPv6 et le protocole Y est IPv4. Ce scénario permet à une application IPv6 d'accéder à des ressources uniquement disponibles en IPv4&lt;br /&gt;
* les protocoles X et Y sont IPv6. Vu la taille des adresses IPv6, il est peu probable qu'il y ait toujours un plan d'adressage privé, non routable sur l'Internet. L'utilisation de SOCKS dans ce cas serait surtout pour contrôler l'usage des ressources réseau.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 prévoit aussi l'enchaînement de plusieurs relais SOCKS.&lt;br /&gt;
&lt;br /&gt;
La principale difficulté introduite par l'utilisation de SOCKS pour la transition provient de l'interrogation du DNS. Dans le cas du deuxième scénario, où X vaut 4 et Y vaut 6, l'application ne peut que manipuler des adresses IPv4. En particulier les appels aux serveurs DNS pour la résolution de nom ne portent que sur des ''Resource Records'' de type &amp;lt;tt&amp;gt;A&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le RFC 1928 prévoit que dans la partie &amp;quot;signalisation&amp;quot;, le nom de l'équipement distant peut être envoyé de trois manières différentes :&lt;br /&gt;
&lt;br /&gt;
* une adresse IPv4,&lt;br /&gt;
* un nom de machine,&lt;br /&gt;
* une adresse IPv6.&lt;br /&gt;
&lt;br /&gt;
Si l'application utilise un nom de machine (FQDN : ''Fully Qualified Domain Name''), SOCKS intercepte l'appel procédural pour la résolution et retourne à l'application une fausse adresse IP prise dans un poule. Quand l'application ouvre une connexion en utilisant cette adresse, le nom de la machine distante peut être retrouvé et est envoyé au relais SOCKS qui pourra, si le DNS retourne un enregistrement &amp;lt;tt&amp;gt;AAAA&amp;lt;/tt&amp;gt;, ouvrir la connexion en utilisant le protocole IPv6.&lt;br /&gt;
&lt;br /&gt;
==DSTM==&lt;br /&gt;
&lt;br /&gt;
L'objectif de DSTM (''Dual Stack Transition Mechanism'') est de donner une connectivité IPv4 temporaire à un terminal dual-stack connecté à un réseau uniquement IPv6. La connectivité IPv4 n'est disponible que le temps nécessaire à une communication avec un terminal distant qui ne possède qu'une pile IPv4. Dans le principe, DSTM est en quelque sorte la réciproque du Tunnel Broker.&lt;br /&gt;
&lt;br /&gt;
En général DSTM est identifié comme un mécanisme intervenant en fin de période de cohabitation IPv4/IPv6, lorsque les réseaux IPv6 sont dévenus majoritaires. Dans ce cas, DSTM peut typiquement s'appliquer soit à un réseau d'entreprise, soit à un réseau d'ISP.&lt;br /&gt;
&lt;br /&gt;
DSTM se place dans la situation où une partie d'un site est passée en IPv6, mais où certaines applications continuent à utiliser IPv4. DSTM utilise une interface spéciale DTI (''Dynamic Tunneling Interface'') qui permet l'encapsulation des paquets IPv4 dans des paquets IPv6. Du point de vue de l'application, ce mécanisme est relativement transparent, puisque l'interface DTI est considérée comme une interface réseau classique.&lt;br /&gt;
&lt;br /&gt;
Un routeur particulier appelé TEP (''Tunnel End Point'') possédant la connectivité entre le monde IPv4 et le monde IPv6 effectue l'encapsulation et la désencapsulation des données.&lt;br /&gt;
&lt;br /&gt;
Initialement, les interfaces sont actives, mais ne disposent pas d'adresses IPv4, l'attribution d'une adresse n'est faite que lorsqu'un premier paquet est routé vers l'interface DTI. Dans ce cas, une demande d'allocation est envoyée par la machine à un serveur et une adresse IPv4 est allouée pendant la durée d'utilisation de l'interface DTI. Les paquets IPv4 sont envoyés à un TEP dont l'adresse IPv6 est généralement obtenue en même temps que l'adresse IPv4 temporaire. Le TEP garde en mémoire la correspondance entre les adresses sources IPv4 et IPv6 des paquets qu'il reçoit. De cette manière quand le destinataire sur le réseau IPv4 répond, le TEP peut déterminer vers quel équipement il peut tunneler les paquets.&lt;br /&gt;
&lt;br /&gt;
[[image:CS188.gif]]&lt;br /&gt;
&lt;br /&gt;
L'usage de DSTM permet de ne configurer que la pile IPv6 d'un équipement. La pile IPv4 est configurée à la demande en fonction des besoins applicatifs. Le travail de configuation, de routage et de supervision de l'administrateur est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
Le fait d'utiliser des tunnels facilite l'allocation des adresses IPv4, car celles-ci perdent leur fonction de localisation, elles doivent juste conserver leur propriété d'unicité, ce qui est relativement facile à garantir.&lt;br /&gt;
&lt;br /&gt;
==NAT-PT==&lt;br /&gt;
&lt;br /&gt;
Le principe reste identique à celui de NAT pour IPv4. Il s'agit ici de traduire les en-têtes des datagrammes IPv6 en en-têtes de datagrammes IPv4. NAT-PT permet le déploiement de réseaux uniquement IPv6 et offrir une « compatibilité » avec le monde IPv4. Les boitiers NAT-PT sont des routeurs réalisant la traduction des paquets IPv6 en paquets IPv4 et servant de proxy DNS. Les autres équipements du réseau (derrière le boitier NAT-PT) n'ont besoin de rien de spécial pour que ce mécanisme puisse être utilisé.&lt;br /&gt;
&lt;br /&gt;
* NAT-PT permet de s'affranchir d'IPv4 tout en permettant de continuer à bénéficier des services qui lui sont encore associés. Ce mécanisme introduit apres la phase de mise en ?uvre (qui n'est pas très simple) un réel allègement de la tâche de l'administrateur.&lt;br /&gt;
* Le mécanisme NAT-PT est en discussion dans le groupe v6ops de l'IETF pour être classé historique, son usage semble devoir être limité (voire confiné) à des situations qui ne peuvent être gérées autrement. Un document de travail inventorie les scénarios qui en ont « absolument » besoin et tente de proposer des mécanismes de remplacement.&lt;br /&gt;
&lt;br /&gt;
Le principe de fonctionnement de NAT-PT pour passer d'une version à l'autre du protocole IP est le même que pour passer d'un adressage privé à une adressage public, avec également les mêmes limitations, par exemple, si les paquets transportent des adresses. Par contre, ce mécanisme offre une certaine transparence au niveau du réseau.&lt;br /&gt;
&lt;br /&gt;
Les paquets émis vers un équipement uniquement IPv4 utilisent l'adresse IPv4 mappée. Par contre, l'adresse source est une des adresses IPv6 globale que possède la machine émettrice. Le préfixe des adresses IPv4 mappées est routé vers un boîtier de traduction. Ce dernier dispose d'un poule d'adresses IPv4 officielles. Quand une nouvelle session est initiée par une machine IPv6, le boîtier alloue à la nouvelle adresse IPv6, une adresse IPv4 du poule, et construit un paquet IPv4 en extrayant de l'adresse IPv4, l'adresse IPv4 mappée de destination.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2944</id>
		<title>Mécanismes d'interopérabilité</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=M%C3%A9canismes_d%27interop%C3%A9rabilit%C3%A9&amp;diff=2944"/>
				<updated>2006-02-27T10:17:15Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Relais applicatifs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Relais applicatifs==&lt;br /&gt;
&lt;br /&gt;
Un relais applicatif est une machine avec une double pile IP configurée pour accéder aux deux versions du protocole. Les équipements IPv6 émettent leurs requêtes vers un relais applicatif qui interprète le contenu de la requête et la retransmet en IPv4.&lt;br /&gt;
&lt;br /&gt;
Un ou plusieurs relais peuvent être installés en fonction des services rendus disponibles sur le réseau (par exemple serveur d'impression, serveur de messagerie, relais http, ...). Les machines clientes doivent être configurées pour adresser leurs requêtes applicatives à ces relais.&lt;br /&gt;
&lt;br /&gt;
L'usage de ces techniques est très fréquent dans les réseaux privés pour communiquer avec l'extérieur. Tous les protocoles ne peuvent pas utiliser les relais applicatifs, par exemple telnet. Mais comme la liste précédente l'indique, les ALG concernent des applications courantes qui représentent une partie importante du trafic. Cela permet également d'alléger le travail d'autres mécanismes de transition qui sont plus complexes à mettre en œuvre.&lt;br /&gt;
&lt;br /&gt;
Les relais applicatifs ou ALG (''Application Level Gateway'') représentent le moyen le plus simple pour assurer une relation entre le monde IPv4 et le monde IPv6. Il s'agit de machines avec une double pile (cf. figure Exemple de relais applicatif pour le courrier électronique) configurées pour accéder aux deux versions du protocole. Les équipements IPv6 émettent leur requête vers le relais applicatif qui interprète le contenu de la requête et la retransmet en IPv4.&lt;br /&gt;
&lt;br /&gt;
[[image:CS186.gif]]&lt;br /&gt;
&lt;br /&gt;
Ils regroupent :&lt;br /&gt;
&lt;br /&gt;
* les proxies et les caches web,&lt;br /&gt;
* les spoolers d'impression,&lt;br /&gt;
* les serveurs de courrier électronique,&lt;br /&gt;
* les serveurs DNS,&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Configuration d'un relais applicatif pour le Web===&lt;br /&gt;
&lt;br /&gt;
Le listing suivant donne un extrait de la configuration d'un serveur apache pour que celui-ci serve de relais aux requêtes émises par des navigateurs. Aucune configuration n'est relative au protocole IPv6. Il suffit d'activer la fonction de proxy.&lt;br /&gt;
&lt;br /&gt;
 #cat /usr/local/etc/apache/httpd.conf&lt;br /&gt;
 #&lt;br /&gt;
 # Proxy Server directives. Uncomment the following lines to&lt;br /&gt;
 # enable the proxy server:&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;IfModule mod_proxy.c&amp;gt;&lt;br /&gt;
 ProxyRequests On&lt;br /&gt;
 &amp;lt;Directory proxy:*&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # Enable/disable the handling of HTTP/1.1 &amp;quot;Via:&amp;quot; headers.&lt;br /&gt;
 # (&amp;quot;Full&amp;quot; adds the server ver.;&amp;quot;Block&amp;quot; removes all outgoing Via: headers)&lt;br /&gt;
 # Set to one of: Off | On | Full | Block&lt;br /&gt;
 #&lt;br /&gt;
 ProxyVia On&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 # End of proxy directives.&lt;br /&gt;
&lt;br /&gt;
==SOCKS==&lt;br /&gt;
&lt;br /&gt;
Cette technique est aussi issue des solutions pour passer d'un adressage privé à un adressage public. SOCKS ajoute un &amp;quot;canal de signalisation&amp;quot; aux données transportées, ce qui permet de piloter à distance l'ouverture de connexion. En IPv4, cette technique permet d'utiliser un adressage privé en interne pour atteindre un relais SOCKS qui se trouve dans une zone démilitarisée. Le relais SOCKS se charge d'ouvrir une connexion normale avec l'équipement distant. Le relais SOCKS se plaçant dans le modèle architectural en dessous de l'application, il est relativement indépendant de celle-ci, il n'est pas nécessaire de recourir à différents types de relais. De plus, SOCKS permet aussi bien les communications entrantes que sortantes.&lt;br /&gt;
&lt;br /&gt;
SOCKS s'applique à tout type de réseau, ainsi qu'à des réseaux utilisant l'adressage privé IPv4.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 étend ce mécanisme en permettant les deux versions du protocole IP. Quatre scénarios sont possibles, comme l'indique la figure suivante :&lt;br /&gt;
&lt;br /&gt;
[[image:CS187.gif]]&lt;br /&gt;
&lt;br /&gt;
* les protocoles X et Y sont IPv4. On est dans le cadre d'une utilisation classique de SOCKS telle qu'elle est prévue dans le RFC 1928 initial pour permettre à des équipements utilisant un plan d'adressage privé d'accéder aux ressources de l'Internet et de contrôler l'accès au réseau.&lt;br /&gt;
* le protocole X est IPv4 et le protocole Y est IPv6. Ce scénario permet de v6fier une application ne connaissant qu'IPv4.&lt;br /&gt;
* le protocole X est IPv6 et le protocole Y est IPv4. Ce scénario permet à une application IPv6 d'accéder à des ressources uniquement disponibles en IPv4&lt;br /&gt;
* les protocoles X et Y sont IPv6. Vu la taille des adresses IPv6, il est peu probable qu'il y ait toujours un plan d'adressage privé, non routable sur l'Internet. L'utilisation de SOCKS dans ce cas serait surtout pour contrôler l'usage des ressources réseau.&lt;br /&gt;
&lt;br /&gt;
Le RFC 3089 prévoit aussi l'enchaînement de plusieurs relais SOCKS.&lt;br /&gt;
&lt;br /&gt;
La principale difficulté introduite par l'utilisation de SOCKS pour la transition provient de l'interrogation du DNS. Dans le cas du deuxième scénario, où X vaut 4 et Y vaut 6, l'application ne peut que manipuler des adresses IPv4. En particulier les appels aux serveurs DNS pour la résolution de nom ne portent que sur des ''Resource Records'' de type &amp;lt;tt&amp;gt;A&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le RFC 1928 prévoit que dans la partie &amp;quot;signalisation&amp;quot;, le nom de l'équipement distant peut être envoyé de trois manières différentes :&lt;br /&gt;
&lt;br /&gt;
* une adresse IPv4,&lt;br /&gt;
* un nom de machine,&lt;br /&gt;
* une adresse IPv6.&lt;br /&gt;
&lt;br /&gt;
Si l'application utilise un nom de machine (FQDN : ''Fully Qualified Domain Name''), SOCKS intercepte l'appel procédural pour la résolution et retourne à l'application une fausse adresse IP prise dans un poule. Quand l'application ouvre une connexion en utilisant cette adresse, le nom de la machine distante peut être retrouvé et est envoyé au relais SOCKS qui pourra, si le DNS retourne un enregistrement &amp;lt;tt&amp;gt;AAAA&amp;lt;/tt&amp;gt;, ouvrir la connexion en utilisant le protocole IPv6.&lt;br /&gt;
&lt;br /&gt;
==DSTM==&lt;br /&gt;
&lt;br /&gt;
L'objectif de DSTM (''Dual Stack Transition Mechanism'') est de donner une connectivité IPv4 temporaire à un terminal dual-stack connecté à un réseau uniquement IPv6. La connectivité IPv4 n'est disponible que le temps nécessaire à une communication avec un terminal distant qui ne possède qu'une pile IPv4. Dans le principe, DSTM est en quelque sorte la réciproque du Tunnel Broker.&lt;br /&gt;
&lt;br /&gt;
En général DSTM est identifié comme un mécanisme intervenant en fin de période de cohabitation IPv4/IPv6, lorsque les réseaux IPv6 sont dévenus majoritaires. Dans ce cas, DSTM peut typiquement s'appliquer soit à un réseau d'entreprise, soit à un réseau d'ISP.&lt;br /&gt;
&lt;br /&gt;
DSTM se place dans la situation où une partie d'un site est passée en IPv6, mais où certaines applications continuent à utiliser IPv4. DSTM utilise une interface spéciale DTI (''Dynamic Tunneling Interface'') qui permet l'encapsulation des paquets IPv4 dans des paquets IPv6. Du point de vue de l'application, ce mécanisme est relativement transparent, puisque l'interface DTI est considérée comme une interface réseau classique.&lt;br /&gt;
&lt;br /&gt;
Un routeur particulier appelé TEP (''Tunnel End Point'') possédant la connectivité entre le monde IPv4 et le monde IPv6 effectue l'encapsulation et la désencapsulation des données.&lt;br /&gt;
&lt;br /&gt;
Initialement, les interfaces sont actives, mais ne disposent pas d'adresses IPv4, l'attribution d'une adresse n'est faite que lorsqu'un premier paquet est routé vers l'interface DTI. Dans ce cas, une demande d'allocation est envoyée par la machine à un serveur et une adresse IPv4 est allouée pendant la durée d'utilisation de l'interface DTI. Les paquets IPv4 sont envoyés à un TEP dont l'adresse IPv6 est généralement obtenue en même temps que l'adresse IPv4 temporaire. Le TEP garde en mémoire la correspondance entre les adresses sources IPv4 et IPv6 des paquets qu'il reçoit. De cette manière quand le destinataire sur le réseau IPv4 répond, le TEP peut déterminer vers quel équipement il peut tunneler les paquets.&lt;br /&gt;
&lt;br /&gt;
[[image:CS188.gif]]&lt;br /&gt;
&lt;br /&gt;
L'usage de DSTM permet de ne configurer que la pile IPv6 d'un équipement. La pile IPv4 est configurée à la demande en fonction des besoins applicatifs. Le travail de configuation, de routage et de supervision de l'administrateur est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
Le fait d'utiliser des tunnels facilite l'allocation des adresses IPv4, car celles-ci perdent leur fonction de localisation, elles doivent juste conserver leur propriété d'unicité, ce qui est relativement facile à garantir.&lt;br /&gt;
&lt;br /&gt;
==NAT-PT==&lt;br /&gt;
&lt;br /&gt;
Le principe reste identique à celui de NAT pour IPv4. Il s'agit ici de traduire les en-têtes des datagrammes IPv6 en en-têtes de datagrammes IPv4. NAT-PT permet le déploiement de réseaux uniquement IPv6 et offrir une « compatibilité » avec le monde IPv4. Les boitiers NAT-PT sont des routeurs réalisant la traduction des paquets IPv6 en paquets IPv4 et servant de proxy DNS. Les autres équipements du réseau (derrière le boitier NAT-PT) n'ont besoin de rien de spécial pour que ce mécanisme puisse être utilisé.&lt;br /&gt;
&lt;br /&gt;
* NAT-PT permet de s'affranchir d'IPv4 tout en permettant de continuer à bénéficier des services qui lui sont encore associés. Ce mécanisme introduit apres la phase de mise en ?uvre (qui n'est pas très simple) un réel allègement de la tâche de l'administrateur.&lt;br /&gt;
* Le mécanisme NAT-PT est en discussion dans le groupe v6ops de l'IETF pour être classé historique, son usage semble devoir être limité (voire confiné) à des situations qui ne peuvent être gérées autrement. Un document de travail inventorie les scénarios qui en ont « absolument » besoin et tente de proposer des mécanismes de remplacement.&lt;br /&gt;
&lt;br /&gt;
Le principe de fonctionnement de NAT-PT pour passer d'une version à l'autre du protocole IP est le même que pour passer d'un adressage privé à une adressage public, avec également les mêmes limitations, par exemple, si les paquets transportent des adresses. Par contre, ce mécanisme offre une certaine transparence au niveau du réseau.&lt;br /&gt;
&lt;br /&gt;
Les paquets émis vers un équipement uniquement IPv4 utilisent l'adresse IPv4 mappée. Par contre, l'adresse source est une des adresses IPv6 globale que possède la machine émettrice. Le préfixe des adresses IPv4 mappées est routé vers un boîtier de traduction. Ce dernier dispose d'un poule d'adresses IPv4 officielles. Quand une nouvelle session est initiée par une machine IPv6, le boîtier alloue à la nouvelle adresse IPv6, une adresse IPv4 du poule, et construit un paquet IPv4 en extrayant de l'adresse IPv4, l'adresse IPv4 mappée de destination.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Talk:Bibliographie&amp;diff=2940</id>
		<title>Talk:Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Talk:Bibliographie&amp;diff=2940"/>
				<updated>2006-02-24T10:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mmmh mais il ne manquerait pas toute la liste des RFC ssur cette page ?? -- BS&lt;br /&gt;
&lt;br /&gt;
Legerement ouais. Et du coup y a les les RFC rajoutés dans la liste des Drafts obsolètes a mettre. -- BD&lt;br /&gt;
Pour info : RFC 4140, RFC 3484, RFC 4007, RFC 3307, RFC 4193, RFC 4380, RFC 3775, RFC 4364, RFC 4214.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Talk:Bibliographie&amp;diff=2939</id>
		<title>Talk:Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Talk:Bibliographie&amp;diff=2939"/>
				<updated>2006-02-24T10:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mmmh mais il ne manquerait pas toute la liste des RFC ssur cette page ?? -- BS&lt;br /&gt;
&lt;br /&gt;
Legerement ouais. Et du coup y a les les RFC rajoutés dans la liste des Drafts obsolètes a mettre. -- BD&lt;br /&gt;
Pour info : RFC 4140, 3484, 4007, 3307, 4193, 4380, 3775, 4364, 4214.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Talk:Bibliographie&amp;diff=2938</id>
		<title>Talk:Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Talk:Bibliographie&amp;diff=2938"/>
				<updated>2006-02-24T10:34:56Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mmmh mais il ne manquerait pas toute la liste des RFC ssur cette page ?? -- BS&lt;br /&gt;
&lt;br /&gt;
Legerement ouais. Et du coup y a les les RFC rajoutés dans la liste des Drafts obsolètes a mettre. -- BD&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2935</id>
		<title>Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2935"/>
				<updated>2006-02-24T10:04:43Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Internet Drafts sur IPv6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Livres sur IPv6 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BM95&amp;quot;&amp;gt;[BM95] S. O. Bradner &amp;amp; A. Mankin ed : IPng, Internet Protocol Next Generation, Addison-Wesley (IPng Series), ISBN0201633957, Septembre 1995.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Gai98] S. Gai, Internetworking IPv6 With Cisco Routers (Computer Communications), McGraw-Hill, ISBN: 0-070-22836-1, Février 1998.&lt;br /&gt;
 &lt;br /&gt;
[Hui97] C. Huitema: IPv6: The New Internet Protocol, Prentice Hall, ISBN: 0-138-50505-5, Octbre 1997.&lt;br /&gt;
 &lt;br /&gt;
[LL99] Peter Loshin &amp;amp; Pete Loshin: IPv6 Clearly Explained (Clearly Explained), Ap Professional, ISBN: 0-124-55838-0, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[MM00] Mark A. Miller &amp;amp; P. E. Miller: Implementing IPv6, second edition (Network Troubleshooting Library), IDG Books Worldwide, ISBN: 0-764-54589-2, Janvier 2000.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[Mil97] Stewart S. Miller: IPv6 : The Next Generation Internet Protocol, DigitalPress, ISBN: 1-555-58188-9, Décembre 1997.&lt;br /&gt;
 &lt;br /&gt;
[MK98] Marcus Goncalves &amp;amp; Kitty Niles: IPv6 Networks, McGraw-Hill, ISBN: 0-070-24807-9, Mai 1998.&lt;br /&gt;
 &lt;br /&gt;
[Sal00] Peter H. Salus: Big Book of IPV6 Addressing RFCs, Morgan Kaufmann Publishers, ISBN: 0-126-16770-2, Mars 2000.&lt;br /&gt;
 &lt;br /&gt;
[WR99] J. D. Wegner &amp;amp; Robert Rockwell: IP Addressing and Subnetting, Including IPv6, Syngress Media, ISBN: 1-928-99401-6, Décembre 1999.&lt;br /&gt;
 &lt;br /&gt;
== Internet Drafts sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
''Remarque : Il faut rappeler que les Internet drafts sont des documents de travail à durée de vie limitée. Ils ont vocation à devenir des RFC. Le lecteur est donc invité à vérifier quelle est la version la plus récente, ou si un RFC le remplace, en consultant l'index à jour (cf. Les RFC (Request For Comments)).''&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BCP2-id&amp;quot;&amp;gt;[BCP2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, M. Carney, C. Perkins: Extensions for the Dynamic Host Configuration Protocol for IPv6, [http://www.watersprings.org/pub/id/draft-ietf-dhcpv6exts-12.txt draft-ietf-dhc-v6exts-12.txt], Internet Draft, 5 Mai 2000 - Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BKLSPTSDY-id&amp;quot;&amp;gt;[BKLSPTSDY-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: W. Biemolt, M. Kaat, T. Larder, H. Steenman, R. van der Pol, G. Tsirtsis, Y. Sekiya, A. Durand, K. Yamamoto: On overview of the introduction of IPv6 in the Internet, draft-ietf-ngtrans-introduction-to-ipv6-transition-08.txt, Internet Draft, Février 2002. Working Group Concluded.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTM-id&amp;gt;[BTM-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, L. Toutain, O. Medina, F. Dupont, A. Durand, H Afifi,: Dual Stack Transition Mechanism (DSTM), draft-ietf-ngtrans-dstm-07.txt, Internet Draft, Aout 2002. Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BP-id&amp;quot;&amp;gt;[BP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Blanchet, F. Parent, IPv6 Tunnel Broker with the Tunnel Setup Protocol (TSP), [http://www.watersprings.org/pub/id/draft-blanchet-v6ops-tunnelbroker-tsp-03.txt draft-blanchet-v6ops-tunnelbroker-tsp-03.txt], Aout 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;CMB-id&amp;quot;&amp;gt;[CMB-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Hesham Soliman, Claude Castelluccia, Karim Malki, Ludovic Bellier, Hierarchical Mobile IPv6 mobility management (HMIPv6), [http://www.watersprings.org/pub/id/draft-ietf-mipshop-hmipv6-04.txt draft-ietf-mipshop-hmipv6-04.txt], Décembre 04. Obsolete - Experimental RFC 4140.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Craw-id&amp;quot;&amp;gt;[Craw-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Matt Crawford: IPv6 Node Information Queries, [http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-15.txt draft-ietf-ipngwg-icmp-name-lookups-15.txt, Internet Draft, 13 Février 2006. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Drave-id&amp;quot;&amp;gt;[Drave-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Draves: Default Address Selection for IPv6, draft-ietf-ipngwg-default-addr-select-06.txt, Internet Draft, 28 Septembre 2001. Obsolete - RFC 3484.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DHZ-id&amp;quot;&amp;gt;[DHZ-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: S. Deering, B. Haberman, B. Zill, T. Jinmei, E. Nordmark, A. Onoe: IP Version 6 Scoped Address Architecture, draft-ietf-ipngwg-scoping-arch-03.txt Internet Draft, 30 Novembre 2001. Obsolete - RFC 4007.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DIS-id&amp;quot;&amp;gt;[DIS-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Alain Durand, Johan Ihren, Pekka Savola, Operational Considerations and Issues with IPv6 DNS, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-issues-12.txt draft-ietf-dnsop-ipv6-dns-issues-12.txt], Internet Draft, 19 Octobre 2005,. Work in progress. &lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Dupont-id&amp;quot;&amp;gt;[Dupont-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: F. Dupont, M. Laurent-Maknavicius: AAA for mobile IPv6, draft-dupont-mipv6-AAA-01.txt, Internet Draft, 20 Novembre 2001, Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst-id&amp;quot;&amp;gt;[Ernst-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Thierry Ernst, Network Mobility Support Requirements, [http://www.watersprings.org/pub/id/draft-ietf-nemo-requirements-05.txt draft-ietf-nemo-requirements-05.txt], Octobre 2005&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner-id&amp;quot;&amp;gt;[Fenner-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Haixiang He, Brian Haberman, Hal Sandick, IGMP/MLD-based Multicast Forwarding ('IGMP/MLD Proxying'), [http://www.watersprings.org/pub/id/draft-ietf-magma-igmp-proxy-06.txt draft-ietf-magma-igmp-proxy-06.txt]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner2-id&amp;quot;&amp;gt;[Fenner2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Mark Handley, Hugh Holbrook, Isidor Kouvelas Protocol Independent Multicast - Sparse Mode (PIM -SM): Protocol Specification (Revised), IETF Internet Draft, [http://www.watersprings.org/pub/id/draft-ietf-pim-sm-v2-new-11.txt draft-ietf-pim-sm-v2-new-11.txt], 4 Octobre 2004. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Haber-id&amp;quot;&amp;gt;[Haber-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: B. Haberman: Dynamic Allocation Guidelines for IPv6 Multicast Addresses, draft-ietf-malloc-ipv6-guide-01.txt, Internet Draft, 12 Octobre 2000. Obsolete - RFC 3307.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HD-id&amp;quot;&amp;gt;[HD-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Hinden, S. Deering: IP Version 6 Addressing Architecture, [[http://tools.ietf.org/wg/ipv6/draft-ietf-ipv6-addr-arch-v4/draft-ietf-ipv6-addr-arch-v4-04.txt draft-ietf-ipv6-addr-arch-v4-04.txt]], Internet Draft, 20 Mai 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HH-id&amp;quot;&amp;gt;[HH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Robert Hinden, Brian Haberman, Centrally Assigned Unique Local IPv6 Unicast Addresses, [http://www.watersprings.org/pub/id/draft-ietf-ipv6-ula-central-01.txt draft-ietf-ipv6-ula-central-01.txt], Internet Draft, 21 Février 2005, Obsolete - See RFC 4193.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Hopps-if&amp;quot;&amp;gt;[Hopps-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. E. Hopps: Routing IPv6 with IS-IS, [http://www.ietf.org/internet-drafts/draft-ietf-isis-ipv6-06.txt draft-ietf-isis-ipv6-06.txt], Internet Draft, Octobre 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Huitema-id&amp;quot;&amp;gt;[Huitéma-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. Huitema, Teredo: Tunneling IPv6 over UDP through NATs, [http://www.watersprings.org/pub/id/draft-huitema-v6ops-teredo-05.txt draft-huitema-v6ops-teredo-05.txt], Avril 2005, Obsolete - See RFC 4380.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Jeong-id&amp;quot;&amp;gt;[Jeong-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jae-Hoon Jeong, IPv6 Host Configuration of DNS Server Information Approaches, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-configuration-06.txt draft-ietf-dnsop-ipv6-dns-configuration-06.txt], Internet Draft, 5 Mai 2005. RFC Editor Queue.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JP-id&amp;quot;&amp;gt;[JP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: D. B. Johnson, C. Perkins: Mobility Support in IPv6, draft-ietf-mobileip-ipv6-15.txt, Internet Draft, 2 Juillet 2001. Obsolete - RFC 3775.&lt;br /&gt;
 &lt;br /&gt;
; &amp;lt;div id=&amp;quot;NFG-id&amp;quot;&amp;gt;[NGF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tri Nguyen, Gerard Gastaud, Francois Le Faucheur, Dirk Ooms, Jeremy De Clercq, Stuart Prevost, Connecting IPv6 Domains across IPv4 Clouds with BGP, [http://tools.ietf.org/wg/v6ops/draft-ooms-v6ops-bgp-tunnel-06.txt draft-ooms-v6ops-bgp-tunnel-06.txt], Janvier 2006. Proposed standard.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;NPE-id&amp;quot;&amp;gt;[NPE-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Chan Wah Ng, Eun Kyoung Paik, Thierry Ernst, Analysis of Multihoming in Network Mobility Support, [http://www.ietf.org/internet-drafts/draft-ietf-nemo-multihoming-issues-04.txt draft-ietf-nemo-multihoming-issues-04.txt], 24 Octobre 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prz-id&amp;quot;&amp;gt;[Prz-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tony Przygienda, M-ISIS: Multi Topology (MT) Routing in IS-IS, [http://www.watersprings.org/pub/id/draft-ietf-isis-wg-multi-topology-11.txt draft-ietf-isis-wg-multi-topology-11.txt], 21 Octobre 2005.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prigent-id&amp;quot;&amp;gt;[Prigent-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: N. Prigent, J. Marchand, F. Dupont, B. Cousin, M. Laurent-Maknavicius, J. Bournelle: DHCPv6 Threats, draft-prigent-dhcpv6-threats-00.txt, Internet Draft, 24 mai 2001, Expired.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2547bis&amp;quot;&amp;gt;[RFC2547bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Eric C. Rosen, Yakov Rekhter, BGP/MPLS IP VPNs, [http://www.watersprings.org/pub/id/draft-ietf-l3vpn-rfc2547bis-03.txt draft-ietf-l3vpn-rfc2547bis-03.txt], Internet Draft, October 2004, Obsolete - RFC 4364.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Templin-id&amp;quot;&amp;gt;[Templin-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Fred Templin, T. Gleeson, M. Talwar D. Thaler, Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-isatap-24.txt draft-ietf-ngtrans-isatap-24.txt], Juillet 2005, Obsolete - RFC 4214.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Thubert-id&amp;quot;&amp;gt;[Thubert-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Pascal Thubert, NEMO Home Network models, [http://www.watersprings.org/pub/id/draft-ietf-nemo-home-network-models-06.txt draft-ietf-nemo-home-network-models-06.txt], 17 Fevrier 2006.&lt;br /&gt;
&lt;br /&gt;
==Autres documents de travail==&lt;br /&gt;
[FIPS-46]&lt;br /&gt;
&lt;br /&gt;
Data Encryption Standard, Federal Information Processing Standards Publication 46, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 15 Janvier 1977.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-81]&lt;br /&gt;
&lt;br /&gt;
DES Modes of Operation, Federal Information Processing Standards Publication 81, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 2 Décembre 1980.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-180-1]&lt;br /&gt;
&lt;br /&gt;
Secure Hash Standard, Federal Information Processing Standards Publication 180-1, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, Avril 1995.&lt;br /&gt;
 &lt;br /&gt;
==Autres Références==&lt;br /&gt;
[AL00]&lt;br /&gt;
&lt;br /&gt;
Mohammed Achemlal, Maryline Laurent, Analyse des fonctions des protocoles IPsec et leur intégration dans un réseau privé virtuel, Annales des télécommunications, 2000.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[AL98]&lt;br /&gt;
&lt;br /&gt;
P. Albitz and C. Liu: DNS and BIND, 3rd Edition, ISBN: 1-56592-512-2, O'Reilly and Associates, Septembre 1998.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTC02&amp;quot;&amp;gt;[BTC02]&amp;lt;/div&amp;gt;&lt;br /&gt;
: T. Bu, L. Gao, D. Towsley, On Characterizing Routing Table Growth, GlobalInternet 2002. http://www-unix.ecs.umass.edu/~lgao/globalinternet2002_tian.pdf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst01f-fr&amp;quot;&amp;gt;[Ernst01f-fr]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ernst, Thierry, Le Support des Réseaux Mobiles dans IPv6, UniversitéJoseph Fourier, Octobre 2001, Grenoble, France, http://www.inria.fr/rrrt/tu-0714.html&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst03f&amp;quot;&amp;gt;[Ernst03f]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Le Support des Réseaux Mobiles dans IPv6, CFIP: Colloque Francophone sur l'Ingenierie des Protocoles, Octobre 2003, Paris&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Fen-id]&lt;br /&gt;
&lt;br /&gt;
Bill Fenner, Management Information Base for the User Datagram Protocol (UDP), draft-ietf-ipv6-rfc2013-update-04.txt, Internet Draft, 20 Octobre 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Hui95]&lt;br /&gt;
&lt;br /&gt;
C. Huitema: Le routage dans l'Internet, Eyrolles, Octobre 1995.&lt;br /&gt;
 &lt;br /&gt;
[IEEE]&lt;br /&gt;
&lt;br /&gt;
Protocol Independant Interfaces, IEEE Std 1003.1g, DRAFT~6.6, Mars 1997.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JH-id]&lt;br /&gt;
&lt;br /&gt;
Jeffrey Haas, Susan Hares, Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), draft-ietf-idr-bgp4-mib-15.txt, Internet Draft, 31 Août 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JM-id]&lt;br /&gt;
&lt;br /&gt;
Dan Joyal, Vishwas Manral, Management Information Base for OSPFv3, draft-ietf-ospf-ospfv3-mib-09.txt, Internet Draft, 13 Mai 2005, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Kau-id&amp;quot;&amp;gt;[Kau-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Charlie Kaufman, Internet Key Exchange (IKEv2) Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-ikev2-17.txt draft-ietf-ipsec-ikev2-17.txt], Internet Draft, 4 Octobre 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;LAU03&amp;quot;&amp;gt;[LAU03]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Laurent-Maknavicius, Le protocole IPsec, [http://www.techniques-ingenieur.fr/affichage/DispIntro.asp?nGcmID=TE7545 TE7545], [http://www.techniques-ingenieur.fr/ Techniques de l'Ingénieur], Sécurité des systèmes d'information, Novembre 2003.&lt;br /&gt;
&lt;br /&gt;
[LAU04-A]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, M. Gardie, LDAP et la certification, Rapport de recherche du GET, 04001 LOR, 2004.&lt;br /&gt;
 &lt;br /&gt;
[LAU04-B]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, La sécurité de l'accès distant, Technique et Science Informatiques (TSI), 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;MHF-id&amp;quot;&amp;gt;[MHF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ambarish Malpani, Russ Housley, Trevor Freeman, Simple Certificate Validation Protocol (SCVP), [http://www.watersprings.org/pub/id/draft-ietf-pkix-scvp-22.txt draft-ietf-pkix-scvp-22.txt], Internet Draft, Octobre 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Mos-id&amp;quot;&amp;gt;[Mos-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Moskowitz, Host Identity Protocol, [http://www.watersprings.org/pub/id/draft-ietf-hip-base-04.txt draft-ietf-hip-base-04.txt], Internet Draft, 24 Octobre 2005, Work in progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-A&amp;quot;&amp;gt;[Pui02-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse critique d'IPsec, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-analyse-rapport/ipsec-analyse-rapport.pdf rapport de recherche 03 004 LOR], 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-B&amp;quot;&amp;gt;[Pui02-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse de l'impact de la mise en oeuvre d'IPsec dans les architectures de Communication, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-interactions-rapport/ipsec-interactions-rapport.pdf rapport de recherche 03 002 LOR], octobre 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui03&amp;quot;&amp;gt;[Pui03]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects ARP), [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/environnement-reel-1-rapport/environnement-reel-1-rapport.pdf rapport de recherche 03 001 LOR], janvier 2003.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-A&amp;quot;&amp;gt;[Pui04-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Etude des interactions IPsec/DNS, [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/InteractionDNS.pdf rapport de recherche 04002 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-B&amp;quot;&amp;gt;[Pui04-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects liés à ICMP), [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/IPsec_ICMP.pdf rapport de recherche 04004 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2401bis&amp;quot;&amp;gt;[RFC2401bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Stephen Kent, Karen Seo, Security Architecture for the Internet Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2401bis-06.txt draft-ietf-ipsec-rfc2401bis-06.txt], Internet Draft, 1 Avril 2005, Work in progress&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2402bis&amp;quot;&amp;gt;[RFC2402bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Stephen Kent, IP Authentication Header, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2402bis-11.txt draft-ietf-ipsec-rfc2402bis-11.txt], Internet Draft, 21 Mars 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Rou-id]&lt;br /&gt;
&lt;br /&gt;
Shawn Routhier, Management Information Base for the Internet Protocol (IP), draft-ietf-ipv6-rfc2011-update-10.txt; Internet Draft, 24 Mai 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Sch95]&lt;br /&gt;
&lt;br /&gt;
B. Schneier: Applied Cryptography : protocols, algorithms, and source code in C, (second edition), John Wiley &amp;amp; Sons, ISBN: 0-471-12845-7, 1996.&lt;br /&gt;
 &lt;br /&gt;
[Sta99]&lt;br /&gt;
&lt;br /&gt;
William Stallings: Snmp, Snmpv2, Snmpv3, and Rmon 1 and 2, Addison Wesley, ISBN: 0-201-48534-6, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[Tout03]&lt;br /&gt;
&lt;br /&gt;
Laurent Toutain: Réseaux Locaux et Internet: des protocoles à l'interconnexion, Troisième édition revue et augmentée, Hermès, ISBN: 2-7462-0670-6, 2003.&lt;br /&gt;
 &lt;br /&gt;
[Uni31]&lt;br /&gt;
&lt;br /&gt;
ATM Forum: ATM User-Network Interface (UNI) Specification Version 3.1, Prentice Hall, Englewood Cliffs, NJ, Juin 1995.&lt;br /&gt;
 &lt;br /&gt;
[WH-id]&lt;br /&gt;
&lt;br /&gt;
Margaret Wasserman, Brian Haberman, IP Forwarding Table MIB, draft-ietf-ipv6-rfc2096-update-07.txt, Internet Draft, 12 février 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[WK99]&lt;br /&gt;
&lt;br /&gt;
M. Welsh et L. Kaufman: Le système Linux, 2e édition révisée, Éditions O'Reilly, ISBN: 2-84177-033-8, Janvier 1999.&lt;br /&gt;
&lt;br /&gt;
==Sites Web sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
;[IETF]&lt;br /&gt;
:http://www.imag.fr/pub/archive/IETF: Mirroir français du serveur de l'IETF.&lt;br /&gt;
 &lt;br /&gt;
;[6bone]&lt;br /&gt;
:http://www.6bone.net: Réseau 6bone.&lt;br /&gt;
 &lt;br /&gt;
;[G6bone]&lt;br /&gt;
:http://peirce.logique.jussieu.fr/G6/ Réseau G6-bone (partie francophone de 6bone).&lt;br /&gt;
 &lt;br /&gt;
;[hs247] &lt;br /&gt;
:http://hs247.com/ Informations sur le 6bone et IPv6 en général.&lt;br /&gt;
&lt;br /&gt;
;[ipv6.org]&lt;br /&gt;
: http://www.ipv6.org/ pages d'information sur le protocole IPv6&lt;br /&gt;
&lt;br /&gt;
;[ipv6forum] &lt;br /&gt;
:http://www.ipv6forum.org/ Groupement d'industriels pour promouvoir IPv6.&lt;br /&gt;
&lt;br /&gt;
;[playground] &lt;br /&gt;
:http://playground.sun.com/pub/ipng/html/ipng-main.html liste des mises en oeuvre d'IPv6 dans les équipements.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2934</id>
		<title>Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2934"/>
				<updated>2006-02-24T10:02:23Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Internet Drafts sur IPv6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Livres sur IPv6 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BM95&amp;quot;&amp;gt;[BM95] S. O. Bradner &amp;amp; A. Mankin ed : IPng, Internet Protocol Next Generation, Addison-Wesley (IPng Series), ISBN0201633957, Septembre 1995.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Gai98] S. Gai, Internetworking IPv6 With Cisco Routers (Computer Communications), McGraw-Hill, ISBN: 0-070-22836-1, Février 1998.&lt;br /&gt;
 &lt;br /&gt;
[Hui97] C. Huitema: IPv6: The New Internet Protocol, Prentice Hall, ISBN: 0-138-50505-5, Octbre 1997.&lt;br /&gt;
 &lt;br /&gt;
[LL99] Peter Loshin &amp;amp; Pete Loshin: IPv6 Clearly Explained (Clearly Explained), Ap Professional, ISBN: 0-124-55838-0, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[MM00] Mark A. Miller &amp;amp; P. E. Miller: Implementing IPv6, second edition (Network Troubleshooting Library), IDG Books Worldwide, ISBN: 0-764-54589-2, Janvier 2000.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[Mil97] Stewart S. Miller: IPv6 : The Next Generation Internet Protocol, DigitalPress, ISBN: 1-555-58188-9, Décembre 1997.&lt;br /&gt;
 &lt;br /&gt;
[MK98] Marcus Goncalves &amp;amp; Kitty Niles: IPv6 Networks, McGraw-Hill, ISBN: 0-070-24807-9, Mai 1998.&lt;br /&gt;
 &lt;br /&gt;
[Sal00] Peter H. Salus: Big Book of IPV6 Addressing RFCs, Morgan Kaufmann Publishers, ISBN: 0-126-16770-2, Mars 2000.&lt;br /&gt;
 &lt;br /&gt;
[WR99] J. D. Wegner &amp;amp; Robert Rockwell: IP Addressing and Subnetting, Including IPv6, Syngress Media, ISBN: 1-928-99401-6, Décembre 1999.&lt;br /&gt;
 &lt;br /&gt;
== Internet Drafts sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
''Remarque : Il faut rappeler que les Internet drafts sont des documents de travail à durée de vie limitée. Ils ont vocation à devenir des RFC. Le lecteur est donc invité à vérifier quelle est la version la plus récente, ou si un RFC le remplace, en consultant l'index à jour (cf. Les RFC (Request For Comments)).''&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BCP2-id&amp;quot;&amp;gt;[BCP2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, M. Carney, C. Perkins: Extensions for the Dynamic Host Configuration Protocol for IPv6, [http://www.watersprings.org/pub/id/draft-ietf-dhcpv6exts-12.txt draft-ietf-dhc-v6exts-12.txt], Internet Draft, 5 Mai 2000 - Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BKLSPTSDY-id&amp;quot;&amp;gt;[BKLSPTSDY-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: W. Biemolt, M. Kaat, T. Larder, H. Steenman, R. van der Pol, G. Tsirtsis, Y. Sekiya, A. Durand, K. Yamamoto: On overview of the introduction of IPv6 in the Internet, draft-ietf-ngtrans-introduction-to-ipv6-transition-08.txt, Internet Draft, Février 2002. Working Group Concluded.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTM-id&amp;gt;[BTM-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, L. Toutain, O. Medina, F. Dupont, A. Durand, H Afifi,: Dual Stack Transition Mechanism (DSTM), draft-ietf-ngtrans-dstm-07.txt, Internet Draft, Aout 2002. Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BP-id&amp;quot;&amp;gt;[BP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Blanchet, F. Parent, IPv6 Tunnel Broker with the Tunnel Setup Protocol (TSP), [http://www.watersprings.org/pub/id/draft-blanchet-v6ops-tunnelbroker-tsp-03.txt draft-blanchet-v6ops-tunnelbroker-tsp-03.txt], Aout 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;CMB-id&amp;quot;&amp;gt;[CMB-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Hesham Soliman, Claude Castelluccia, Karim Malki, Ludovic Bellier, Hierarchical Mobile IPv6 mobility management (HMIPv6), [http://www.watersprings.org/pub/id/draft-ietf-mipshop-hmipv6-04.txt draft-ietf-mipshop-hmipv6-04.txt], Décembre 04. Obsolete - Experimental RFC 4140.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Craw-id&amp;quot;&amp;gt;[Craw-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Matt Crawford: IPv6 Node Information Queries, [http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-15.txt draft-ietf-ipngwg-icmp-name-lookups-15.txt, Internet Draft, 13 Février 2006. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Drave-id&amp;quot;&amp;gt;[Drave-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Draves: Default Address Selection for IPv6, draft-ietf-ipngwg-default-addr-select-06.txt, Internet Draft, 28 Septembre 2001. Obsolete - RFC 3484.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DHZ-id&amp;quot;&amp;gt;[DHZ-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: S. Deering, B. Haberman, B. Zill, T. Jinmei, E. Nordmark, A. Onoe: IP Version 6 Scoped Address Architecture, draft-ietf-ipngwg-scoping-arch-03.txt Internet Draft, 30 Novembre 2001. Obsolete - RFC 4007.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DIS-id&amp;quot;&amp;gt;[DIS-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Alain Durand, Johan Ihren, Pekka Savola, Operational Considerations and Issues with IPv6 DNS, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-issues-12.txt draft-ietf-dnsop-ipv6-dns-issues-12.txt], Internet Draft, 19 Octobre 2005,. Work in progress. &lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Dupont-id&amp;quot;&amp;gt;[Dupont-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: F. Dupont, M. Laurent-Maknavicius: AAA for mobile IPv6, draft-dupont-mipv6-AAA-01.txt, Internet Draft, 20 Novembre 2001, Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst-id&amp;quot;&amp;gt;[Ernst-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Thierry Ernst, Network Mobility Support Requirements, [http://www.watersprings.org/pub/id/draft-ietf-nemo-requirements-05.txt draft-ietf-nemo-requirements-05.txt], Octobre 2005&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner-id&amp;quot;&amp;gt;[Fenner-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Haixiang He, Brian Haberman, Hal Sandick, IGMP/MLD-based Multicast Forwarding ('IGMP/MLD Proxying'), [http://www.watersprings.org/pub/id/draft-ietf-magma-igmp-proxy-06.txt draft-ietf-magma-igmp-proxy-06.txt]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner2-id&amp;quot;&amp;gt;[Fenner2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Mark Handley, Hugh Holbrook, Isidor Kouvelas Protocol Independent Multicast - Sparse Mode (PIM -SM): Protocol Specification (Revised), IETF Internet Draft, [http://www.watersprings.org/pub/id/draft-ietf-pim-sm-v2-new-11.txt draft-ietf-pim-sm-v2-new-11.txt], 4 Octobre 2004. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Haber-id&amp;quot;&amp;gt;[Haber-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: B. Haberman: Dynamic Allocation Guidelines for IPv6 Multicast Addresses, draft-ietf-malloc-ipv6-guide-01.txt, Internet Draft, 12 Octobre 2000. Obsolete - RFC 3307.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HD-id&amp;quot;&amp;gt;[HD-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Hinden, S. Deering: IP Version 6 Addressing Architecture, [[http://tools.ietf.org/wg/ipv6/draft-ietf-ipv6-addr-arch-v4/draft-ietf-ipv6-addr-arch-v4-04.txt draft-ietf-ipv6-addr-arch-v4-04.txt]], Internet Draft, 20 Mai 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HH-id&amp;quot;&amp;gt;[HH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Robert Hinden, Brian Haberman, Centrally Assigned Unique Local IPv6 Unicast Addresses, [http://www.watersprings.org/pub/id/draft-ietf-ipv6-ula-central-01.txt draft-ietf-ipv6-ula-central-01.txt], Internet Draft, 21 Février 2005, Obsolete - See RFC 4193.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Hopps-if&amp;quot;&amp;gt;[Hopps-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. E. Hopps: Routing IPv6 with IS-IS, [http://www.ietf.org/internet-drafts/draft-ietf-isis-ipv6-06.txt draft-ietf-isis-ipv6-06.txt], Internet Draft, Octobre 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Huitema-id&amp;quot;&amp;gt;[Huitéma-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: C. Huitema, Teredo: Tunneling IPv6 over UDP through NATs, [http://www.watersprings.org/pub/id/draft-huitema-v6ops-teredo-05.txt draft-huitema-v6ops-teredo-05.txt], Avril 2005, Obsolete - See RFC 4380.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Jeong-id&amp;quot;&amp;gt;[Jeong-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jae-Hoon Jeong, IPv6 Host Configuration of DNS Server Information Approaches, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-configuration-06.txt draft-ietf-dnsop-ipv6-dns-configuration-06.txt], Internet Draft, 5 Mai 2005. RFC Editor Queue.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;JP-id&amp;quot;&amp;gt;[JP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: D. B. Johnson, C. Perkins: Mobility Support in IPv6, draft-ietf-mobileip-ipv6-15.txt, Internet Draft, 2 Juillet 2001. Obsolete - RFC 3775.&lt;br /&gt;
 &lt;br /&gt;
; &amp;lt;div id=&amp;quot;NFG-id&amp;quot;&amp;gt;[NGF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tri Nguyen, Gerard Gastaud, Francois Le Faucheur, Dirk Ooms, Jeremy De Clercq, Stuart Prevost, Connecting IPv6 Domains across IPv4 Clouds with BGP, [http://tools.ietf.org/wg/v6ops/draft-ooms-v6ops-bgp-tunnel-06.txt draft-ooms-v6ops-bgp-tunnel-06.txt], Janvier 2006. Proposed standard.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;NPE-id&amp;quot;&amp;gt;[NPE-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Chan Wah Ng, Eun Kyoung Paik, Thierry Ernst, Analysis of Multihoming in Network Mobility Support, [http://www.ietf.org/internet-drafts/draft-ietf-nemo-multihoming-issues-04.txt draft-ietf-nemo-multihoming-issues-04.txt], 24 Octobre 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prz-id&amp;quot;&amp;gt;[Prz-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tony Przygienda, M-ISIS: Multi Topology (MT) Routing in IS-IS, [http://www.watersprings.org/pub/id/draft-ietf-isis-wg-multi-topology-11.txt draft-ietf-isis-wg-multi-topology-11.txt], 21 Octobre 2005.&lt;br /&gt;
 &lt;br /&gt;
[Prigent-id]&lt;br /&gt;
N. Prigent, J. Marchand, F. Dupont, B. Cousin, M. Laurent-Maknavicius, J. Bournelle: DHCPv6 Threats, draft-prigent-dhcpv6-threats-00.txt, Internet Draft, 24 mai 2001, Expired.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2547bis&amp;quot;&amp;gt;[RFC2547bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Eric C. Rosen, Yakov Rekhter, BGP/MPLS IP VPNs, [http://www.watersprings.org/pub/id/draft-ietf-l3vpn-rfc2547bis-03.txt draft-ietf-l3vpn-rfc2547bis-03.txt], Internet Draft, October 2004, Obsolete - RFC 4364.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Templin-id&amp;quot;&amp;gt;[Templin-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Fred Templin, T. Gleeson, M. Talwar D. Thaler, Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-isatap-24.txt draft-ietf-ngtrans-isatap-24.txt], Juillet 2005, Obsolete - RFC 4214.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Thubert-id&amp;quot;&amp;gt;[Thubert-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Pascal Thubert, NEMO Home Network models, [http://www.watersprings.org/pub/id/draft-ietf-nemo-home-network-models-06.txt draft-ietf-nemo-home-network-models-06.txt], 17 Fevrier 2006.&lt;br /&gt;
&lt;br /&gt;
==Autres documents de travail==&lt;br /&gt;
[FIPS-46]&lt;br /&gt;
&lt;br /&gt;
Data Encryption Standard, Federal Information Processing Standards Publication 46, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 15 Janvier 1977.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-81]&lt;br /&gt;
&lt;br /&gt;
DES Modes of Operation, Federal Information Processing Standards Publication 81, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 2 Décembre 1980.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-180-1]&lt;br /&gt;
&lt;br /&gt;
Secure Hash Standard, Federal Information Processing Standards Publication 180-1, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, Avril 1995.&lt;br /&gt;
 &lt;br /&gt;
==Autres Références==&lt;br /&gt;
[AL00]&lt;br /&gt;
&lt;br /&gt;
Mohammed Achemlal, Maryline Laurent, Analyse des fonctions des protocoles IPsec et leur intégration dans un réseau privé virtuel, Annales des télécommunications, 2000.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[AL98]&lt;br /&gt;
&lt;br /&gt;
P. Albitz and C. Liu: DNS and BIND, 3rd Edition, ISBN: 1-56592-512-2, O'Reilly and Associates, Septembre 1998.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTC02&amp;quot;&amp;gt;[BTC02]&amp;lt;/div&amp;gt;&lt;br /&gt;
: T. Bu, L. Gao, D. Towsley, On Characterizing Routing Table Growth, GlobalInternet 2002. http://www-unix.ecs.umass.edu/~lgao/globalinternet2002_tian.pdf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst01f-fr&amp;quot;&amp;gt;[Ernst01f-fr]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ernst, Thierry, Le Support des Réseaux Mobiles dans IPv6, UniversitéJoseph Fourier, Octobre 2001, Grenoble, France, http://www.inria.fr/rrrt/tu-0714.html&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst03f&amp;quot;&amp;gt;[Ernst03f]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Le Support des Réseaux Mobiles dans IPv6, CFIP: Colloque Francophone sur l'Ingenierie des Protocoles, Octobre 2003, Paris&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Fen-id]&lt;br /&gt;
&lt;br /&gt;
Bill Fenner, Management Information Base for the User Datagram Protocol (UDP), draft-ietf-ipv6-rfc2013-update-04.txt, Internet Draft, 20 Octobre 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Hui95]&lt;br /&gt;
&lt;br /&gt;
C. Huitema: Le routage dans l'Internet, Eyrolles, Octobre 1995.&lt;br /&gt;
 &lt;br /&gt;
[IEEE]&lt;br /&gt;
&lt;br /&gt;
Protocol Independant Interfaces, IEEE Std 1003.1g, DRAFT~6.6, Mars 1997.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JH-id]&lt;br /&gt;
&lt;br /&gt;
Jeffrey Haas, Susan Hares, Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), draft-ietf-idr-bgp4-mib-15.txt, Internet Draft, 31 Août 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JM-id]&lt;br /&gt;
&lt;br /&gt;
Dan Joyal, Vishwas Manral, Management Information Base for OSPFv3, draft-ietf-ospf-ospfv3-mib-09.txt, Internet Draft, 13 Mai 2005, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Kau-id&amp;quot;&amp;gt;[Kau-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Charlie Kaufman, Internet Key Exchange (IKEv2) Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-ikev2-17.txt draft-ietf-ipsec-ikev2-17.txt], Internet Draft, 4 Octobre 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;LAU03&amp;quot;&amp;gt;[LAU03]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Laurent-Maknavicius, Le protocole IPsec, [http://www.techniques-ingenieur.fr/affichage/DispIntro.asp?nGcmID=TE7545 TE7545], [http://www.techniques-ingenieur.fr/ Techniques de l'Ingénieur], Sécurité des systèmes d'information, Novembre 2003.&lt;br /&gt;
&lt;br /&gt;
[LAU04-A]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, M. Gardie, LDAP et la certification, Rapport de recherche du GET, 04001 LOR, 2004.&lt;br /&gt;
 &lt;br /&gt;
[LAU04-B]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, La sécurité de l'accès distant, Technique et Science Informatiques (TSI), 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;MHF-id&amp;quot;&amp;gt;[MHF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ambarish Malpani, Russ Housley, Trevor Freeman, Simple Certificate Validation Protocol (SCVP), [http://www.watersprings.org/pub/id/draft-ietf-pkix-scvp-22.txt draft-ietf-pkix-scvp-22.txt], Internet Draft, Octobre 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Mos-id&amp;quot;&amp;gt;[Mos-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Moskowitz, Host Identity Protocol, [http://www.watersprings.org/pub/id/draft-ietf-hip-base-04.txt draft-ietf-hip-base-04.txt], Internet Draft, 24 Octobre 2005, Work in progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-A&amp;quot;&amp;gt;[Pui02-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse critique d'IPsec, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-analyse-rapport/ipsec-analyse-rapport.pdf rapport de recherche 03 004 LOR], 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-B&amp;quot;&amp;gt;[Pui02-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse de l'impact de la mise en oeuvre d'IPsec dans les architectures de Communication, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-interactions-rapport/ipsec-interactions-rapport.pdf rapport de recherche 03 002 LOR], octobre 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui03&amp;quot;&amp;gt;[Pui03]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects ARP), [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/environnement-reel-1-rapport/environnement-reel-1-rapport.pdf rapport de recherche 03 001 LOR], janvier 2003.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-A&amp;quot;&amp;gt;[Pui04-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Etude des interactions IPsec/DNS, [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/InteractionDNS.pdf rapport de recherche 04002 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-B&amp;quot;&amp;gt;[Pui04-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects liés à ICMP), [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/IPsec_ICMP.pdf rapport de recherche 04004 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2401bis&amp;quot;&amp;gt;[RFC2401bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Stephen Kent, Karen Seo, Security Architecture for the Internet Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2401bis-06.txt draft-ietf-ipsec-rfc2401bis-06.txt], Internet Draft, 1 Avril 2005, Work in progress&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2402bis&amp;quot;&amp;gt;[RFC2402bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Stephen Kent, IP Authentication Header, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2402bis-11.txt draft-ietf-ipsec-rfc2402bis-11.txt], Internet Draft, 21 Mars 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Rou-id]&lt;br /&gt;
&lt;br /&gt;
Shawn Routhier, Management Information Base for the Internet Protocol (IP), draft-ietf-ipv6-rfc2011-update-10.txt; Internet Draft, 24 Mai 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Sch95]&lt;br /&gt;
&lt;br /&gt;
B. Schneier: Applied Cryptography : protocols, algorithms, and source code in C, (second edition), John Wiley &amp;amp; Sons, ISBN: 0-471-12845-7, 1996.&lt;br /&gt;
 &lt;br /&gt;
[Sta99]&lt;br /&gt;
&lt;br /&gt;
William Stallings: Snmp, Snmpv2, Snmpv3, and Rmon 1 and 2, Addison Wesley, ISBN: 0-201-48534-6, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[Tout03]&lt;br /&gt;
&lt;br /&gt;
Laurent Toutain: Réseaux Locaux et Internet: des protocoles à l'interconnexion, Troisième édition revue et augmentée, Hermès, ISBN: 2-7462-0670-6, 2003.&lt;br /&gt;
 &lt;br /&gt;
[Uni31]&lt;br /&gt;
&lt;br /&gt;
ATM Forum: ATM User-Network Interface (UNI) Specification Version 3.1, Prentice Hall, Englewood Cliffs, NJ, Juin 1995.&lt;br /&gt;
 &lt;br /&gt;
[WH-id]&lt;br /&gt;
&lt;br /&gt;
Margaret Wasserman, Brian Haberman, IP Forwarding Table MIB, draft-ietf-ipv6-rfc2096-update-07.txt, Internet Draft, 12 février 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[WK99]&lt;br /&gt;
&lt;br /&gt;
M. Welsh et L. Kaufman: Le système Linux, 2e édition révisée, Éditions O'Reilly, ISBN: 2-84177-033-8, Janvier 1999.&lt;br /&gt;
&lt;br /&gt;
==Sites Web sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
;[IETF]&lt;br /&gt;
:http://www.imag.fr/pub/archive/IETF: Mirroir français du serveur de l'IETF.&lt;br /&gt;
 &lt;br /&gt;
;[6bone]&lt;br /&gt;
:http://www.6bone.net: Réseau 6bone.&lt;br /&gt;
 &lt;br /&gt;
;[G6bone]&lt;br /&gt;
:http://peirce.logique.jussieu.fr/G6/ Réseau G6-bone (partie francophone de 6bone).&lt;br /&gt;
 &lt;br /&gt;
;[hs247] &lt;br /&gt;
:http://hs247.com/ Informations sur le 6bone et IPv6 en général.&lt;br /&gt;
&lt;br /&gt;
;[ipv6.org]&lt;br /&gt;
: http://www.ipv6.org/ pages d'information sur le protocole IPv6&lt;br /&gt;
&lt;br /&gt;
;[ipv6forum] &lt;br /&gt;
:http://www.ipv6forum.org/ Groupement d'industriels pour promouvoir IPv6.&lt;br /&gt;
&lt;br /&gt;
;[playground] &lt;br /&gt;
:http://playground.sun.com/pub/ipng/html/ipng-main.html liste des mises en oeuvre d'IPv6 dans les équipements.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2931</id>
		<title>Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2931"/>
				<updated>2006-02-23T15:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Internet Drafts sur IPv6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Livres sur IPv6 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BM95&amp;quot;&amp;gt;[BM95] S. O. Bradner &amp;amp; A. Mankin ed : IPng, Internet Protocol Next Generation, Addison-Wesley (IPng Series), ISBN0201633957, Septembre 1995.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Gai98] S. Gai, Internetworking IPv6 With Cisco Routers (Computer Communications), McGraw-Hill, ISBN: 0-070-22836-1, Février 1998.&lt;br /&gt;
 &lt;br /&gt;
[Hui97] C. Huitema: IPv6: The New Internet Protocol, Prentice Hall, ISBN: 0-138-50505-5, Octbre 1997.&lt;br /&gt;
 &lt;br /&gt;
[LL99] Peter Loshin &amp;amp; Pete Loshin: IPv6 Clearly Explained (Clearly Explained), Ap Professional, ISBN: 0-124-55838-0, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[MM00] Mark A. Miller &amp;amp; P. E. Miller: Implementing IPv6, second edition (Network Troubleshooting Library), IDG Books Worldwide, ISBN: 0-764-54589-2, Janvier 2000.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[Mil97] Stewart S. Miller: IPv6 : The Next Generation Internet Protocol, DigitalPress, ISBN: 1-555-58188-9, Décembre 1997.&lt;br /&gt;
 &lt;br /&gt;
[MK98] Marcus Goncalves &amp;amp; Kitty Niles: IPv6 Networks, McGraw-Hill, ISBN: 0-070-24807-9, Mai 1998.&lt;br /&gt;
 &lt;br /&gt;
[Sal00] Peter H. Salus: Big Book of IPV6 Addressing RFCs, Morgan Kaufmann Publishers, ISBN: 0-126-16770-2, Mars 2000.&lt;br /&gt;
 &lt;br /&gt;
[WR99] J. D. Wegner &amp;amp; Robert Rockwell: IP Addressing and Subnetting, Including IPv6, Syngress Media, ISBN: 1-928-99401-6, Décembre 1999.&lt;br /&gt;
 &lt;br /&gt;
== Internet Drafts sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
''Remarque : Il faut rappeler que les Internet drafts sont des documents de travail à durée de vie limitée. Ils ont vocation à devenir des RFC. Le lecteur est donc invité à vérifier quelle est la version la plus récente, ou si un RFC le remplace, en consultant l'index à jour (cf. Les RFC (Request For Comments)).''&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BCP2-id&amp;quot;&amp;gt;[BCP2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, M. Carney, C. Perkins: Extensions for the Dynamic Host Configuration Protocol for IPv6, [http://www.watersprings.org/pub/id/draft-ietf-dhcpv6exts-12.txt draft-ietf-dhc-v6exts-12.txt], Internet Draft, 5 Mai 2000 - Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BKLSPTSDY-id&amp;quot;&amp;gt;[BKLSPTSDY-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: W. Biemolt, M. Kaat, T. Larder, H. Steenman, R. van der Pol, G. Tsirtsis, Y. Sekiya, A. Durand, K. Yamamoto: On overview of the introduction of IPv6 in the Internet, draft-ietf-ngtrans-introduction-to-ipv6-transition-08.txt, Internet Draft, Février 2002. Working Group Concluded.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTM-id&amp;gt;[BTM-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: J. Bound, L. Toutain, O. Medina, F. Dupont, A. Durand, H Afifi,: Dual Stack Transition Mechanism (DSTM), draft-ietf-ngtrans-dstm-07.txt, Internet Draft, Aout 2002. Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BP-id&amp;quot;&amp;gt;[BP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Blanchet, F. Parent, IPv6 Tunnel Broker with the Tunnel Setup Protocol (TSP), [http://www.watersprings.org/pub/id/draft-blanchet-v6ops-tunnelbroker-tsp-03.txt draft-blanchet-v6ops-tunnelbroker-tsp-03.txt], Aout 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;CMB-id&amp;quot;&amp;gt;[CMB-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Hesham Soliman, Claude Castelluccia, Karim Malki, Ludovic Bellier, Hierarchical Mobile IPv6 mobility management (HMIPv6), [http://www.watersprings.org/pub/id/draft-ietf-mipshop-hmipv6-04.txt draft-ietf-mipshop-hmipv6-04.txt], Décembre 04. Obsolete - Experimental RFC 4140.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Craw-id&amp;quot;&amp;gt;[Craw-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Matt Crawford: IPv6 Node Information Queries, [http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-15.txt draft-ietf-ipngwg-icmp-name-lookups-15.txt, Internet Draft, 13 Février 2006. Work in progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Drave-id&amp;quot;&amp;gt;[Drave-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: R. Draves: Default Address Selection for IPv6, draft-ietf-ipngwg-default-addr-select-06.txt, Internet Draft, 28 Septembre 2001. Obsolete - RFC 3484.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DHZ-id&amp;quot;&amp;gt;[DHZ-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: S. Deering, B. Haberman, B. Zill, T. Jinmei, E. Nordmark, A. Onoe: IP Version 6 Scoped Address Architecture, draft-ietf-ipngwg-scoping-arch-03.txt Internet Draft, 30 Novembre 2001. Obsolete - RFC 4007.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DIS-id&amp;quot;&amp;gt;[DIS-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Alain Durand, Johan Ihren, Pekka Savola, Operational Considerations and Issues with IPv6 DNS, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-issues-12.txt draft-ietf-dnsop-ipv6-dns-issues-12.txt], Internet Draft, 19 Octobre 2005,. Work in progress. &lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Dupont-id&amp;quot;&amp;gt;[Dupont-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: F. Dupont, M. Laurent-Maknavicius: AAA for mobile IPv6, draft-dupont-mipv6-AAA-01.txt, Internet Draft, 20 Novembre 2001, Obsolete.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst-id&amp;quot;&amp;gt;[Ernst-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Thierry Ernst, Network Mobility Support Requirements, [http://www.watersprings.org/pub/id/draft-ietf-nemo-requirements-05.txt draft-ietf-nemo-requirements-05.txt], Octobre 2005&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner-id&amp;quot;&amp;gt;[Fenner-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Haixiang He, Brian Haberman, Hal Sandick, IGMP/MLD-based Multicast Forwarding ('IGMP/MLD Proxying'), [http://www.watersprings.org/pub/id/draft-ietf-magma-igmp-proxy-06.txt draft-ietf-magma-igmp-proxy-06.txt]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner2-id&amp;quot;&amp;gt;[Fenner2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Mark Handley, Hugh Holbrook, Isidor Kouvelas Protocol Independent Multicast - Sparse Mode (PIM -SM): Protocol Specification (Revised), IETF Internet Draft, [http://www.watersprings.org/pub/id/draft-ietf-pim-sm-v2-new-11.txt draft-ietf-pim-sm-v2-new-11.txt], 4 Octobre 2004. Work in progress.&lt;br /&gt;
&lt;br /&gt;
[Haber-id]&lt;br /&gt;
B. Haberman: Dynamic Allocation Guidelines for IPv6 Multicast Addresses, draft-ietf-malloc-ipv6-guide-01.txt, Internet Draft, 12 Octobre 200. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[HD-id]&lt;br /&gt;
R. Hinden, S. Deering: IP Version 6 Addressing Architecture, draft-ietf-ipngwg-addr-arch-v3-07.txt, Internet Draft, 27 Novembre 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HH-id&amp;quot;&amp;gt;[HH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Hinden, Brian Haberman, Centrally Assigned Unique Local IPv6 Unicast Addresses, [http://www.watersprings.org/pub/id/draft-ietf-ipv6-ula-central-01.txt draft-ietf-ipv6-ula-central-01.txt], Internet Draft, 21 Février 2005, Obsolete - See RFC 4193.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Hopps-if&amp;quot;&amp;gt;[Hopps-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:C. E. Hopps: Routing IPv6 with IS-IS, [http://www.ietf.org/internet-drafts/draft-ietf-isis-ipv6-06.txt draft-ietf-isis-ipv6-06.txt], Internet Draft, Octobre 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Huitema-id&amp;quot;&amp;gt;[Huitéma-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:C. Huitema, Teredo: Tunneling IPv6 over UDP through NATs, [http://www.watersprings.org/pub/id/draft-huitema-v6ops-teredo-05.txt draft-huitema-v6ops-teredo-05.txt], Avril 2005, Obsolete - See RFC 4380.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Jeong-id&amp;quot;&amp;gt;[Jeong-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jae-Hoon Jeong, IPv6 Host Configuration of DNS Server Information Approaches, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-configuration-06.txt draft-ietf-dnsop-ipv6-dns-configuration-06.txt], Internet Draft, 5 Mai 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[JP-id]&lt;br /&gt;
D. B. Johnson, C. Perkins: Mobility Support in IPv6, draft-ietf-mobileip-ipv6-15.txt, Internet Draft, 2 Juillet 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
; &amp;lt;div id=&amp;quot;NFG-id&amp;quot;&amp;gt;[NGF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tri Nguyen, Gerard Gastaud, Francois Le Faucheur, Dirk Ooms, Jeremy De Clercq, Stuart Prevost, Connecting IPv6 Domains across IPv4 Clouds with BGP, [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-bgp-tunnel-05.txt draft-ietf-ngtrans-bgp-tunnel-05.txt], 3 Mai 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;NPE-id&amp;quot;&amp;gt;[NPE-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Chan Wah Ng, Eun Kyoung Paik, Thierry Ernst, Analysis of Multihoming in Network Mobility Support, [http://www.watersprings.org/pub/id/draft-ietf-nemo-multihoming-issues-02.txt draft-ietf-nemo-multihoming-issues-02.txt], 22 Février 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prz-id&amp;quot;&amp;gt;[Prz-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tony Przygienda, M-ISIS: Multi Topology (MT) Routing in IS-IS, [http://www.watersprings.org/pub/id/draft-ietf-isis-wg-multi-topology-10.txt draft-ietf-isis-wg-multi-topology-10.txt], 9 Mai 2005.&lt;br /&gt;
 &lt;br /&gt;
[Prigent-id]&lt;br /&gt;
N. Prigent, J. Marchand, F. Dupont, B. Cousin, M. Laurent-Maknavicius, J. Bournelle: DHCPv6 Threats, draft-prigent-dhcpv6-threats-00.txt, Internet Draft, 24 mai 2001, Work in Progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2547bis&amp;quot;&amp;gt;[RFC2547bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Eric C. Rosen, Yakov Rekhter, BGP/MPLS IP VPNs, [http://www.watersprings.org/pub/id/draft-ietf-l3vpn-rfc2547bis-03.txt draft-ietf-l3vpn-rfc2547bis-03.txt], Internet Draft, October 2004, Work in Progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Templin-id&amp;quot;&amp;gt;[Templin-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Fred Templin, T. Gleeson, M. Talwar D. Thaler, Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-isatap-24.txt draft-ietf-ngtrans-isatap-24.txt], Juillet 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Thubert-id&amp;quot;&amp;gt;[Thubert-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Pascal Thubert, NEMO Home Network models, [http://www.watersprings.org/pub/id/draft-ietf-nemo-home-network-models-05.txt draft-ietf-nemo-home-network-models-05.txt], Octobre 2005.&lt;br /&gt;
&lt;br /&gt;
==Autres documents de travail==&lt;br /&gt;
[FIPS-46]&lt;br /&gt;
&lt;br /&gt;
Data Encryption Standard, Federal Information Processing Standards Publication 46, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 15 Janvier 1977.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-81]&lt;br /&gt;
&lt;br /&gt;
DES Modes of Operation, Federal Information Processing Standards Publication 81, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 2 Décembre 1980.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-180-1]&lt;br /&gt;
&lt;br /&gt;
Secure Hash Standard, Federal Information Processing Standards Publication 180-1, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, Avril 1995.&lt;br /&gt;
 &lt;br /&gt;
==Autres Références==&lt;br /&gt;
[AL00]&lt;br /&gt;
&lt;br /&gt;
Mohammed Achemlal, Maryline Laurent, Analyse des fonctions des protocoles IPsec et leur intégration dans un réseau privé virtuel, Annales des télécommunications, 2000.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[AL98]&lt;br /&gt;
&lt;br /&gt;
P. Albitz and C. Liu: DNS and BIND, 3rd Edition, ISBN: 1-56592-512-2, O'Reilly and Associates, Septembre 1998.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTC02&amp;quot;&amp;gt;[BTC02]&amp;lt;/div&amp;gt;&lt;br /&gt;
: T. Bu, L. Gao, D. Towsley, On Characterizing Routing Table Growth, GlobalInternet 2002. http://www-unix.ecs.umass.edu/~lgao/globalinternet2002_tian.pdf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst01f-fr&amp;quot;&amp;gt;[Ernst01f-fr]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ernst, Thierry, Le Support des Réseaux Mobiles dans IPv6, UniversitéJoseph Fourier, Octobre 2001, Grenoble, France, http://www.inria.fr/rrrt/tu-0714.html&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst03f&amp;quot;&amp;gt;[Ernst03f]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Le Support des Réseaux Mobiles dans IPv6, CFIP: Colloque Francophone sur l'Ingenierie des Protocoles, Octobre 2003, Paris&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Fen-id]&lt;br /&gt;
&lt;br /&gt;
Bill Fenner, Management Information Base for the User Datagram Protocol (UDP), draft-ietf-ipv6-rfc2013-update-04.txt, Internet Draft, 20 Octobre 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Hui95]&lt;br /&gt;
&lt;br /&gt;
C. Huitema: Le routage dans l'Internet, Eyrolles, Octobre 1995.&lt;br /&gt;
 &lt;br /&gt;
[IEEE]&lt;br /&gt;
&lt;br /&gt;
Protocol Independant Interfaces, IEEE Std 1003.1g, DRAFT~6.6, Mars 1997.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JH-id]&lt;br /&gt;
&lt;br /&gt;
Jeffrey Haas, Susan Hares, Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), draft-ietf-idr-bgp4-mib-15.txt, Internet Draft, 31 Août 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JM-id]&lt;br /&gt;
&lt;br /&gt;
Dan Joyal, Vishwas Manral, Management Information Base for OSPFv3, draft-ietf-ospf-ospfv3-mib-09.txt, Internet Draft, 13 Mai 2005, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Kau-id&amp;quot;&amp;gt;[Kau-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Charlie Kaufman, Internet Key Exchange (IKEv2) Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-ikev2-17.txt draft-ietf-ipsec-ikev2-17.txt], Internet Draft, 4 Octobre 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;LAU03&amp;quot;&amp;gt;[LAU03]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Laurent-Maknavicius, Le protocole IPsec, [http://www.techniques-ingenieur.fr/affichage/DispIntro.asp?nGcmID=TE7545 TE7545], [http://www.techniques-ingenieur.fr/ Techniques de l'Ingénieur], Sécurité des systèmes d'information, Novembre 2003.&lt;br /&gt;
&lt;br /&gt;
[LAU04-A]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, M. Gardie, LDAP et la certification, Rapport de recherche du GET, 04001 LOR, 2004.&lt;br /&gt;
 &lt;br /&gt;
[LAU04-B]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, La sécurité de l'accès distant, Technique et Science Informatiques (TSI), 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;MHF-id&amp;quot;&amp;gt;[MHF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ambarish Malpani, Russ Housley, Trevor Freeman, Simple Certificate Validation Protocol (SCVP), [http://www.watersprings.org/pub/id/draft-ietf-pkix-scvp-22.txt draft-ietf-pkix-scvp-22.txt], Internet Draft, Octobre 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Mos-id&amp;quot;&amp;gt;[Mos-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Moskowitz, Host Identity Protocol, [http://www.watersprings.org/pub/id/draft-ietf-hip-base-04.txt draft-ietf-hip-base-04.txt], Internet Draft, 24 Octobre 2005, Work in progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-A&amp;quot;&amp;gt;[Pui02-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse critique d'IPsec, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-analyse-rapport/ipsec-analyse-rapport.pdf rapport de recherche 03 004 LOR], 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-B&amp;quot;&amp;gt;[Pui02-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse de l'impact de la mise en oeuvre d'IPsec dans les architectures de Communication, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-interactions-rapport/ipsec-interactions-rapport.pdf rapport de recherche 03 002 LOR], octobre 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui03&amp;quot;&amp;gt;[Pui03]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects ARP), [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/environnement-reel-1-rapport/environnement-reel-1-rapport.pdf rapport de recherche 03 001 LOR], janvier 2003.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-A&amp;quot;&amp;gt;[Pui04-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Etude des interactions IPsec/DNS, [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/InteractionDNS.pdf rapport de recherche 04002 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-B&amp;quot;&amp;gt;[Pui04-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects liés à ICMP), [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/IPsec_ICMP.pdf rapport de recherche 04004 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2401bis&amp;quot;&amp;gt;[RFC2401bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Stephen Kent, Karen Seo, Security Architecture for the Internet Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2401bis-06.txt draft-ietf-ipsec-rfc2401bis-06.txt], Internet Draft, 1 Avril 2005, Work in progress&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2402bis&amp;quot;&amp;gt;[RFC2402bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Stephen Kent, IP Authentication Header, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2402bis-11.txt draft-ietf-ipsec-rfc2402bis-11.txt], Internet Draft, 21 Mars 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Rou-id]&lt;br /&gt;
&lt;br /&gt;
Shawn Routhier, Management Information Base for the Internet Protocol (IP), draft-ietf-ipv6-rfc2011-update-10.txt; Internet Draft, 24 Mai 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Sch95]&lt;br /&gt;
&lt;br /&gt;
B. Schneier: Applied Cryptography : protocols, algorithms, and source code in C, (second edition), John Wiley &amp;amp; Sons, ISBN: 0-471-12845-7, 1996.&lt;br /&gt;
 &lt;br /&gt;
[Sta99]&lt;br /&gt;
&lt;br /&gt;
William Stallings: Snmp, Snmpv2, Snmpv3, and Rmon 1 and 2, Addison Wesley, ISBN: 0-201-48534-6, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[Tout03]&lt;br /&gt;
&lt;br /&gt;
Laurent Toutain: Réseaux Locaux et Internet: des protocoles à l'interconnexion, Troisième édition revue et augmentée, Hermès, ISBN: 2-7462-0670-6, 2003.&lt;br /&gt;
 &lt;br /&gt;
[Uni31]&lt;br /&gt;
&lt;br /&gt;
ATM Forum: ATM User-Network Interface (UNI) Specification Version 3.1, Prentice Hall, Englewood Cliffs, NJ, Juin 1995.&lt;br /&gt;
 &lt;br /&gt;
[WH-id]&lt;br /&gt;
&lt;br /&gt;
Margaret Wasserman, Brian Haberman, IP Forwarding Table MIB, draft-ietf-ipv6-rfc2096-update-07.txt, Internet Draft, 12 février 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[WK99]&lt;br /&gt;
&lt;br /&gt;
M. Welsh et L. Kaufman: Le système Linux, 2e édition révisée, Éditions O'Reilly, ISBN: 2-84177-033-8, Janvier 1999.&lt;br /&gt;
&lt;br /&gt;
==Sites Web sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
;[IETF]&lt;br /&gt;
:http://www.imag.fr/pub/archive/IETF: Mirroir français du serveur de l'IETF.&lt;br /&gt;
 &lt;br /&gt;
;[6bone]&lt;br /&gt;
:http://www.6bone.net: Réseau 6bone.&lt;br /&gt;
 &lt;br /&gt;
;[G6bone]&lt;br /&gt;
:http://peirce.logique.jussieu.fr/G6/ Réseau G6-bone (partie francophone de 6bone).&lt;br /&gt;
 &lt;br /&gt;
;[hs247] &lt;br /&gt;
:http://hs247.com/ Informations sur le 6bone et IPv6 en général.&lt;br /&gt;
&lt;br /&gt;
;[ipv6.org]&lt;br /&gt;
: http://www.ipv6.org/ pages d'information sur le protocole IPv6&lt;br /&gt;
&lt;br /&gt;
;[ipv6forum] &lt;br /&gt;
:http://www.ipv6forum.org/ Groupement d'industriels pour promouvoir IPv6.&lt;br /&gt;
&lt;br /&gt;
;[playground] &lt;br /&gt;
:http://playground.sun.com/pub/ipng/html/ipng-main.html liste des mises en oeuvre d'IPv6 dans les équipements.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2929</id>
		<title>Bibliographie</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Bibliographie&amp;diff=2929"/>
				<updated>2006-02-23T13:41:28Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* Internet Drafts sur IPv6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Livres sur IPv6 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BM95&amp;quot;&amp;gt;[BM95] S. O. Bradner &amp;amp; A. Mankin ed : IPng, Internet Protocol Next Generation, Addison-Wesley (IPng Series), ISBN0201633957, Septembre 1995.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Gai98] S. Gai, Internetworking IPv6 With Cisco Routers (Computer Communications), McGraw-Hill, ISBN: 0-070-22836-1, Février 1998.&lt;br /&gt;
 &lt;br /&gt;
[Hui97] C. Huitema: IPv6: The New Internet Protocol, Prentice Hall, ISBN: 0-138-50505-5, Octbre 1997.&lt;br /&gt;
 &lt;br /&gt;
[LL99] Peter Loshin &amp;amp; Pete Loshin: IPv6 Clearly Explained (Clearly Explained), Ap Professional, ISBN: 0-124-55838-0, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[MM00] Mark A. Miller &amp;amp; P. E. Miller: Implementing IPv6, second edition (Network Troubleshooting Library), IDG Books Worldwide, ISBN: 0-764-54589-2, Janvier 2000.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[Mil97] Stewart S. Miller: IPv6 : The Next Generation Internet Protocol, DigitalPress, ISBN: 1-555-58188-9, Décembre 1997.&lt;br /&gt;
 &lt;br /&gt;
[MK98] Marcus Goncalves &amp;amp; Kitty Niles: IPv6 Networks, McGraw-Hill, ISBN: 0-070-24807-9, Mai 1998.&lt;br /&gt;
 &lt;br /&gt;
[Sal00] Peter H. Salus: Big Book of IPV6 Addressing RFCs, Morgan Kaufmann Publishers, ISBN: 0-126-16770-2, Mars 2000.&lt;br /&gt;
 &lt;br /&gt;
[WR99] J. D. Wegner &amp;amp; Robert Rockwell: IP Addressing and Subnetting, Including IPv6, Syngress Media, ISBN: 1-928-99401-6, Décembre 1999.&lt;br /&gt;
 &lt;br /&gt;
== Internet Drafts sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
''Remarque : Il faut rappeler que les Internet drafts sont des documents de travail à durée de vie limitée. Ils ont vocation à devenir des RFC. Le lecteur est donc invité à vérifier quelle est la version la plus récente, ou si un RFC le remplace, en consultant l'index à jour (cf. See Les RFC (Request For Comments)).''&lt;br /&gt;
&lt;br /&gt;
[BCP2-id] J. Bound, M. Carney, C. Perkins: Extensions for the Dynamic Host Configuration Protocol for IPv6, [http://www.watersprings.org/pub/id/draft-ietf-dhcpv6exts-12.txt draft-ietf-dhc-v6exts-12.txt], Internet Draft, 5 Mai 2000.&lt;br /&gt;
 &lt;br /&gt;
[BKLSPTSDY-id]&lt;br /&gt;
W. Biemolt, M. Kaat, T. Larder, H. Steenman, R. van der Pol, G. Tsirtsis, Y. Sekiya, A. Durand, K. Yamamoto: On overview of the introduction of IPv6 in the Internet, draft-ietf-ngtrans-introduction-to-ipv6-transition-07.txt, Internet Draft, 19 Juillet 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[BTM-id]&lt;br /&gt;
J. Bound, L. Toutain, O. Medina, F. Dupont, A. Durand, H Afifi,: Dual Stack Transition Mechanism (DSTM), draft-ietf-ngtrans-dstm-05.txt, Internet Draft, 21 Novembre 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;BP-id&amp;quot;&amp;gt;[BP-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:M. Blanchet, F. Parent, IPv6 Tunnel Broker with the Tunnel Setup Protocol (TSP), [http://www.watersprings.org/pub/id/draft-blanchet-v6ops-tunnelbroker-tsp-03.txt draft-blanchet-v6ops-tunnelbroker-tsp-03.txt], Mars 2004. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;CMB-id&amp;quot;&amp;gt;[CMB-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Hesham Soliman, Claude Castelluccia, Karim Malki, Ludovic Bellier, Hierarchical Mobile IPv6 mobility management (HMIPv6), [http://www.watersprings.org/pub/id/draft-ietf-mipshop-hmipv6-04.txt draft-ietf-mipshop-hmipv6-04.txt], Décembre 04. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Craw-id]&lt;br /&gt;
Matt Crawford: IPv6 Node Information Queries, draft-ietf-ipngwg-icmp-name-lookups-08.txt, Internet Draft, 20 Juillet 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Drave-id]&lt;br /&gt;
R. Draves: Default Address Selection for IPv6, draft-ietf-ipngwg-default-addr-select-06.txt, Internet Draft, 28 Septembre 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[DHZ-id]&lt;br /&gt;
S. Deering, B. Haberman, B. Zill, T. Jinmei, E. Nordmark, A. Onoe: IP Version 6 Scoped Address Architecture, draft-ietf-ipngwg-scoping-arch-03.txt Internet Draft, 30 Novembre 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;DIS-id&amp;quot;&amp;gt;[DIS-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Alain Durand, Johan Ihren, Pekka Savola, Operational Considerations and Issues with IPv6 DNS, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-issues-10.txt draft-ietf-dnsop-ipv6-dns-issues-10.txt], Internet Draft, 26 Octobre 2004,. Work in progress. &lt;br /&gt;
 &lt;br /&gt;
[Dupont-id]&lt;br /&gt;
F. Dupont, M. Laurent-Maknavicius: AAA for mobile IPv6, draft-dupond-mipv6-AAA-01.txt, Internet Draft, 20 Novembre 2001, Work in Progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst-id&amp;quot;&amp;gt;[Ernst-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Network Mobility Support Requirements, [http://www.watersprings.org/pub/id/draft-ietf-nemo-requirements-05.txt draft-ietf-nemo-requirements-05.txt], Octobre 2005&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner-id&amp;quot;&amp;gt;[Fenner-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Haixiang He, Brian Haberman, Hal Sandick, IGMP/MLD-based Multicast Forwarding ('IGMP/MLD Proxying'), [http://www.watersprings.org/pub/id/draft-ietf-magma-igmp-proxy-06.txt draft-ietf-magma-igmp-proxy-06.txt]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Fenner2-id&amp;quot;&amp;gt;[Fenner2-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Bill Fenner, Mark Handley, Hugh Holbrook, Isidor Kouvelas Protocol Independent Multicast - Sparse Mode (PIM -SM): Protocol Specification (Revised), IETF Internet Draft, [http://www.watersprings.org/pub/id/draft-ietf-pim-sm-v2-new-11.txt draft-ietf-pim-sm-v2-new-11.txt], 4 Octobre 2004. Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Haber-id]&lt;br /&gt;
B. Haberman: Dynamic Allocation Guidelines for IPv6 Multicast Addresses, draft-ietf-malloc-ipv6-guide-01.txt, Internet Draft, 12 Octobre 200. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[HD-id]&lt;br /&gt;
R. Hinden, S. Deering: IP Version 6 Addressing Architecture, draft-ietf-ipngwg-addr-arch-v3-07.txt, Internet Draft, 27 Novembre 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;HH-id&amp;quot;&amp;gt;[HH-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Hinden, Brian Haberman, Centrally Assigned Unique Local IPv6 Unicast Addresses, [http://www.watersprings.org/pub/id/draft-ietf-ipv6-ula-central-01.txt draft-ietf-ipv6-ula-central-01.txt], Internet Draft, 21 Février 2005, Obsolete - See RFC 4193.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Hopps-if&amp;quot;&amp;gt;[Hopps-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:C. E. Hopps: Routing IPv6 with IS-IS, [http://www.ietf.org/internet-drafts/draft-ietf-isis-ipv6-06.txt draft-ietf-isis-ipv6-06.txt], Internet Draft, Octobre 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Huitema-id&amp;quot;&amp;gt;[Huitéma-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:C. Huitema, Teredo: Tunneling IPv6 over UDP through NATs, [http://www.watersprings.org/pub/id/draft-huitema-v6ops-teredo-05.txt draft-huitema-v6ops-teredo-05.txt], Avril 2005, Obsolete - See RFC 4380.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Jeong-id&amp;quot;&amp;gt;[Jeong-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Jae-Hoon Jeong, IPv6 Host Configuration of DNS Server Information Approaches, [http://www.watersprings.org/pub/id/draft-ietf-dnsop-ipv6-dns-configuration-06.txt draft-ietf-dnsop-ipv6-dns-configuration-06.txt], Internet Draft, 5 Mai 2005. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[JP-id]&lt;br /&gt;
D. B. Johnson, C. Perkins: Mobility Support in IPv6, draft-ietf-mobileip-ipv6-15.txt, Internet Draft, 2 Juillet 2001. Work in progress.&lt;br /&gt;
 &lt;br /&gt;
; &amp;lt;div id=&amp;quot;NFG-id&amp;quot;&amp;gt;[NGF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tri Nguyen, Gerard Gastaud, Francois Le Faucheur, Dirk Ooms, Jeremy De Clercq, Stuart Prevost, Connecting IPv6 Domains across IPv4 Clouds with BGP, [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-bgp-tunnel-05.txt draft-ietf-ngtrans-bgp-tunnel-05.txt], 3 Mai 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;NPE-id&amp;quot;&amp;gt;[NPE-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Chan Wah Ng, Eun Kyoung Paik, Thierry Ernst, Analysis of Multihoming in Network Mobility Support, [http://www.watersprings.org/pub/id/draft-ietf-nemo-multihoming-issues-02.txt draft-ietf-nemo-multihoming-issues-02.txt], 22 Février 2005. Work in progress&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;Prz-id&amp;quot;&amp;gt;[Prz-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Tony Przygienda, M-ISIS: Multi Topology (MT) Routing in IS-IS, [http://www.watersprings.org/pub/id/draft-ietf-isis-wg-multi-topology-10.txt draft-ietf-isis-wg-multi-topology-10.txt], 9 Mai 2005.&lt;br /&gt;
 &lt;br /&gt;
[Prigent-id]&lt;br /&gt;
N. Prigent, J. Marchand, F. Dupont, B. Cousin, M. Laurent-Maknavicius, J. Bournelle: DHCPv6 Threats, draft-prigent-dhcpv6-threats-00.txt, Internet Draft, 24 mai 2001, Work in Progress.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2547bis&amp;quot;&amp;gt;[RFC2547bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Eric C. Rosen, Yakov Rekhter, BGP/MPLS IP VPNs, [http://www.watersprings.org/pub/id/draft-ietf-l3vpn-rfc2547bis-03.txt draft-ietf-l3vpn-rfc2547bis-03.txt], Internet Draft, October 2004, Work in Progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Templin-id&amp;quot;&amp;gt;[Templin-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Fred Templin, T. Gleeson, M. Talwar D. Thaler, Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), [http://www.watersprings.org/pub/id/draft-ietf-ngtrans-isatap-24.txt draft-ietf-ngtrans-isatap-24.txt], Juillet 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Thubert-id&amp;quot;&amp;gt;[Thubert-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Pascal Thubert, NEMO Home Network models, [http://www.watersprings.org/pub/id/draft-ietf-nemo-home-network-models-05.txt draft-ietf-nemo-home-network-models-05.txt], Octobre 2005.&lt;br /&gt;
&lt;br /&gt;
==Autres documents de travail==&lt;br /&gt;
[FIPS-46]&lt;br /&gt;
&lt;br /&gt;
Data Encryption Standard, Federal Information Processing Standards Publication 46, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 15 Janvier 1977.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-81]&lt;br /&gt;
&lt;br /&gt;
DES Modes of Operation, Federal Information Processing Standards Publication 81, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, 2 Décembre 1980.&lt;br /&gt;
 &lt;br /&gt;
[FIPS-180-1]&lt;br /&gt;
&lt;br /&gt;
Secure Hash Standard, Federal Information Processing Standards Publication 180-1, U.S. National Institute of Standards and Technology, U.S. Department Of Commerce, Avril 1995.&lt;br /&gt;
 &lt;br /&gt;
==Autres Références==&lt;br /&gt;
[AL00]&lt;br /&gt;
&lt;br /&gt;
Mohammed Achemlal, Maryline Laurent, Analyse des fonctions des protocoles IPsec et leur intégration dans un réseau privé virtuel, Annales des télécommunications, 2000.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[AL98]&lt;br /&gt;
&lt;br /&gt;
P. Albitz and C. Liu: DNS and BIND, 3rd Edition, ISBN: 1-56592-512-2, O'Reilly and Associates, Septembre 1998.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;div id=&amp;quot;BTC02&amp;quot;&amp;gt;[BTC02]&amp;lt;/div&amp;gt;&lt;br /&gt;
: T. Bu, L. Gao, D. Towsley, On Characterizing Routing Table Growth, GlobalInternet 2002. http://www-unix.ecs.umass.edu/~lgao/globalinternet2002_tian.pdf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst01f-fr&amp;quot;&amp;gt;[Ernst01f-fr]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ernst, Thierry, Le Support des Réseaux Mobiles dans IPv6, UniversitéJoseph Fourier, Octobre 2001, Grenoble, France, http://www.inria.fr/rrrt/tu-0714.html&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Ernst03f&amp;quot;&amp;gt;[Ernst03f]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Thierry Ernst, Le Support des Réseaux Mobiles dans IPv6, CFIP: Colloque Francophone sur l'Ingenierie des Protocoles, Octobre 2003, Paris&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Fen-id]&lt;br /&gt;
&lt;br /&gt;
Bill Fenner, Management Information Base for the User Datagram Protocol (UDP), draft-ietf-ipv6-rfc2013-update-04.txt, Internet Draft, 20 Octobre 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[Hui95]&lt;br /&gt;
&lt;br /&gt;
C. Huitema: Le routage dans l'Internet, Eyrolles, Octobre 1995.&lt;br /&gt;
 &lt;br /&gt;
[IEEE]&lt;br /&gt;
&lt;br /&gt;
Protocol Independant Interfaces, IEEE Std 1003.1g, DRAFT~6.6, Mars 1997.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JH-id]&lt;br /&gt;
&lt;br /&gt;
Jeffrey Haas, Susan Hares, Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), draft-ietf-idr-bgp4-mib-15.txt, Internet Draft, 31 Août 2004, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[JM-id]&lt;br /&gt;
&lt;br /&gt;
Dan Joyal, Vishwas Manral, Management Information Base for OSPFv3, draft-ietf-ospf-ospfv3-mib-09.txt, Internet Draft, 13 Mai 2005, Work in progress.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Kau-id&amp;quot;&amp;gt;[Kau-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Charlie Kaufman, Internet Key Exchange (IKEv2) Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-ikev2-17.txt draft-ietf-ipsec-ikev2-17.txt], Internet Draft, 4 Octobre 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;LAU03&amp;quot;&amp;gt;[LAU03]&amp;lt;/div&amp;gt;&lt;br /&gt;
: M. Laurent-Maknavicius, Le protocole IPsec, [http://www.techniques-ingenieur.fr/affichage/DispIntro.asp?nGcmID=TE7545 TE7545], [http://www.techniques-ingenieur.fr/ Techniques de l'Ingénieur], Sécurité des systèmes d'information, Novembre 2003.&lt;br /&gt;
&lt;br /&gt;
[LAU04-A]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, M. Gardie, LDAP et la certification, Rapport de recherche du GET, 04001 LOR, 2004.&lt;br /&gt;
 &lt;br /&gt;
[LAU04-B]&lt;br /&gt;
&lt;br /&gt;
M. Laurent-Maknavicius, La sécurité de l'accès distant, Technique et Science Informatiques (TSI), 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;MHF-id&amp;quot;&amp;gt;[MHF-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Ambarish Malpani, Russ Housley, Trevor Freeman, Simple Certificate Validation Protocol (SCVP), [http://www.watersprings.org/pub/id/draft-ietf-pkix-scvp-22.txt draft-ietf-pkix-scvp-22.txt], Internet Draft, Octobre 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Mos-id&amp;quot;&amp;gt;[Mos-id]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Robert Moskowitz, Host Identity Protocol, [http://www.watersprings.org/pub/id/draft-ietf-hip-base-04.txt draft-ietf-hip-base-04.txt], Internet Draft, 24 Octobre 2005, Work in progress&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-A&amp;quot;&amp;gt;[Pui02-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse critique d'IPsec, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-analyse-rapport/ipsec-analyse-rapport.pdf rapport de recherche 03 004 LOR], 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui02-B&amp;quot;&amp;gt;[Pui02-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Analyse de l'impact de la mise en oeuvre d'IPsec dans les architectures de Communication, [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/ipsec-interactions-rapport/ipsec-interactions-rapport.pdf rapport de recherche 03 002 LOR], octobre 2002.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui03&amp;quot;&amp;gt;[Pui03]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects ARP), [http://www-lor.int-evry.fr/~maknavic/Rapports_Recherche/environnement-reel-1-rapport/environnement-reel-1-rapport.pdf rapport de recherche 03 001 LOR], janvier 2003.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-A&amp;quot;&amp;gt;[Pui04-A]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Etude des interactions IPsec/DNS, [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/InteractionDNS.pdf rapport de recherche 04002 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;Pui04-B&amp;quot;&amp;gt;[Pui04-B]&amp;lt;/div&amp;gt;&lt;br /&gt;
:J.J. Puig, M. Laurent-Maknavicius, Evaluation en environnement réel de la mise en oeuvre des Services de sécurité dans les architectures typiques (Aspects liés à ICMP), [http://www-lor.int-evry.fr/%7Emaknavic/Rapports_Recherche/IPsec_ICMP.pdf rapport de recherche 04004 LOR], 2004.&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2401bis&amp;quot;&amp;gt;[RFC2401bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
: Stephen Kent, Karen Seo, Security Architecture for the Internet Protocol, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2401bis-06.txt draft-ietf-ipsec-rfc2401bis-06.txt], Internet Draft, 1 Avril 2005, Work in progress&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;&amp;lt;div id=&amp;quot;RFC2402bis&amp;quot;&amp;gt;[RFC2402bis]&amp;lt;/div&amp;gt;&lt;br /&gt;
:Stephen Kent, IP Authentication Header, [http://www.watersprings.org/pub/id/draft-ietf-ipsec-rfc2402bis-11.txt draft-ietf-ipsec-rfc2402bis-11.txt], Internet Draft, 21 Mars 2005, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Rou-id]&lt;br /&gt;
&lt;br /&gt;
Shawn Routhier, Management Information Base for the Internet Protocol (IP), draft-ietf-ipv6-rfc2011-update-10.txt; Internet Draft, 24 Mai 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[Sch95]&lt;br /&gt;
&lt;br /&gt;
B. Schneier: Applied Cryptography : protocols, algorithms, and source code in C, (second edition), John Wiley &amp;amp; Sons, ISBN: 0-471-12845-7, 1996.&lt;br /&gt;
 &lt;br /&gt;
[Sta99]&lt;br /&gt;
&lt;br /&gt;
William Stallings: Snmp, Snmpv2, Snmpv3, and Rmon 1 and 2, Addison Wesley, ISBN: 0-201-48534-6, Janvier 1999.&lt;br /&gt;
 &lt;br /&gt;
[Tout03]&lt;br /&gt;
&lt;br /&gt;
Laurent Toutain: Réseaux Locaux et Internet: des protocoles à l'interconnexion, Troisième édition revue et augmentée, Hermès, ISBN: 2-7462-0670-6, 2003.&lt;br /&gt;
 &lt;br /&gt;
[Uni31]&lt;br /&gt;
&lt;br /&gt;
ATM Forum: ATM User-Network Interface (UNI) Specification Version 3.1, Prentice Hall, Englewood Cliffs, NJ, Juin 1995.&lt;br /&gt;
 &lt;br /&gt;
[WH-id]&lt;br /&gt;
&lt;br /&gt;
Margaret Wasserman, Brian Haberman, IP Forwarding Table MIB, draft-ietf-ipv6-rfc2096-update-07.txt, Internet Draft, 12 février 2004, Work in progress.&lt;br /&gt;
 &lt;br /&gt;
[WK99]&lt;br /&gt;
&lt;br /&gt;
M. Welsh et L. Kaufman: Le système Linux, 2e édition révisée, Éditions O'Reilly, ISBN: 2-84177-033-8, Janvier 1999.&lt;br /&gt;
&lt;br /&gt;
==Sites Web sur IPv6 ==&lt;br /&gt;
&lt;br /&gt;
;[IETF]&lt;br /&gt;
:http://www.imag.fr/pub/archive/IETF: Mirroir français du serveur de l'IETF.&lt;br /&gt;
 &lt;br /&gt;
;[6bone]&lt;br /&gt;
:http://www.6bone.net: Réseau 6bone.&lt;br /&gt;
 &lt;br /&gt;
;[G6bone]&lt;br /&gt;
:http://peirce.logique.jussieu.fr/G6/ Réseau G6-bone (partie francophone de 6bone).&lt;br /&gt;
 &lt;br /&gt;
;[hs247] &lt;br /&gt;
:http://hs247.com/ Informations sur le 6bone et IPv6 en général.&lt;br /&gt;
&lt;br /&gt;
;[ipv6.org]&lt;br /&gt;
: http://www.ipv6.org/ pages d'information sur le protocole IPv6&lt;br /&gt;
&lt;br /&gt;
;[ipv6forum] &lt;br /&gt;
:http://www.ipv6forum.org/ Groupement d'industriels pour promouvoir IPv6.&lt;br /&gt;
&lt;br /&gt;
;[playground] &lt;br /&gt;
:http://playground.sun.com/pub/ipng/html/ipng-main.html liste des mises en oeuvre d'IPv6 dans les équipements.&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Acc%C3%A8s_des_entreprises_et_des_particuliers_%C3%A0_l%27Internet_IPv6&amp;diff=2928</id>
		<title>Accès des entreprises et des particuliers à l'Internet IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Acc%C3%A8s_des_entreprises_et_des_particuliers_%C3%A0_l%27Internet_IPv6&amp;diff=2928"/>
				<updated>2006-02-23T13:34:40Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: /* TEREDO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Déploiement IPv6 des fournisseurs d'accès (ISP) | Déploiement IPv6 des fournisseurs d'accès (ISP) | Mécanismes d'interopérabilité | Mécanismes d'interopérabilité }}&lt;br /&gt;
===ISATAP===&lt;br /&gt;
&lt;br /&gt;
ISATAP (qui se prononce ice-a-tap) est en quelque sorte la déclinaison des principes de 6to4 à un réseau local, de façon à permettre un tunneling automatique et l'échanges de flux IPv6 entre terminaux double pile interconnectés via un réseau local IPv4 uniquement. ISATAP permet le déploiement de terminaux dual-stack et d'applications IPv6 sur une infrastructure locale IPv4, comme typiquement celle d'un réseau d'entreprise. ISATAP peut être déployé de plusieurs façons : soit simplement au sein des terminaux concernés afin de leur permettre d'échanger des flux IPv6 alors qu'ils sont connectés sur une infrastructure IPv4, soit en combinaison avec des routeurs 6to4 de façon à échanger des flux IPv6 localement et avec des sites distants.&lt;br /&gt;
&lt;br /&gt;
ISATAP s'appuie sur un format d'adresse spécifique décrit ci-dessous, qui intègre dans la partie identifiant de terminal l'adresse IPv4 du terminal et donc la fonction d'encapsulation/désencapsulation associée.&lt;br /&gt;
&lt;br /&gt;
ISATAP (''Intra-Site Automatic Tunnel Addressing Protocol'') [[Bibliographie#Templin-id|[Templin-id]]] permet de connecter des équipements terminaux IPv6 isolés dans un réseau IPv4, en gérant de manière automatique l'encapsulation des paquets IPv6 dans des paquets IPv4. Contrairement à 6to4, cette technique s'applique à l'intérieur d'un domaine.&lt;br /&gt;
&lt;br /&gt;
ISATAP repose sur une particularité de construction des identifiants d'interface proposée par l'IEEE. La figure Identifiant d'interface pour ISATAP montre comment un identifiant d'interface est construit à partir d'une adresse MAC en ajoutant la valeur &amp;lt;tt&amp;gt;0xFFFE&amp;lt;/tt&amp;gt;. Or l'IEEE a prévu qu'un identifiant d'interface pouvait contenir une adresse IPv4, la valeur insérée étant alors &amp;lt;tt&amp;gt;0xFE&amp;lt;/tt&amp;gt;, comme le montre la figure . La partie sur trois octets indiquant le constructeur prend la valeur de l'OUI (''Organisational Unit identifier'') attribué à l'IANA, c'est-à-dire &amp;lt;tt&amp;gt;00-00-5E&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[image:CS182.gif]]&lt;br /&gt;
&lt;br /&gt;
Quand un routeur mettant en oeuvre ISATAP reçoit un paquet IPv6 dont l'identifiant d'interface commence par la séquence &amp;lt;tt&amp;gt;00-00-5E-FE&amp;lt;/tt&amp;gt;, il en déduit que le paquet est destiné à une machine isolée et encapsule le paquet IPv6 dans un paquet IPv4 dont l'adresse de destination est celle contenue dans la partie identifiant d'interface.&lt;br /&gt;
&lt;br /&gt;
L'intérêt de cette méthode est de respecter la structure actuelle des adresses IPv6 actuellement en vigueur puisque l'identifiant d'interface a toujours une longueur de 64 octets. Les stations isolées appartiennent au même lien IPv6 et partagent en conséquence le même préfixe IPv6. Mais pour construire complètement l'adresse, il faut pouvoir connaître les préfixes utilisés. Le réseau IPv4 servant à connecter les équipements IPv6 isolés est un réseau NBMA (''Non Broadcast Multiple Access''). Neighbor Discovery possède un mode adapté pour ce type de réseaux : les routeurs ne peuvent donc pas émettre de messages Router Advertisement de manière spontanée. Ces messages ne seront émis qu'en réponse à des Router Sollication.&lt;br /&gt;
&lt;br /&gt;
L'algorithme de configuration d'un équipement isolé qui utilise ISATAP est le suivant :&lt;br /&gt;
&lt;br /&gt;
* dans un premier temps, l'équipement doit connaître l'adresse IPv4 du routeur gérant ISATAP. Cette adresse pourrait être apprise par le DNS, ou en utilisant une adresse anycast IPv4 pour joindre le routeur le plus proche.&lt;br /&gt;
* l'équipement envoie un message IPv6 Router Sollicitation au routeur en utilisant comme adresse de la source, son adresse lien-local (&amp;lt;tt&amp;gt;fe80::5e:fe:IPv4&amp;lt;/tt&amp;gt;) et comme adresse de destination l'adresse de multicast des routeurs (&amp;lt;tt&amp;gt;FF02::02&amp;lt;/tt&amp;gt;). Ce message est encapsulé dans un paquet IPv4 dont l'adresse destination est l'adresse IPv4 du routeur.&lt;br /&gt;
* le routeur répond au message IPv6 Router Sollicitation en renvoyant en point-à-point, toujours encapsulé dans un paquet IPv4, la liste des préfixes IPv6 utilisés pour joindre les équipements isolés (Router Advertisement).&lt;br /&gt;
&lt;br /&gt;
Il est à noter que ISATAP est compatible avec 6to4. Le préfixe global peut contenir l'adresse IPv4 du routeur d'accès et la partie identifiant d'interface l'adresse IPv4 privée de l'équiment. Deux tunnels seront nécessaire (le premier entre le routeur 6to4 de la source et le routeur d'accès du site et le second entre le routeur d'accès et le destinataire). un équipement, même s'il ne possède qu'une adresse privée en IPv4, peut de cette manière disposer une adresse IPv6 globale. Malheureusement, cette solution ne peut pas être déployée quand le routeur d'accès n'est pas configuré pour le protocole IPv6, cas généralement rencontré dans les réseaux ADSL.&lt;br /&gt;
&lt;br /&gt;
===TEREDO===&lt;br /&gt;
&lt;br /&gt;
Le principal objectif de Teredo (RFC 4380) est de fournir automatiquement une connectivité IPv6 à un terminal situé derrière un NAT et ne disposant donc pas d'une adresse IPv4 globale. Ce mécanisme de type client/serveur s'appuie sur des serveurs et des relais de façon à optimiser le chemin parcouru par les paquets IPv6 encapsulés qui transiteront via le relais le plus &amp;quot;proche&amp;quot; en non plus sytématiquement par un point unique comme avec le mécanisme de Tunnel Broker. Cependant, l'optimisation du chemin parcouru par les paquets IPv6 encapsulés conduit à une certaine complexité dans les échanges client/serveur/relais, en particulier lors de chaque phase d'initialisation d'une communication. Teredo est un outil de dernier recours, destiné à être utilisé en l'absence de connectivité IPv6 native, ou de tunnel configuré, ou de la mise oeuvre de 6to4. Ce mécanisme concerne exclusivement des terminaux individuels ne disposant pas d'une adresse IPv4 publique ; il ne s'applique pas à des sous-réseaux.&lt;br /&gt;
&lt;br /&gt;
Teredo s'appuie sur un format d'adresse particulier (cf. figure Format des adresse Teredo) qui intègre dans la partie préfixe l'adresse IPv4 du serveur Teredo, et dans la partie identifiant les adresse et numéro de port (en sortie de NAT) du terminal client Teredo. Cette dernière infomation est brouillée afin de ne pas être modifiée par certains NAT qui systématiquement modifient les séquences binaires ressemblant à une adresse.&lt;br /&gt;
&lt;br /&gt;
[[image:CS183.gif]]&lt;br /&gt;
&lt;br /&gt;
L'objectif de Teredo est de rendre entièrement automatique la configuration de tunnels IPv6-dans-IPv4 pour des terminaux situés derrière un ou plusieurs NAT, et utilisant par conséquent des adresses IPv4 privées. Pour cela, Teredo met en ?uvre une encapsulation UDP. Teredo s'appuie sur un serveur et des relais externes au réseau auquel est connecté le client Teredo, de façon à optimiser autant que possible le routage IPv6, en évitant un point d'encapsulation unique tel qu'on peut le rencontrer par exemple avec une solution de type tunnel broker. De plus, Teredo utilise un format d'adresse IPv6 spécifique qui ne requiert aucune allocation de la part des organismes officiels.&lt;br /&gt;
&lt;br /&gt;
Le préfixe Teredo de longueur 64 bits inclus l'adresse du serveur Teredo auquel le terminal est rattaché. A la date d'édition de cet ouvrage le préfixe Teredo a la valeur &amp;lt;tt&amp;gt;3FFE:831F::/32&amp;lt;/tt&amp;gt; mais l'IANA pourrait assigner une valeur définitive.&lt;br /&gt;
&lt;br /&gt;
L'architecture globale et les différents éléments mise en oeuvre dans Teredo sont décrits figure architecture Teredo. Le but recherché est que chaque client Teredo soit rattaché au serveur Teredo le plus proche, et que le trafic IPv6 transite par le relais Teredo lui aussi le plus proche au sens routage IPv6.&lt;br /&gt;
&lt;br /&gt;
[[image:CS184.gif]]&lt;br /&gt;
&lt;br /&gt;
Cependant, il existe plusieurs types de NAT, selon la politique de traduction adoptée (en particulier pour le port UDP), qui peuvent être classés selon deux grandes familles :&lt;br /&gt;
&lt;br /&gt;
* celle des &amp;quot;cone NATs&amp;quot; (qui regroupe en fait trois type différents NAT) et&lt;br /&gt;
* celle des &amp;quot;symmetric NATs&amp;quot;.&lt;br /&gt;
* Il est important de noter que Teredo tel qu'il est défini actuellement, ne peut pas fonctionner au travers d'un &amp;quot;symmetric NAT&amp;quot;. En effet, contrairement aux &amp;quot;cone NATs&amp;quot;, un &amp;quot;symmetric NAT&amp;quot; associe un couple adresse/port externe différent selon l'adresse et l'application destinatrices du datagramme, lors de la traduction de ce dernier. Ainsi, les caractéristiques du tunnel UDP d'un terminal Teredo ne sont pas globalement uniques, alors que le mécanisme d'initialisation et de maintien de contexte de Teredo requiert cette unicité.&lt;br /&gt;
&lt;br /&gt;
Globalement le fonctionnement de Teredo est plutôt complexe puisqu'il nécessite la coopération de trois types de noeuds réseau (client, serveur et relais Teredo), afin de :&lt;br /&gt;
&lt;br /&gt;
* de déterminer le type de NAT traversé et d'assigner une adresse IPv6 au client Teredo&lt;br /&gt;
* de maintenir ouvert dans le NAT, l&amp;quot;association entre adresse/port internes et adresse/port externes&lt;br /&gt;
&lt;br /&gt;
La phase d'initialisation d'un client Teredo a en particulier pour but de déterminer le type de NAT derrière lequel se trouve le client Teredo. A l'issue de cette initialisation, et dès lors qu'aucun &amp;quot;symmetric NAT&amp;quot; n'est traversé, il est alors nécessaire de maintenir l'association ouverte dans le NAT, par l'envoi périodique d'un message spécifique vers le serveur Teredo qui a pour effet de ré-initialiser le time-out d'inactivité du NAT.&lt;br /&gt;
&lt;br /&gt;
De plus, l'initialisation d'une communication IPv6 sera différente, d'une part selon le type de cone NAT traversé, et d'autre part selon la destination : client Teredo sur le même lien, client Teredo sur un site différent, terminal IPv6 externe.&lt;br /&gt;
&lt;br /&gt;
L'initialisation typique d'une communication entre un client Teredo et un terminal uniquement IPv6, est illustrée dans l'exemple figure exemple d'initialisation d'une communication.&lt;br /&gt;
&lt;br /&gt;
[[image:CS185.gif]]&lt;br /&gt;
{{suivi| Déploiement IPv6 des fournisseurs d'accès (ISP) | Déploiement IPv6 des fournisseurs d'accès (ISP) | Mécanismes d'interopérabilité | Mécanismes d'interopérabilité }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=Acc%C3%A8s_des_entreprises_et_des_particuliers_%C3%A0_l%27Internet_IPv6&amp;diff=2922</id>
		<title>Accès des entreprises et des particuliers à l'Internet IPv6</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=Acc%C3%A8s_des_entreprises_et_des_particuliers_%C3%A0_l%27Internet_IPv6&amp;diff=2922"/>
				<updated>2006-02-23T09:50:24Z</updated>
		
		<summary type="html">&lt;p&gt;Bruno Deniaud: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{suivi| Déploiement IPv6 des fournisseurs d'accès (ISP) | Déploiement IPv6 des fournisseurs d'accès (ISP) | Mécanismes d'interopérabilité | Mécanismes d'interopérabilité }}&lt;br /&gt;
===ISATAP===&lt;br /&gt;
&lt;br /&gt;
ISATAP (qui se prononce ice-a-tap) est en quelque sorte la déclinaison des principes de 6to4 à un réseau local, de façon à permettre un tunneling automatique et l'échanges de flux IPv6 entre terminaux double pile interconnectés via un réseau local IPv4 uniquement. ISATAP permet le déploiement de terminaux dual-stack et d'applications IPv6 sur une infrastructure locale IPv4, comme typiquement celle d'un réseau d'entreprise. ISATAP peut être déployé de plusieurs façons : soit simplement au sein des terminaux concernés afin de leur permettre d'échanger des flux IPv6 alors qu'ils sont connectés sur une infrastructure IPv4, soit en combinaison avec des routeurs 6to4 de façon à échanger des flux IPv6 localement et avec des sites distants.&lt;br /&gt;
&lt;br /&gt;
ISATAP s'appuie sur un format d'adresse spécifique décrit ci-dessous, qui intègre dans la partie identifiant de terminal l'adresse IPv4 du terminal et donc la fonction d'encapsulation/désencapsulation associée.&lt;br /&gt;
&lt;br /&gt;
ISATAP (''Intra-Site Automatic Tunnel Addressing Protocol'') [[Bibliographie#Templin-id|[Templin-id]]] permet de connecter des équipements terminaux IPv6 isolés dans un réseau IPv4, en gérant de manière automatique l'encapsulation des paquets IPv6 dans des paquets IPv4. Contrairement à 6to4, cette technique s'applique à l'intérieur d'un domaine.&lt;br /&gt;
&lt;br /&gt;
ISATAP repose sur une particularité de construction des identifiants d'interface proposée par l'IEEE. La figure Identifiant d'interface pour ISATAP montre comment un identifiant d'interface est construit à partir d'une adresse MAC en ajoutant la valeur &amp;lt;tt&amp;gt;0xFFFE&amp;lt;/tt&amp;gt;. Or l'IEEE a prévu qu'un identifiant d'interface pouvait contenir une adresse IPv4, la valeur insérée étant alors &amp;lt;tt&amp;gt;0xFE&amp;lt;/tt&amp;gt;, comme le montre la figure . La partie sur trois octets indiquant le constructeur prend la valeur de l'OUI (''Organisational Unit identifier'') attribué à l'IANA, c'est-à-dire &amp;lt;tt&amp;gt;00-00-5E&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[image:CS182.gif]]&lt;br /&gt;
&lt;br /&gt;
Quand un routeur mettant en oeuvre ISATAP reçoit un paquet IPv6 dont l'identifiant d'interface commence par la séquence &amp;lt;tt&amp;gt;00-00-5E-FE&amp;lt;/tt&amp;gt;, il en déduit que le paquet est destiné à une machine isolée et encapsule le paquet IPv6 dans un paquet IPv4 dont l'adresse de destination est celle contenue dans la partie identifiant d'interface.&lt;br /&gt;
&lt;br /&gt;
L'intérêt de cette méthode est de respecter la structure actuelle des adresses IPv6 actuellement en vigueur puisque l'identifiant d'interface a toujours une longueur de 64 octets. Les stations isolées appartiennent au même lien IPv6 et partagent en conséquence le même préfixe IPv6. Mais pour construire complètement l'adresse, il faut pouvoir connaître les préfixes utilisés. Le réseau IPv4 servant à connecter les équipements IPv6 isolés est un réseau NBMA (''Non Broadcast Multiple Access''). Neighbor Discovery possède un mode adapté pour ce type de réseaux : les routeurs ne peuvent donc pas émettre de messages Router Advertisement de manière spontanée. Ces messages ne seront émis qu'en réponse à des Router Sollication.&lt;br /&gt;
&lt;br /&gt;
L'algorithme de configuration d'un équipement isolé qui utilise ISATAP est le suivant :&lt;br /&gt;
&lt;br /&gt;
* dans un premier temps, l'équipement doit connaître l'adresse IPv4 du routeur gérant ISATAP. Cette adresse pourrait être apprise par le DNS, ou en utilisant une adresse anycast IPv4 pour joindre le routeur le plus proche.&lt;br /&gt;
* l'équipement envoie un message IPv6 Router Sollicitation au routeur en utilisant comme adresse de la source, son adresse lien-local (&amp;lt;tt&amp;gt;fe80::5e:fe:IPv4&amp;lt;/tt&amp;gt;) et comme adresse de destination l'adresse de multicast des routeurs (&amp;lt;tt&amp;gt;FF02::02&amp;lt;/tt&amp;gt;). Ce message est encapsulé dans un paquet IPv4 dont l'adresse destination est l'adresse IPv4 du routeur.&lt;br /&gt;
* le routeur répond au message IPv6 Router Sollicitation en renvoyant en point-à-point, toujours encapsulé dans un paquet IPv4, la liste des préfixes IPv6 utilisés pour joindre les équipements isolés (Router Advertisement).&lt;br /&gt;
&lt;br /&gt;
Il est à noter que ISATAP est compatible avec 6to4. Le préfixe global peut contenir l'adresse IPv4 du routeur d'accès et la partie identifiant d'interface l'adresse IPv4 privée de l'équiment. Deux tunnels seront nécessaire (le premier entre le routeur 6to4 de la source et le routeur d'accès du site et le second entre le routeur d'accès et le destinataire). un équipement, même s'il ne possède qu'une adresse privée en IPv4, peut de cette manière disposer une adresse IPv6 globale. Malheureusement, cette solution ne peut pas être déployée quand le routeur d'accès n'est pas configuré pour le protocole IPv6, cas généralement rencontré dans les réseaux ADSL.&lt;br /&gt;
&lt;br /&gt;
===TEREDO===&lt;br /&gt;
&lt;br /&gt;
Le principal objectif de Teredo [[Bibliographie#Huitema-id|[Huitéma-id]]] est de fournir automatiquement une connectivité IPv6 à un terminal situé derrière un NAT et ne disposant donc pas d'une adresse IPv4 globale. Ce mécanisme de type client/serveur s'appuie sur des serveurs et des relais de façon à optimiser le chemin parcouru par les paquets IPv6 encapsulés qui transiteront via le relais le plus &amp;quot;proche&amp;quot; en non plus sytématiquement par un point unique comme avec le mécanisme de Tunnel Broker. Cependant, l'optimisation du chemin parcouru par les paquets IPv6 encapsulés conduit à une certaine complexité dans les échanges client/serveur/relais, en particulier lors de chaque phase d'initialisation d'une communication. Teredo est un outil de dernier recours, destiné à être utilisé en l'absence de connectivité IPv6 native, ou de tunnel configuré, ou de la mise oeuvre de 6to4. Ce mécanisme concerne exclusivement des terminaux individuels ne disposant pas d'une adresse IPv4 publique ; il ne s'applique pas à des sous-réseaux.&lt;br /&gt;
&lt;br /&gt;
Teredo s'appuie sur un format d'adresse particulier (cf. figure Format des adresse Teredo) qui intègre dans la partie préfixe l'adresse IPv4 du serveur Teredo, et dans la partie identifiant les adresse et numéro de port (en sortie de NAT) du terminal client Teredo. Cette dernière infomation est brouillée afin de ne pas être modifiée par certains NAT qui systématiquement modifient les séquences binaires ressemblant à une adresse.&lt;br /&gt;
&lt;br /&gt;
[[image:CS183.gif]]&lt;br /&gt;
&lt;br /&gt;
L'objectif de Teredo est de rendre entièrement automatique la configuration de tunnels IPv6-dans-IPv4 pour des terminaux situés derrière un ou plusieurs NAT, et utilisant par conséquent des adresses IPv4 privées. Pour cela, Teredo met en ?uvre une encapsulation UDP. Teredo s'appuie sur un serveur et des relais externes au réseau auquel est connecté le client Teredo, de façon à optimiser autant que possible le routage IPv6, en évitant un point d'encapsulation unique tel qu'on peut le rencontrer par exemple avec une solution de type tunnel broker. De plus, Teredo utilise un format d'adresse IPv6 spécifique qui ne requiert aucune allocation de la part des organismes officiels.&lt;br /&gt;
&lt;br /&gt;
Le préfixe Teredo de longueur 64 bits inclus l'adresse du serveur Teredo auquel le terminal est rattaché. A la date d'édition de cet ouvrage le préfixe Teredo a la valeur &amp;lt;tt&amp;gt;3FFE:831F::/32&amp;lt;/tt&amp;gt; mais l'IANA pourrait assigner une valeur définitive.&lt;br /&gt;
&lt;br /&gt;
L'architecture globale et les différents éléments mise en oeuvre dans Teredo sont décrits figure architecture Teredo. Le but recherché est que chaque client Teredo soit rattaché au serveur Teredo le plus proche, et que le trafic IPv6 transite par le relais Teredo lui aussi le plus proche au sens routage IPv6.&lt;br /&gt;
&lt;br /&gt;
[[image:CS184.gif]]&lt;br /&gt;
&lt;br /&gt;
Cependant, il existe plusieurs types de NAT, selon la politique de traduction adoptée (en particulier pour le port UDP), qui peuvent être classés selon deux grandes familles :&lt;br /&gt;
&lt;br /&gt;
* celle des &amp;quot;cone NATs&amp;quot; (qui regroupe en fait trois type différents NAT) et&lt;br /&gt;
* celle des &amp;quot;symmetric NATs&amp;quot;.&lt;br /&gt;
* Il est important de noter que Teredo tel qu'il est défini actuellement, ne peut pas fonctionner au travers d'un &amp;quot;symmetric NAT&amp;quot;. En effet, contrairement aux &amp;quot;cone NATs&amp;quot;, un &amp;quot;symmetric NAT&amp;quot; associe un couple adresse/port externe différent selon l'adresse et l'application destinatrices du datagramme, lors de la traduction de ce dernier. Ainsi, les caractéristiques du tunnel UDP d'un terminal Teredo ne sont pas globalement uniques, alors que le mécanisme d'initialisation et de maintien de contexte de Teredo requiert cette unicité.&lt;br /&gt;
&lt;br /&gt;
Globalement le fonctionnement de Teredo est plutôt complexe puisqu'il nécessite la coopération de trois types de noeuds réseau (client, serveur et relais Teredo), afin de :&lt;br /&gt;
&lt;br /&gt;
* de déterminer le type de NAT traversé et d'assigner une adresse IPv6 au client Teredo&lt;br /&gt;
* de maintenir ouvert dans le NAT, l&amp;quot;association entre adresse/port internes et adresse/port externes&lt;br /&gt;
&lt;br /&gt;
La phase d'initialisation d'un client Teredo a en particulier pour but de déterminer le type de NAT derrière lequel se trouve le client Teredo. A l'issue de cette initialisation, et dès lors qu'aucun &amp;quot;symmetric NAT&amp;quot; n'est traversé, il est alors nécessaire de maintenir l'association ouverte dans le NAT, par l'envoi périodique d'un message spécifique vers le serveur Teredo qui a pour effet de ré-initialiser le time-out d'inactivité du NAT.&lt;br /&gt;
&lt;br /&gt;
De plus, l'initialisation d'une communication IPv6 sera différente, d'une part selon le type de cone NAT traversé, et d'autre part selon la destination : client Teredo sur le même lien, client Teredo sur un site différent, terminal IPv6 externe.&lt;br /&gt;
&lt;br /&gt;
L'initialisation typique d'une communication entre un client Teredo et un terminal uniquement IPv6, est illustrée dans l'exemple figure exemple d'initialisation d'une communication.&lt;br /&gt;
&lt;br /&gt;
[[image:CS185.gif]]&lt;br /&gt;
{{suivi| Déploiement IPv6 des fournisseurs d'accès (ISP) | Déploiement IPv6 des fournisseurs d'accès (ISP) | Mécanismes d'interopérabilité | Mécanismes d'interopérabilité }}&lt;/div&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	</feed>