Il s'agit du devoir de programmation avancée pour Internet de l'Institut de technologie de Harbin.
Le référentiel contient deux projets :
Un service de multiplexage TCP et UDP pour le service de transfert de fichiers utilisant select.
Le serveur peut accepter les connexions TCP et UDP.
Des renifleurs de paquets qui interceptent le trafic réseau entrant et sortant d'un système via les interfaces réseau.
Le renifleur utilise un socket brut lorsqu'il est placé dans la boucle recvfrom et reçoit tous les paquets entrants. En savoir plus.
Remarque : Vous devez compiler ce projet sous Linux ou Unix (y compris Mac OS X).
Vous pouvez simplement compiler ce projet en utilisant la commande make
.
Une fois l'opération de compilation réussie, vous pouvez exécuter le serveur :
./server <PortNumber>
Ensuite, vous pouvez démarrer un client UDP ou un client TCP :
# for TCP client
./tcp-client <ServerIP> <PortNumber>
# for UCP client
./udp-client <ServerIP> <PortNumber>
Dans le client TCP, vous pouvez obtenir des fichiers du serveur :
GET <Path to the file in server>
Problèmes connus :
Remarque : sur les systèmes Linux/Unix, vous avez besoin des autorisations root pour recevoir des paquets bruts sur une interface. Cette restriction est une mesure de sécurité, car un processus qui reçoit des paquets bruts a accès aux communications de tous les autres processus et utilisateurs utilisant cette interface.
sudo ./packet-sniffer
Tous les paquets entrants seront vidés dans le fichier packet-sniffer.log
.
Ce projet est open source sous licence Apache.