Der 3D-Traceroute benötigt WebGL-Unterstützung. Bitte verwenden Sie einen aktuellen Browser oder aktivieren Sie WebGL in den Einstellungen.
&1'; $rawOutput = shell_exec($command); if ($rawOutput === null) { $error = 'Traceroute konnte nicht ausgeführt werden. Ist das Kommando verfügbar?'; } else { $traceData = parseTraceroute($rawOutput); if (empty($traceData)) { $error = 'Keine Hops gefunden. Prüfen Sie den Hostnamen oder versuchen Sie es später erneut.'; } } } } if (empty($traceData)) { $traceData = getSampleTrace(); if ($error === '') { $error = 'Es werden Beispieldaten angezeigt. Starten Sie eine Abfrage, um echte Traceroute-Daten zu sehen.'; } } function parseTraceroute(string $raw): array { $lines = preg_split('/\r?\n/', trim($raw)); if (!$lines) { return []; } $hops = []; foreach ($lines as $line) { if (preg_match('/^\s*\d+\s+/', $line) !== 1) { continue; } preg_match_all('/(\d+\.\d+)\s+ms/', $line, $latencyMatches); $latencies = array_map('floatval', $latencyMatches[1] ?? []); $avgLatency = !empty($latencies) ? array_sum($latencies) / count($latencies) : null; if (preg_match('/^\s*(\d+)\s+([0-9\.\*]+)/', $line, $parts) !== 1) { continue; } $hopNumber = (int) $parts[1]; $ip = $parts[2]; if ($ip === '*') { $ip = 'Zeitüberschreitung'; } $hops[] = [ 'hop' => $hopNumber, 'ip' => $ip, 'avgLatency' => $avgLatency, 'raw' => trim($line), ]; } return $hops; } function getSampleTrace(): array { return [ ['hop' => 1, 'ip' => '192.168.0.1', 'avgLatency' => 1.2, 'raw' => '1 192.168.0.1 1.123 ms 1.234 ms 1.301 ms'], ['hop' => 2, 'ip' => '10.12.34.1', 'avgLatency' => 9.4, 'raw' => '2 10.12.34.1 9.123 ms 9.567 ms 9.400 ms'], ['hop' => 3, 'ip' => '172.16.5.4', 'avgLatency' => 18.7, 'raw' => '3 172.16.5.4 18.432 ms 18.913 ms 18.787 ms'], ['hop' => 4, 'ip' => '203.0.113.5', 'avgLatency' => 32.9, 'raw' => '4 203.0.113.5 32.113 ms 33.441 ms 33.212 ms'], ['hop' => 5, 'ip' => '93.184.216.34', 'avgLatency' => 48.2, 'raw' => '5 93.184.216.34 48.112 ms 48.501 ms 48.032 ms'], ]; } function generatePositions(array $trace): array { $positions = []; $radius = 25; $spacing = 10; foreach ($trace as $index => $hop) { $angle = $index * 0.9; $positions[] = [ 'x' => cos($angle) * $radius, 'y' => $index * $spacing, 'z' => sin($angle) * $radius, ]; } return $positions; } $positions = generatePositions($traceData); ?>
Visualisieren Sie Netzwerkpfade im dreidimensionalen Raum und erkunden Sie die einzelnen Hops.
Der 3D-Traceroute benötigt WebGL-Unterstützung. Bitte verwenden Sie einen aktuellen Browser oder aktivieren Sie WebGL in den Einstellungen.