今天很多人都在讲域名系统和互联网作为一个整体是如何工作的,域名系统---也就是大家所熟知的DNS。不幸的是,对于天龙人和普通人来说,他们并不了解DNS到底是什么鬼。今天就来聊聊DNS,和那些想了解DNS工作原理的人聊一聊它是如何工作的。

什么是DNS?

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

看到了上面百度百科的解释,好像大概知道了DNS有什么用,至少我们可以对如下问题做出回答了。

为什么需要DNS?

因为人的脑力有限,我们无法记住每个我们使用的网站的每个IP地址,记住一些有含义的字符串(如:百度网址www.baidu.com)貌似容易的多,DNS把域名和IP做了一个映射,我们在浏览器输入域名,DNS就可以帮我们把对应的域名解析成真实的IP地址,从而请求IP地址对应的网站。这就是DNS的作用。

但是工作原理是什么?是不是还不清楚,那么就看看下面通俗的解释吧。

DNS无无疑是互联网中最重要也最容易被忽略的部分。如果没有DNS,我们今天互联网的使用体验肯定会很糟糕,因为我们得记住我们使用网站的IP地址(淘宝、微信、支付宝、钉钉等),这么多的IP地址,想想自己是不是很头大,毕竟你现在连你不常用的账号密码都已经忘了qwq!。

我们都知道或者都应该知道电脑组成了互联网,组成了大型网络,并且通过地下电缆或水下电缆相互通信。并且通过一串数字相互识别,这串数字也就是IP地址。由于大部分人脑力有限,无法对成百上千个数字系列进行分类并且一一记住,DNS的实际作用就是将域名翻译成对应的IP地址。

但是DNS究竟是如何工作的呢???

当你在浏览器的地址栏输入www.baidu.com,你实际上访问的是www.baidu.com.,没错,在域名后面还有一个点(.),你从来不会看到,也从来不会输入。当你输入www.baidu.com你实际上访问的是 www.baidu.com.。 的页面,真的是这样的,不信你可以试一下。总之,最后的那个点代表着互联网命名空间的根。为什么这个点这么重要?因为它是一切开始的地方。当你第一次搜索www.baidu.com.时,你的浏览器和操作系统会首先判断它们知不知道这个域名对应的IP地址是啥,它可能会在你的计算机里配置也可能在内存里,很多人称之为cache。总之,你的浏览器会问操作系统,如果它们都不知道www.baidu.com.是什么,然后会怎么样呢? 操作系统会配置为当它不知道某个IP地址时去询问解析域名服务器,解析域名服务器就是承担DNS查询重任的,它会在你的操作系统里进行手动或自动配置。你的操作系统会向解析域名服务器询问www.baidu.com.的IP地址。解析域名服务器的内存或者缓存里可能有这个IP地址,也可能没有。为了这次说明,假如它没有这个IP地址,所有解析域名服务器必须知道的一件事就是知道去哪里查找根域名服务器。是的,这个神秘的点会出现在你输入的地址栏的每一个域名的最后,根域名服务器回复到:“我也不知道,但我知道去哪里找com的域名服务器,去哪里问一下吧”。com域名服务器叫做顶级域名服务器,也就是TLD域名服务器。解析域名服务器会记住根域名服务器提供的所有信息,并且添加到缓存里,然后直接去找TLD域名服务器。当解析域名服务器询问www.baidu.com时,TLD域名服务器回答说:“我不知道,但我知道去哪里找example.com域名服务器,你去那里问一下“。下一组域名服务器叫做主域名服务器,那么TLD域名服务器怎么知道用哪个主域名服务器呢,这得借助于域名注册公司了。当一个域名被购买时,域名注册公司就会被告知那个域名应该使用哪一个主域名服务器,注册公司就会将这次注册信息告知负责根域名的机构,并且告诉它更新TLD域名服务器。总之,解析域名服务器记下TLD域名服务器的回复,存储到缓存里,然后去询问example.com域名服务器,这个时候,主域名服务器就会说:“哈,我知道他在哪里”。告诉你的浏览器去访问192.168.1.1这个IP地址。解析域名服务器记下了主域名服务器提供的信息添加到缓存里,然后回复给操作系统,操作系统就会告诉浏览器,浏览器就会连接到请求页面,www.baidu.com的IP地址。很有意思,对不对?这个过程看起来好像很复杂,但是相信我,整个过程在你眨眼之间就能完成,建立DNS就是为了快速高效的工作,它是互联网必须的组成部分。一旦你理解了这一点,你会清楚的看到一次DNS查询就会由多个层面和多个机构负责。仅仅是一次DNS查询啊!由解析域名服务器根域名服务器TLD域名服务器、还有主域名服务器。如果任何人改变或者去除了这个过程中的任意一个部分,这会导致一场灾难。

