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

Shr*_*dre 1 networking dns routing ip subnet

为什么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
Run Code Online (Sandbox Code Playgroud)

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

hea*_*vyd 5

简而言之,DNS 与配置路由没有任何关系,有两个完全不同的事情。

将路由表视为一组规则,用于确定 IP 数据包如何从您的计算机发出。路由规则告诉您的计算机下一跳路由器在哪里,并允许您根据 IP 地址和网络掩码将不同的 IP 组发送到不同的路由器。

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