在 PHP 中创建 IP 层数据包?

发布于 12-12 03:47 字数 144 浏览 0 评论 0原文

我想知道是否可以使用 PHP 创建网络层数据包(即定义我自己的 IP 标头)?看起来 socket_createSOCK_RAW 只能让您定义 IP 数据包的内容,而不是标头本身。

预先感谢您的回复!

I'm wondering if it possible to create network layer packets (i.e. define my own IP headers) using PHP? It seems like socket_create with SOCK_RAW only lets you define the contents of the IP packet, not the headers itself.

Thanks in advance for your replies!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

缘字诀2024-12-19 03:47:45

只要我以 root 身份运行脚本,我就能在 Mac OS X 上使用 SOCK_RAW 成功创建套接字。

我使用的示例取自 Jean Charles MAMMANA 的 ping.inc.php

我创建了一个 ping.php 包装器,并执行:sudo ping.php www.google.com

这是我的 ping.php 包装器:

<?php

$default_timeout = 15;

require("ping.inc.php");

if (count($argv) < 2) usage();

$timeout = count($argv) >= 3 ? intval($argv[2]) : $default_timeout;
$host = $argv[1];

$result = ping($host, $timeout);
if ($result < 0) {
    echo "Error: " . $g_icmp_error . "\n";
} else {
    echo "$result ms\n";
}

function usage() {
    global $argv;
    echo "Usage: {$argv[0]} <host> [timeout]\n";
    die();
}

I was able to successfully create a socket using SOCK_RAW on Mac OS X, as long as I ran the script as root.

The example I used was taken from Jean Charles MAMMANA's ping.inc.php

I created a ping.php wrapper, and executed: sudo ping.php www.google.com.

Here's my ping.php wrapper:

<?php

$default_timeout = 15;

require("ping.inc.php");

if (count($argv) < 2) usage();

$timeout = count($argv) >= 3 ? intval($argv[2]) : $default_timeout;
$host = $argv[1];

$result = ping($host, $timeout);
if ($result < 0) {
    echo "Error: " . $g_icmp_error . "\n";
} else {
    echo "$result ms\n";
}

function usage() {
    global $argv;
    echo "Usage: {$argv[0]} <host> [timeout]\n";
    die();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文