Outils pour utilisateurs

Outils du site


reseaulprob

Réseau LPROB

Sockets

VLAN

Adressage

Expliquer réseau local: commutation de paquet

hors réseau local→ passerelle et routage

Outils d'analyse Wireshark

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:

  1. La première affiche les différentes trames capturées, numérotées, datées, etc… cliquer sur une trame pour la sélectionner.
  2. La seconde permet d'analyser la trame sélectionnée aux différentes couches réseau. Les différentes couches peuvent être détaillées en cliquant sur la flèche à gauche de son nom.

Les quatres couches réseau présentées sont dans l'ordre: Couche Physique, Couche Réseau, Couche Transport, Couche Services.

  1. La troisième permet de visualiser le contenu en hexa et en ascii de la trame.

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).

Installation de Wireshark

Filtrage avec Wireshark

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)

Administration réseau sous Windows 10

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

Application client TCP pour middleWare

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)

simu_client_srs.py
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:

Application récepteur UDP pour middleWare

receptupd.py
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   ))

Émetteur et récepteur UDP

Exemples tirés de: https://wiki.python.org/moin/UdpCommunication

rec_udp.py
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)
send_udp.py
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))

Client et serveur TCP

Exemples tirés et adaptés de https://python.doctor/page-reseaux-sockets-python-port

client_tcp.py
# 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()
server_tcp.py
# 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'

Gestion du multrithreading pour le serveur

Serveur http simple

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  

Serveur http à peine plus évolué

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()

Serveur http plus évolué avec Flask

server_http_flask.py
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)

Serveur web apache

https://bvdp.inetdoc.net/tpreseau/simple.htm

montrer (s)ftp via fileZilla

reseaulprob.txt · Dernière modification : 2023/03/20 17:13 de bvandepo