Mode connecté

La connexion TCP

Le mode connecté de TCP n'est pas d'une grande simplicité. Il est conçu pour être robuste et tient compte des possibilités et des risques des grands réseaux maillés, à savoir:

  • Les paquets peuvent circuler de la source vers la cible par des chemins différents (dans ce cas, ils arrivent sur la cible dans le désordre), 
  • Il peut s'en perdre en route,
  • Certains paquets peuvent arriver corrompus
  • etc..

TCP en revanche ne prend hélas pas en compte, ou très peu, les problèmes de piratage.

L'exemple est pris sur mon réseau local, mais le principe reste rigoureusement le même sur l'Internet. La manipulation sur le réseau local m'évite d'avoir à faire un filtrage plus ou moins pénible.

La séquence en gros

No. Time    Source              Destination        Proto Info
 1 0.000000 00:20:18:b9:49:37   ff:ff:ff:ff:ff:ff   ARP  Who has 192.168.0.250? Tell 192.168.0.10
 2 0.000277 00:20:18:61:90:e3   00:20:18:b9:49:37   ARP  192.168.0.250 is at 00:20:18:61:90:e3
 3 0.000474 chris.maison.mrs    gateway1.maison.mrs TCP  1927 > pop3 [SYN]
 4 0.000885 gateway1.maison.mrs chris.maison.mrs    TCP  pop3 > 1927 [SYN, ACK]
 5 0.001111 chris.maison.mrs    gateway1.maison.mrs TCP  1927 > pop3 [ACK]
 6 0.049836 gateway1.maison.mrs chris.maison.mrs    POP  Response: +OK
 7 0.050586 chris.maison.mrs    gateway1.maison.mrs POP  Request: USER chris
 8 0.050998 gateway1.maison.mrs chris.maison.mrs    TCP  pop3 > 1927 [ACK]
 9 0.051511 gateway1.maison.mrs chris.maison.mrs    POP  Response: +OK
10 0.051979 chris.maison.mrs    gateway1.maison.mrs POP  Request: PASS babaorum
11 0.060769 gateway1.maison.mrs chris.maison.mrs    TCP  pop3 > 1927 [ACK]
12 0.159888 gateway1.maison.mrs chris.maison.mrs    POP  Response: +OK Mailbox open, 0 messages
13 0.160799 chris.maison.mrs    gateway1.maison.mrs POP  Request: STAT
14 0.161552 gateway1.maison.mrs chris.maison.mrs    POP  Response: +OK 0 0
15 0.162801 chris.maison.mrs    gateway1.maison.mrs POP  Request: QUIT
16 0.167987 gateway1.maison.mrs chris.maison.mrs    POP  Response: +OK Sayonara
17 0.168562 chris.maison.mrs    gateway1.maison.mrs TCP  1927 > pop3 [FIN, ACK]
18 0.168957 gateway1.maison.mrs chris.maison.mrs    TCP  pop3 > 1927 [ACK]
19 0.169465 gateway1.maison.mrs chris.maison.mrs    TCP  pop3 > 1927 [FIN, ACK]
20 0.169698 chris.maison.mrs    gateway1.maison.mrs TCP  1927 > pop3 [ACK]

Pas moins de 20 trames, pour constater qu'il n'y a pas de nouveau courrier!

TCP en détail

Un petit coup d'ARP...

Les séquences 1 et 2 ne sont pas inintéressantes, bien que ne faisant pas directement partie du protocole TCP. C'est de l'ARP, ça vient de la couche basse d'Ethernet,

  • Trame 1:
    Mon poste n'a pas en mémoire la correspondance MAC Address / IP pour le serveur. Il pose donc la question sur un broadcast ARP:
    A qui appartient l'adresse IP 192.168.0.250 (le serveur)? répondez à 192.168.0.10 (mon poste).

Trame 2:
Le serveur répond:
192.168.0.250 à la MAC Address:00:20:18:61:90:e3

Si, sans trop attendre, je lance la commande ARP sur mon poste, voici le résultat:

E:\> arp -a

Interface : 192.168.0.10 on Interface 0x4000003
Adresse Internet Adresse physique Type
192.168.0.250 00-20-18-61-90-e3 dynamique**

