0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DNS用户访问网站原理

马哥Linux运维 来源:马哥Linux运维 2024-12-17 15:28 次阅读

接下来一个大环节,就是学习网站的所有知识点了
用户访问网站,主要分两大块知识点
客户端输入www.yuchaoit.cn后,是如何看到网页的,其中原理流程
服务端是如何提供网站服务的?其中原理流程

d6970308-b864-11ef-93f3-92fbcf53809c.png

浏览器输入网址后发生了什么

这是一个经典的问题,通过回答的细致程度,可以判断出,小白、新手、中级玩家、高端玩家。

关于这个问题,小到三两句话,大到你用三个月都说不完的知识点,知识深似海。

1.梳理用户访问网站流程

0.客户端  确保你的机器可以上外网
1.客户端   浏览器输入网站url,点击回车 www.yuchaoit.cn
2.客户端        本地进行dns域名查找、查找域名对应的ip地址
3.客户端        直接访问该服务器的ip,开始tcp三次握手过程
4.客户端        建立tcp连接后,发起http请求,构造请求报文,会发出多次请求
5.服务端        接收到http请求后,解析请求,响应请求,回复多次
6.客户端        浏览器看到响应内容,浏览器解析响应数据,渲染结果在屏幕上
7.客户端        结束访问,关闭网站,完成tcp四次挥手

d6bc5cca-b864-11ef-93f3-92fbcf53809c.png


2.抓技术名词关键字

1.域名
2.域名解析
3.TCP/IP 三次握手
4.TCP/IP 四次挥手
5.HTTP请求发出
6.HTTP响应报文

1.DNS域名结构

由于互联网中的域名太多,全球的用户也太多,因特网的域名采用的是树状结构命名。任何一个连接到网络中的机器,都有一个唯一的层次结构名字,叫做域名(domain name)。

域、就是名字空间中可被划分、管理的部分。
语法上要求,域名由标号(label)组成,每一个label之间通过小数点隔开。
域名可以被分为多个子域,子域还可以继续划分子域的子域,因此形成了
顶级域
主域名
子域名

d7719ebe-b864-11ef-93f3-92fbcf53809c.png

根域 .

在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器 (称为 root),也叫”根域“。
根域 (13台 全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。)

顶级域名(一级域名)
顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在http://yuchaoit.cn这个域名中,顶级域是.cn(或.COM),大小写视为相同。%2C-iq1hk5rmsf9xnujhg63fqf5b./)
二级域名
二级域名是域名的倒数第二个部分,例如在http://yuchaoit.cn这个域名中,二级域名是yuchaoit。以此类推。

三级域名
子域名

2. DNS服务器分层结构(DNS解析流程)

d7891b02-b864-11ef-93f3-92fbcf53809c.png

d79aa64c-b864-11ef-93f3-92fbcf53809c.png


文字描述DNS解析流程

##DNS域名解析
浏览器客户端需要正确查询、解析出域名的的ip地址,才能建立与服务器的连接
1.浏览器需要解析域名,首先查看本地的hosts文件,查看是否有固定的解析规则,有则直接使用该ip信息

2.本地的hosts文件没有解析关系,浏览器会发出一个dns请求到本地设置的dns服务器
本地dns服务器一般默认会是你接入的网络运营商,如电信dns,移动dns

3.域名解析的请求到达dns服务器之后,dns服务器优先查找它自己的缓存记录,如果有直接返回结果
如果dns服务器本地没有结果,递归的向上查找DNS根服务器,是否有解析记录。

4.根DNS服务器的作用只是提供域服务器的地址(不提供域名和ip的关系解析)

5.本地dns服务器此时向域服务器继续发出请求,此时请求的服务器就是如.com .cn这样的域服务器了
域服务器也不会直接返回你要访问的域名、以及它对应的IP地址的关系,而是告诉本地dns服务器,该域名对应的解析服务器的地址,
如163.com

