一元网络论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 77|回复: 0

域名解析那些事儿

[复制链接]

3万

主题

3万

帖子

9万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
95595
发表于 2024-10-17 06:49:16 | 显示全部楼层 |阅读模式
0x00 背景
今年三四月份,主管交给我一项任务,研究 Linux/AIX 环境下的 gethostbyname 和 getaddrinfo 域名解析函数。虽然当时做了深入研究,但没有记录下来。最近学习 Java 网络编程时,想起了一些片段,加上想写博客的想法,遂将这些内容整理成文。
0x01 概念
为了更好地理解域名解析,首先介绍几个相关概念:

  • IP 地址:网络设备的唯一标识符,用于网络定位和通信。常见版本包括 IPv4(32 位,例如 192.168.0.1)和 IPv6(128 位,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

  • 主机名:网络设备的名称,通常用于内部网络标识设备,例如 server1。

  • 域名:互联网上标识一组服务器或服务的名称,由域名系统解析为 IP 地址,方便用户访问。

  • 完全限定域名 (FQDN):包含主机名和域名的完整名称,唯一标识互联网上的设备,例如 www.example.com,其中 www 是主机名,example.com 是域名。


    通常,域名解析是指将完全限定域名转换为 IP 地址的过程。
    0x02 域名解析 (宏观视角)
    域名解析需要将域名映射到 IP 地址,这个过程由域名解析服务器 (DNS) 完成。假设没有本地 DNS 缓存,解析过程如下:
    [ol]

  • 客户端发送 DNS 请求:客户端发送 DNS 查询请求,例如询问 www.163.com 的 IP 地址,请求会发送到本地 DNS 服务器。

  • 本地 DNS 服务器查询缓存:本地 DNS 服务器首先检查缓存,如果存在该域名的 IP 地址,则直接返回;否则继续查询外部 DNS 层次结构。

  • 本地 DNS 服务器查询根 DNS 服务器:本地 DNS 服务器向全球 13 个根 DNS 服务器之一发起查询,根 DNS 服务器提供特定顶级域名(例如 .com、.org)服务器的地址。

  • 根 DNS 服务器响应:根 DNS 服务器返回负责顶级域名服务器的地址。

  • 本地 DNS 服务器查询顶级域名服务器:本地 DNS 服务器根据根 DNS 提供的地址,向顶级域名服务器发起查询。

  • 顶级域名服务器响应:顶级域名服务器返回负责二级域名(例如 163.com)的权威 DNS 服务器的地址。

  • 本地 DNS 服务器查询权威 DNS 服务器:本地 DNS 服务器向权威 DNS 服务器发起查询,该服务器存储域名与 IP 地址的映射。

  • 权威 DNS 服务器返回 IP 地址:权威 DNS 服务器返回 www.163.com 的 IP 地址给本地 DNS 服务器。

  • 本地 DNS 服务器响应客户端:本地 DNS 服务器将 IP 地址返回给客户端,客户端完成与目标服务器的连接。

    [/ol]


  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|一元网络论坛

    GMT+8, 2024-11-25 10:05 , Processed in 0.063761 second(s), 20 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表