Université BORDEAUX 1 U.F.R. Mathématiques et Informatique
Epreuve de J.Bétréma 23 janvier 2002


Maîtrise d'Informatique
Télé-informatique

Durée: 3 heures
Tous documents interdits.

Un corrigé est disponible en fin de document.

1. IP, TCP, SMTP

L'entreprise xyz, lassée des attaques contre son réseau informatique, décide d'installer un pare-feu (matériel et logiciel chargés de filtrer les communications avec l'extérieur), et de faire transiter tout le courrier électronique à destination de l'entreprise par un serveur externe cs.securite.fr (adresse IP s1.s2.s3.s4), géré par une société informatique spécialisée, et chargé en particulier de détruire les messages infectés par des virus, avant de transmettre le courrier au serveur interne de l'entreprise courrier.xyz.com (adresse IP x1.x2.x3.x4).

Parmi les règles de configuration du pare-feu, il y a les deux suivantes :

  1. Expliquer aussi précisément que possible comment un courrier électronique, qui par définition ne contient que du texte, peut transporter des virus.
  2. Pour les deux règles de filtrage ci-dessus, expliquer précisément quels sont les en-têtes des paquets IP entrants que le pare-feu doit consulter, et quels champs de ces en-têtes il doit examiner.
  3. A quoi peut servir, pour un attaquant éventuel, la pratique consistant à scanner les ports des machines d'une entreprise ?
  4. Quel(s) enregistrement(s) (RR = Resource Record) faut-il modifier, et comment, dans le serveur DNS responsable du domaine xyz.com , pour que le courrier électronique adressé à durand@xyz.com fasse automatiquement le détour par le serveur de courrier externe ? On donnera une description aussi précise que possible de ce(s) RR.
  5. Expliquer comment, tant que le pare-feu est configuré comme indiqué ci-dessus, un attaquant peut très simplement priver l'entreprise de courrier, sans disposer d'aucun accès ni sur les machines de l'entreprise, ni sur celles du sous-traitant de sécurité, et sans disposer d'informations confidentielles.

2. DNS

Voici des extraits d'une session nslookup (les enregistrements supprimés, pour alléger l'énoncé, sont indiqués par [...] ) :
  1. > set norecurse
    > set debug
    > www.cs.chalmers.se
    Serveur:  donaser.labri.u-bordeaux.fr
    Address:  147.210.8.187
    
    ------------
    Got answer:
        HEADER:
            opcode = QUERY, id = 2, rcode = NOERROR
            header flags:  response, recursion avail.
            questions = 1,  answers = 0,  authority records = 4,  additional = 4
    
        QUESTIONS:
            www.cs.chalmers.se, type = A, class = IN
        AUTHORITY RECORDS:
        ->  [...] ->  [...]
        ->  chalmers.se
            nameserver = ns.ckoia.chalmers.se
            ttl = 42710 (11 hours 51 mins 50 secs)
        ->  chalmers.se
            nameserver = dns.uu.se
            ttl = 42710 (11 hours 51 mins 50 secs)
        ADDITIONAL RECORDS:
        ->  [...]  ->  [...]
        ->  ns.ckoia.chalmers.se
            internet address = 192.36.120.11
            ttl = 42710 (11 hours 51 mins 50 secs)
        ->  dns.uu.se
            internet address = 130.238.7.10
            ttl = 13359 (3 hours 42 mins 39 secs)
    
    Expliquer :
    1. la structure en quatre parties de la réponse (HEADER, QUESTIONS, AUTHORITY RECORDS, ADDITIONAL RECORDS) ;
    2. les différents champs de l'en-tête, en particulier answers = 0 ;
    3. les champs type et class de la question ;
    4. ce que signifie la présence de 4 authority records (deux ont été effacés pour alléger l'énoncé) ;
    5. pourquoi le dernier champ ttl a une valeur différente des autres.
  2. > www.cs.chalmers.se 192.36.120.11
    Serveur:  [192.36.120.11]
    Address:  192.36.120.11
    
    ------------
    Got answer:
        HEADER:
            opcode = QUERY, id = 3, rcode = NOERROR
            header flags:  response, auth. answer, recursion avail.
            questions = 1,  answers = 1,  authority records = 4,  additional = 4
    
        QUESTIONS:
            www.cs.chalmers.se, type = A, class = IN
        ANSWERS:
        ->  www.cs.chalmers.se
            internet address = 129.16.237.85
            ttl = 43200 (12 hours)
        AUTHORITY RECORDS:
        ->  [...] ->  [...]
        ->  chalmers.se
            nameserver = ns.ckoia.chalmers.se
            ttl = 43200 (12 hours)
        ->  chalmers.se
            nameserver = dns.uu.se
            ttl = 43200 (12 hours)
        ADDITIONAL RECORDS:
        ->  [...]  ->  [...]
        ->  ns.ckoia.chalmers.se
            internet address = 192.36.120.11
            ttl = 43200 (12 hours)
        ->  dns.uu.se
            internet address = 130.238.7.10
            ttl = 8864 (2 hours 27 mins 44 secs)
    
    Expliquer les différences entre cette réponse et la précédente.

    En déduire que quelqu'un a envoyé au serveur DNS du LaBRI une requête concernant le domaine chalmers.se huit minutes et dix secondes avant l'auteur de cet énoncé (ce n'est pourtant pas lui, juré) ! Quelle aurait été, à votre avis, la réponse du serveur du LaBRI sans cette coïncidence ?

    Comment interpréter les ttl différents des deux enregistrements concernant dns.uu.se ?

  3. > set type=MX
    > cs.chalmers.se 192.36.120.11
    Serveur:  [192.36.120.11]
    Address:  192.36.120.11
    
    ------------
    Got answer:
        HEADER:
            opcode = QUERY, id = 7, rcode = NOERROR
            header flags:  response, auth. answer, recursion avail.
            questions = 1,  answers = 2,  authority records = 4,  additional = 5
    
        QUESTIONS:
            cs.chalmers.se, type = MX, class = IN
        ANSWERS:
        ->  cs.chalmers.se
            MX preference = 0, mail exchanger = pheidippides.md.chalmers.se
            ttl = 43200 (12 hours)
        ->  cs.chalmers.se
            MX preference = 100, mail exchanger = chalmers.se
            ttl = 43200 (12 hours)
        AUTHORITY RECORDS:
        ->  [...] ->  [...] ->  [...] ->  [...]
        ADDITIONAL RECORDS:
        ->  pheidippides.md.chalmers.se
            internet address = 129.16.237.91
            ttl = 43200 (12 hours)
        ->  [...] ->  [...] ->  [...] ->  [...]
    
    Expliquer la question posée et la réponse obtenue.

3. Code détecteur d'erreurs

Une cellule ATM comporte un en-tête de cinq octets, quatre servent au routage, le cinquième (appelé HEC -- Header Error Control) contient un code détecteur d'erreur cyclique, calculé en utilisant le polynôme générateur g(x) = x8 + x2 + x + 1. On rappelle que cela signifie que l'octet HEC est calculé de telle sorte que le polynôme de degré 39 associé aux 40 bits de l'en-tête soit un multiple de g(x), tous les calculs étant effectués modulo 2.
  1. Expliquer pourquoi ce code détecte toutes les erreurs de poids impair, en particulier toutes les erreurs simples.
  2. Calculer le quotient h(x) de g(x) par (x + 1).
  3. Les concepteurs d'ATM ont choisi g(x) = x8 + x2 + x + 1, car h(x) est irréductible. Les polynômes non nuls de degré < 7 forment donc un groupe de 127 éléments pour la multiplication modulo h(x). En outre x est un générateur de ce groupe, ce qui signifie que le plus petit exposant k tel que xk = 1 modulo h(x), vaut 127.

    Expliquer pourquoi cela assure que toutes les erreurs doubles sont détectées dans un en-tête ATM.

  4. Zoit z la fonction, appelée logarithme de Zech, définie par 1 + xi = xz(i) modulo h(x). La plupart des valeurs de z, en particulier z(1) = 109, sont trop grandes pour être calculées sans ordinateur, mais vérifier que z(10) = 13 (le détail des calculs doit évidemment apparaître sur la copie). Que vaut z(13) ?

    En utilisant cette valeur z(10) = 13, construire des exemples d'erreurs quadruples non détectées dans un en-tête ATM.

  5. Soit p la probabilité d'erreur sur un bit. Calculer la probabilité d'une erreur quadruple (détectée ou non) sur un en-tête ATM. Application numérique : sur une fibre optique, on estime p voisin de 10-8 ; donner une bonne valeur approchée de la probabilité d'une erreur quadruple sur un en-tête ATM.

4. Ethernet

Lire le document annexé (une page), extrait d'un rapport édité en 1998 (et mis à jour en 1999) par la "Gigabit Ethernet Alliance", puis répondre aux questions ci-après. Gigabit Ethernet désigne un réseau Ethernet avec un débit de 1 Gbit/sec. La plupart des termes techniques sont traduits en français dans ce qui suit ; la notation paragraphe x désigne l'un des cinq paragraphes du document, numérotés manuellement sur l'annexe (pour la version Internet de ce sujet, le texte de chaque paragraphe est rappelé ci-dessous en italiques).
  1. Paragraphe 1 : Full--and Half­Duplex Operation : as defined by the IEEE 802.3x specification, two nodes connected via a full­duplex, switched path can simultaneously send and receive packets. Gigabit Ethernet follows this standard to communicate in full­duplex mode. All Gigabit Ethernet products on the market in 1999 are full duplex.

    La norme 802.3x est une extension du protocole 802.3, présenté en cours. Sauf à la dernière question, on considère le protocole original, et non l'extension 802.3x.

    Ce protocole a été conçu pour un réseau half-duplex : une station peut émettre ou recevoir, mais pas les deux à la fois. Expliquer brièvement pourquoi ce fonctionnement half-duplex est une conséquence directe des principes essentiels du protocole.

  2. Paragraphe 2 : Gigabit Ethernet also employs standard Ethernet flow control methods to avoid congestion and overloading.

    Expliquer ce que sont les méthodes de contrôle de flux, pour éviter la congestion ou la surcharge du réseau.

  3. Paragraphe 3 : When operating in half­duplex mode, Gigabit Ethernet adopts the same fundamental CSMA/CD access method to resolve contention for the shared media. The CSMA/CD method is illustrated in Figure 2. The Gigabit Ethernet CSMA/CD method was enhanced in order to maintain a 200 ­meter collision diameter at gigabit speeds. Without this enhancement, minimum­sized Ethernet packets could complete transmission before the transmitting station senses a collision, thereby violating the CSMA/CD method.

    Que signifie le sigle CSMA/CD ? Que signifie "diamètre" dans ce contexte ?

  4. Paragraphe 4 : To resolve this issue, both the minimum CSMA/CD carrier time and the Ethernet slot time have been extended from their present value of 64 bytes to a new value of 512 bytes. (Note that the minimum packet length of 64 bytes has not been affected.) Packets smaller than 512 bytes have been augmented with a new carrier extension field following the CRC field. Packets longer than 512 bytes have not been extended. These changes, which can impact small­packet performance, have been offset by incorporating a new feature, called packet bursting, into the CSMA/CD algorithm. Packet bursting will allow servers, switches and other devices to send bursts of small packets in order to fully utilize available bandwidth.

    La norme pour un débit de 100 Mbits/sec prévoit que les trames (paquets) ont une taille minimale de 64 octets. Montrer que cette taille n'est plus suffisante pour un débit de 1 Gbit/sec, avec un diamètre de réseau de 200 mètres.

    Note : ici et dans la suite on simplifiera les calculs en supposant que le signal se propage à 200 000 km/sec.

    Que signifie CRC field ? Quel est l'intérêt de regrouper les petits paquets (packet bursting) ?

  5. Paragraphe 4 : chaque station découpe le temps en tranches (slots), dont la durée est mesurée ici en nombre d'octets émis ; 512 octets correspondent donc à 512*8*10-9 secondes, soit environ 4 μs (on retiendra cette valeur arrondie pour la suite). Une station ne commence à émettre qu'au début d'une tranche de temps, et les stations ne sont pas rigoureusement synchronisées (à votre avis pourquoi ?). Dans la suite de cette question, les temps sont exprimés en μs.

    On suppose que la station A commence à émettre à l'instant 0, et la station B, distante de 200 mètres, à l'instant 0.8.

    1. Calculer à quel instant A détecte une collision, idem pour B.
    2. Après détection d'une collision, une station émet un signal de brouillage de 100 bits. A quoi sert ce signal de brouillage ? Calculer à quel instant A constate que le canal est libre, idem pour B. Attention : dans le cas de B, réfléchir plutôt deux fois qu'une.
    3. Selon le protocole 802.3, après détection d'une collision, les stations A et B choisissent chacune aléatoirement le nombre de slots de contention, pendant lesquels elles s'interdisent de réémettre ; pour la première réémission, le choix est entre 0 et 1. Pour chacune des quatre situations possibles, à savoir (0, 0), (0, 1), (1, 0) et (1, 1), calculer à quel instant A réémet sa trame, idem pour B.
  6. Paragraphe 5 : Devices that operate in full­duplex mode (switches and buffered distributors) are not subject to the carrier extension, slot time extension or packet bursting changes. Full­duplex devices will continue to use the regular Ethernet 96­bit interframe gap (IFG) and 64­byte minimum packet size.

    Expliquer brièvement comment on peut faire de l'Ethernet full-duplex, et accessoirement pourquoi rien de ce qui précède n'est utilisé (cf. paragraphe 1 : tous les produits sur le marché sont full-duplex).

Corrigé

Les mots-clefs, qui distinguent les bonnes réponses des autres, sont indiqués ci-dessous en italiques.

1. IP, TCP, SMTP

  1. MIME (Multipurpose Internet Mail Extensions) définit de nouveaux champs, dans l'en-tête d'un message, qui permettent de spécifier le type et le codage des documents qui constituent le corps du message.

    En particulier, on utilise le codage en base 64 pour transformer un fichier binaire en un fichier ASCII : trois octets sont codés par quatre caractères (choisis parmi 64).

    Ceci autorise la transmission de programmes (exécutables) par courrier électronique, qui peuvent être exécutés à la demande de l'utilisateur, ou même sans lui demander son avis si le lecteur de courrier est mal configuré ou défectueux.

  2. Règle 1 : le pare-feu consulte l'adresse de destination, dans l'en-tête IP ; si c'est x1.x2.x3.x4, il examine l'adresse source, dans l'en-tête IP ; si ce n'est pas s1.s2.s3.s4, le paquet est détruit. Enfin le pare-feu consulte le port de destination, dans l'en-tête TCP ; si ce n'est pas SMTP (port 25), le paquet est détruit.

    Règle 2 : le pare-feu mémorise les adresses sources (en-tête IP) des paquets entrants récents, et les ports de destination (en-tête TCP), pour repérer d'éventuels attaquants à ajouter à la liste noire. Pour refuser les paquets issus de sites ainsi répertoriés, il suffit de consulter l'adresse source, dans l'en-tête IP.

  3. Scanner les ports des machines d'une entreprise permet de déterminer quels sont les services actifs sur cette machine. Pour poursuivre l'attaque, il faut ensuite essayer de déterminer quel est le logiciel serveur (et sa version) sur un port actif, et exploiter des failles éventuelles de ce logiciel.

    Note : affirmer qu'un port actif permet ipso facto de prendre le contrôle de la machine est une absurdité qui dénote une absence de réflexion inquiétante concernant les principes d'Internet.

  4. Il faut modifier les enregistrements de type MX (mailbox) dans le serveur DNS ayant autorité sur le domaine xyz.com ; le nouvel enregistrement sera, schématiquement, le suivant :
    xyz.com  MX  cs.securite.fr
    
    D'autre part, il sera recommandé d'enregistrer dans le cache du serveur DNS (et de mettre à jour régulièrement, en interrogeant un serveur DNS du domaine securite.fr), l'adresse IP du serveur de courrier externe :
    cs.securite.fr  A  s1.s2.s3.s4
    

    Note : les alias (enregistrements de type CNAME), qui permettent d'attribuer plusieurs noms à une même machine, n'ont rien à voir avec la question posée.

  5. Cette configuration du pare-feu est dangereuse, car un attaquant peut se faire passer pour le serveur de courrier externe, en falsifiant (spoofing) l'adresse source des paquets IP émis. Il n'a plus qu'à scanner les ports d'une machine de l'entreprise, avec ces paquets usurpés, pour faire mettre le serveur externe de courrier sur liste noire. Toutes les informations nécessaires à cette attaque sont publiques, il suffit d'interroger le serveur DNS responsable du domaine xyz.com (voir ci-dessus).

    Note : les réponses qui proposent une attaque par déni de service, en submergeant de faux messages le serveur de courrier externe, ne sont pas valides, car une telle attaque est indépendante de la configuration du pare-feu qui fait l'objet de cet exercice.

2. DNS

  1. La structure d'une réponse d'un serveur DNS à une requête fait partie des standards (RFC) DNS, nslookup est un simple utilitaire qui, en mode debug, affiche en clair (pour les humains) cette réponse.
    1. La réponse à la requête est constituée de quatre ensembles d'enregistrements (RR), et d'un en-tête qui, entre autres, spécifie la taille de chacun de ces quatre ensembles.
    2. L'en-tête spécifie ici que la requête est valide (rcode = NOERROR), que le serveur aurait pu effectuer un traitement récursif : recursion available (disponible) -- mais la requête a été émise en mode non récursif. L'un des quatre ensembles de RR (celui qui contient les réponses, au sens strict, à la requête) est vide, ce qui signifie que le serveur interrogé ne connaît pas la réponse à la question posée.
    3. Dans la question, le champ type = A spécifie le type de RR qui doit figurer dans la réponse du serveur, à savoir une adresse ; le champ class = IN spécifie la classe de RR qui doit figurer dans la réponse du serveur, à savoir la classe Internet.
    4. La présence de 4 authority records signifie qu'il y a quatre serveurs DNS ayant autorité sur le domaine chalmers.se, c'est donc l'un d'eux qu'il faut interroger pour obtenir soit la réponse, soit les noms des serveurs du domaine cs.chalmers.se.
    5. Les RR de l'ensemble ADDITIONAL RECORDS contiennent les adresses IP de ces serveurs. Ils sont contenus dans le cache du serveur du LaBRI, comme ceux de l'ensemble AUTHORITY RECORDS. L'adresse du serveur dns.uu.se, qui a probablement autorité sur le domaine uu.se, est disponible dans le cache depuis plus longtemps que les autres, d'où une durée de vie plus courte.
  2. La requête a été envoyée cette fois au serveur DNS ns.ckoia.chalmers.se, qui a autorité sur le domaine chalmers.se (cf. question précédente). Il retourne une réponse autorisée (cf. en-tête), ce qui signifie qu'il a aussi autorité sur le sous-domaine cs.chalmers.se (qui ne possède donc pas de serveur délégué).

    Tous les RR retournés par ce serveur ont une durée de vie initialisée à 43200 secondes (12h), à l'exception du dernier (voir ci-dessous). Cela permet de calculer depuis combien de temps certains d'entre eux ont été placés dans le cache du serveur DNS du LaBRI, à savoir 43200 - 42710 = 490 secondes, soit 8 minutes et 10 secondes. Le serveur DNS du LaBRI a donc traité une requête récursive (c'est le cas normal) concernant le domaine chalmers.se 8 minutes et 10 secondes avant de traiter celle qui fait l'objet de ce devoir.

    Sinon, le serveur DNS du LaBRI aurait ignoré les noms des serveurs ayant autorité sur chalmers.se, et aurait retourné la liste des serveurs ayant autorité sur le domaine "top-level" se (Suède). C'était d'ailleurs ce qu'attendait l'auteur de l'énoncé, qui a dû modifier son sujet en conséquence...

    La réponse contient deux enregistrements concernant dns.uu.se : l'un, dans l'ensemble AUTHORITY RECORDS, est de type NS (name server), et fait partie de la base de données du serveur ns.ckoia.chalmers.se (qui, autrement dit, a autorité sur lui) : son TTL est donc initialisé à 12h ; l'autre, dans l'ensemble ADDITIONAL RECORDS, est de type A (adresse), et se trouve dans le cache du serveur ns.ckoia.chalmers.se (qui n'a pas autorité sur le domaine uu.se), d'où une durée de vie peu élevée.

  3. La requête porte cette fois sur les serveurs de courrier du domaine cs.chalmers.se. On obtient deux réponses, avec des priorité différentes : le courrier doit être envoyé à pheidippides.md.chalmers.se, serveur de priorité 0, sauf s'il est en panne, auquel cas on s'adresse à chalmers.se, de priorité 100.

    Ce dernier enregistrement (RR) est curieux, car il n'est pas d'usage de considérer un noeud interne de l'arbre des noms (ici chalmers.se) comme un nom de machine, mais apparemmment rien ne l'interdit, l'ensemble ADDITIONAL RECORDS contenait une adresse IP pour ce noeud, qui a été effacée de l'énoncé pour ne pas troubler d'éventuels (mais rares) étudiants scrupuleux.

3. Code détecteur d'erreurs

  1. A une erreur de poids impair correspond un polynôme d'erreur E(x) avec un nombre impair de termes ; par exemple si les bits 5, 12 et 37 sont inversés,
    E(x) = x5 + x12 + x37
    On a alors E(1) = 1 (les calculs sont effectués modulo 2), tandis que g(1) = 0 (car g contient un nombre pair de termes). Donc E(x) ne peut pas être un multiple de g(x), et l'erreur est détectée.
  2. Le quotient de g(x) par (x + 1) vaut h(x) = x7 + x6 + x5 + x4 + x3 + x2 + 1 :

     x8 +                 x2 + x + 1  x + 1
    x7 +             x2 + x + 1
    x6 +           x2 + x + 1
    x5 +         x2 + x + 1
    x4 +      x2 + x + 1
    x3 + x2 + x + 1
    x + 1
    0
     x7 + x6 + x5 + x4 + x3 + x2 + 1

  3. Le polynôme E(x) associé à une erreur double est de la forme E(x) = xi + xj , avec 0 ≤ i < j ≤ 39. Soit E(x) = xi (1 + xk) , avec 0 < k = j - i < 40. Donc h(x), qui est irréductible et premier avec xi, divise E(x) si et seulement si h(x) divise 1 + xk, et le plus petit k tel que ceci soit vrai vaut 127, d'après l'énoncé. On en déduit qu'avec k < 40, h(x), et a fortiori g(x), ne divisent pas E(x), ce qui signifie qu'une erreur double est toujours détectée.
  4. z(10) = 13 signifie que 1 + x10 = x13 modulo h(x), autrement dit que h(x) divise 1 + x10 + x13 :

      x13 +       x10 +                                  1  x7 + x6 + x5 + x4 + x3 + x2 + 1
      x12 + x11 +       x9 + x8 + x6 +       1
    x10 +       x7 + x6 + x5 +     1
    x9 + x8 +             x3 +     1
    x7 + x6 + x5 + x4 + x3 + x2 + 1
    0
     x6 + x5 + x3 + x2 + 1

    Puisque h(x) divise 1 + x10 + x13 , on a aussi z(13) = 10.

    En multipliant par x10, on obtient x10 + x20 + x23 = 0 modulo h(x), et en ajoutant les deux équations : 1 + x13 + x20 + x23 = 0 modulo h(x). Donc si les bits 0, 13, 20 et 23 sont inversés, l'erreur n'est pas détectée.

    Un étudiant a fait remarquer fort justement que g(x) = x8 + x2 + x + 1 comporte quatre termes, et que donc une erreur portant sur les bits 0, 1, 2 et 8 (ou [1, 2, 3, 9], ou [2, 3, 4, 10], etc.) n'est pas détectée, ce qui fournit un exemple beaucoup plus direct d'erreur quadruple non détectée.

  5. La probabilité d'une erreur quadruple sur un en-tête ATM est donnée par la formule
    C(40, 4) * p4 * (1 - p)36
    où C(40, 4) désigne le nombre de choix de 4 éléments parmi 40, soit 40 * 39 * 38 * 37 / 24, soit approximativement 44 * 104 / 24, soit encore 256 * 104 / 24, voisin de 105. Avec p = 10-8, le terme (1 - p)36 est très voisin de 1, et la probabilité d'une erreur quadruple vaut environ 105 * 10-32 = 10-27 : l'événement n'arrive pas tous les jours ...

4. Ethernet

  1. Une station qui suit le protocole 802.3 écoute en permanence le canal, et ne peut commencer à émettre que si celui-ci est libre, ce qui n'est évidemment pas le cas si elle est en train de recevoir un message.
  2. Gigabit Ethernet also employs standard Ethernet flow control methods to avoid congestion and overloading.

    Lorsqu'un réseau Ethernet devient chargé, les collisions augmentent. Dans ce cas l'algorithme prévoit qu'une station attend un temps aléatoire avant de tenter d'émettre à nouveau, et ce temps aléatoire est doublé, en moyenne, chaque fois qu'une collision se répète. Cet algorithme assure que le débit provenant d'une station diminue lorsque la charge du réseau augmente.

    Note : parler ici des méthodes TCP de contrôle de flux est une faute grave (il y a deux couches d'écart entre Ethernet et TCP), la phrase à commenter, recopiée en tête de cette question, est sans aucune ambiguïté. Le contrôle de flux par fenêtre coulissante est utilisé dans certains protocoles de la couche liaison (par exemple HDLC), dans le cas où il s'agit de gérer une liaison bidirectionnelle point à point (c'est-à-dire entre les deux extrémités de la ligne) ; ce n'est pas le cas d'Ethernet (d'ailleurs les trames 802.3 ne sont pas numérotées).

  3. Le sigle CSMA/CD signifie Carrier (Channel) Sense Multiple Access / Collision Detection, en français accès multiple avec écoute de la porteuse (ou du canal) et détection de collisions. Le diamètre désigne la distance maximale entre deux stations du réseau.

    Notes : ajouter que les stations sont situées "dans un cercle" est périlleux, puisque toutes sont (conceptuellement) alignées sur le même bus.

  4. Avec un débit de 1 Gbit/sec, 64 octets, soit 512 bits, sont émis en 0.512 μs par une station A, et le signal parcourt environ 100 mètres pendant ce temps. Il n'a donc pas le temps d'atteindre une station B distante de 200 mètres, d'autant plus que pour assurer la détection par A d'une collision éventuelle, il faut compter aussi le temps de propagation du signal de B vers A. Bref une trame de 64 octets est quatre fois trop courte pour assurer qu'une collision éventuelle soit toujours détectée avant la fin de son émission.

    CRC field désigne le code détecteur d'erreur, ajouté en fin de trame (Cyclic Redundant Code). On regroupe les petits paquets (packet bursting) pour éviter de les remplir avec des octets de bourrage (padding) afin d'atteindre la taille de 512 octets : ces octets de bourrage diminuent le débit utile du réseau.

  5. Les stations ne sont pas rigoureusement synchronisées car il faut tenir compte du temps de propagation du signal, variable avec la distance entre stations (il y a même un principe de physique relativiste qui dit que, lorsque le temps de propagation de la lumière n'est pas négligeable, la simultanéité n'a plus de sens).

    1. Le signal parcourt 200 mètres en 1 μs. A détecte une collision lorsque le signal de B lui parvient, c'est-à-dire à l'instant 1.8 ; B détecte une collision lorsque le signal de A lui parvient, c'est-à-dire à l'instant 1.

      Note : ces réponses ne demandent pas vraiment une page entière de calculs...

    2. Le signal de brouillage sert à prévenir la station destinataire de la trame que celle-ci est invalide. En effet, la station destinataire n'est en général pas à l'origine de la collision, et n'a donc aucun moyen de la détecter.

      La durée d'émission de ce signal (100 bits) est 0.1 μs, donc B émet un brouillage entre les instants 1 et 1.1, et le canal devient libre pour A à l'instant 2.1 ; A émet un brouillage entre les instants 1.8 et 1.9, et le canal devient libre pour B à l'instant 2.9 .

    3. Choix (0, 0) : A réémet à l'instant 4 (début de la tranche de temps suivant la première émission), et B à l'instant 4.8 (idem), d'où nouvelle collision.

      Choix (1, 1) : A réémet à l'instant 8 (en laissant la tranche de temps entre 4 et 8 μs disponible), et B à l'instant 8.8, d'où nouvelle collision.

      Choix (0, 1) : A réémet à l'instant 4, et comme la trame comporte au moins 512 octets, soit 4096 bits, sa durée d'émission dépasse 4 μs, donc à l'instant 8.8 le canal n'est pas libre pour B, qui doit attendre une tranche de temps ultérieure pour émettre.

      Choix (1, 0) : B réémet à l'instant 4.8, et la durée d'émission dépasse 4 μs, donc à l'instant 8 le canal n'est pas libre pour A, qui doit attendre une tranche de temps ultérieure pour émettre.

  6. Devices that operate in full­duplex mode (switches and buffered distributors)...

    Comme l'indique explicitement le document, Ethernet full-duplex exige que les stations soient reliées à un commutateur qui se charge de mettre en mémoire (buffer) les trames et de les aiguiller, ce qui supprime les collisions.

    Note : doubler simplement le bus ne résout aucun problème, car le bus émetteur pour une station est forcément récepteur pour toutes les autres, et il faudrait donc autant de bus que de stations.