问题标签 [raw-sockets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3541 浏览

python - Python 原始 IPv6 套接字错误

我在 python 中使用原始 IPv6 套接字时遇到了一些问题。我通过以下方式连接:

其中 self._interface 是我的本地地址;特别是“fe80::fa1e:dfff:fed6:221d”。尝试此操作时,我收到以下错误:

如果我使用我的 ipv6 localhost 地址作为 self._interface ("::1") 我实际上可以绑定地址,但不能发送任何东西:

为什么原始套接字需要目标地址?有没有人在 python 中使用原始 IPv6 套接字,并且可以帮助我理解为什么会这样?

0 投票
1 回答
1200 浏览

c - 如何确定 TCP 数据包中数据有效负载的开始?

我正在编写使用原始套接字监视 FTP 流量的程序。现在,我可以使用以下代码确定 TCP 数据包中数据的开始:

这很好用,但我必须将“魔术”数字 4 添加到数据指针。如果不添加它,最终的字符串会以几个无意义的字符开头。

是否有任何干净的解决方案如何确定传输数据的开始?(不使用任何专门的库,如 libcap 等)

谢谢。

0 投票
3 回答
78805 浏览

c - 如何将原始套接字绑定到特定接口

我的应用程序在 CentOS 5.5 上运行。我正在使用原始套接字发送数据:

如何将此套接字绑定到特定的网络接口(例如 eth1)?

0 投票
2 回答
364 浏览

c - 如果在设置了 IP_HDRINCL 的原始套接字上使用 sendto() dst_addr arg 是否重要?

这个问题几乎都在标题中。

我想知道,鉴于: - 我使用原始套接字(在 GNU/Linux 上);- 设置了选项 IP_HDRINCL,以便我自己制作 IP 标头。

由于在精心制作的 IP 标头中提供了 dest IP 地址,因此 dst_addr 参数是否仍然起作用或者它完全没用&仅在这里因为函数原型是这样的?

0 投票
2 回答
1636 浏览

php - 从 PHP 连接到 OrientDB

我想为 OrientDB 的二进制 API 编写一个 PHP 适配器。

但是我需要一些在 PHP 中具有原始套接字通信经验的人的帮助——我似乎无法克服将 PHP 连接到 OrientDB 的第一个障碍。

如果有人使用套接字来看看这个,我将不胜感激:

http://code.google.com/p/orient/issues/detail?id=126

如果我们能够克服第一个障碍并实际发送一个数据包(该页面底部的简化示例 - 请向下滚动到最后),我当然可以编写适配器。

如果我这样做了,这当然会作为开源发布。

希望有人可以帮助我开始吗?

谢谢!


2010 年 11 月 20 日

参考 PEAR 的 Net_Socket,我最终使用 fsockopen() 和常规 PHP 流函数得到了与我早期尝试的代码基本相同的代码。

我还是一无所获。服务器根本没有反应,即使设置了 5 秒超时,脚本也只是进入深度睡眠,直到超过一般 PHP 脚本时间限制才出来。

这是代码:

这是我用来检查我提交的数据包的 hex_dump() 函数:

根据 OrientDB 的作者 Luca Garulli 的说法,我提交的数据包看起来是正确的。所以还有点不对劲……

这可能是Windows问题吗?我在 Windows 上使用 PHP 5.3,在 Apache 下...

0 投票
1 回答
6195 浏览

c++ - 如何正确重现带有原始套接字的 TCP 协议 3 次握手?

我在 C++ 中模拟 tcp 协议的 3 次握手,以及在我的代码运行时使用的 wireshark。我的代码在 ip 和 tcp 层制作标头,打包它们,然后将其发送到 tcp 标头的 SYN 标志设置为 1 的 http 服务器。

我可以在wireshark 上看到带有ip 和tcp 标头的完整数据报都可以。似乎没有错误。我的进程绑定了一个与已发送数据包标头中包含的地址和端口相同的套接字。

Wireshark 显示数据包已成功发送,但服务器没有任何收入数据包确认我的 SYN。我究竟做错了什么?

我在 Ubuntu 10.10、2.6.35-23 上。

代码很乱,抱歉。它只是为了测试。

主.cpp:

// 这是在 tcp.h...

0 投票
1 回答
828 浏览

tcp - 我可以使用 BSD 原始套接字向成功接收的 SYNACK 发送 ACK 响应吗?

我的代码尝试手动建立TCP握手,然后通过HTTP GET.

我正在使用原始套接字来制作标头并发送数据包,并使用 libpcap 来检查接收到的数据包标头。

SYN成功发送给接收者,然后接收者回复我一个SYNACK. 到目前为止,它可以工作,但是当我收到它时SYNACK,我会尝试ACK它,然后发送HTTP GET下一个,这看起来不起作用。我可以在wireshark中看到标题没问题。

所以我的问题是:我可以ACK通过SYNACK原始套接字使用我用来发送的同一个套接字接收它SYN吗?为了实现这一点,是否需要OPTIONS与标题一起使用?

我正在确认这一点SYNACK,然后我发送一个设置了ACKPSH标志的段,以便通过HTTP. 我可以在wireshark上看到它们,但我没有得到服务器的响应。

0 投票
1 回答
1605 浏览

networking - 如何将 raw_socket 绑定到内核空间中的特定接口?

我的问题是,当我用 PF_PACKET 收听时,我也会收到我的盒子发送的数据包,这是不受欢迎的。

我尝试了 ETH_P_IP 而不是 ETH_P_ALL,但后来我只将数据包发送到我的主机。所以我的想法是将套接字绑定到接口。使用 'sockaddr_ll' 我可以定义 ifindex。但是我发现没有函数可以获取我的接口的索引.. ioctl 在内核空间中不起作用。

..

任何帮助,将不胜感激

0 投票
3 回答
3762 浏览

c# - 无法使用原始套接字读取传入响应

我试图通过侦听原始套接字通过代码从网站读取响应,但到目前为止,我只能读取我的计算机发送的传出请求,而不是我真正感兴趣的传入响应。我该如何阅读收到的回复?

编辑:使用 Wireshark 我发现我正在寻找的数据是通过 TCP 发送的,我相信。

0 投票
1 回答
4986 浏览

c - 在 Linux 上的 C 中使用 RAW 套接字发送多播

我编写了一个在 Ubuntu LTE 上运行的程序,它应该使用原始套接字将多播消息发送到 239.255.25.25 端口 5004。为了接收多播,我使用的是 UDP 套接字。通过套接字发送的数据是使用 rtp 流中的wireshark 捕获的。现在的问题是,我无法接收带有 UDP 套接字的消息。为了检查接收器是否正确,我构建了一个使用普通 UDP 套接字的发送器。当我现在通过 RAW 和 UDP 套接字发送相同的消息时,我只能接收从 udp 套接字发送的消息。

我是用wireshark来分析包的,raw socket的多播包和udp socket的多播包好像是一样的,但是为什么收不到raw socket发送的包呢?

来自 UDP 和 RAW Socket Sender 的代码:

来自 UDP 接收器的代码:

也许这是 HAL 中的一个错误,因为当我使用wireshark 接收两个包时,似乎它们是相同的,但是 udp 套接字发现它们之间存在差异。但如果这是我的编程错误,我会很高兴。:-) 谢谢您的帮助!