windows 为什么我不能通过python中的套接字与根域名服务器建立tcp连接?

fzsnzjdm  于 2022-11-26  发布在  Windows
关注(0)|答案(1)|浏览(134)
  • 背景:我要与根名称服务器建立TCP连接,以便发送DNS查询并检查响应 *

我尝试使用python中的socket模块与根名称服务器建立TCP连接,特别是与a.root-servers.net
我在Windows 11的交互式python shell中编写了下面的代码。
我扑过去:

import socket
a = socket.socket()
a.connect(("a.root-servers.net", 53))

但我得到的错误:
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
为什么会这样呢?

rt4zxlrg

rt4zxlrg1#

我从下面的代码中获得了良好的虚拟电路(TCP)结果:

$  time dig +vc +norec ns . @a.root-servers.net

; <<>> DiG 9.10.6 <<>> +vc +norec ns . @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60546
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27
...
;; Query time: 13 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Fri Nov 18 14:38:22 PST 2022
;; MSG SIZE  rcvd: 828

real    0m0.056s

从您的客户端到根服务器的端到端路径与我的不同,它有一个或多个过滤路由器(防火墙),丢弃端口53的TCP数据包。
这样做违反6.1.3.2了rfc 1123 host requirements的www.example.com部分。允许TCP域请求通过是非常重要的,因为某些DNS应答不适合有限大小的UDP数据报。
建议您要求您的本地防火墙管理员修复其配置,或寻求替代的互联网连接解决方案。

相关问题