인터넷의 인기로 인해 네트워크 상태 모니터링이 점점 더 중요 해지고 있습니다. 네트워크 관리자는 네트워크의 안정성 및 응답 시간을 마스터함으로써 문제를 즉시 문제 해결하고 네트워크 성능을 최적화 할 수 있습니다. 이 기사는 네트워크 상태 모니터링에 PHP 및 ICMP 프로토콜을 사용하는 방법을 자세히 소개하고 참조 용 코드 예제를 제공합니다.
ICMP (인터넷 제어 메시지 프로토콜)는 IP 네트워크에서 제어 정보를 전송하는 데 사용되는 TCP/IP 프로토콜 패밀리의 하위 프로토콜입니다. ICMP 프로토콜은 주로 네트워크 문제 해결, 네트워크 조건 진단, 트래픽 제어 등에 사용됩니다. ICMP 프로토콜은 "echo request"및 "echo 답변"메시지를 보내서 대상 호스트가 도달 할 수 있는지 여부를 감지하고 네트워크 안정성 및 지연 정보를 제공합니다.
PHP에서는 소켓 기능을 사용하여 원래 소켓을 생성하고 소켓을 통해 ICMP 요청 패킷을 보내 네트워크 상태 모니터링을 실현할 수 있습니다. 간단한 PHP 코드 예는 다음과 같습니다.
<?php // 원래 소켓을 만듭니다 $socket = socket_create(AF_INET, SOCK_RAW, getprotobyname('icmp')); if ($socket === false) { echo '소켓을 만들지 못했습니다:' . socket_strerror(socket_last_error()); exit; } // 시간 초과 설정 socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 1, 'usec'=> 0)); // 핑 요청 $ target = '192.168.0.1'; $ data = 'ping'; $ icmp_packet = "pingdata"; $ checksum = 0; $ length = strlen ($ icmp_packet); for ($ i = 0; $ i <$ 길이 -1; $ i += 2) { $ checksum += ord (substr ($ icmp_packet, $ i, 2)); } $ checksum = (~ (((((($ checksum >> 16) & 0xffff))) + ($ checksum & 0xffff))) & 0xffff); $ icmp_packet = "". 팩 ( 'n', $ checksum). $ icmp_packet; socket_sendto ($ socket, $ icmp_packet, strlen ($ icmp_packet), 0, $ target, 0); // = ''에서 $ $를받습니다. $ port = 0; socket_recvfrom ($ socket, $ buf, 1024, 0, $ from, $ port); Echo '는 응답을 받았습니다 :'. $. ':'. $ 포트. ''. str_replace ( "", '', $ buf); // Socket Socket_Close를 닫습니다 ($ socket); ?>
위의 코드는 원래 소켓을 만들어 ICMP 요청 패킷을 지정된 IP 주소로 보내고 대상 호스트로부터 응답을 수신합니다. 대상 IP, 데이터 컨텐츠 및 타임 아웃과 같은 매개 변수를 수정하여 다양한 모니터링 요구를 다양한 모니터링 요구에 적용 할 수 있습니다.
네트워크 모니터링에 원래 소켓을 사용하는 경우 다음 사항에주의를 기울여야합니다.
PHP 및 ICMP 프로토콜을 통해 네트워크 관리자는 네트워크 조건을 효율적으로 모니터링하고 네트워크 안정성, 패킷 손실률 및 응답 시간을 확인할 수 있습니다. 이 기사에서는 원시 소켓을 만들고, ICMP 메시지를 보내고, 코드 예제를 통해 응답을받는 방법을 보여 주어 네트워크 관리자가 네트워크 성능을 진단하고 최적화하는 데 도움이됩니다.