Partie I : Adresses réseau

Sur un réseau, chaque ordinateur a une adresse appelée adresse IP (Internet Protocol). « Internet Protocol » est un mécanisme inventé pour le réseau internet mais qui est maintenant utilisé pratiquement tous les réseaux, y compris les petits réseaux domestiques.

Sur Internet, chaque machine connectée au réseau (ordinateur, téléphone, ...) possède une «adresse IP» unique. Cette adresse est constituée de 4 octets.

1) Combien de machines peut-on connecter sur Internet ?

Répondez ici...

2) Ce protocole (nommé ipv4) a manifestement atteint ses limites. Un nouveau protocole, nommé ipv6 est en cours de déploiement sur Internet. Il utilise des adresses de 128 bits. Combien de machines pourront être connectées simultanément grâce à ce nouveau protocole ?

Répondez ici...

3) Ouvrir un terminal et taper à l’invite de commande la commande $\fbox{/sbin/ifconfig}$

a. Quelle est votre adresse IP ? ...

b. Quelle est l'adresse IP de votre voisin ? ...

c. Quelle partie votre adresse IP et celle de votre voisin ont-elle en commun ? ...

d. Vous pouvez tenter de communiquer avec votre voisin au travers de la commande $\fbox{ping Adresse_Ip.De.Votre.Voisin}$ dans le terminal. Qu’obtenez-vous ?

Partie II : Les noms sur internet

Les ordinateurs utilisent les adresses IP mais il est rare que les humains les retiennent : on préfère utiliser des noms.

Chaque ordinateur peut avoir un - ou plusieurs - nom. Dans un réseau il existe des ordinateurs dont la seule fonction est de tenir à jour les tables de correspondance entre les adresses IP et les noms dans une sorte d’annuaire semblable aux annuaires téléphoniques : les serveurs de noms (en abrégé DNS)

1) Dans un terminal, taper $\fbox{ping lcs}$ puis $\fbox{ping google.fr}$ .

2) Quelle est l’adresse IP du Lcs ?

Répondez ici ...

3) Quelle est l’adresse IP de Google.fr ?

Répondez ici ...

Partie III : Principe de la communication Client/Serveur

Un ordinateur (le serveur) fait tourner en permanence un programme (un service) qui

  • attend que d’autres ordinateurs (les clients) le sollicitent
  • gère les échanges une fois la liaison établie

1) Citer des exemples de communications client/serveur dans vos usages quotidien des réseaux.

Votre réponse ici ...

2) Pour ces exemples, décrire le rôle du serveur et du client.

Votre réponse ici

Partie IV : Ecrire un programme serveur en Python

Voici un programme serveur basique écrit en Python. On utilise ici la librairie socket qui gère la communication réseau en Python.

Exécutez cette cellule puis ouvrez le classeur Python7 - Reseau client pour exécuter la partie cliente.

Remarquez que quand le serveur tourne, le kernel python est monopolisé et ne permet plus l'exécution d'une autre cellule, d'où la nécessité de changer de classeur pour la partie cliente.

Néanmoins, vous pourrez compléter la section suivante sur la compréhension du programme et répondre aux questions posées pendant que le serveur tourne.

Le programme serveur

from socket import *

### Mise en place du service ########
MON_IP ,PORT = '127.0.0.1' , 50000
service = socket(AF_INET, SOCK_STREAM)
try:
    service.bind((MON_IP , PORT))
    tourne = True
except error :
    print("Impossible de démarrer le service.")
    tourne = False
    
while tourne :
    print("Serveur prêt, en attente de requètes ...")
    service.listen(1)
    ### Mise en place d?une connexion ########
    connexion, adresse = service.accept()
    print("Client connecté. : ",adresse[0])
    ### Dialogue avec le client ########
    message = ""
    while message.upper() != "FIN" :
        message = input("moi > ")
        connexion.send(message.encode("utf8"))
        if message.upper() != "FIN" :
            message = connexion.recv(1024).decode("utf8")
            print("client > ", message)
    connexion.close()
    
    ch = input("<R>ecommencer <T>erminer ? ")
    ch = ch[0].upper()
    if ch =='T':
        tourne = False
    
service.close()

Compréhension du programme serveur

1) Sur quelle adresse IP le serveur va t-il répondre ?

Votre réponse ...

2) Une même machine peut héberger plusieurs services (programmes serveur). En effet le Lcs héberge un serveur web, un serveur de base de données, des services de messagerie, etc... . Pour éviter que ces services entrent en conflit, on utilise en plus de l’adresse IP un numéro de port qui peut être vu comme un canal de communication. Ce numéro de port est compris entre 1024 et 65535.

a. Quel numéro de port est utilisé dans le programme étudié ? ...

b. Changer le numéro de port sur le serveur. Que se passe t-il au niveau du client ? ...

c. Adapter également le numéro de port sur le client. Le programme fonctionne t-il à nouveau ? ...

3) Quelle commande est responsable sur le serveur de l’envoi du message au client ?

Votre réponse ...

4) Écrire en langage naturel l’algorithme correspondant au serveur

Votre réponse ...

5) Quel message taper coté client ou serveur pour mettre fin à la communication ?

Votre réponse ...

A vous de jouer : Jeu du juste prix en réseau

L’objectif de l’activité est de réaliser un jeu de juste prix en réseau.

1) Décrire le rôle du serveur et du client.

Votre réponse ...

2) Écrire l’algorithme en langage naturel d’un jeu de juste prix en réseau. Vous devrez pour cela écrire l’algorithme du serveur et du client.

3) en vous aidant des commandes vues dans l’exemple étudier, modifier le programme serveur étudié afin de programmer un jeu de juste prix en réseau. On pourra essayer de deviner un nombre entier entre 1 et 100.

# Votre programme ici...