💡前端入门网络协议-域名,DNS

196 阅读7分钟

为什么要有网络协议

生活中,两个人之间进行交流,都说中文,或者都说英文才能进行交流。或者说话之前先打声招呼,才开始对话,这是一种规则

而两个计算机之间进行通信,实现信息的交流,和资源的共享。也是需要遵循一定的规则的,这个规则就是网络协议。

常用的网络协议

  • HTTP:超文本传输协议,是用于从服务器传输超文本到客户端的一种协议。
  • HTTPS:安全的超文本传输协议,是HTTP的安全版本,使用SSL/TLS协议进行加密传输。
  • TCP:传输控制协议,是面向连接的协议,提供可靠的数据传输服务。
  • UDP:用户数据报协议,是面向无连接的协议,提供不可靠的数据传输服务。
  • DNS:域名系统,是用于将域名转换为IP地址的协议。
  • FTP:文件传输协议,是用于从服务器传输文件到客户端的一种协议。
  • SMTP:简单邮件传输协议,
  • POP3:邮局协议,
  • IMAP:互联网邮件访问协议,
  • DHCP:动态主机配置协议,
  • ARP:地址解析协议,

上面协议有很多,这里不一一列举,下面着重介绍和前端开发接触最多的几个协议:http、tcp、dns

这篇文章先讲讲 DNS 协议。

IP地址

我们在访问其他计算机的时候,需要知道其他计算机的地址,才能与其通信,而在网络协议中,我们通常用IP来表示一个计算机的地址。

在大多数情况下,电脑和计算机是同一个东西。但是计算机不全是电脑,电脑只是狭义的计算机。现在智能家居很火,每个智能家居里面都有一个微型计算机,可以联网,但不能说每个智能家居里面都有一台电脑

IP地址是一串数字,比如192.168.1.1,192.168.1.2,192.168.1.3

IP地址可以分成两大类:

公网IP:公网IP是互联网上的IP地址,可以被互联网上的其他计算机访问。

这里是百度的公网IP地址

这里是必应的公网IP地址

如果我们自己的计算机也有一个公网IP,就可以被世界各地的其他计算机访问了。


私网IP:私网IP是局域网内的IP地址,只能在局域网内访问。比如192.168.1.1,192.168.1.2,192.168.1.3,127.0.0.1

其中127.0.0.1是本地环回地址,表示本机地址,一般用于本地开发。192.168.0.1是指本地局域网的网关的地址,一般是家里路由器

在局域网内部的计算机都会被分配一个局域网IP,通过局域网IP,内部的计算机就可以互相通信了,但是不同局域网的计算机之间是不能通信的,除非有公网IP。

公司内网就是一个局域网,在家里面是访问不了公司内网中的计算机的

但是地址是一串数字,对于人类来说,可读性很差,也很难记,所以就有了域名

域名

域名是IP的名字,一般是一些特定组合的英文字符:www.baidu.com, www.bing.com.

有了域名之后,我们访问百度,就不需要在浏览器中输入百度服务器的IP了,直接输入www.baidu.com就可以了,多么美好啊

本机也有个域名,叫做localhost,localhost对应的IP地址就是127.0.0.1

域名的格式

域名由多个部分组成,每个部分用点号分隔,比如www.qdsj.com,

从右到左依次是:

  • .com 是顶级域名(Top Level Domain,TLD)
  • qdsj.com 是二级域名
  • www.qdsj.com 是三级域名,其中 www 是子域名前缀

域名级别是从右向左计数的,比如:

  • mail.google.com 中,mail 是子域名前缀,google.com 是二级域名,.com 是顶级域名
  • shop.taobao.com 中,shop 是子域名前缀,taobao.com 是二级域名,.com 是顶级域名

但是,计算机是如何知道域名对应着哪个IP的呢?这就需要DNS服务了

DNS

DNS 是域名系统,是用于将域名转换为IP地址的协议。在没有域名之前,计算机之间通信是通过IP地址进行通信的。比如我们访问一个网站,我们输入的是域名,而不是IP地址,

http://www.taobao.com

浏览器访问这个淘宝的域名的时候,会先去dns服务器查询这个域名对应的IP地址,然后浏览器会根据IP地址去请求服务器。

注意,一个域名和IP并不是一一对应,完全绑定的,一个域名可能对应不同的IP地址,今天访问的是这个IP地址,明天可能就是另一个IP地址了

DNS 查询过程

当你在浏览器中输入 www.taobao.com 时,DNS 的查询过程如下:

  1. 浏览器缓存查询

    • 首先查看浏览器自身的 DNS 缓存
    • 如果有缓存且未过期,直接使用缓存的 IP 地址
  2. 操作系统缓存查询

    • 如果浏览器缓存中没有,会查询操作系统的 DNS 缓存
    • 在 Windows 中可以用 ipconfig /displaydns 查看系统的 DNS 缓存
  3. 本地 hosts 文件查询

    • 检查本地 hosts 文件(Windows 系统位于 C:\Windows\System32\drivers\etc\hosts)
    • hosts 文件中可以手动设置域名和 IP 的对应关系
  4. 本地 DNS 服务器查询

    • 如果前面都没找到,会向本地 DNS 服务器发起查询
    • 本地 DNS 服务器通常是由网络运营商提供的
  5. 递归查询过程
    如果本地 DNS 服务器也没有缓存,会进行以下递归查询:

    • 先向根域名服务器查询
    • 根域名服务器返回顶级域名服务器地址(如 .com 的服务器)
    • 向顶级域名服务器查询
    • 顶级域名服务器返回二级域名服务器地址(如 taobao.com 的服务器)
    • 最终得到 www.taobao.com 的 IP 地址
  6. 返回结果

    • DNS 服务器将查询到的 IP 地址返回给客户端
    • 客户端会缓存这个结果,以便下次使用

DNS服务查询过程如下:

image.png

不同等级的DNS服务器组合起来一起查询过程:

image.png

这个过程看起来很复杂,但实际上通常在几毫秒内就能完成。DNS 查询采用递归查询和迭代查询相结合的方式,既保证了效率,又确保了准确性。

具体过程仅作了解,只需要记住dns是用来将域名转换为IP地址的协议就可以了。

总结:

这这篇文章介绍了前端开发中最常用内容:

  1. IP 地址
    • IP 是计算机在网络中的地址标识
    • 分为公网 IP(可以被互联网访问)和私网 IP(局域网内使用)
    • 127.0.0.1 是本机地址,192.168.x.x 是常见的局域网地址
  2. 域名系统
    • 域名是 IP 地址的别名,方便人类记忆和使用
    • 域名分级:顶级域名(.com)、二级域名(example.com)、子域名(www.example.com)
    • localhost 是 127.0.0.1 的域名
  3. DNS 协议
    • 用于将域名转换为 IP 地址
    • 查询过程:浏览器缓存 -> 系统缓存 -> hosts文件 -> DNS服务器
    • DNS 使用递归查询和迭代查询相结合的方式

这些协议互相配合,共同支撑了互联网的运行。域名系统让我们能用易记的网址访问网站,DNS 协议帮我们找到服务器的实际地址

对前端开发者来说,理解这些协议有助于我们更好地开发和调试 Web 应用。下篇文章我们来了解 TCP,其为整个 HTTP 大厦的基石