Google DNS 服务器
Google DNS Server
我想使用 Python 获取我的私人 IP 地址,所以我找到了一段代码可以做到这一点。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
s.close()
此处 8.8.8.8 是 Google DNS 服务器的地址。现在,每当我们访问外部站点时,我们仅由我们的 public IP 地址表示,那么 Google DNS 如何找到我的私有 IP 地址?此外,即使我的互联网连接已关闭,它也能正常工作。
I wanted to get my private IP address using Python, so I found a snippet of code that does it. ... so how is Google DNS able to find my Private IP address ?
这段代码没有达到您的预期。它只报告从 UDP 套接字 "connecting" 到 8.8.8.8 的本地 IP 地址。此信息并非来自 Google,它来自您的本地操作系统,它当然知道其本地 IP 地址是什么。事实上,您可以连接到任何其他外部 IP 地址,您将获得相同的信息。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
除此之外,代码也是错误的。它不连接到 DNS 服务器 - DNS 服务器将是端口 53 而不是您在此处使用的端口 80。
我想使用 Python 获取我的私人 IP 地址,所以我找到了一段代码可以做到这一点。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
s.close()
此处 8.8.8.8 是 Google DNS 服务器的地址。现在,每当我们访问外部站点时,我们仅由我们的 public IP 地址表示,那么 Google DNS 如何找到我的私有 IP 地址?此外,即使我的互联网连接已关闭,它也能正常工作。
I wanted to get my private IP address using Python, so I found a snippet of code that does it. ... so how is Google DNS able to find my Private IP address ?
这段代码没有达到您的预期。它只报告从 UDP 套接字 "connecting" 到 8.8.8.8 的本地 IP 地址。此信息并非来自 Google,它来自您的本地操作系统,它当然知道其本地 IP 地址是什么。事实上,您可以连接到任何其他外部 IP 地址,您将获得相同的信息。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
除此之外,代码也是错误的。它不连接到 DNS 服务器 - DNS 服务器将是端口 53 而不是您在此处使用的端口 80。