接下來一個大環節,就是學習網站的所有知識點了
用戶訪問網站,主要分兩大塊知識點
客戶端輸入www.yuchaoit.cn后,是如何看到網頁的,其中原理流程
服務端是如何提供網站服務的?其中原理流程
瀏覽器輸入網址后發生了什么
這是一個經典的問題,通過回答的細致程度,可以判斷出,小白、新手、中級玩家、高端玩家。
關于這個問題,小到三兩句話,大到你用三個月都說不完的知識點,知識深似海。
1.梳理用戶訪問網站流程
0.客戶端 確保你的機器可以上外網 1.客戶端 瀏覽器輸入網站url,點擊回車 www.yuchaoit.cn 2.客戶端 本地進行dns域名查找、查找域名對應的ip地址 3.客戶端 直接訪問該服務器的ip,開始tcp三次握手過程 4.客戶端 建立tcp連接后,發起http請求,構造請求報文,會發出多次請求 5.服務端 接收到http請求后,解析請求,響應請求,回復多次 6.客戶端 瀏覽器看到響應內容,瀏覽器解析響應數據,渲染結果在屏幕上 7.客戶端 結束訪問,關閉網站,完成tcp四次揮手
2.抓技術名詞關鍵字
1.域名 2.域名解析 3.TCP/IP 三次握手 4.TCP/IP 四次揮手 5.HTTP請求發出 6.HTTP響應報文
1.DNS域名結構
由于互聯網中的域名太多,全球的用戶也太多,因特網的域名采用的是樹狀結構命名。任何一個連接到網絡中的機器,都有一個唯一的層次結構名字,叫做域名(domain name)。
域、就是名字空間中可被劃分、管理的部分。
語法上要求,域名由標號(label)組成,每一個label之間通過小數點隔開。
域名可以被分為多個子域,子域還可以繼續劃分子域的子域,因此形成了
頂級域
主域名
子域名
根域 .
在整個 DNS 系統的最上方一定是 . (小數點) 這個 DNS 服務器 (稱為 root),也叫”根域“。 根域 (13臺 全世界只有13臺。1個為主根服務器,放置在美國。其余12個均為輔根服務器,其中9個放置在美國,歐洲2個,位于英國和瑞典,亞洲1個,位于日本。)
頂級域名(一級域名)
頂級域名是域名的最后一個部分,即是域名最后一點之后的字母,例如在http://yuchaoit.cn這個域名中,頂級域是.cn(或.COM),大小寫視為相同。%2C-iq1hk5rmsf9xnujhg63fqf5b./)
二級域名
二級域名是域名的倒數第二個部分,例如在http://yuchaoit.cn這個域名中,二級域名是yuchaoit。以此類推。
三級域名
子域名
2. DNS服務器分層結構(DNS解析流程)
文字描述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
各記錄類型使用目的
實踐添加騰訊云dns解析
https://console.cloud.tencent.com/cns
最常用的就是添加A記錄
? ~ dig +trace 0224.yuchaoit.cn
.域名需要備案
https://beian.aliyun.com/ 阿里云 https://cloud.tencent.com/product/ba 騰訊云
實踐添加騰訊云的A記錄三級域名
添加一個三級域名 linux.yuchaoit.cn 123.206.16.61 正統用法,應該解析到你自己的服務器地址 當然這個ip地址,你可以指定為其他的 這個事,沒什么奇怪的,只是做了一個域名的解析關系 4399.yuchaoit.cn 在權威服務器上添加了解析關系,A記錄(記錄值是4399服務器的地址)
自己搭建dns服務器
bind軟件
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
客戶端想使用自建的這個dns服務器
[root@web-7 ~]# [root@web-7 ~]#cat /etc/resolv.conf nameserver 172.16.1.61 訪問局域網內的域名,能夠直接在 master-61機器上查詢到 如果訪問的是互聯網中的域名,該bind軟件,默認會遞歸查詢,繼續向上, 從dns解析流程走一遍
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 <
鏈接:https://www.cnblogs.com/btcm409181423/p/18075535
-
域名
+關注
關注
0文章
72瀏覽量
11316 -
DNS
+關注
關注
0文章
218瀏覽量
19871
原文標題:DNS 用戶訪問網站原理
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論