gpt4 book ai didi

dns - 主机名和完全限定域名 (FQDN) 之间的区别

转载 作者:行者123 更新时间:2023-12-02 20:10:12 28 4
gpt4 key购买 nike

首先,我在网站上搜索了类似的主题,并阅读了 RFC 1535 和 FQDN wiki,他们似乎没有回答问题。

让我使用www.youtube.com举个例子。我使用的Python脚本:

import socket

for host in ["www.youtube.com"]:
print(host)
try:
hostname, aliases, addresses = socket.gethostbyname_ex(host)
fqdn = socket.getfqdn(host)
print(" Aliases : ", aliases)
print(" Hostname : ", hostname)
print(" FQDN : ", fqdn)
print("Addresses : ", addresses)
except socket.error as msg:
print("%15s : ERROR: %s" % (host, msg))

输出:

  Aliases :  www.youtube.com
Hostname : youtube-ui.l.google.com
FQDN : sa-in-f93.1e100.net
Addresses : ['74.125.200.93', '74.125.200.190', '74.125.200.136', '74.125.200.91']

1) 主机名和 FQDN 之间有什么关系?

根据网站http://kb.iu.edu/d/aiu (以及许多其他站点):对于邮件服务器“mymail.somecollege.edu”,主机名是“mymail”,域是“somecollege.edu”,并将这些组合在一起形成 FQDN。但显然 www.youtube.com 的情况并非如此。 。那么,FQDN 到底是什么以及所有这些名称之间的关系是什么?

2) 当我反向查找IP 74.125.200.93时,主机名变成sa-in-f93.1e100.net 。为什么反向查找将 FQDN 作为主机名?这些名称可以互换吗?

socket.gethostbyaddr('74.125.200.93')
 Hostname :  sa-in-f93.1e100.net
Aliases : []
Addresses : ['74.125.200.93']

3) 是 Aliases : www.youtube.com也称为 CNAME?根据http://support.dnsimple.com/articles/cname-record/答案似乎是肯定的:

For example, if you have a server where you keep all of your documents online, it might normally be accessed through docs.example.com. You may also want to access it through documents.example.com. One way to make this possible is to add a CNAME record that points documents.example.com to docs.example.com. When someone visits documents.example.com they will see the exact same content as docs.example.com.

4) 如果确实如此,为什么我无法使用“youtube-ui.l.google.com”或“sa-in-f93.1e100.net”访问 YouTube?这是我通过直接访问主机名和 FQDN 得到的结果:

Google

404. That’s an error.

The requested URL / was not found on this server. That’s all we know.

编辑#1

抱歉回复缓慢,我仍在阅读那些 RFC 文档,并且我有一些新问题:

再次使用www.youtube.com例如。

5)FQDN是如何生成的?每次我调用socket.getfqdn()时,它都会查询父域直到root(动态生成)或host -t PTR ?或者它只是一个PTR记录?(好像查询FQDN依赖于反向查找)如果它是一个PTR记录,那么我如何确定它是一个FQDN,实际上它可以是FQDN,CNAME,别名,主机名或一些如果区域 dns 管理员想要这样设置,则可以使用其他名称。就像 David 和 Esa Jokinen 指出的那样(RFC 1912, 2.1),如果不执行这些规则,那么我如何确定我得到了什么?

所以我想也许查询父域直到 root 是获取 FQDN 的最可靠方法。但我怎样才能做到这一点呢?是否有可能在不使用PTR的情况下获得FQDN? (因为它不可靠)

6)DNS查询是否可以倒退?

通常对 IP 的查询是缓存/递归服务器询问根,然后询问 TLD,然后询问子域,直到获得 IP。可以向后执行此操作吗?获得了 IP,然后以某种方式获得了子域,然后是 TLD,然后是 root,然后我获得了 FQDN?

7)FQDN和IP不是应该1对1映射吗?

这是我运行时得到的结果

host 216.58.193.78

输出:

78.193.58.216.in-addr.arpa domain name pointer sea15s07-in-f78.1e100.net.
78.193.58.216.in-addr.arpa domain name pointer sea15s07-in-f14.1e100.net.

如何将一个 IP 映射到两个 FQDN?一台机器两个FQDN,它是如何工作的?

最佳答案

无论术语 FQDN 的语义如何,我们都必须了解 Python 的 socket.getfqdn() 是什么。确实。

socket.getfqdn([name])

Return a fully qualified domain name for name. If name is omitted orempty, it is interpreted as the local host. To find the fullyqualified name, the hostname returned by gethostbyaddr() is checked,followed by aliases for the host, if available. The first name whichincludes a period is selected. In case no fully qualified domain nameis available, the hostname as returned by gethostname() is returned.

socket.gethostbyaddr(ip_address)

Return a triple (hostname, aliaslist, ipaddrlist) where hostname isthe primary host name responding to the given ip_address, aliaslist isa (possibly empty) list of alternative host names for the sameaddress, and ipaddrlist is a list of IPv4/v6 addresses for the sameinterface on the same host (most likely containing only a singleaddress).

换句话说,getfqdn()寻找反向 PTR不管什么,先记录一下ACNAME记录首先就指出了这一点。它会查找完全限定域名 (FQDN),并简单地为您提供第一个合适的域名,即第一个以 . 结尾的域名。 ,

所以,FQDN : sa-in-f93.1e100.net来自PTR IP记录74.125.200.93 .

93.200.125.74.in-addr.arpa. 86400 IN    PTR     sa-in-f93.1e100.net.

此处为该主机名的 FQDN www拥有域名youtube.com实际上根据定义www.youtube.com. ,包括点。同样,sa-in-f93.1e100.net不是 FQDN,因为它实际上应该是 sa-in-f93.1e100.net. :

  • 主机名 sa-in-f93作为 1e100 的子域
  • sa-in-f93.1e100作为 net 的子域
  • sa-in-f93.1e100.net作为根的子域,. .

为什么sa-in-f93.1e100.net.选择 www.youtube.com.简单地来自socket.getfqdn()旨在确定给定名称的 FQDN。

另一方面,规范名称 CNAME record 按设计应该 ( RFC 1035, 3.2.2 ) 指向规范名称,但它通常被用作别名,因为它的工作方式就像一个。另外,PTR记录应该( RFC 1912, 2.1 )给出相同的结果,因为它应该代表给定 IP 的规范名称。

只要遵守这一点,方法 socket.getfqdn()用途是完全合适的。在这里,CNAME youtube-ui.l.google.com.没有相应的PTR记录( 93.200.125.74.in-addr.arpa. IN PTR youtube-ui.l.google.com.) 使这个假设错误。

关于dns - 主机名和完全限定域名 (FQDN) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45902840/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com