Avec la popularité d'Internet, la surveillance de l'état du réseau est devenue de plus en plus importante. En maîtrisant la stabilité et le temps de réponse du réseau, les administrateurs de réseau peuvent rapidement résoudre les problèmes et optimiser les performances du réseau. Cet article présentera en détail comment utiliser les protocoles PHP et ICMP pour la surveillance de l'état du réseau et fournir des exemples de code pour référence.
ICMP (Internet Control Message Protocol) est un sous-protocole de la famille du protocole TCP / IP, utilisé pour transmettre des informations de contrôle dans un réseau IP. Il est principalement utilisé pour le dépannage des réseaux, le diagnostic des conditions du réseau, le contrôle du trafic, etc. Le protocole ICMP détecte si l'hôte cible est accessible en envoyant des messages "Demande d'écho" et "Echo Answer" et fournit des informations sur la stabilité du réseau et le retard.
Dans PHP, nous pouvons utiliser la fonction de socket pour créer la prise d'origine et envoyer des paquets de demande ICMP via la prise pour réaliser la surveillance de l'état du réseau. Voici un simple exemple de code PHP:
<?php // Créer une prise d'origine $socket = socket_create(AF_INET, SOCK_RAW, getprotobyname('icmp')); if ($socket === false) { echo 'Échec de la création de socket:' . socket_strerror(socket_last_error()); exit; } // Définir le délai socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 1, 'usec' => 0)); // Envoi de la demande de ping $ cible = '192.168.0.1'; $ data = 'ping'; $ ICMP_PACKET = "PingData"; $ Checksum = 0; $ length = strlen ($ icmp_packet); pour ($ i = 0; $ i <$ longueur - 1; $ i + = 2) { $ Checksum + = ord (substr ($ icmp_packet, $ i, 2)); } $ Checksum = (~ ((((($ Checksum >> 16) & 0xffff) + ($ Checksum & 0xffff))) & 0xffff); $ ICMP_PACKET = "". PACK ('N', $ CHICKSUM). $ icmp_packet; socket_sendto ($ socket, $ icmp_packet, strlen ($ icmp_packet), 0, $ cible, 0); // reçoit la réponse $ de = ''; $ port = 0; socket_recvfrom ($ socket, $ buf, 1024, 0, $ from, $ port); Echo «Réponse a reçu:». $ de. ':'. $ port. ''. str_replace ("", '', $ buf); // fermer socket socket_close ($ socket); ?>
Le code ci-dessus envoie des paquets de demande ICMP à l'adresse IP spécifiée en créant la prise d'origine et reçoit la réponse de l'hôte cible. Différents besoins de surveillance peuvent être adaptés à différents besoins de surveillance en modifiant les paramètres tels que la propriété intellectuelle cible, le contenu des données et le délai d'attente.
Lorsque vous utilisez des prises d'origine pour la surveillance du réseau, les points suivants doivent être prêts à l'attention:
Grâce aux protocoles PHP et ICMP, les administrateurs de réseau peuvent surveiller efficacement les conditions du réseau et vérifier la stabilité du réseau, le taux de perte de paquets et le temps de réponse. Cet article montre comment créer une prise brute, envoyer des messages ICMP et recevoir des réponses via des exemples de code, aidant les administrateurs réseau à diagnostiquer et à optimiser les performances du réseau.