DNS是如何工作的?的更多相关文章

  1. DNS查询的工作原理

    二.DNS查询的工作原理 1.DNS查询过程按两部分进行     1.名称查询从客户端计算机开始, 并传送给本机的DNS客户服务程序进行解析     2.如果不能再本机解析查询, 可根据设定的查询DN ...

  2. DNS 到底怎么工作的? (How does dns work?)

    其实这个问题每次看的时候都觉得很明白,但是很久之后就忘记了,所以这次准备记录下来.深入到这个过程的各个细节之中,以后多看看. Step 1 请求缓存信息: 当你在开始访问一个 www.baidu.co ...

  3. DNS 系列(二):DNS 记录及工作方式,你了解吗?

    在上一篇<DNS 系列(一):为什么更新了 DNS 记录不生效?>中,我们主要讲解了 DNS 和 DNS 传播,知道了网络通信主要通过 IP 地址来进行,而域名系统(DNS)则是保证用户在 ...

  4. 如何简单的测试kubernetes的dns add-ons是否工作正常?

    1,新建一个yaml文件. apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: ...

  5. 简单谈谈DNS的工作原理及实践

    DNS协议简介 dns(Domain Name System)是一个全球化的分布式数据库系统,用于存储域名和互联网IP地址的映射关系.dns协议是计算机协议栈应用层中,应用最广泛的协议之一.用户每一次 ...

  6. DNS的工作原理及解析

    DNS协议是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 一.什么是DNS? DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次 ...

  7. DNS工作流程及原理 域名、IP与DNS的关系

    转自:http://blog.csdn.net/maminyao/article/details/7390208 一.DNS服务概述 DNS是Domain Name System的缩写,即域名系统.其 ...

  8. DNS原理及其解析过程 精彩剖析

    本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...

  9. DNS知识指南

    1. 什么是记录? 记录的实质是存在DNS服务器叶结点上的一条映射(只讨论权威DNS,不讨论Local DNS). A记录:(域名:IP地址) 例:cnblogs.com   A  42.121.25 ...

随机推荐

  1. Python常用配置文件ini、json、yaml读写总结

    开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息.请求的url.测试数据等,需要将这些数据写入配置文件,将数据和代码分离,只需要修改配置文件的参数,就可以快速完成环境的切换或者测试数据 ...

  2. MySQL中函数总结

    SQL中提供的函数: version() 查询当前数据库版本 user()   查询当前登录用户 database()    查询当前所在数据库 uuid()   返回uuid的值,分布式情况下数据库 ...

  3. C# 链表 二叉树 平衡二叉树 红黑树 B-Tree B+Tree 索引实现

    链表=>二叉树=>平衡二叉树=>红黑树=>B-Tree=>B+Tree 1.链表 链表结构是由许多节点构成的,每个节点都包含两部分: 数据部分:保存该节点的实际数据. 地 ...

  4. .NET Core 使用MediatR CQRS模式 读写分离

    前言 CQRS(Command Query Responsibility Segregation)命令查询职责分离模式,它主要从我们业务系统中进行分离出我们(Command 增.删.改)和(Query ...

  5. Autofac的基本使用---目录

    目录 Autofac的基本使用---1.前言 Autofac的基本使用---2.普通类型 Autofac的基本使用---3.泛型类型 Autofac的基本使用---4.使用Config配置 Autof ...

  6. 【程序包管理】Linux程序包管理之yum源安装

    yum源安装是我们工作中常用的一种方式,它是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RP ...

  7. 面试官让你讲讲Linux内核的竞争与并发,你该如何回答?

    @ 目录 内核中的并发和竞争简介 原子操作 原子操作简介 整型原子操作函数 位原子操作函数 原子操作例程 自旋锁 自旋锁简介 自旋锁操作函数 自旋锁例程 读写自旋锁 读写锁例程 顺序锁 顺序锁操作函数 ...

  8. C# ——获取各国时间

    DateTime dt = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, TimeZoneInfo.Local); DateTime dt1 = TimeZo ...

  9. Servlet3.0提供的@WebServlet注解引用参数详情介绍

    Servlet3.0提供的@WebServlet注解: servlet3.0所提供的@webservlet注解,用来将某个类注解为一个servlet类,简化了web.xml上的servlet配置, @ ...

  10. Vue利用v-for渲染时表单信息出不来

    今天在写项目时,Controller的值已经传入到html,但是利用vue进行渲染的时候就是出不来, 原因如下: 注意,in 之前的空格.