Aller au contenu principal

Annexe C. Vérification TCP

Cette annexe fournit des directives et des méthodes de test pour vérifier l'exactitude des implémentations TCP.

Méthodes de Vérification

1. Tests Unitaires

Analyse d'En-tête:

  • Analyse correcte des champs d'en-tête TCP
  • Traitement des options
  • Calcul de somme de contrôle

Machine d'État:

  • Vérification de chaque transition d'état
  • Tests de conditions aux limites
  • Rejet des transitions d'état invalides

Numéros de Séquence:

  • Imprévisibilité de la génération d'ISN
  • Gestion du bouclage des numéros de séquence
  • Détection des doublons

2. Tests d'Intégration

Cycle de Vie de Connexion:

  • Établissement de connexion normal (poignée de main à trois voies)
  • Transfert de données
  • Fermeture de connexion normale (poignée de main à quatre voies)

Gestion des Erreurs:

  • Simulation de perte de paquets
  • Paquets désordonnés
  • Paquets dupliqués
  • Sommes de contrôle corrompues

3. Tests d'Interopérabilité

Vérification avec Autres Implémentations:

  • Interopérabilité avec les principales piles TCP (Linux, Windows, BSD, macOS)
  • Tests dans différentes conditions réseau
  • Différentes tailles MTU

Détection des Problèmes Courants

1. Problèmes de Numéro de Séquence

Scénarios de Test:

1. Vérifier que le même ISN n'est pas généré pour plusieurs connexions
2. Gérer correctement le bouclage des numéros de séquence
3. Rejeter les numéros de séquence hors limites

Méthodes de Vérification:

  • Test de prévisibilité d'ISN
  • Tests de connexion longue durée
  • Simulation d'attaques de numéros de séquence malveillants

2. Erreurs de Somme de Contrôle

Scénarios de Test:

1. Tous les segments envoyés avec somme de contrôle valide
2. Rejeter les segments avec somme de contrôle invalide
3. Calcul correct du pseudo-en-tête pour IPv4 et IPv6

3. Gestion de Fenêtre

Scénarios de Test:

1. Respecter la taille de fenêtre de réception
2. Fonctionnement correct de la mise à l'échelle de fenêtre (si activée)
3. Gestion des situations de fenêtre zéro

4. Mécanisme de Retransmission

Scénarios de Test:

1. Retransmission des segments perdus
2. Calcul approprié du délai d'attente (RTO)
3. Recul exponentiel
4. Retransmission rapide (après 3 ACK dupliqués)

Vérification des Performances

1. Tests de Débit

Métriques de Mesure:

  • Débit maximum avec différentes tailles de fenêtre
  • Relation entre RTT et débit
  • Efficacité du contrôle de congestion

Environnement de Test:

- Réseau à faible latence (< 10ms RTT)
- Réseau à latence moyenne (50-100ms RTT)
- Réseau à haute latence (> 200ms RTT)
- Différents taux de perte de paquets (0%, 0.1%, 1%, 5%)

2. Tests de Latence

Métriques de Mesure:

  • Temps d'établissement de connexion
  • Temps jusqu'au premier byte (TTFB)
  • Latence de livraison des données

3. Vérification du Contrôle de Congestion

Tests:

1. Comportement du démarrage lent
2. Évitement de congestion
3. Retransmission rapide et récupération rapide
4. Conformité à RFC 5681

Vérification de Sécurité

1. Test de Prévisibilité d'ISN

Méthode:

# Pseudo-code
isns = []
for i in range(1000):
conn = create_connection()
isns.append(get_initial_sequence_number(conn))
close(conn)

# Vérifier que les ISN sont statistiquement imprévisibles
assert is_random(isns) == True
assert entropy(isns) > MIN_ENTROPY

2. Protection contre les Attaques RST

Scénarios de Test:

1. Ignorer les segments RST avec numéros de séquence hors limites
2. Accepter uniquement les RST dans la fenêtre valide
3. Suivre les directives RFC 5961

3. Protection contre l'Inondation SYN

Tests:

1. Implémenter SYN cookies ou mécanisme équivalent
2. Résilience du système sous charge massive de requêtes SYN
3. Vérifier que les connexions légitimes peuvent être établies

Tests de Stress

1. Connexions Simultanées

Tests:

- Créer des milliers de connexions simultanées
- Vérifier la livraison correcte des données sur toutes les connexions
- Surveiller les fuites de mémoire
- Mesurer l'utilisation du CPU

2. Connexions Longue Durée

Tests:

- Maintenir les connexions pendant des heures/jours
- Vérifier le bouclage des numéros de séquence
- Stabilité de l'utilisation de la mémoire
- Assurer l'absence de dégradation des performances

Tests de Conditions aux Limites

1. Cas Limites

- Situations de fenêtre zéro
- Taille maximale de segment
- Taille minimale de segment (1 byte)
- Fragmentation
- Changements de MTU

2. Entrées Invalides

- Longueur d'en-tête malformée
- Combinaisons de drapeaux invalides
- Valeurs hors limites
- Bits réservés définis

Tests de Conformité au Protocole

1. Conformité RFC 9293

Éléments de Vérification:

  • Toutes les exigences MUST sont implémentées
  • Les exigences SHOULD sont implémentées ou documentées
  • Les déviations connues sont clairement documentées

2. Conformité aux RFC Connexes

- RFC 5681: Contrôle de congestion
- RFC 7323: Mise à l'échelle de fenêtre et horodatages
- RFC 2018: SACK
- RFC 3168: ECN
- RFC 5961: Protection contre les attaques à l'aveugle

Outils de Débogage

1. Capture de Paquets

Outils:

- Wireshark: Inspection de paquets
- tcpdump: Capture en ligne de commande
- tshark: Analyse programmatique

2. Simulation de Trafic

Outils:

- packetdrill: Script de comportement TCP
- hping3: Génération de paquets personnalisés
- netcat: Tests de connexion de base

3. Émulation Réseau

Outils:

- netem (Linux): Délai, perte de paquets, limitation de bande passante
- dummynet (FreeBSD): Simulation de conditions réseau

Rapport de Vérification

Contenu à Inclure dans le Rapport de Test:

  1. Détails d'Implémentation:

    • Version de la pile TCP
    • Options supportées
    • Limitations connues
  2. Résultats de Tests:

    • Cas de test réussis/échoués
    • Métriques de performance
    • Résultats d'interopérabilité
  3. Déclaration de Conformité:

    • Niveau de conformité RFC 9293
    • Extensions supportées
    • Déviations ou limitations
  4. Problèmes Connus:

    • Bugs non résolus
    • Goulots d'étranglement de performance
    • Problèmes de compatibilité

Note: La vérification TCP est un processus continu. Des tests et mises à jour réguliers garantissent la robustesse et la sécurité de l'implémentation.