为什么 DNS 查询不返回子网掩码?

为什么 DNS 查询不返回子网掩码?

为什么 DNS 服务器不提供查询主机名的子网掩码?为了转发到下一跳,路由表匹配算法(最长前缀匹配)需要 IP 地址以及子网掩码。那么 DNS 服务器是否也应该返回子网掩码以便将数据包路由到正确的下一跳?
我看到AnswersDNS 查询响应的字段仅包含以下值(在 Wireshark 中):

Answers
    google.com: type A, class IN, addr 216.58.197.78
        Name: google.com
        Type: A (Host Address) (1)
        Class: IN (0x0001)
        Time to live: 300
        Data length: 4
        Address: 216.58.197.78

那么谁提供子网掩码来决定发往的特定数据包的下一跳google.com

答案1

简短的回答是 DNS 与配置路由无关,这是两件完全不同的事情。

您可以将路由表视为一组规则,这些规则决定了 IP 数据包如何从您的计算机发出。路由规则会告诉您的计算机下一跳路由器的位置,并允许您根据 IP 地址和网络掩码将不同的 IP 组发送到不同的路由器(如果您愿意)。

DNS 与路由无关。收到 DNS 响应后,您的计算机可能会尝试连接到 DNS 响应中的 IP 地址。建立此连接时,网络堆栈将使用路由表中的 IP/网络掩码组合来确定路由表中的哪个条目与目标 IP 匹配(如果没有匹配,它将选择默认路由)。然后,堆栈使用路由表中的此条目来确定将数据包发送到何处,以便它最终到达目标 IP。

相关内容