6.最后本地dns服务器,向该域名对应的解析服务器发出请求,此时才能正确的拿到该域名对应的ip地址关系
此时本地dns服务器会把ip告诉浏览器
以及这个域名、ip的对应关系会被存储在本地缓存中,便于下次访问,可以直接看到这个域名、ip的对应关系,加速访问

3. DNS专业名词

递归查询

就好比我们递归创建文件夹一样
mkdir -p /opt/linux/0224/chaoge666.log

1.我们本地进行域名解析时,如ping baidu.com,本地的/etc/resolv.conf指定的服务器接收到用户请求,必须返回给用户一个精准的ip结果。

2.如果指定的DNS服务器没有存储这个解析关系,就会以上述于超老师讲解的dns解析流程,开始向根域服务器发出请求,因此反复循环,直到拿到结果。

迭代查询

也就是DNS服务器/etc/resolv.conf没有直接返回查询域名-ip的对应结果,而是告诉另外一台服务器,另外一台服务器,再去请求另外一台机器,反复发请求,直到获取正确结果。

DNS缓存

指的是将域名、ip的解析关系存储在离用户最近的一个客户端上,这个位置可以是任意的地方,目的都是为了减少递归查询的次数,更快的获取查询结果。

TTL值

英文名 time to live
告诉本地dns服务器,该解析记录的可用时长,到期后本地缓存会自动删除该解析关系,重新发起迭代/递归查询,获取新的域名、ip解析结果。

4. dig命令查看解析关系

使用dig命令,可以验证上述的原理流程。
yum install bind-utils -y

使用dig命令追踪域名解析全流程

1.首先确定本地dns服务器

[root@master-61 /etc/ansible/roles]#cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5

dig追踪解析

[root@master-61 /etc/ansible/roles]#dig +trace www.yuchaoit.cn

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> +trace www.yuchaoit.cn
;; global options: +cmd
.            2974    IN    NS    d.root-servers.net.
.            2974    IN    NS    b.root-servers.net.
.            2974    IN    NS    l.root-servers.net.
.            2974    IN    NS    e.root-servers.net.
.            2974    IN    NS    a.root-servers.net.
.            2974    IN    NS    k.root-servers.net.
.            2974    IN    NS    g.root-servers.net.
.            2974    IN    NS    i.root-servers.net.
.            2974    IN    NS    j.root-servers.net.
.            2974    IN    NS    h.root-servers.net.
.            2974    IN    NS    f.root-servers.net.
.            2974    IN    NS    m.root-servers.net.
.            2974    IN    NS    c.root-servers.net.
;; Received 228 bytes from 223.5.5.5#53(223.5.5.5) in 14 ms

cn.            172800    IN    NS    d.dns.cn.
cn.            172800    IN    NS    ns.cernet.net.
cn.            172800    IN    NS    c.dns.cn.
cn.            172800    IN    NS    a.dns.cn.
cn.            172800    IN    NS    b.dns.cn.
cn.            172800    IN    NS    f.dns.cn.
cn.            172800    IN    NS    e.dns.cn.
cn.            172800    IN    NS    g.dns.cn.
cn.            86400    IN    DS    57724 8 2 5D0423633EB24A499BE78AA22D1C0C9BA36218FF49FD95A4CDF1A4AD 97C67044
cn.            86400    IN    RRSIG    DS 8 1 86400 20220514050000 20220501040000 47671 . nAeYXDNUTAmlFxLfXot6fdnx05UZ/KU4cj1cy3zU5rrGBh2qFLrPGNQr 8QpZU2vPoydZZZSzcRT6vpyaFGPJhAGsqi+cs2JOMMZNQYlkKdxO3Q3D x9yLXJOVAnnH6iGWglIVnonFsgtcNqGjSeJ/Th9tHbOMD+n/6cumezNy 1HOGrFW1dYQ9lfHjbnxox8EMmGKQ3nejtjIVS9GvHCBp3uisQdDTCook f+MT7qN9P86QJqtgDO+GctD90KIA4u311RQM+tBk9YDEMqXxPcsSiD98 bArR/hUpvnRRbU2t2mk6cmv7ZVAy3ofv6u1fMiwS6YzXneb1i8kLtoUQ zOoqNQ==
;; Received 706 bytes from 192.33.4.12#53(c.root-servers.net) in 1109 ms

