【问题标题】:Why can't I establish a tcp connection, via sockets in python, with a root name server?为什么我不能通过 python 中的套接字与根名称服务器建立 tcp 连接?
【发布时间】:2022-11-19 06:58:34
【问题描述】:

背景:我想与根名称服务器建立 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

为什么会这样?

【问题讨论】:

    标签: python windows sockets tcp dns


    【解决方案1】:

    我从中获得了良好的虚电路 (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。 必须允许 TCP 域 请求通过,作为一些 DNS 答案 不适合有限的尺寸 UDP 数据报。


    建议你问问你当地的防火墙 管理员修复其配置,或寻求 备用互联网连接解决方​​案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 2021-06-24
      相关资源
      最近更新 更多