Au bout d'un « certain temps » sans servir, cette ligne sera effacée de la mémoire. Rappelons qu'à l'intérieur d'un réseau, la couche d'accès physique (la plus basse du modèle DOD)  utilise exclusivement les adresses MAC

Et la connexion TCP

Etablissement de la connexion

Accrochez-vous, c'est un peu compliqué :)

Il faut d'abord savoir que les connexions TCP mettent en œuvre deux pointeurs de 32 bits, respectivement appelés:

  • Sequence number
  • Acknowledgment number

Ces deux pointeurs permettent le suivi des paquets:

  • L'accusé réception pour la source pour chaque paquet émis.
  • La remise en ordre des paquets reçus sur la cible.

D'autres pointeurs permettent également de fiabiliser la connexion, comme le checksum. Nous n'allons pas rentrer dans tous les détails, d'autres sites sur l'Internet le font déjà très bien. Le point particulier des numéros de séquence et d'acquittement va en revanche être regardé de près, parce qu'il est utilisé pour une attaque particulièrement redoutable: le « spoofing ».

Par ailleurs, un ensemble de « flags » (drapeaux, bits significatifs d'un état particulier) permet de donner des informations sur la nature du paquet.

Voyons ce que les livres disent:

L'établissement d'une connexion se fait en trois temps:

Etablissement d'une connexion TCP

1 2 3
Le client envoie une séquence de synchronisation, avec un numéro de séquence. Le Flag « SYN » est positionné Le serveur répond par une acceptation dans laquelle il renvoie:
- un numéro d'acquittement égal au numéro de séquence qu'il a reçu+1
- un numéro de séquence les flags SYN et ACK sont positionnés.
Le client acquitte la réponse en envoyant:
- un numéro d'acquittement égal au numéro de séquence envoyé par le serveur +1
- un numéro de séquence égal au numéro d'acquittement envoyé par le serveur

Mais voyons cela sur l'exemple::

Frame 3 (62 on wire, 62 captured)
   Arrival Time: Oct 12, 2000 11:19:15.3756
    Time delta from previous packet: 0.000197 seconds
    Frame Number: 3
    Packet Length: 62 bytes
    Capture Length: 62 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    *** //Au niveau Ethernet, nous trouvons les deux adresses MAC
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 48
    Identification: 0x7624
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    *** C'est bien un protocole TCP
    Header checksum: 0x024f (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    *** Le port du client (l'émetteur de cette trame)
    Destination port: pop3 (110)
    *** Le port de destination (110 pour POP3)
    Sequence number: 3662573346
    *** Et un numéro de séquence (à mémoriser pour la suite).
    Header length: 28 bytes
    Flags: 0x0002 (SYN)
        ..0. .... = Urgent: Not set
        ...0 .... = Acknowledgment: Not set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..1. = Syn: Set
        *** C'est bien une requête « SYN »
        .... ...0 = Fin: Not set
    Window size: 16384
    Checksum: 0x6f64
    Options: (8 bytes)
        Maximum segment size: 1460 bytes
        NOP
        NOP
        SACK permitted

La seconde doit être la réponse du serveur POP. Normalement, c'est un ACK (Acknowledgment, Acceptation de la synchronisation du client, suivi d'une demande de synchronisation du numéro de séquence du serveur), c'est ce que disent les livres. Voyons ça :

Frame 4 (62 on wire, 62 captured)
    Arrival Time: Oct 12, 2000 11:19:15.3760
    Time delta from previous packet: 0.000411 seconds
    Frame Number: 4
    Packet Length: 62 bytes
    Capture Length: 62 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37) *** Le client
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)      *** Le serveur
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 48
    Identification: 0x088a
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafe9 (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    *** Le serveur continue sur le port 110
    Destination port: 1927 (1927)
    *** Et répond bien sur le port ouvert par le client
    Sequence number: 4089248825
    *** Le numéro de séquence proposé par le serveur
    Acknowledgement number: 3662573347
    *** Rappelez-vous, le n° de séquence du client était 3662573346
    *** Le numéro d'acquittement est 3662573346 + 1
    Header length: 28 bytes
    Flags: 0x0012 (SYN, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        *** Nous avons bien un acquittement de la part du serveur
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..1. = Syn: Set
        *** Et une demande de synchronisation (sur le numéro de séquence 4089248825)
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x41e4
    Options: (8 bytes)
        Maximum segment size: 1460 bytes
        NOP
        NOP
        SACK permitted

Ici, nous devrions trouver un acquittement du client sur le numéro de séquence 4089248825

Frame 5 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.3762
    Time delta from previous packet: 0.000226 seconds
    Frame Number: 5
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    *** C'est bien le client qui répond au serveur
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 40
    Identification: 0x7625
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0x0256 (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    Destination port: pop3 (110)
    *** Les ports ne sont toujours pas changés
    Sequence number: 3662573347
    *** souvenez-vous: « Acknowledgement number: 3662573347 »
    Acknowledgement number: 4089248826
    *** comme tout à l'heure, 4089248825 + 1
    Header length: 20 bytes
    Flags: 0x0010 (ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        *** Il n'y a bien qu'un acquittement.
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 17520
    Checksum: 0xa7b0

C'est bien comme dans les livres (ouf!)

La transmission des données

Que disent les livres? Ils disent que maintenant, les échanges de données vont se faire.

  • Le flag PUSH sert à signaler à TCP qu'il doit transmettre les données reçues aux couches supérieures.
  • Chaque paquet aura:
    • Pour numéro d'acquittement le numéro de séquence du dernier paquet reçu, augmenté du nombre d'octets de données qu'il contenait.
    • Pour numéro de séquence le numéro d'acquittement du dernier paquet reçu

Sur le protocole POP3, c'est le serveur qui va envoyer un message de bienvenue. La trame qui suit doit donc provenir du serveur, elle doit contenir:

  • Un acquittement du numéro de séquence de la trame précédente:3662573347, puisque la trame 5 ne contenant pas de données.
  • Un numéro de séquence égal au numéro d'acquittement de la trame précédente:4089248826

Frame 6 (103 on wire, 103 captured)
    Arrival Time: Oct 12, 2000 11:19:15.4249
    Time delta from previous packet: 0.048725 seconds
    Frame Number: 6
    Packet Length: 103 bytes
    Capture Length: 103 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 89
    Identification: 0x088b
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafbf (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
    *** C'est bien le serveur qui répond.
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248826
    Acknowledgement number: 3662573347
    *** Nous partons bien sur les numéros de séquence et d'acquittement définis
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        *** L'acquittement au paquet précédent est donné
        .... 1... = Push: Set
        *** Il va y avoir des données...
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0xa343
Post Office Protocol
    Response: +OK
    Response Arg: POP3 gateway1.maison.mrs v7.64 server ready
    *** Et voilà les données.

Pour le moment, tout se passe encore conformément aux écritures. Voyons la suite.

Le paquet précédent contient les données:

+OK POP3 gateway1.maison.mrs v7.64 server ready

Ceci nous fait 47 octets (Il ne faut pas oublier de compter les espaces, ce sont des caractères comme les autres). Il ne faut pas oublier non plus qu'une ligne de texte se termine par les caractères CR (retour à la ligne) et LF (saut de ligne), ce qui nous fait deux caractères de plus, soit au total 49 octets.

Normalement:

  • Le numéro d'acquittement du prochain paquet devrait donc être 4089248826+49=4089248875 (séquence + 49)
  • Le numéro de séquence devrait être 3662573347

Le client doit maintenant envoyer son login. Nous devrions donc trouver un PUSH et un ACK .

Frame 7 (66 on wire, 66 captured)
    Arrival Time: Oct 12, 2000 11:19:15.4257
    Time delta from previous packet: 0.000750 seconds
    Frame Number: 7
    Packet Length: 66 bytes
    Capture Length: 66 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 52
    Identification: 0x7626
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0x0249 (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)
    *** C'est bien le client qui s'adresse au serveur
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    Destination port: pop3 (110)
    Sequence number: 3662573347
    *** Oui, c'est l'Acknowledgment number du paquet précédent
    Acknowledgement number: 4089248875
    *** OUI!!! C'est le Sequence number du paquet précédent augmenté de 49
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        *** voici l'ACK...
        .... 1... = Push: Set
        *** et voilà le PUSH, donc il y aura des données
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 17471
    Checksum: 0x0da4
Post Office Protocol
    Request: USER
    Request Arg: chris
    *** Ce sont les données.

Tout s'est passé comme prévu.

Bien. Comme nous connaissons par cœur le protocole POP, nous savons que le serveur va envoyer la réponse « +OK » et une invite à communiquer le mot de passe.

Nous devrions trouver:

  • Un ACK et un PUSH,
  • Un Sequence number égal à l'Acknowledgment number du paquet  précédent
  • Un Acknowledgment number égal au Sequence number du paquet précédent +12 (comptez les octets de données du paquet précédent)..

Frame 8 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.4261
    Time delta from previous packet: 0.000412 seconds
    Frame Number: 8
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 40
    Identification: 0x088c
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafef (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
    *** C'est bien le serveur qui répond.
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248875
    Acknowledgement number: 3662573359 =3662573347+12. Toujours normal, 12 octets de données dans le paquet précédent.
    Header length: 20 bytes
    Flags: 0x0010 (ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        *** Voici ACK...
        .... 0... = Push: Not set
        *** Mais il n'y a pas de PUSH, donc pas de données?
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x6e6b

Ben non, il n'y a pas eu de données. Comme on est parfaitement certain que le serveur doit en envoyer (parce que l'on connaît le protocole POP3 par cœur), c'est que c'est encore le serveur qui va parler…

Frame 9 (95 on wire, 95 captured)
    Arrival Time: Oct 12, 2000 11:19:15.4266
    Time delta from previous packet: 0.000513 seconds
    Frame Number: 9
    Packet Length: 95 bytes
    Capture Length: 95 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 81
    Identification: 0x088d
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafc5 (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
    *** Oui, c'est encore le serveur
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248875
    Acknowledgement number: 3662573359
    *** Et les numéros sont identiques au paquet précédent (normal, pas de données dans le paquet précédent)
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        *** Ce coup-ci, il y a des données.
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x6428
Post Office Protocol
    Response: +OK
    Response Arg: User name accepted, password please
    *** Les voilà!

Et voilà. Le client va envoyer son mot de passe, le dialogue continue.

Frame 10 (68 on wire, 68 captured)
    Arrival Time: Oct 12, 2000 11:19:15.4271
    Time delta from previous packet: 0.000468 seconds
    Frame Number: 10
    Packet Length: 68 bytes
    Capture Length: 68 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 54
    Identification: 0x7627
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0x0246 (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)

    *** C'est bien le client
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    Destination port: pop3 (110)
    Sequence number: 3662573359
    *** = Acknowledgement number précédent
    Acknowledgement number: 4089248916
    *** = Sequence number précédent augmenté de 41, nous avons compris le principe
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        *** Il va y avoir des données.
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
  Window size: 17430
  Checksum: 0x8f50
Post Office Protocol
    Request: PASS
    Request Arg: epikoi

    *** M**** alors! le mot de passe circule en clair !
        rassurez-vous, ce n'est pas le bon que vous lisez :-)
        Mais le mot de passe circule vraiment en clair. Stupéfiant non?//**

Bien. Il ne reste plus que 10 trames à regarder mais maintenant, ça va devenir monotone. Je vous laisse les analyser tout seul. Je vous conseille tout de même les trames 17, 18 19 et 20 qui servent à fermer proprement la connexion. C'est une procédure importante qui permet au serveur « d'oublier » cette connexion.

Frame 11 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.4359
    Time delta from previous packet: 0.008790 seconds
    Frame Number: 11
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 40
    Identification: 0x088e
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafed (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248916
    Acknowledgement number: 3662573373
    Header length: 20 bytes
    Flags: 0x0010 (ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x6e34

Frame 12 (84 on wire, 84 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5350
    Time delta from previous packet: 0.099119 seconds
    Frame Number: 12
    Packet Length: 84 bytes
    Capture Length: 84 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 70
    Identification: 0x088f
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafce (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248916
    Acknowledgement number: 3662573373
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x8064
Post Office Protocol
    Response: +OK
    Response Arg: Mailbox open, 0 messages

Frame 13 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5359
    Time delta from previous packet: 0.000911 seconds
    Frame Number: 13
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 46
    Identification: 0x7628
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0x024d (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    Destination port: pop3 (110)
    Sequence number: 3662573373
    Acknowledgement number: 4089248946
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 17400
    Checksum: 0x05d6
Post Office Protocol
    Request: STAT

Frame 14 (63 on wire, 63 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5366
    Time delta from previous packet: 0.000753 seconds
    Frame Number: 14
    Packet Length: 63 bytes
    Capture Length: 63 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 49
    Identification: 0x0890
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafe2 (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248946
    Acknowledgement number: 3662573379
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x8d62
Post Office Protocol
    Response: +OK
    Response Arg: 0 0

Frame 15 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5379
    Time delta from previous packet: 0.001249 seconds
    Frame Number: 15
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 46
    Identification: 0x7629
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0x024c (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    Destination port: pop3 (110)
    Sequence number: 3662573379
    Acknowledgement number: 4089248955
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 17391
    Checksum: 0xffce
Post Office Protocol
    Request: QUIT

Frame 16 (68 on wire, 68 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5431
    Time delta from previous packet: 0.005186 seconds
    Frame Number: 16
    Packet Length: 68 bytes
    Capture Length: 68 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 54
    Identification: 0x0891
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafdc (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248955
    Acknowledgement number: 3662573385
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x3cde
Post Office Protocol
    Response: +OK
    Response Arg: Sayonara

Frame 17 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5437
    Time delta from previous packet: 0.000575 seconds
    Frame Number: 17
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 40
    Identification: 0x762a
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0x0251 (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    Destination port: pop3 (110)
    Sequence number: 3662573385
    Acknowledgement number: 4089248969
    Header length: 20 bytes
    Flags: 0x0011 (FIN, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...1 = Fin: Set
    Window size: 17377
    Checksum: 0xa789

Frame 18 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5441
    Time delta from previous packet: 0.000395 seconds
    Frame Number: 18
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 40
    Identification: 0x0892
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafe9 (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248969
    Acknowledgement number: 3662573386
    Header length: 20 bytes
    Flags: 0x0010 (ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 32120
    Checksum: 0x6df2

Frame 19 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5446
    Time delta from previous packet: 0.000508 seconds
    Frame Number: 19
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Source: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 40
    Identification: 0x0893
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xafe8 (correct)
    Source: gateway1.maison.mrs (192.168.0.250)
    Destination: chris.maison.mrs (192.168.0.10)
Transmission Control Protocol, Src Port: pop3 (110), Dst Port: 1927 (1927)
    Source port: pop3 (110)
    Destination port: 1927 (1927)
    Sequence number: 4089248969
    Acknowledgement number: 3662573386
    Header length: 20 bytes
    Flags: 0x0011 (FIN, ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...1 = Fin: Set
    Window size: 32120
    Checksum: 0x6df1

Frame 20 (60 on wire, 60 captured)
    Arrival Time: Oct 12, 2000 11:19:15.5448
    Time delta from previous packet: 0.000233 seconds
    Frame Number: 20
    Packet Length: 60 bytes
    Capture Length: 60 bytes
Ethernet II
    Destination: 00:20:18:61:90:e3 (00:20:18:61:90:e3)
    Source: 00:20:18:b9:49:37 (00:20:18:b9:49:37)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 40
    Identification: 0x762b
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0x0250 (correct)
    Source: chris.maison.mrs (192.168.0.10)
    Destination: gateway1.maison.mrs (192.168.0.250)
Transmission Control Protocol, Src Port: 1927 (1927), Dst Port: pop3 (110)
    Source port: 1927 (1927)
    Destination port: pop3 (110)
    Sequence number: 3662573386
    Acknowledgement number: 4089248970
    Header length: 20 bytes
    Flags: 0x0010 (ACK)
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 17377
    Checksum: 0xa788

Ce qu'il est intéressant d'étudier, c'est le mécanisme des numéros de séquence et d'acquittement. Parce que celui qui va être capable de prédire la séquence de ces numéros, s'il dispose d'outils qui savent bricoler les trames, pourra se faire passer pour un autre dans un dialogue TCP existant. C'est ce qu'on appelle le « spoofing“, méthode de piratage délicate mais dangereuse.

Vous avez également la RFC 793 dont une traduction en français est disponible ici:

http://abcdrfc.free.fr/rfc-vf/rfc793.html