raw-sockets

    3热度

    3回答

    我需要使用Python从TCP流套接字读取完整(原始)IP帧。本质上,我需要一个未经修改的框架,就像它脱离物理线路一样,包括所有标题信息。 我一直在Python中寻找原始套接字,但我遇到了一些问题。我不需要组建我自己的数据包,我只需要逐字阅读并转发它们。 那么,如何从现有的TCP套接字(在Python中)读取整个IP帧(包括头文件)呢? 最好我只想使用标准库。另外,我在Linux主机上。 谢谢!

    5热度

    2回答

    我目前正在进行一项编程任务。这项任务是为了实现客户端,网络仿真器和服务器。客户端将数据包传递给网络模拟器,并将网络模拟器传递给服务器。反之亦然。这项任务的先决条件是我只能使用原始套接字。所以我将创建自己的IP和UDP标头。我用wireshark测试了我的数据包。它们都是正确的,并且格式正确(正确读取它们)。 另一个要求是模拟器,客户端和服务器都有它们必须绑定的特定端口。现在,我不明白如何将原始套接

    0热度

    1回答

    我的问题是,当我用PF_PACKET进行收听时,我也收到了我的信箱发送的信息包,这是不受欢迎的。 err_create = sock_create(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL), sock); 代替ETH_P_ALL,我尝试了ETH_P_IP,但后来我只将包发送到我的主机。所以我的想法是将套接字绑定到一个接口。 'sockaddr_ll'我可以定义

    5热度

    3回答

    我有一个小型项目,我一直在使用C++,并且由于它的性质,我需要将数据包插入到实时TCP流中。 (目的是无辜的,如果你必须知道http://ee.forumify.com/viewtopic.php?id=3299) 我正在为游戏创建一个关卡编辑器,而且由于握手的性质,我不能简单地建立与高级库的新连接,例如的WinSock。到现在为止,它依靠Winsock Packet Editor来完成这项肮脏的

    2热度

    1回答

    我已经编写了一个在Ubuntu LTE上运行的应用程序,该应用程序应该使用原始套接字向239.255.25.25端口5004发送多播消息。要接收多播,我正在使用UDP套接字。来自rtp流的wireshark捕获通过套接字发送的数据。现在的问题是,我无法使用UDP套接字接收消息。 为了检查接收器是否正确,我建立了一个发送者,它使用一个普通的UDP Socket。 当我现在通过RAW和UDP套接字发送

    4热度

    1回答

    我正在尝试编写一个C程序,它将UDP数据包发送到给定的IP地址,并等待路由器的ICMP响应,告诉生存时间过期。它保持非常简单,因为我只想首先理解机制。我需要的是有人检查我的代码,提供有关错误和缺失的反馈。我在C语言编程很没有经验,但我必须这样做,作为分配 - 给我的最好的理解...... #include <stdio.h> #include <stdlib.h> #include <stri

    2热度

    1回答

    作为家庭作业的一部分,我必须在Linux中编写一个C程序,该程序使用原始套接字生成对ICMP Echo请求的ICMP回复。 ICMP数据包中的数据是否也必须包含在校验和中?或者我应该只计算头的校验和?

    1热度

    2回答

    我想在C++中实现UpNP,我在谷歌上找到了一些源,但都没有工作。我发现这一个工作(http://www.codeproject.com/KB/IP/upnplib.aspx),但它是为.NET,所以我决定嗅探网络,看看代码在做什么,然后对套接字做同样的事情。 下面是结果(全尺寸:http://i.stack.imgur.com/eLoHK.jpg): 这表明我的包不看坏,一切似乎是相同的,一切,

    5热度

    2回答

    我正在学习原始插座。我使用IP_HDRINCL选项来构建我自己的IP标头。 IP头后,我正在建立一个UDP头。然后我将数据包发送到我的系统的环回地址。我有另一个运行的程序,它会在它们来的时候捕获UDP数据包。为了检查数据包是否被正确地形成和接收,我正在运行另一个正在读取原始IP数据报的进程。我的问题是,尽管第二个进程(读取原​​始数据报)运行良好(所有IP和UDP字段似乎都没问题),但第一个进程(

    2热度

    3回答

    我想通过监听原始套接字通过代码从网站读取响应,但迄今为止,我只能读取由我的计算机发送的传出请求,而不是我真正感兴趣的即将到来的回复。 我该如何去阅读传入的回复? 编辑:使用Wireshark我发现我正在寻找的数据正在通过TCP发送,我相信。 Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Raw, Protoc