Explication sur le modèle OSI, les différentes couches:
https://fr.wikipedia.org/wiki/Mod%C3%A8le_OSI
Wireshark est un logiciel permettant d'analyser les échanges réseau sur une interface (notamment réseau ethernet) d'un PC. La fenêtre de Wireshark est divisée en trois zones:
Les quatres couches réseau présentées sont dans l'ordre: Couche Physique, Couche Réseau, Couche Transport, Couche Services.
La figure suivante montre une capture d'écran de l'application. La trame n°489 est affichée. La couche Réseau est détaillée, notamment l'adresse MAC du destinataire de la trame. L'affichage de la valeur en hexadécimal est visible (zone sélectionnée dans la partie inférieure de la fenêtre).
Télécharger et installer sur D: https://bvdp.inetdoc.net/files/reseauLPROB/wireshark-portable-3-5-0.exe
exemples de filtre:
tcp && ( (ip.src==10.6.11.65 && ip.dst==10.6.7.124) || (ip.src==10.6.7.124 && ip.dst==10.6.11.65))
udp && ( ip.addr==172.16.6.59)
Pinger un hôte:
ping ipv4
Lister les voisins:
netsh int ipv4 show nei
Lister la table de routage:
netsh int ipv4 show route
Lister les interfaces réseau et les adresses:
netsh int ipv4 show addr
Ne plus utiliser ipconfig /all car il ne liste pas les plusieurs adresses IPv4 que peut avoir une même interface
Pour renouveler les baux dhcp, ce n'est pas automatique sous windows à la déconnexion/reconnexion, il faut faire:
ipconfig /renew
Pour déterminer l'adresse IP d'un site web à partir de son nom:
nslookup nom_du_site
Liste des numéros de ports TCP et UDP réservés: https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels
Nous allons maintenant simuler un client TCP afin que vous puissiez l'utiliser depuis votre PC sans avoir besoin de SRS.
Pour cela, enregistrer dans le dossier R:\lprob\“nom_prenom” le code du programme suivant (en faisant clic droit sur le nom puis enregistrer sous)
import socket HOST = '172.16.6.59' # The server's hostname or IP address PORT = 30000 # The port used by the server with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(b'r 158 161 162') data = s.recv(1024) print('Received', repr(data))
Editer ce fichier avec idle pour l'adapter selon les consignes données en séance en modifiant les variables, en tapant dans la commande windows:
C:\"Program Files"\Python39\Lib\idlelib\idle simu_client_srs.py
Après édition, sauver le fichier et l’exécuter depuis idle en faisant F5:
import socket HOST = '127.0.0.1' # The server's hostname or IP address PORT = 4242 # The port used by the server with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: s.bind(('', 10000)) while True: msg, addr = s.recvfrom(8192) # This is the amount of bytes to read at maximum print("Got message from %s: %s" % (addr, msg ))
Exemples tirés de: https://wiki.python.org/moin/UdpCommunication
import socket UDP_IP = "" #recevoir des requetes depuis toutes les ip UDP_PORT = 5005 sock = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock.bind((UDP_IP, UDP_PORT)) while True: data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes print("received message: %s" % data)
import socket UDP_IP = "127.0.0.1" UDP_PORT = 5005 MESSAGE = b"Hello, World!" print("UDP target IP: %s" % UDP_IP) print("UDP target port: %s" % UDP_PORT) print("message: %s" % MESSAGE) sock = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
Exemples tirés et adaptés de https://python.doctor/page-reseaux-sockets-python-port
# coding: utf-8 import socket hote = "localhost" port = 15555 socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.connect((hote, port)) print ("Connection on "+str(port)) socket.send("Hey my name is Bertrand!".encode('utf-8')) print("Close") socket.close()
# coding: utf-8 import socket socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.bind(('', 15555)) #recevoir des requetes depuis toutes les ip while True: socket.listen(5) client, address = socket.accept() print(str( address )+ " connected") response = client.recv(255) if response != "": print(response) print("Close") client.close() stock.close()
Avec Wireshark, espionner la boucle locale avec filtre tcp.port==15555
puis faire une requête http depuis le navigateur web pour voir la requête GET sur le serveur TCP:
b'GET / HTTP/1.1\r\nHost: localhost:15555\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\nAccept-Language: fr,fr-FR;q=0'
exemple tiré de: https://www.linuxtricks.fr/wiki/python-creer-un-petit-serveur-web-a-la-volee
python3 -m http.server Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
faire un fichier index.html contenant
coucou
accéder au serveur via: http://localhost:8000/
pour ouvrir le serveur sur le port 80:
sudo python3 -m http.server 80
import http.server PORT = 8888 server_address = ("", PORT) server = http.server.HTTPServer handler = http.server.CGIHTTPRequestHandler handler.cgi_directories = ["/index.html"] print("Serveur actif sur le port :", PORT) httpd = server(server_address, handler) httpd.serve_forever()
from flask import Flask cpt=0 app = Flask(__name__) @app.route('/') def index(): return 'Hello world' ''' global cpt chaine = 'Hello world cpt='+str(cpt) cpt=cpt+1 return chaine ''' app.run(debug=True, host='0.0.0.0', port=5000)
https://bvdp.inetdoc.net/tpreseau/simple.htm
montrer (s)ftp via fileZilla