Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
040-adresses:030-demonstration-v4 [le 20/09/2025 à 15:04] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 040-adresses:030-demonstration-v4 [le 21/09/2025 à 14:03] (Version actuelle) – [Deuxième recherche ARP] prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Un exemple simple avec IPv4 ====== | ||
+ | Nous allons mettre en évidence tous les mécanismes mis en jeu lorsqu' | ||
+ | ====== Le banc de test ====== | ||
+ | {{ 040-adresses: | ||
+ | Le réseau local IPV4 est le suivant: | ||
+ | * le bloc IPv4 = 192.168.60/ | ||
+ | * une station de travail dispose de l' | ||
+ | * un serveur DNS local a l' | ||
+ | * la «box» du fournisseur d' | ||
+ | Un analyseur de trames est installé sur la station de travail et va capturer tout ce qu'il se passe le concernant lorsqu' | ||
+ | ====== Analyse de l' | ||
+ | ===== Première recherche ARP ===== | ||
+ | < | ||
+ | 1 < | ||
+ | 2 < | ||
+ | </ | ||
+ | Rappelons que la station de travail vient de se réveiller. | ||
+ | * Elle demande alors par un broadcast ARP (ff: | ||
+ | * Ledit serveur DNS utilise alors ARP pour répondre: '' | ||
+ | La réponse à la question " | ||
+ | ===== Résolution du nom de la cible ===== | ||
+ | |||
+ | < | ||
+ | 3 < | ||
+ | 4 < | ||
+ | </ | ||
+ | La station de travail demande au serveur DNS quelle est l' | ||
+ | |||
+ | < | ||
+ | Frame 3: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface enp2s0f2, id 0 | ||
+ | |||
+ | <span class=" | ||
+ | Destination: | ||
+ | Address: 1c: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Source: 1c: | ||
+ | Address: 1c: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Type: IPv4 (0x0800)</ | ||
+ | <span class=" | ||
+ | 0100 .... = Version: 4 | ||
+ | .... 0101 = Header Length: 20 bytes (5) | ||
+ | Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) | ||
+ | 0000 00.. = Differentiated Services Codepoint: Default (0) | ||
+ | .... ..00 = Explicit Congestion Notification: | ||
+ | Total Length: 60 | ||
+ | Identification: | ||
+ | 010. .... = Flags: 0x2, Don't fragment | ||
+ | 0... .... = Reserved bit: Not set | ||
+ | .1.. .... = Don't fragment: Set | ||
+ | ..0. .... = More fragments: Not set | ||
+ | ...0 0000 0000 0000 = Fragment Offset: 0 | ||
+ | Time to Live: 64 | ||
+ | Protocol: UDP (17) | ||
+ | Header Checksum: 0xcca3 [validation disabled] | ||
+ | [Header checksum status: Unverified] | ||
+ | Source Address: 192.168.60.112 | ||
+ | Destination Address: 192.168.60.3</ | ||
+ | <span class=" | ||
+ | User Datagram Protocol, Src Port: 51269, Dst Port: 53 | ||
+ | Source Port: 51269 | ||
+ | Destination Port: 53 | ||
+ | Length: 40 | ||
+ | Checksum: 0xf9fd [unverified] | ||
+ | [Checksum Status: Unverified] | ||
+ | [Stream index: 0] | ||
+ | [Timestamps] | ||
+ | [Time since first frame: 0.000000000 seconds] | ||
+ | [Time since previous frame: 0.000000000 seconds] | ||
+ | UDP payload (32 bytes) | ||
+ | Domain Name System (query) | ||
+ | Transaction ID: 0xcaaa | ||
+ | Flags: 0x0100 Standard query | ||
+ | 0... .... .... .... = Response: Message is a query | ||
+ | .000 0... .... .... = Opcode: Standard query (0) | ||
+ | .... ..0. .... .... = Truncated: Message is not truncated | ||
+ | .... ...1 .... .... = Recursion desired: Do query recursively | ||
+ | .... .... .0.. .... = Z: reserved (0) | ||
+ | .... .... ...0 .... = Non-authenticated data: Unacceptable | ||
+ | Questions: 1 | ||
+ | Answer RRs: 0 | ||
+ | Authority RRs: 0 | ||
+ | Additional RRs: 0 | ||
+ | Queries | ||
+ | demo.nain-t.net: | ||
+ | Name: demo.nain-t.net | ||
+ | [Name Length: 14] | ||
+ | [Label Count: 3] | ||
+ | Type: A (Host Address) (1) | ||
+ | Class: IN (0x0001) | ||
+ | [Response In: 4]</ | ||
+ | </ | ||
+ | - La partie surlignée en blanc représente ce qui concerne la couche Ethernet. Dans cette couche, nous voyons bien que seules les adresses MAC sont utilisées. Cette couche ne concerne que le transport dans le réseau local. Les source et destination MAC correspondent bien aux IP des deux nœuds. Il y a dans cette couche le type utilisé dans la couche supérieure: | ||
+ | - La partie surlignée en orange représente le couche IP. Ici bien entendu ce sont les adresses IP qui sont utilisées. Le client s' | ||
+ | - Enfin, la partie surlignée en bleu correspond à la partie application. Nous découvrons les ports serveur (53) et client (51269). Nous y trouvons les détails du protocole DNS avec la question posée: '' | ||
+ | |||
+ | Il n'est pas fondamental de détailler la trame 4 qui n'est que la réponse du berger à la bergère, en suivant le même protocole, ce qui donne: '' | ||
+ | |||
+ | <note important> | ||
+ | ===== Deuxième recherche ARP ===== | ||
+ | |||
+ | < | ||
+ | 5 | ||
+ | 6 | ||
+ | |||
+ | </ | ||
+ | |||
+ | La station de travail cherche à connaître l' | ||
+ | ===== Établissement de la connexion TCP avec la cible ===== | ||
+ | |||
+ | < | ||
+ | 7 192.168.60.112 | ||
+ | 8 51.68.121.59 | ||
+ | 9 192.168.60.112 | ||
+ | |||
+ | </ | ||
+ | En ce qui concerne directement TCP, nous pouvons observer que de nombreux paramètres vont être négociés: | ||
+ | ^ | ||
+ | ^ | ||
+ | ^ | ||
+ | ^ MSS | 1460 | Maximum Segment Size, en rapport avec le MTU((Le MTU étant généralement de 1500 octets. Mais ici il faut retrancher la taille de l' | ||
+ | ^ WS | 128 | Window Scale (multiplicateur de la taille de la fenêtre)| | ||
+ | |||
+ | ==== Aparté sur le routage ==== | ||
+ | |||
+ | Si l'on regarde dans le détail de la trame 7 la couche Ethernet, nous voyons: | ||
+ | < | ||
+ | Frame 7: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface enp2s0f2, id 0 | ||
+ | |||
+ | <span class=" | ||
+ | < | ||
+ | Address: FreeboxS_86: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Source: ASUSTekC_2d: | ||
+ | Address: ASUSTekC_2d: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Type: IPv4 (0x0800)</ | ||
+ | <span class=" | ||
+ | ...</ | ||
+ | </ | ||
+ | La couche Ethernet va porter ce paquet à la «box» et là s' | ||
+ | |||
+ | De même dans la trame 8: | ||
+ | < | ||
+ | Frame 8: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface enp2s0f2, id 0 | ||
+ | |||
+ | <span class=" | ||
+ | Destination: | ||
+ | Address: ASUSTekC_2d: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | < | ||
+ | Address: FreeboxS_86: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Type: IPv4 (0x0800)</ | ||
+ | <span class=" | ||
+ | </ | ||
+ | Sur la couche Ethernet, c'est l' | ||
+ | |||
+ | |||
+ | ===== Les applications discutent ===== | ||
+ | La connexion TCP étant en place, le client effectue une première requête dans la trame 10: | ||
+ | < | ||
+ | Frame 10: 368 bytes on wire (2944 bits), 368 bytes captured (2944 bits) on interface enp2s0f2, id 0 | ||
+ | Ethernet II, Src: ASUSTekC_2d: | ||
+ | Destination: | ||
+ | Address: FreeboxS_86: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Source: ASUSTekC_2d: | ||
+ | Address: ASUSTekC_2d: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Type: IPv4 (0x0800) | ||
+ | Internet Protocol Version 4, Src: 192.168.60.112, | ||
+ | 0100 .... = Version: 4 | ||
+ | .... 0101 = Header Length: 20 bytes (5) | ||
+ | Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) | ||
+ | 0000 00.. = Differentiated Services Codepoint: Default (0) | ||
+ | .... ..00 = Explicit Congestion Notification: | ||
+ | Total Length: 400 | ||
+ | Identification: | ||
+ | 010. .... = Flags: 0x2, Don't fragment | ||
+ | 0... .... = Reserved bit: Not set | ||
+ | .1.. .... = Don't fragment: Set | ||
+ | ..0. .... = More fragments: Not set | ||
+ | ...0 0000 0000 0000 = Fragment Offset: 0 | ||
+ | Time to Live: 64 | ||
+ | <span class=" | ||
+ | Header Checksum: 0x841d [validation disabled] | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | Source Port: 45616 | ||
+ | Destination Port: 80 | ||
+ | < | ||
+ | Sequence Number (raw): 983250803</ | ||
+ | < | ||
+ | Acknowledgment number (raw): 3608667855</ | ||
+ | 1000 .... = Header Length: 32 bytes (8) | ||
+ | Flags: 0x018 (PSH, ACK) | ||
+ | 000. .... .... = Reserved: Not set | ||
+ | ...0 .... .... = Accurate ECN: Not set | ||
+ | .... 0... .... = Congestion Window Reduced: Not set | ||
+ | .... .0.. .... = ECN-Echo: Not set | ||
+ | .... ..0. .... = Urgent: Not set | ||
+ | .... ...1 .... = Acknowledgment: | ||
+ | < | ||
+ | .... .... .0.. = Reset: Not set | ||
+ | .... .... ..0. = Syn: Not set | ||
+ | .... .... ...0 = Fin: Not set | ||
+ | Window: 502 | ||
+ | Checksum: 0xab1a [unverified] | ||
+ | Urgent Pointer: 0 | ||
+ | Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps | ||
+ | TCP Option - No-Operation (NOP) | ||
+ | Kind: No-Operation (1) | ||
+ | TCP Option - No-Operation (NOP) | ||
+ | Kind: No-Operation (1) | ||
+ | TCP Option - Timestamps: TSval 1954463268, TSecr 3689330405 | ||
+ | Kind: Time Stamp Option (8) | ||
+ | Length: 10 | ||
+ | Timestamp value: 1954463268 | ||
+ | Timestamp echo reply: 3689330405 | ||
+ | < | ||
+ | <span class=" | ||
+ | < | ||
+ | Accept: text/ | ||
+ | Upgrade-Insecure-Requests: | ||
+ | User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/ | ||
+ | Accept-Encoding: | ||
+ | Accept-Language: | ||
+ | < | ||
+ | Host: demo.nain-t.net\r\n</ | ||
+ | \r\n</ | ||
+ | </ | ||
+ | Dans la couche IP, nous confirmons bien que le transport se fera par TCP et que c'est bien le client local (192.168.60.112) qui s' | ||
+ | |||
+ | Dans la couche Transport, nous pouvons remarquer: | ||
+ | * les '' | ||
+ | * le '' | ||
+ | * le bit '' | ||
+ | * le '' | ||
+ | |||
+ | Dans la couche application, | ||
+ | * '' | ||
+ | |||
+ | Le segment suivant: | ||
+ | < | ||
+ | 11 | ||
+ | </ | ||
+ | |||
+ | C'est le serveur qui confirme au client qu'il a bien reçu le segment que le client lui a envoyé. Ici la taille de la fenêtre n'a pas d' | ||
+ | |||
+ | Dans le segment suivant, le serveur répond (pour alléger cette page, faisons l' | ||
+ | < | ||
+ | Frame 12: 365 bytes on wire (2920 bits), 365 bytes captured (2920 bits) on interface enp2s0f2, id 0 | ||
+ | |||
+ | Ethernet II, Src: FreeboxS_86: | ||
+ | Destination: | ||
+ | Address: ASUSTekC_2d: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Source: FreeboxS_86: | ||
+ | Address: FreeboxS_86: | ||
+ | .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Type: IPv4 (0x0800) | ||
+ | Internet Protocol Version 4, Src: 51.68.121.59, | ||
+ | 0100 .... = Version: 4 | ||
+ | .... 0101 = Header Length: 20 bytes (5) | ||
+ | Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) | ||
+ | 0000 00.. = Differentiated Services Codepoint: Default (0) | ||
+ | .... ..00 = Explicit Congestion Notification: | ||
+ | Total Length: 351 | ||
+ | Identification: | ||
+ | 010. .... = Flags: 0x2, Don't fragment | ||
+ | 0... .... = Reserved bit: Not set | ||
+ | .1.. .... = Don't fragment: Set | ||
+ | ..0. .... = More fragments: Not set | ||
+ | ...0 0000 0000 0000 = Fragment Offset: 0 | ||
+ | Time to Live: 53 | ||
+ | <span class=" | ||
+ | Header Checksum: 0xcb87 [validation disabled] | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | Transmission Control Protocol, Src Port: 80, Dst Port: 45616, Seq: 1, Ack: 349, Len: 299 | ||
+ | Source Port: 80 | ||
+ | Destination Port: 45616 | ||
+ | Sequence Number: 1 (relative sequence number) | ||
+ | Sequence Number (raw): 3608667855 | ||
+ | Acknowledgment Number: 349 (relative ack number) | ||
+ | Acknowledgment number (raw): 983251151 | ||
+ | 1000 .... = Header Length: 32 bytes (8) | ||
+ | Flags: 0x018 (PSH, ACK) | ||
+ | 000. .... .... = Reserved: Not set | ||
+ | ...0 .... .... = Accurate ECN: Not set | ||
+ | .... 0... .... = Congestion Window Reduced: Not set | ||
+ | .... .0.. .... = ECN-Echo: Not set | ||
+ | .... ..0. .... = Urgent: Not set | ||
+ | .... ...1 .... = Acknowledgment: | ||
+ | .... .... 1... = Push: Set | ||
+ | .... .... .0.. = Reset: Not set | ||
+ | .... .... ..0. = Syn: Not set | ||
+ | .... .... ...0 = Fin: Not set | ||
+ | Window: 507 | ||
+ | Checksum: 0xd0cb [unverified] | ||
+ | Urgent Pointer: 0 | ||
+ | Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps | ||
+ | TCP Option - No-Operation (NOP) | ||
+ | Kind: No-Operation (1) | ||
+ | TCP Option - No-Operation (NOP) | ||
+ | Kind: No-Operation (1) | ||
+ | TCP Option - Timestamps: TSval 3689331288, TSecr 1954463268 | ||
+ | Kind: Time Stamp Option (8) | ||
+ | Length: 10 | ||
+ | Timestamp value: 3689331288 | ||
+ | Timestamp echo reply: 1954463268 | ||
+ | TCP payload (299 bytes) | ||
+ | <span class=" | ||
+ | < | ||
+ | Response Version: HTTP/1.1 | ||
+ | < | ||
+ | Response Phrase: OK | ||
+ | Date: Fri, 14 Feb 2025 15:59:47 GMT\r\n | ||
+ | Server: Apache/ | ||
+ | Last-Modified: | ||
+ | ETag: " | ||
+ | Accept-Ranges: | ||
+ | Content-Length: | ||
+ | [Content length: 16] | ||
+ | Keep-Alive: timeout=5, max=100\r\n | ||
+ | Connection: Keep-Alive\r\n | ||
+ | Content-Type: | ||
+ | \r\n | ||
+ | File Data: 16 bytes | ||
+ | < | ||
+ | Bonjour toi ; | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Dans le protocole HTTP, le code 200 signifie «OK». | ||
+ | |||
+ | Le reste du dialogue ne présente pas un intérêt majeur: | ||
+ | * Le client demande au serveur sa «favicon»; | ||
+ | * le serveur répond qu'il n'y en a pas; | ||
+ | * la session TCP prend fin avec un segment '' | ||
+ | |||
+ | 21 51.68.121.59 | ||
+ | 22 192.168.60.112 | ||
+ | |||
+ | Le résultat tel qu'il se voit à l' | ||
+ | {{ 040-adresses: | ||
+ | ====== Et avec IPv6 ? ====== | ||
+ | Au détail près qu' |
Un exemple simple avec IPv4: Dernière modification le: 01/01/1970 à 00:00 par