我在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或使用原始套接字并不完全友好。