ping如何计算网站的IP地址?


1

我想更好地了解不同的网络查询工具,如nccurlwhoisdignslookup并在同一时间有关Internet请求,服务器的体系结构的位,等等(NIC,A记录,MX),而已经知道有关TCP,名称服务器,域注册器,数据包嗅探器,HTTP标头和IP地址的一些知识。那是我的背景,这是我的问题。

当我digwhois说www.valgrind.org(或valgrind.org)时,我至少得到两个不同的IP答案:178.250.76.80和172.16.0.23#53。

$ nslookup valgrind.org
Server:         172.16.0.23
Address:        172.16.0.23#53

Non-authoritative answer:
Name:   valgrind.org
Address: 178.250.76.80

尝试浏览到其中任何一个w3mchromium导致403 Forbidden错误。此外,我不确定要导航到哪一个, ping能以某种方式找出来!如果我ping valgrind.org(或ping www.valgrind.org)选择

$ ping valgrind.org
PING valgrind.org (178.250.76.80) 56(84) bytes of data.
64 bytes from 178.250.76.80: icmp_req=1 ttl=50 time=80.2 ms

它怎么知道这样做?我还应该使用什么其他工具来了解浏览器如何从178.250.76.80进入valgrind.org并加载内容?


在这里,这是非常题外话的。不过,我将帮助您入门:您获得的第一个“两个答案”不是两个不同的答案。第一个地址是您的dns服务器的地址;服务器nslookup将查询发送到。唯一的“答案”是178.250.76.80。这是针对专业人士的,而不是寻求基础知识的人士。
yoonix

@yoonix我man ping在问这里之前确实看过,但是没有回答我的问题。
同构

Answers:


4

这里有不同的程序和协议在起作用,每个程序和协议都配置为独立于其他程序和协议进行响应。

为了找到IP地址,Linux主机通常会使用/etc/nsswitch.conf中的hosts:指令来确定查询各种源的顺序。一个典型的条目是

hosts:      files dns

这表示先检查文件(通常是/ etc / hosts),然后再检查dns系统。因此,将搜索/ etc / hosts文件,如果它包含valgrind.org的条目,则将返回关联的IP地址。如果/ etc / hosts不包含valgrind.org的条目,则将向DNS发出请求。这涉及读取/etc/resolv.conf的内容, 以确定应联系哪些服务器以请求DNS信息...

查看命令的输出,您不会得到两个不同的地址。输出的第一部分告诉您nslookup(172.16.0.23)与哪个服务器联系,以及哪个端口(#53)获得答案。我们也知道,没有正确配置172.16.0.23的PTR记录,因为正如RobM的回答所示,如果服务器被显示为一个名称,则为它。

输出的第二部分是您请求的信息,并告诉您178.250.76.80是valgrind.org的IPv4地址。

当您直接在端口80(http)上联系178.250.76.80时,系统将显示403禁止访问,因为这是配置该地址的http服务器的方式。它很可能配置为基于名称的虚拟服务器,因此需要有效的http Host:(sec 14.23)标头将您的请求路由到适当的vhost。

ping命令是ICMP协议套件的一部分,并且是ICMP回显请求,位于178.250.76.80的主机会响应ping,因为它已配置为执行ping并向每个回显请求发送ICMP回显应答。


2

您需要了解nslookup的工作原理。

nslookup

答案的第一部分是您正在与之交谈的名称服务器,这在这里应该变得更加清楚。它提供的答案是第二部分

因此,在我的示例中,我要求nslookup查询我当前配置的DNS服务器,以了解它将在哪里找到www.serverfault.com。

nslookup会返回其用于运行查询的服务器的地址以及给出的答案。如果要指定要运行dig或nslookup的特定DNS服务器,这非常重要,这是解决名称解析问题的相当正常的一部分。


2

您误解了nslookup的输出。它没有给出两个答案,而只是给出了一个。第一个地址是答案的来源。 ping执行完全相同的任务并获得完全相同的结果。尝试将IP地址提供给浏览器时,收到403的原因是服务器正在运行虚拟主机。使用虚拟主机,一台服务器可以只有一个IP地址就可以拥有多个站点。它根据浏览器告诉您的名称来决定为您服务的站点。输入IP地址时,服务器不知道您要哪个站点。


0

这取决于您的操作系统和ping版本。如果是linux,则可以使用strace找出所有操作。

strace ping valgrind.org

它将逐步显示。发布时间太长,但这是我的输出,因此我知道在某些时候它会检查主机文件

.
.
open("/etc/host.conf", O_RDONLY)        = 3
.
.
.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.