Skip to content

第1章

这个章节是整个知识一条龙的第1章,本章写的好不好,直接决定读者会不会继续度读下去,所以本章会尽全力勾引大家的兴趣。

1. 浏览器加载某个网址

以本站网址为例(https://xiaosaturn.com),当在浏览器地址栏里输入此域名(Domain Name),会发生什么呢?

首先浏览器要解析域名,什么是域名?就是这个https://xiaosaturn.com,你在浏览器地址栏里看到的这个字符串。

为什么要解析域名?因为互联网上的各个主机之间要通信,是需要知道对方的地址,就比如如果要找到你,需要知道你家的地址一样。互联网上的主机、应用程序之间要通信同样如此。但是解析域名是什么呢?因为这些主机之间是不认识域名的,域名的出现只是为了帮助大家记忆,真正通信是通过IP(Internet Protocol)实现的。详情请至网络章节细看

什么是IP?IP的中文译名是因特网协议网际协议互联网协议等,是互联网协议包中的网络层通信协议,用于跨网络边界分组交换。它的路由功能实现了互联互通,并从本质上建立了互联网。详情请至网络章节细看

现在大家只要理解域名和IP地址是一个东西,域名是字母组合,IP地址是数字组合,两个都代表地址,相当于你家的家庭住址或公司地址。

怎么解析域名呢?大家看到这,大概可以猜测文章的展现逻辑了,就是先阐述是什么,再阐述为什么,最后阐述怎么办

好,我们继续。解析域名就是将域名转变为IP地址,这个工作谁来做呢?当然由域名解析服务器来做。

2. 域名解析服务器

域名解析服务器(DNS服务器)是互联网中的重要组成部分,它的主要功能是将用户输入的域名转换为相应的IP地址,从而使计算机能够找到并访问目标网站。以下是域名解析服务器的工作过程:

  1. 用户输入域名:当用户在浏览器中输入一个域名(如xksaturn.com)时,浏览器需要将这个域名转换为IP地址才能访问网站。

  2. 查询本地缓存:浏览器首先会查询本地缓存中是否有对应的IP地址记录。如果有,浏览器直接使用这个IP地址访问网站;如果没有,浏览器会向本地DNS解析器发送请求。

  3. 本地DNS解析器查询本地DNS解析器会查询其缓存,如果缓存中也没有对应的IP地址,它会继续向更高级别的DNS服务器查询。

DNS服务器层次结构(图1)
  1. 查询过程:分为递归查询迭代查询

两者区别

递归查询

递归查询是一种DNS查询方式,其中DNS解析器代表客户端完成整个查询过程,直到找到最终的IP地址。具体步骤如下:

  • 客户端查询:客户端(如用户的浏览器)向本地DNS解析器发送查询请求。
  • DNS解析器查询根服务器:本地DNS解析器向根DNS服务器发送查询请求,询问域名的NS记录。根DNS服务器返回负责顶级域名(TLD)的服务器地址。
  • DNS解析器查询TLD服务器:DNS解析器向TLD服务器发送查询请求,询问具体域名的NS记录。TLD服务器返回域名的权威DNS服务器地址。
  • DNS解析器查询权威服务器:DNS解析器向权威DNS服务器发送查询请求,询问最终的A记录(IP地址)。权威服务器返回域名的IP地址。
  • DNS解析器返回结果:DNS解析器将最终的IP地址返回给客户端。
DNS递归查询(图2)

迭代查询

迭代查询是一种DNS查询方式,其中DNS解析器在每一步查询后,将结果返回给客户端,由客户端继续进行下一步查询。具体步骤如下:

  • 客户端查询:客户端向本地DNS解析器发送查询请求。
  • DNS解析器查询根服务器:本地DNS解析器向根DNS服务器发送查询请求,询问域名的NS记录。根DNS服务器返回负责顶级域名(TLD)的服务器地址。
  • DNS解析器返回结果:本地DNS解析器将根服务器返回的TLD服务器地址返回给客户端。
  • 客户端查询TLD服务器:客户端向TLD服务器发送查询请求,询问具体域名的NS记录。TLD服务器返回域名的权威DNS服务器地址。
  • TLD服务器返回结果:TLD服务器将权威DNS服务器地址返回给客户端。
  • 客户端查询权威服务器:客户端向权威DNS服务器发送查询请求,询问最终的A记录(IP地址)。权威服务器返回域名的IP地址。
  • 权威服务器返回结果:权威DNS服务器将IP地址返回给客户端。
DNS迭代查询(图3)

对比

  • 递归查询

    • 查询主体:DNS解析器负责完成所有查询步骤。
    • 返回结果:DNS解析器返回最终的IP地址。
    • 优点:客户端负担小,查询过程对客户端透明。
    • 缺点:DNS解析器负担较大。
  • 迭代查询

    • 查询主体:客户端逐步查询每一个DNS服务器。
    • 返回结果:每一步查询后返回中间结果,客户端继续下一步查询。
    • 优点:DNS解析器负担小,适用于大型网络环境。
    • 缺点:客户端需要处理多步查询,复杂性增加。

总结

递归查询让DNS解析器承担了所有查询步骤,对客户端更友好,而迭代查询则将查询过程分步进行,减轻了DNS解析器的负担,但增加了客户端的复杂度。两种查询方式各有优缺点,适用于不同的场景。

在实践中,查询通常遵循图3的模式,从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的。

涉及到的算法

递归:

  1. 返回IP地址:权威DNS服务器返回IP地址后,本地DNS解析器会将这个结果返回给用户的浏览器,并缓存一段时间以供未来查询使用。

  2. 浏览器访问网站:浏览器收到IP地址后,使用该IP地址向目标服务器发送HTTP请求,最终获取并显示网站内容。

通过这个过程,域名解析服务器有效地将用户友好的域名转换为机器能够理解的IP地址,使得互联网浏览变得方便和高效。

3. IP地址拿到之后去访问服务器

首先我们要明白,网页都是在服务器上以文件的方式存放着,浏览器的作用就是把这些文件拉取到本地,然后以一定的规则显示出来。

上面提到第一步就是解析,解析出IP地址之后,就要开始建立TCP连接啦。

TCP又是什么?全称传输控制协议(英语:Transmission Control Protocol,缩写:TCP),是一种面向连接的、可靠的、基于字节流的传输层通信协议。然后它处在OSI参考模式的第四层,即传输层,OSI参考模式又是啥?请至这里查看,此处不在赘述。