我在玩Python套接字,决定看看是否可以实现一个非常基本的名称服务器(即,一个从域名到IP地址的查找表)。所以到目前为止,我已经将服务器设置为只转储接收到的数据。
#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
host = ''
port = 53
size = 512
s.bind((host, port))
while True:
data, addr = s.recvfrom(size)
print repr(data)
当我运行上述代码并将我的DNS指向127.0.0.1时,我得到类似于以下内容的结果:
'Y\x04\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x01\x00\x01'
'J\xaa\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x1c\x00\x01'
'Y\x04\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x01\x00\x01'
我假设这与DNS问题包结构有关,但我不确定。
A)以上是转义字符吗?特定的文本编码?或者仅仅是字节?
B)我如何解释数据并使用它?
编辑:更改套接字以获取原始数据报而不是数据报将导致以下结果:
'E\x00$\x00\xe4\x96\x00\x00@\x01\x00\x00\x7f\x00\x00\x01\x7f\x00\x00\x01\x03\x03X\xb6\x00\x00\x00\x00E\x00V\x00m\x82\x00\x00\xff\x11\x00\x00\x7f\x00\x00\x01\x7f\x00\x00\x01\xf3\xe1\x005\x00B\x00\x00'
目前没有回答
相关问题 更多 >
编程相关推荐