yuchaoit.cn.        86400    IN    NS    net.dnspod.net.
yuchaoit.cn.        86400    IN    NS    tulip.dnspod.net.
3QDAQA092EE5BELP64A74EBNB8J53D7E.cn. 21600 IN NSEC3 1 1 10 AEF123AB 3QHKTF6LTFG8AAFUUAJSR8RVAJP99SFU NS SOA RRSIG DNSKEY NSEC3PARAM
3QDAQA092EE5BELP64A74EBNB8J53D7E.cn. 21600 IN RRSIG NSEC3 8 2 21600 20220513133757 20220413130511 38388 cn. g+AhBfqp/RPdA6q61n4JFsO24Go4jkNZYEyTjW0nezf+wN+jj1N9CN87 sBDEwljwudxVhyjHBODdZTdlV0ZSyMYUvgZXfoIh90AR/bu8kzDhUdq+ wVdMye86MQts52L9oZq+SBywnYjW6MwJwkaPwtqoGUzit1xi0DogjaRB T8I=
QJ2D47AGKKDJ0JBA02ILNHBNVEF3DQUS.cn. 21600 IN NSEC3 1 1 10 AEF123AB QK2TQPG7N1M4FC702TM02B2P08FPDJN0 NS DS RRSIG
QJ2D47AGKKDJ0JBA02ILNHBNVEF3DQUS.cn. 21600 IN RRSIG NSEC3 8 2 21600 20220513132930 20220413130455 38388 cn. UBB5On9znmA5pY7aGkeL8Aa31+fkgq82ruaLZUwike9Pbdr4WbiYFjpH IhGz4mijkCeNwWm+bNPA0TtzpL10lVDJp4Zo0DEKQD8NBejGFHQUpY/d BZvG15tM6rXY6I0NjgKa/7d8zyrV4jgZn+r8qJadps3ixLUPZPypbsX+ t7I=
;; Received 583 bytes from 203.119.25.1#53(a.dns.cn) in 12 ms

www.yuchaoit.cn.    600    IN    A    123.206.16.61
yuchaoit.cn.        86400    IN    NS    net.dnspod.net.
yuchaoit.cn.        86400    IN    NS    tulip.dnspod.net.
;; Received 118 bytes from 58.247.212.48#53(tulip.dnspod.net) in 33 ms

解析

1.先去找了13个根域服务器,没有排序关系
2.然后确认顶级域的范围,是.cn
3.然后确认权威域名服务器地址net.dnspod.net
4.最后通过权威域名服务器拿到域名、ip的解析关系
www.yuchaoit.cn.    600    IN    A    123.206.16.61
yuchaoit.cn.        86400    IN    NS    net.dnspod.net.
yuchaoit.cn.        86400    IN    NS    tulip.dnspod.net.

云解析DNS的手册

https://help.aliyun.com/document_detail/102237.html

阿里云DNS解析

https://help.aliyun.com/document_detail/29716.html

腾讯云DNS解析

https://cloud.tencent.com/document/product/302/3446

各记录类型使用目的

d7abebd2-b864-11ef-93f3-92fbcf53809c.png


实践添加腾讯云dns解析
https://console.cloud.tencent.com/cns

最常用的就是添加A记录

➜ ~ dig +trace 0224.yuchaoit.cn

d7be2dba-b864-11ef-93f3-92fbcf53809c.png

.域名需要备案

https://beian.aliyun.com/ 阿里云
https://cloud.tencent.com/product/ba  腾讯云

实践添加腾讯云的A记录三级域名

