当我在URL栏中input完全限定的域名(FQDN)时,浏览器连接到一些映射表(这个表在哪里存储?与服务提供者?),以确定托pipe文件的位置。
所以,这取决于服务提供商(我认为谁拥有转换表)是否支持IPv6地址。 真的吗?
因为这是iptables的标签,我认为这是一个Linux的问题。
在Linux上,由glibc决定一个给定主机名的程序是首先查找IPv6地址(AAAA)还是IPv4地址(A)。 使用glibc的程序使用getaddrinfo()函数。 getaddrinfo()的行为在/etc/gai.conf中configuration。
在你的系统上,很可能在/etc/gai.conf中的所有内容都被注释掉了。 取消注册条目:
label :: / 0 1
对于我而言,导致了AAAA优先查找的激活,因此IPv6地址得到了优先查找。 所以这可能是你想要的。
更新补充 :正确的方法似乎是取消gai.conf中的整个“标签”块的值从0到7:
label ::1/128 0 label ::/0 1 label 2002::/16 2 label ::/96 3 label ::ffff:0:0/96 4 label fec0::/10 5 label fc00::/7 6 label 2001:0::/32 7
IPv4地址通过DNS(域名系统)中的A(地址)logging映射到域名。 IPv6地址使用AAAAlogging进行映射。 看起来很奇怪? IPv4地址是32位,IPv6是128位。 128/32 = 4,所以AAAA / A = 4。 聪明的伎俩谁devise了IPv6的DNS入口。
DNS是整个互联网上的分级分布式系统。 您的浏览器将调用系统库,该库启动查找链。 它会首先检查本地caching,通常存储在内存中。 接下来,它寻求磁盘并查看HOSTS文件(大多数UNIX / Linux上的/ etc / hosts,以及Windows上的C:\ Windows \ System32 \ drivers \ etc \ HOSTS)。 然后,如果仍然无法find答案,则会根据您的networkingconfiguration调用指定的DNS服务器。
该DNS服务器检查其caching,这是更大的。 如果匹配,则返回答案。 如果找不到答案,它会转向,并要求由ISP的ISP运行的甚至更高级别的DNS服务器。 这个过程一直持续到您通过m.root-servers.net根名称服务器m.root-servers.net 。 大部分DNS查询在达到目标之前都解决了很长时间,但是有时候有一两个DNS查询在那里解决。 但是,如果find了答案,它就会通过链接传递给您的浏览器。
但是,您的浏览器如何知道要请求哪种loggingtypes? 这取决于您的系统设置。 如果你已经把它设置为你的IPv4栈是优先的,那么你的浏览器只会在它的DNS查询中请求Alogging。 如果是IPv6,它将首先要求AAAAlogging,然后再回到Alogging。
还有其他的loggingtypes。 MXlogging定义了域的邮件服务器的位置。 NSlogging定义域的名称服务器。 SRVlogging告诉你特定的服务(例如SSH或Web)在哪里。
DNS真的是互联网的文字电话簿。
查找将由您的DNS(也可能是您的本地主机文件)处理。 是否将某个特定名称parsing为IPv6或IPv4地址取决于浏览器的设置(它是否支持IPv6,是否发送IPv6 AAAA请求,操作系统(无论您是否拥有IPv6协议栈)以及您的DNS提供商(他们是否支持AAAA(IPv6)请求)。
由于一些(旧的)浏览器从不发送AAAA查询请求,而有些可以configuration为不发送它们(Firefox为此设置),但是大多数现代浏览器首先发送AAAA请求并跟随一个请求。