1. DNS
1.1 DNS介紹
TCP/IP 中使用 IP 地址和端口號來確定網絡上的一臺主機的一個程序,但是 IP 地址不方便記憶,于是人們發明了一種叫主機名的字符串,并使用 hosts 文件來描述主機名和 IP 地址的關系。最初, 通過互連網信息中心(SRI-NIC)來管理這個 hosts 文件的。
但是如果一個新計算機要接入網絡或者某個計算機 IP 變更,都需要到信息中心申請變更 hosts 文件。其他計算機也需要定期下載更新新版本的 hosts 文件才能正確上網,這樣就太麻煩了,于是產生了 DNS 系統。一個組織的系統管理機構,維護系統內的每個主機的 IP 和主機名的對應關系。如果新計算機接入網絡,將這個信息注冊到數據庫中。當用戶輸入域名時,會自動查詢 DNS 服務器,由 DNS 服務器檢索數據庫,得到對應的 IP 地址。至今, 我們的計算機上仍然保留了 hosts 文件,在域名解析的過程中仍然會優先查找 hosts 文件的內容。
DNS是基于UDP協議的一整套從域名映射到IP的系統。?
1.2 域名解析過程
如上圖所示,域名結構是樹狀結構,樹的最頂端代表根服務器,根的下一層就是由我 們所熟知的.com、.net、.cn 等通用域和.cn、.uk 等國家域組成,稱為頂級域。網上注冊的域名基本都是二級域名,比如 http://baidu.com、http://taobao.com 等等二級域 名,它們基本上是歸企業和運維人員管理。
1.3 使用dig工具分析DNS過程
caryon@ALiClode:~$ dig www.baidu.com; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7183
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.baidu.com. IN A;; ANSWER SECTION:
www.baidu.com. 916 IN CNAME www.a.shifen.com.
www.a.shifen.com. 61 IN A 220.181.111.1
www.a.shifen.com. 61 IN A 220.181.111.232;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Jun 24 20:39:12 CST 2025
;; MSG SIZE rcvd: 101
1.4 DNS緩存
在 Windows 系統中,可以使用 ipconfig /displaydns 命令來查看系統級別的 DNS 緩存
瀏覽器中輸入url后發生的事情有什么?
1. 瀏覽器會將url解析出協議類型、域名、端口號和請求的資源所在路徑。
2. DNS會對域名經行解析,先在緩存中查找,如果沒有就要從根域名進行解析,將其轉換為IP
3. 瀏覽器通過三次握手與服務器建立TCP連接,如果是https協議還需要進行TLS握手
4. 到此,瀏覽器就可以向服務端發起http請求
5. 服務端對瀏覽器的請求做出應答
6. 瀏覽器根據服務端的應答對界面做出渲染
2. ICMP協議
一個新搭建好的網絡,往往需要先進行一個簡單的測試來驗證網絡是否暢通,但是 IP 協議并不提供可靠傳輸,如果丟包了,IP 協議并不能通知傳輸層是否丟包以及丟包的原因。ICMP 協議正是一個提供這種檢測功能的網絡層協議。
ICMP協議可以確認 IP 包是否成功到達目標地址或者通知在發送過程中 IP 包被丟棄的原因。ICMP 也是基于 IP 協議工作的,但是它并不是傳輸層的功能,因此人們仍然把它歸結為網絡層協議。ICMP 只能搭配 IPv4 使用,如果是 IPv6 的情況下,需要使用 ICMPv6
2.1 ICMP的報文格式
ICMP 大概分為兩類報文: 一類是通知出錯原因? ?一類是用于診斷查詢
2.2 ping命令
caryon@ALiClode:~$ ping baidu.com
PING baidu.com (182.61.201.211) 56(84) bytes of data.
64 bytes from 182.61.201.211: icmp_seq=1 ttl=54 time=6.60 ms
64 bytes from 182.61.201.211: icmp_seq=2 ttl=54 time=6.59 ms
64 bytes from 182.61.201.211: icmp_seq=3 ttl=54 time=6.60 ms
64 bytes from 182.61.201.211: icmp_seq=4 ttl=54 time=6.58 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 6.582/6.593/6.604/0.009 ms
ping 命令不光能驗證網絡的連通性,同時也會統計響應時間和 TTL(IP 包中的 Time To Live, 生存周期)。
ping命令的工作原理
ping命令是基于ICMP協議的。ping 命令會先發送一個 ICMP Echo Request 給對端,對端接收到之后會返回一個 ICMP Echo Reply
2.3?traceroute 命令
traceroute 命令也是基于 ICMP 協議實現,能夠打印出可執行程序主機,一直到目標主機之前經歷多少路由器。
caryon@ALiClode:~$ traceroute baidu.com
traceroute to baidu.com (182.61.244.181), 30 hops max, 60 byte packets1 10.92.211.46 (10.92.211.46) 0.625 ms 0.653 ms 10.92.209.70 (10.92.209.70) 0.753 ms2 11.73.19.161 (11.73.19.161) 1.622 ms 11.73.19.137 (11.73.19.137) 11.829 ms 11.73.75.182 (11.73.75.182) 5.736 ms3 10.102.242.177 (10.102.242.177) 0.900 ms 10.216.138.42 (10.216.138.42) 9.601 ms 10.216.138.186 (10.216.138.186) 1.676 ms4 10.216.223.218 (10.216.223.218) 1.945 ms * 10.216.231.238 (10.216.231.238) 2.225 ms5 10.102.155.110 (10.102.155.110) 2.145 ms 10.102.154.230 (10.102.154.230) 2.866 ms 116.251.112.189 (116.251.112.189) 2.511 ms6 * * *7 61.148.154.113 (61.148.154.113) 3.996 ms 125.33.185.101 (125.33.185.101) 3.825 ms 3.600 ms8 bt-229-110.bta.net.cn (202.106.229.110) 4.319 ms 61.51.114.190 (61.51.114.190) 4.461 ms 61.51.114.198 (61.51.114.198) 4.690 ms9 220.206.193.182 (220.206.193.182) 5.410 ms 220.206.193.186 (220.206.193.186) 5.500 ms 220.206.193.182 (220.206.193.182) 5.882 ms
10 * 182.61.255.70 (182.61.255.70) 5.472 ms 182.61.255.74 (182.61.255.74) 6.164 ms
11 182.61.255.101 (182.61.255.101) 22.522 ms 182.61.217.169 (182.61.217.169) 22.098 ms 182.61.238.157 (182.61.238.157) 21.677 ms
12 182.61.251.166 (182.61.251.166) 21.462 ms 182.61.250.228 (182.61.250.228) 27.591 ms 182.61.250.232 (182.61.250.232) 37.304 ms
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *