修改Python中{IPv4}标头中的选项字段

时间:2015-12-02 10:06:58

标签: python sockets raw-sockets traceroute setsockopt

我在python中编写了一个有点非典型的traceroute应用程序。我有兴趣计算数据包到达目的地之前的跳数。诀窍是我只对使用单个传出数据包进行探测感兴趣。我相信我可以对IPv4选项字段进行一些修改来实现这一目标。 RFC 1393讨论了我认为我想要实施的内容。

问题来自于我用来配置我的传出套接字以便按照我想要的方式生成IPv4标头的文档记录不足的setsockopt函数。

我能想到的最好的是:

outputsocket.setsockopt(socket.IPPROTO_IP, socket.IP_OPTIONS, \
    '\x82\x0A\x00\x00\x00\x00\x00\x00\x12\x34\x56\x78')

(字节字符串来自RFC 1393的第2.2节)

然而,这给了我socket.error: [Errorno 22] Invalid argument

我可以做些什么来完成这项工作?我道歉,如果我的方法很混乱,我对python或使用原始套接字并不完全友好。

0 个答案:

没有答案