d7d5caba-b864-11ef-93f3-92fbcf53809c.png

添加一个三级域名
linux.yuchaoit.cn
123.206.16.61

正统用法,应该解析到你自己的服务器地址
当然这个ip地址,你可以指定为其他的


这个事,没什么奇怪的,只是做了一个域名的解析关系

4399.yuchaoit.cn  在权威服务器上添加了解析关系,A记录(记录值是4399服务器的地址)

自己搭建dns服务器

bind软件

d7f4e454-b864-11ef-93f3-92fbcf53809c.png

1.准备好机器 172.16.1.61机器服务端
客户端   172.16.1.7 这个机器作为客户端


2.部署bind软件
yum install bind bind-utils -y

# bind软件是dns服务器的主软件  bind-utils 是提供dns解析的命令,如dig,这个命令


3.安装完毕后,检查防火墙,别禁止了dns查询请求
[root@master-61 ~]#getenforce
Disabled
[root@master-61 ~]#
[root@master-61 ~]#
[root@master-61 ~]#iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

4.创建dns配置文件即可 ,先操作主配置文件,然后修改子配置文件(二级域名的配置文件)
/etc/named.conf  # 主配置文件

允许dns服务端,运行在0.0.0.0:53 上
 12 options {
 13         listen-on port 53 { 127.0.0.1; any; };
还差一个允许客户端的访问
 21         allow-query     { localhost;any; };





第二,查看主配置文件导入了,子配置文件,域配置文件
#  想去权威服务器上注册一个  laoliulinux.cn
#  权威服务器是谁?在内网中搭建的 bind服务  172.16.1.61
 59 include "/etc/named.rfc1912.zones";


第三部,创建 laoliulinux.cn的域配置文件即可

去这个/etc/named.rfc1912.zones 配置文件中创建即可

第四步,修改配置文件
# 写入如下内容 
# 定义二级域名,以及二级域名的配置文件


vim /etc/named.rfc1912.zones

zone "laoliulinux.cn" IN {
        type master;
        file "laoliulinux.cn.zone";
        allow-update { none; };
};


第五步,创建该二级域名的 主机记录配置文件
laoliulinux.cn.zone
需要以主机记录的格式去创建,且必须存放在 /var/named/目录下才行
# cp -p 保持原文件的属性 
cp -p /var/named/named.localhost /var/named/laoliulinux.cn.zone


第六步,添加 A记录即可
一般的网站首页,都会叫做  www.二级域名.com

[root@master-61 ~]#cat /var/named/laoliulinux.cn.zone  
$TTL 1D
@IN SOA@ rname.invalid. (
0; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
NS@
A172.16.1.61
AAAA::1

www   A   172.16.1.61  
linux A   172.16.1.61



第七步,这里就是添加了2个三级域名
只需要启动bind程序即可
[root@master-61 ~]#systemctl start named

第八步,检查named程序状态
[root@master-61 ~]#netstat -tunlp |grep named


[root@master-61 ~]#ps -ef|grep named

第九步,需要设置该dns地址,方可使用该dns解析查询

在给172.16.1.61机器部署dns服务端(权威服务器的角色)


[root@master-61 ~]#cat /etc/resolv.conf 
nameserver 172.16.1.61

解释

1.关闭防火墙
[root@dns-server ~]# systemctl stop firewalld
[root@dns-server ~]#
[root@dns-server ~]# iptables -F
[root@dns-server ~]#
[root@dns-server ~]# getenforce
Disabled

2.配置yum源,用于安装bind软件。
[root@dns-server ~]# ls /etc/yum.repos.d/

3.安装bind
[root@dns-server ~]# yum install bind -y

4.查看软件
[root@dns-server ~]# rpm -qi bind


5.查看dns配置文件
[root@dns-server ~]# rpm -ql bind

# 日志轮转文件
/etc/logrotate.d/named
# 配置文件目录
/etc/named
# 主配置文件
/etc/named.conf
# zone文件,定义域
/etc/named.rfc1912.zones
# 服务管理脚本
/usr/lib/systemd/system/named.service
# 二进制程序文件
/usr/sbin/named
# 检测配置文件
/usr/sbin/named-checkconf
# 检测域文件
/usr/sbin/named-checkzone
# 根域服务器
/var/named/named.ca
# 正向解析区域文件模板
/var/named/named.localhost
# 反向解析区域文件模板
/var/named/named.loopback
# dns服务器下载文件的默认路径
/var/named/slaves
# 进程pid
/var/rum/named

d7ffd968-b864-11ef-93f3-92fbcf53809c.png

d814c436-b864-11ef-93f3-92fbcf53809c.png

客户端想使用自建的这个dns服务器

[root@web-7 ~]#
[root@web-7 ~]#cat /etc/resolv.conf 
nameserver 172.16.1.61

访问局域网内的域名,能够直接在  master-61机器上查询到

如果访问的是互联网中的域名,该bind软件,默认会递归查询,继续向上, 从dns解析流程走一遍

d834e46e-b864-11ef-93f3-92fbcf53809c.png

dnsmasq软件

先把bind软件给停了
[root@master-61 ~]#systemctl stop named

注意恢复你的dns设置

[root@master-61 ~]#cat /etc/resolv.conf 
nameserver 223.5.5.5

这是一个轻量级,很容易就实现dns服务器的一个软件,部署简单,不像bind那么复杂,重量级

很多软件,大型软件的集群,内部需要部署dns环境,都是通过dnsmasq

1.安装
yum install dnsmasq -y


2.创建dnsmasq配置文件,设置上游dns服务器地址,设置本地域名解析记录
[root@master-61 ~]#vim /etc/dnsmasq.conf 
修改如下参数即可
# 1.指定上游dns服务器地址,指定一个配置文件即可
# 2.指定运行地址是内网环境
# 3.需要指定你想要添加的本地 域名解析记录,默认 /etc/hosts文件
参考,修改如下几个配置即可
[root@master-61 ~]#grep -Ev '^($|#)'  /etc/dnsmasq.conf 
resolv-file=/etc/resolv.dnsmasq.conf
listen-address=172.16.1.61
addn-hosts=/etc/hosts.dnsmasq.conf
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig

3.创建对应的数据文件即可

echo "nameserver 223.5.5.5" > /etc/resolv.dnsmasq.conf
cat >/etc/hosts.dnsmasq.conf <

d84f32a6-b864-11ef-93f3-92fbcf53809c.png

链接:https://www.cnblogs.com/btcm409181423/p/18075535

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 域名
    +关注

    关注

    0

    文章

    72

    浏览量

    11286
  • DNS
    DNS
    +关注

    关注

    0

    文章

    218

    浏览量

    19822

原文标题:DNS 用户访问网站原理

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    恒讯科技分析:香港服务器网站访问速度如何才能达到最快?

    要提升香港服务器网站访问速度,可以采取以下措施: 1、选择直连大陆内地的回国线路:使用CN2线路直连大陆内地的香港服务器,可以大幅提升亚太地区客户群的访问体验。 2、选择BGP线路:通过BGP线路
    的头像 发表于 10-08 13:28 180次阅读

    云解析的高防DNS是什么?高防DNS有什么作用?

    随着网络技术的快速发展,网络攻击行为也愈发频发。DNS作为网络应用中的关键环节成为网络攻击的重点目标,DDoS攻击、DNS劫持、缓存投毒等攻击手段层出不穷,对各行业的网络安全造成了严重威胁。传统
    的头像 发表于 09-26 17:31 281次阅读

    IP地址与DNS的关系

    与工作原理 DNS是互联网的核心服务之一,其主要功能是将输入的域名解析为对应的IP地址,从而使人能够通过易记的域名访问网站,而不需要记忆复杂的IP地址。 域名解析过程为: DNS解析过
    的头像 发表于 08-12 17:40 448次阅读

    DNS的结构和工作原理

    DNS 代表域名系统或域名服务器。DNS 将IP 地址解析为主机名,反之亦然。
    的头像 发表于 08-05 15:23 475次阅读
    <b class='flag-5'>DNS</b>的结构和工作原理

    什么情况下的网站要使用CDN加速呢?

    速度慢等问题。 原理就是在客户端和源站中多加一层节点,用以加快用户访问速度,让用户和离自己最近的节点层做交互。 CDN网站加速的工作流程 当用户
    的头像 发表于 07-26 16:29 273次阅读

    esp8266 DNS失败的原因?

    当按照以下步骤操作时,会发生失败: 1.断开路由器与互联网的连接 2.上电ESP8266。首先,它将与路由器连接,然后获取路由器分配的IP,其次,ESP8266运行DNS请求程序,当然会失败
    发表于 07-12 07:15

    如何获取DNS服务器IP?

    当ESP8266在 STA 模式下连接时,访问分配给 DHCP 客户端的 DNS 服务器地址将非常有用。理想情况下,这些地址要么通过 wifi_get_ip_info 在ip_info结构中返回,要么通过专用 API(例如 espconn_
    发表于 07-11 06:15

    建立有效的DNS性能检测机制

    今天来分享如何建立有效的DNS性能监测机制,实时或定期监测关键指标。 一、建立DNS性能监测机制 (一)选择合适的监测工具 市场上有多种DNS性能监测工具可供选择,如IP数据云DNS
    的头像 发表于 07-08 16:00 297次阅读

    如何检查DNS配置及其重要性

    在网络环境中,DNS(域名系统)负责将域名转换为对应的IP地址,以确保我们能够顺利访问各种网站和服务。所以对我们的网络安全至关重要,以下来讲解一些常用的DNS配置检查方法。 一、确认
    的头像 发表于 07-08 14:53 625次阅读
    如何检查<b class='flag-5'>DNS</b>配置及其重要性

    一文了解常见DNS问题

    当企业的DNS出现故障时,为不影响企业的正常运行,团队需要能够快速确定问题的性质和范围。那么有哪些常见的DNS问题呢? 域名解析失败 : 当您输入一个域名(例如https
    的头像 发表于 07-05 15:49 288次阅读

    一文了解常见DNS结构

    很多企业忽略DNS这个关键的组件,而当DNS出现问题是,就会导致网站无法访问、电子邮件无法发送和接收,从而影响到企业的正常运行。而网络团队成员如果想要处理
    的头像 发表于 07-05 15:32 327次阅读

    安全平台:美国邮政官网49%用户遭遇钓鱼网站攻击

    4月29日资讯,知名网络安全公司Akamai近期对美国邮政(U.S. Postal Service, USPS)官方网站展开专项调查,结果显示,自2023年10月至2024年2月访问网站
    的头像 发表于 04-30 14:46 642次阅读

    企业如何安全合规地访问海外网站

      国际专线、SD-WAN线路与VPN翻墙的利弊与风险 在全球化背景下,中国的外贸企业以及海外公司分支机构、科研研发机构等,都需要频繁访问海外网站以开展正常业务。然而,企业访问海外网站
    的头像 发表于 04-16 11:58 867次阅读

    视频网站服务器的四种负载均衡技术

    视频网站通常会面临大量的用户访问和视频流量,为了提高性能和可用性,需要使用负载均衡技术。以下是四种常用的视频网站服务器负载均衡技术: 1、基于DNS
    的头像 发表于 04-01 17:36 616次阅读

    dns的服务器地址设置为多少

    DNS(域名系统)是互联网的基础设施之一,用于将域名转换为IP地址,使用户可以访问网络资源。要设置DNS服务器地址,首先需要理解DNS的工作
    的头像 发表于 01-15 11:11 1721次阅读