第一章 用戶訪問流程
01.訪問網(wǎng)站流程:
00. 客戶端 瀏覽器輸入網(wǎng)址信息點擊回車(www.oldboyedu.com)
01. 客戶端 完成域名的解析過程(DNS)
02. 客戶端 直接訪問相應(yīng)網(wǎng)站服務(wù)器 建立TCP三次握手過程
03. 客戶端 訪問網(wǎng)站服務(wù)器 發(fā)送HTTP請求報文 多次
04. 服務(wù)端 響應(yīng)客戶端請求 回復(fù)HTTP響應(yīng)報文 多次
05. 客戶端 瀏覽器看到網(wǎng)站頁面
06. 客戶端 結(jié)束訪問網(wǎng)站過程 完成TCP四次揮手過程
02.關(guān)鍵名詞:
1.域名
2.DNS域名解析
3.TCP三次握手
4.TCP四次揮手
5.HTTP請求報文
6.HTTP響應(yīng)報文
第二章 DNS域名解析
DNS介紹
DNS,全稱Domain Name System/Serve
它在一個網(wǎng)站運行中起到了至關(guān)重要的作用
它的主要作用是負(fù)責(zé)把網(wǎng)站域名解析為對應(yīng)的IP地址
例如:把www.etiantian.org解析為對應(yīng)的IP地址記錄如1.1.1.1,這個從域名到IP的解析過程稱為A記錄,即Address Record
DNS常用記錄類型主要有
@記錄
A記錄
CNAME記錄
阿里云的DNS解析界面
DNS系統(tǒng)樹狀結(jié)構(gòu)圖
DNS解析流程圖
使用dig命令追蹤DNS解析過程
安裝dig命令
yum install bind-utils -y
使用dig命令追蹤
[root@m01 ~]# dig +trace www.oldboyedu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> +trace www.oldboyedu.com
;; global options: +cmd
. 5 IN NS d.root-servers.net.
. 5 IN NS j.root-servers.net.
. 5 IN NS b.root-servers.net.
. 5 IN NS l.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS i.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS a.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS h.root-servers.net.
. 5 IN NS k.root-servers.net.
;; Received 492 bytes from 10.0.1.2#53(10.0.1.2) in 52 ms
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 86400 IN DS 30909 8 2
..............................
oldboyedu.com. 172800 IN NS dns9.hichina.com.
oldboyedu.com. 172800 IN NS dns10.hichina.com.
..............................
www.oldboyedu.com. 600 IN A 39.97.3.87
;; Received 62 bytes from 106.11.141.126#53(dns10.hichina.com) in 4 ms
DNS解析流程
第一步:客戶端用戶在瀏覽器里輸入www.baidu.com網(wǎng)址后回車,系統(tǒng)首先會查找系統(tǒng)本地的DNS緩存及host文件信息,確定是否存在www.baidu.com域名對應(yīng)的IP解析記錄,如果有就直接獲取到IP地址,然后去訪問這個IP地址對應(yīng)的www.baidu.com域名的服務(wù)器.一般第一次請求時,DNS緩存是沒有解析記錄的,而hosts多為內(nèi)部臨時測試使用.
第二步:如果客戶端本地DNS緩存及本地hosts文件沒有www.baidu.com域名對應(yīng)的解析記錄,那么,系統(tǒng)會把瀏覽器的解析請求發(fā)送給在客戶端本地設(shè)置的DNS服務(wù)器地址解析,通常稱次DNS為LDNS即local DNS,如果LDNS服務(wù)器的本地緩存存有對應(yīng)的解析記錄就會直接返回給IP地址給客戶端:如果沒有,則LDNS會負(fù)責(zé)繼續(xù)請求其他的DNS服務(wù)器.
第三步:LDNS從DNS系統(tǒng)的(".")根開始請求對www.baidu.com域名的解析,根DNS服務(wù)器在全球一共有13臺,根服務(wù)器下面是沒有www.baidu.com域名解析記錄的,但是根下面有www.baidu.com對應(yīng)的頂級域名.com的解析記錄,因此,根會把.com對應(yīng)的DNS服務(wù)器地址返回給LDNS.
第四步:LDNS獲取到.com對應(yīng)的DNS服務(wù)器地址后,就會去.com服務(wù)器請求www.baidu.com域名的解析,.而com服務(wù)器下面也沒有www.baidu.com域名對應(yīng)的解析記錄,但是有baidu.com域名的解析記錄,因此.com服務(wù)器會把baidu.com對應(yīng)的DNS服務(wù)器地址返回給DNS.
第五步:同理,LDNS獲取到baidu.com對應(yīng)的DNS服務(wù)器地址后,就會去baidu.com服務(wù)器請求對www.baidu.com域名的解析,baidu.com域名對應(yīng)的DNS服務(wù)器是該域名的授權(quán)DNS服務(wù)器,這個DNS服務(wù)器正是企業(yè)購買域名時用于管理解析的服務(wù)器,這個服務(wù)器會有www.baidu.com對應(yīng)的解析記錄,如果此時沒有,就表示企業(yè)還沒有對這個域名做解析,即網(wǎng)站服務(wù)器還沒有架設(shè)好.
第六步:baidu.com域名DNS服務(wù)器會把www.baidu.com對應(yīng)的IP解析記錄發(fā)給LDNS.
第七步:LDNS把來自授權(quán)DNS服務(wù)器的與www.baidu.com對應(yīng)的IP解析記錄發(fā)給客戶端瀏覽器,并且LDNS會在本地把域名和IP對應(yīng)解析記錄緩存起來,以便下一次更快的返回相同解析請求的記錄.至此,整個DNS的解析流程就完成了.
第三章 TCP/IP協(xié)議
OSI七層模型
TCP/IP五層模型
TCP/IP每層包含的協(xié)議
TCP報文格式
TCP/IP三次握手
TCP/IP四次揮手
第四章 HTTP協(xié)議介紹
URL
全稱為Uniform Resource Location筒扒,中文翻譯為統(tǒng)一資源定位符
URI
全稱為Uniform Resource Identifier,中文翻譯為統(tǒng)一資源標(biāo)識符
URL和URI關(guān)系
docs.ansible.com / ansible/latest/user_guide/playbooks_reuse_roles.html
URL URI
靜態(tài)資源
特點說明:
1) 網(wǎng)頁內(nèi)容是固定不變的,因此饭冬,容易被搜索引擎收錄(容易被用戶找到)(優(yōu)點)碍遍。
2) 因為網(wǎng)頁沒有數(shù)據(jù)庫的支持亏吝,所以在網(wǎng)站制作和維護(hù)方面的工作量較大咆爽,當(dāng)網(wǎng)站信息量很大時巩踏,
完全依靠靜態(tài)網(wǎng)頁比較困難(缺點)球拦。
3) 網(wǎng)頁的交互性較差靠闭,在程序的功能實現(xiàn)方面有較大的限制(缺點)。
4) 當(dāng)客戶端向服務(wù)器請求數(shù)據(jù)時坎炼,服務(wù)器會直接從磁盤文件系統(tǒng)上返回數(shù)據(jù)(不做任何解析)愧膀。
動態(tài)資源
要什么信息,需要進(jìn)行查詢數(shù)據(jù)庫進(jìn)行解析后發(fā)送給客戶端
查看班級人員信息表
班級 人名 年齡 學(xué)歷
sz-01 張三 18 高中 ---> 數(shù)據(jù)庫中 oldboy=123 <--- post
sz-01 李四 20 大專
班級 人員 年齡 學(xué)歷
代碼信息直接調(diào)用數(shù)據(jù)庫的內(nèi)容
1) 采用動態(tài)網(wǎng)頁技術(shù)的網(wǎng)站可以實現(xiàn)更多的功能,如用戶注冊谣光、用戶登錄檩淋、在線調(diào)查、
投票萄金、用戶管理蟀悦、訂單處理媚朦、發(fā)博文等。
2) 動態(tài)資源頁面會出現(xiàn) "?" "&", 不便于被搜索引擎收錄
3) 接收到用戶請求,需要讓動態(tài)服務(wù)和數(shù)據(jù)庫服務(wù)進(jìn)行處理
偽靜態(tài)資源(動態(tài)頁面)
1. 可以便于搜索引擎進(jìn)行收錄
2. 有數(shù)據(jù)庫服務(wù)支持,實現(xiàn)網(wǎng)頁交互功能
第五章 HTTP請求方法
第六章 HTTP響應(yīng)狀態(tài)碼
響應(yīng)狀態(tài)碼分類
常見響應(yīng)狀態(tài)碼解釋
使用curl查看狀態(tài)碼
curl -I -s -w "%{http_code}\n" -o /dev/null www.baidu.com
第七章 HTTP請求報文
請求行
請求頭
空行
請求主體
第八章 HTTP響應(yīng)報文
起始行
響應(yīng)報文的起始行也叫狀態(tài)行,用來說明服務(wù)器相應(yīng)客戶端請求的狀態(tài),一般為協(xié)議及版本號,數(shù)字狀態(tài)碼,狀態(tài)情況,例如:HTTP/1.1 200 OK
響應(yīng)頭部
和請求報文類似,起始行的后面一般有若干個頭部字段,每隔頭部字段都包含一個名字和一個值,兩者之間用冒號分隔.頭部結(jié)尾也是以空行結(jié)束.常見的頭部信息有
空行
響應(yīng)主體
響應(yīng)報文主體裝載了要返回給客戶端的數(shù)據(jù),這些數(shù)據(jù)可以是文本,也可以使二進(jìn)制的圖片視頻,下面是響應(yīng)報文主體的html格式文本
第十章 用戶訪問網(wǎng)站流程總結(jié)
1.用戶輸入域名->瀏覽器跳轉(zhuǎn)->瀏覽器緩存->Hosts 文件->DNS 解析( 遞歸查詢 | 迭代查詢 )
客戶端向服務(wù)端發(fā)起查詢->遞歸查詢
服務(wù)端向服務(wù)端發(fā)起查詢->迭代查詢
2.由瀏覽器向服務(wù)端發(fā)起 TCP 連接(三次握手)
客戶端 -->請求包連接-syn=1 seq=x 服務(wù)端
服務(wù)端 -->向應(yīng)客戶端 syn=1 ack=x+1 seq=y 客戶端
客戶端 -->建立連接 ack=y+1 seq=x+1 服務(wù)端
3.客戶端發(fā)起 http 請求:
1.請求的方法是什么: Get 獲取
2.請求的 Host 主機是: www.oldboyedu.com
3.請求的資源是什么: /index.html
4.請求的端口是什么: 默認(rèn) http 是 80 https 443
5.請求攜帶的參數(shù)是: 屬性(請求的類型日戈、壓縮询张、認(rèn)證、瀏覽器信息涎拉、等等)
6.請求最后的空行
4.服務(wù)端響應(yīng)的內(nèi)容是
1.服務(wù)端響應(yīng)使用的 WEB 服務(wù)軟件
2.服務(wù)端響應(yīng)請求文件的類型
3.服務(wù)端響應(yīng)請求的文件是否進(jìn)行壓縮
4.服務(wù)端響應(yīng)請求的主機是否進(jìn)行長連接
5.客戶端向服務(wù)端發(fā)起 TCP 斷開(四次揮手)
客戶端 --> 斷開請求 fin=1 seq=x --> 服務(wù)端
服務(wù)端 --> 響應(yīng)斷開 fin=1 ack=x+1 seq=y --> 客戶端
服務(wù)端 --> 斷開連接 fin=1 ack=x+1 seq=z --> 客戶端
客戶端 --> 確認(rèn)斷開 fin=1 ack=z+1 seq=sj --> 服務(wù)端