SNT Données

Identification

Infoforall

1 - Transfert de données


Les données sont l'une des parties fondamentales de tout système informatique.

Nous avons vu qu'un client envoie une demande à un serveur et que le serveur lui répond. Mais comment transférer un texte alors qu'un ordinateur ne gère en réalité que des 0 et des 1...

Documents de cours : open document ou pdf

1 - Un tour de magie

Consigne : choisir un nombre entre 1 et 30 et le noter sur un bout de papier. Refermer.

PDF Magie Magie : open document ou pdf

2 - Bit, octet

Vous savez certainement que les ordinateurs ne travaillent en réalit qu'avec des 0 et des 1. Oui mais, alors...

  • Comment fait-on pour transférer un texte dans un fichier ou dans une communication HTTP ?
  • Comment fait-on pour transférer une image ?
  • Comment fait-on pour transférer un son ?
  • Comment fait-on pour transférer une vidéo (du son et de l'image) ?
  • ...

Aujourd'hui, nous allons parler du texte. Dans la partie photographie numérique, nous parlerons des images.

1.1 - le bit

L'unité de base du stockage de l'information en informatique est le bit. Il s'agit d'une case mémoire qui ne possède que deux états possibles :

 0  ou  1 

1.2 - Association de plusieurs bits

Avec un seul bit, on a donc uniquement 2 possibilités :

 0  ou  1 

2 possibilités, on peut donc compter de 0 à 1.

Avec 2 bits, on a donc 4 possibilités différentes (le double du cas précédent) :

 00  ou  01  ou  10  ou  11 

4 possibilités, on peut donc compter de 0 à 3.

Avec 3 bits, on a alors 8 possibilités différentes (encore le double du cas précédent) :

 000  ou  001  ou  010  ou  011  ou  100  ou  101  ou  110  ou  111 

8 possibilités, on peut donc compter de 0 à 7.

On ne va pas les tester une par une, mais on peut comprendre qu'à chaque fois qu'on rajoute un bit, on double le nombre de cas possibles différents.

Avec 4 bits, on a alors 16 possibilités différentes, de 0 à 15.

Avec 5 bits, on a alors 32 possibilités différentes, de 0 à 31.

Avec 6 bits, on a alors 64 possibilités différentes, de 0 à 63.

Avec 7 bits, on a alors 128 possibilités différentes, de 0 à 127.

Avec 8 bits, on a alors 256 possibilités différentes, de 0 à 255.

1.3 - l'octet

En réalité, on ne transfère jamais un seul bit à la fois.

On transmet toujours les bits par groupe de 8 bits consecutifs : c'est ce qu'on nomme un octet. Puisqu'on a 8 bits, on a alors 256 possibilités différentes de valeurs de bits.

Exemple d'octet : M =  1010 1011 

1.4 - Encodage et décodage des entiers positifs

Encodage : représensation d'une information sous forme d'une suite de 0 et de 1.

Décodage : utilisation de la suite de 0 et de 1 de façon à retrouver l'information qu'elle représente.

Bien entendu, pour qu'un encodage soit utilisable, on doit pouvoir retrouver l'information encodée initialement en la décodant par la suite :

Exemple :

14 --encodage--> 00001110 --décodage--> 14

Voyons rapidement comment on peut faire pour parvenir à décoder un octet de façon à obtenir un entier positif. Puisqu'on a 256 possibilités, on peut encoder des nombres allant de 0 à 255.

  •  0 0 0 0 0 0 0 0  pour la première possibilité (0)
  •  0 0 0 0 0 0 0 1  pour la deuxième possibilité (1)
  •  0 0 0 0 0 0 1 0  pour la troisième possibilité (2)
  •  0 0 0 0 0 0 1 1  pour la quatrième possibilité (3)
  •  0 0 0 0 0 1 0 0  pour la cinquième possibilité (4)
  • ...
  •  1 1 1 1 1 1 1 1  pour la dernière possibilité et 256e possibilité (255)

Voyons comment cela fonctionne sur un exemple. Prenons l'octet M =  1010 1011 .

Le principe est de considérer que

  • La case la plus à droite code 1 si elle est activée à 1.
  • La voisine de gauche code 2 si elle est activée à 1 (deux fois plus).
  • La suivante code 4 si elle est activée à 1 (deux fois plus).
  • La suivante code 8 si elle est activée à 1 (deux fois plus).
  • La suivante code 16 si elle est activée à 1 (deux fois plus).
  • La suivante code 32 si elle est activée à 1 (deux fois plus).
  • ...
  • La case la plus à gauche code donc 128 si elle est activée.
Nombre M =10101011
La case code 1286432168421
On obtient donc12832821

D'où la valeur M = 128 + 32 + 8 + 2 + 1 = 171.

01° Décoder l'octet  0000 0101  en considérant qu'il encode un entier.

...CORRECTION...

 0 0 0 0 0 1 0 1   128 64 32 16 8 4 2 1 

Le nom est égale à la somme M = 4 + 1 = 5.

02° Décoder l'octet  1000 0101  en considérant qu'il encode un entier.

...CORRECTION...

 1 0 0 0 0 1 0 1   128 64 32 16 8 4 2 1 

Le nom est égale à la somme M = 128 + 4 + 1 = 133.

03° Décoder l'octet  1111 1111  en considérant qu'il encode un entier.

...CORRECTION...

 1 1 1 1 1 1 1 1   128 64 32 16 8 4 2 1 

Le nom est égale à la somme M = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255.

Voici un convertisseur automatique d'OCTET si vous en avez besoin pour mieux comprendre :

Votre nombre binaire M :

Nombre M =
Les bits codent 1286432168421
On obtient donc

D'où la valeur de M en base 10 : M = = .

3 - Ascii et transfert de texte

Regardons maintenant comment nous pourrions encoder un message, comme la requête HTTP suivante (un peu simplifiée pour ne garder que les informations facilement compréhensibles) que fait le client au serveur :

.............................DEBUT DE LA REQUETE HTTP

GET /act/archi/protocole-http-couche-application/ HTTP/1.1
Host: www.infoforall.fr

Content-Length:
Content-Type: text/plain
User-Agent: Firefox/104.0
Accept: text/html;image
Accept-Language: fr,fr-FR;en-US;en

.............................FIN DE LA REQUETE HTTP

Nous allons voir ce que signifient tous ces termes.

Transmettre un message

L'ordinateur ne sait transmettre que des  0  et des  1 .

Nous avons vu que nous sommes capables d'encoder des nombres sous forme de  0  et de  1 

Le plus simple est donc d'associer chaque lettre à un nombre !

L'association lettre-nombre la plus standard est celle qui correspond au code ASCII. Ce code est reconnu universellement par tous les systèmes informatiques.

Les caractères des lettres

A pour 65 - B pour 66 - C pour 67 - D pour 68 - E pour 69

F pour 70 - G pour 71 - H pour 72 - I pour 73 - J pour 74

K pour 75 - L pour 76 - M pour 77 - N pour 78 - O pour 79

P pour 80 - Q pour 81 - R pour 82 - S pour 83 - T pour 84

U pour 85 - V pour 86 - W pour 87 - X pour 88 - Y pour 89

Z pour 90

a pour 97 - b pour 98 - c pour 99 - d pour 100 - e pour 101

f pour 102 - g pour 103 - h pour 104 - i pour 105 - j pour 106

k pour 107 - l pour 108 - m pour 109 - n pour 110 - o pour 111

p pour 112 - q pour 113 - r pour 114 - s pour 115 - t pour 116

u pour 117 - v pour 118 - w pour 119 - x pour 120 - y pour 121

z pour 122

Caractères ni chiffre, ni lettre

Espace ' ' pour 32

! pour 33

- pour 45

/ pour 47

: pour 58

Les caractères des chiffres

0 pour 48 - 1 pour 49 - 2 pour 50 - 3 pour 51 - 4 pour 52

5 pour 53 - 6 pour 54 - 7 pour 55 - 8 pour 56 - 9 pour 57

Quelques caractères de contrôle

On peut aussi encoder des effets ou des informations plutôt que des caractères imprimables. Un exemple :

Saut à la ligne (ou touche ENTREE) : pour 10

04° Quel texte est encodé par les octets 67 111 117 99 111 117 en ASCII.

...CORRECTION...

C o u c o u

05° Ecrire "Hello !" encodé en ASCII.

...CORRECTION...

72 101 108 108 111 32 33

06° Quelle est la valeur de l'octet qui permet au système de savoir qu'on a fini de transmettre une information et qu'on passe à autre chose ?

.............................DEBUT DE LA REQUETE HTTP

GET /act/archi/protocole-http-couche-application/ HTTP/1.1
Host: www.infoforall.fr

Content-Length:
Content-Type: text/plain
User-Agent: Firefox/104.0
Accept: text/html;image
Accept-Language: fr,fr-FR;en-US;en

.............................FIN DE LA REQUETE HTTP

...CORRECTION...

On voit qu'on insère un passage à la ligne entre chaque information. La valeur 10 permet donc de savoir qu'on a fini de décrire l'information.

07°Pourquoi un fichier texte "vide" comportant 5 espaces, un passage à la ligne et 3 espaces n'est pas vraiment un fichier vide ? Quel est son poids en octets ?

...CORRECTION...

Il n'est pas vide car il contient : 32 32 32 32 32 10 32 32 32

Son poids est donc de 9 octets.

4 - Chiffrement

Message en clair, message chiffré

Encodage et décodage

Vos messages passent de routeur en routeur sur Internet.

Si vous écrivez "Coucou", tous pourront voir passer le message encodé 67 111 117 99 111 117

Or, l'encodage n'est pas un moyen de cacher l'information mais juste de la transporter.

N'importe qui connaissant ASCII peut facilement décoder le message et retrouver le texte de base.

Chiffrement et déchiffrement

On peut néanmoins faire mieux. On peut transformer les octets avant de les envoyer : cela se nomme le chiffrement puisqu'on modifie les nombres encodant le texte.

Exemple : le code de César/

On décide lors du chiffrement de rajouter une valeur (nommée clé) à tous les octets.

On envoie les valeurs modifiées sur le réseau.

Lors de la réception, il suffit alors de soustraire la valeur de la clé à tous les octets pour retrouver le message. Cela se nomme le déchiffrement.

Description des étapes du transport du message Coucou

Etape 1 : création du message Coucou

Etape 2 : encodage du message 67 111 117 99 111 117

Etape 3 : chiffrement avec une clé de 5 : 72 116 122 104 116 122

Etape 4 : envoi du message 72 116 122 104 116 122

Etape 5 : réception du message 72 116 122 104 116 122

Etape 6 : déchiffrement du message avec la clé valant 5 : 67 111 117 99 111 117

Etape 7 : décodage du message Coucou

08° Comment chiffrer "AABC" avec une clé valant 10 ?

...CORRECTION...

09° Si quelqu'un récupère votre message chiffré, est-ce vraiment grave ?

...CORRECTION...

10° Quel est le problème de cette étape pour une communication à distance entre deux inconnus ?

...CORRECTION...

La prochaine fois, un deuxième tour de magie !

5 - FAQ

Rien pour l'instant

Activité publiée le 13 09 2022
Dernière modification : 13 09 2022
Auteur : ows. h.