在帮助某人调试一段代码时,我注意到在他们的计算机上,这段代码:
python -c "import socket; print(socket.getaddrinfo('dickson.freenode.net', None))"
返回:
[(2,1,6,'',(''208.80.155.68',0)),(2,2,17,'',(''208.80.155.68',0)),(2,3) ,0,'',('208.80.155.68',0)),(10,1,6,'',(10,'\ x00 \ x00 \ x00 \ x00 \ x00 \ x00& \ x00 \ x00 \ x08a \ x02 \ x02')),(10,2,17,'',(10,'\ x00 \ x00 \ x00 \ x00 \ x00 \ x00& \ x00 \ x00 \ x08a \ x02 \ x02')),( 10,3,0,'',(10,'\ x00 \ x00 \ x00 \ x00 \ x00 \ x00& \ x00 \ x00 \ x08a \ x02 \ x02'))]
我发现最后的结果特别奇怪:每个元组的最后一项应该是一对(ipaddress, port)
,但在这种情况下,有些是(10, '\x00\x00\x00\x00\x00\x00& \x00\x00\x08a\x02\x02')
这是Python的预期行为还是错误? 在这两种情况下,这个'\ x00 \ x00 \ x00 \ x00 \ x00 \ x00& \ x00 \ x00 \ x08a \ x02 \ x02'是什么意思?
在我的一台计算机上,结果如下:
[(2,1,6,'',(''208.80.155.68',0)),(2,2,17,'',(''208.80.155.68',0)),(2,3) ,0,'',('208.80.155.68',0)),(10,1,6,'',('2620:0:861:202:208:80:155:68',0,0, 0)),(10,2,17,'',(''2620:0:861:202:208:80:155:68',0,0,0)),(10,3,0,'' ,('2620:0:861:202:208:80:155:68',0,0,0))]
这让我觉得AAAA记录处理存在问题。