我正在用 python 编写一个有点非典型的跟踪路由应用程序。我有兴趣计算数据包在到达目的地之前所经过的跳数。诀窍是我只对使用单个传出数据包进行探测感兴趣。我相信我可以对 IPv4 选项字段进行一些修改来实现这一点。RFC 1393讨论了我认为我想要实现的内容。
问题来自于setsockopt
我用来配置传出套接字以使 IPv4 标头按照我想要的方式的记录不充分的函数。
我能想到的最好的方法如下:
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 或使用原始套接字并不完全满意。