前端(服務器應答)

1. 服務器應答過程:

1.1 輸入網址:
	當你開始輸入網址比如www.cnblogs.com時瀏覽器就可以在書籤或者歷史記錄裏面
	去搜索相關的網址推薦給你。
1.2 瀏覽器查找域名的IP地址:
	1.2.1 請求發起後,瀏覽器首先會解析這個域名,首先它會查看本地硬盤的 hosts 文
		件,看看其中有沒有和這個域名對應的規則,如果有的話就直接使用 hosts 文件
		裏面的 ip 地址。
	1.2.2 如果在本地的 hosts 文件沒有能夠找到對應的 ip 地址,瀏覽器會發出一個 
		DNS請求到本地DNS(域名分佈系統)服務器 。本地DNS服務器一般都是你的網絡
		接入服務器商提供,比如中國電信,中國移動。
	1.2.3 查詢你輸入的網址的DNS請求到達本地DNS服務器之後,本地DNS服務器會
		首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結果,此過程
		是遞歸的方式進行查詢。如果沒有,本地DNS服務器還要向DNS根服務器進行查
		詢。
	1.2.4 根DNS服務器沒有記錄具體的域名和IP地址的對應關係,而是告訴本地DNS服
		務器,你可以到域服務器上去繼續查詢,並給出域服務器的地址。這種過程是迭
		代的過程。
	1.2.5 本地DNS服務器繼續向域服務器發出請求,在這個例子中,請求的對象
		是.com域服務器。.com域服務器收到請求之後,也不會直接返回域名和IP地址的
		對應關係,而是告訴本地DNS服務器,你的域名的解析服務器的地址。
	1.2.6 最後,本地DNS服務器向域名的解析服務器發出請求,這時就能收到一個域名
		和IP地址對應關係,本地DNS服務器不僅要把IP地址返回給用戶電腦,還要把這
		個對應關係保存在緩存中,以備下次別的用戶查詢時,可以直接返回結果,加快
		網絡訪問。
1.3 建立TCP鏈接
	在拿到域名對應的IP地址後,會以隨機端口(1024~65535)向WEB服務器程序80
	端口發起TCP的連接請求,這個連接請求進入到內核的TCP/IP協議棧(用於識別該
	連接請求,解封包,一層一層的剝開),還有可能要經過Netfilter防火牆(屬於內核
	的模塊)的過濾,最終到達WEB程序,最終通過三次握手建立了TCP/IP的連接。
1.4 瀏覽器向WEB服務器發起Http請求
	建立TCP連接之後,發起HTTP請求,請求一般分爲三部分
	請求方法URI協議/版本
	請求頭(Request Header)
	請求正文
1.5 服務器端處理
	服務器端收到請求後的由web服務器(準確說應該是http服務器)處理請求,諸如
	Apache、Ngnix、IIS等。web服務器解析用戶請求,知道了需要調度哪些資源文
	件,再通過相應的這些資源文件處理用戶請求和參數,並調用數據庫信息,最後將
	結果通過web服務器返回給瀏覽器客戶端。

在這裏插入圖片描述

1.6 關閉TCP鏈接
	爲了避免服務器與客戶端雙方的資源佔用和損耗,當雙方沒有請求或響應傳遞時,
	任意一方都可以發起關閉請求。與創建TCP連接的3次握手類似,關閉TCP連接,需
	要4次握手。
1.7 瀏覽器解析資源
	對於獲取到的HTML、CSS、JS、圖片等等資源。瀏覽器通過解析HTML,生成
	DOM樹,解析CSS,生成CSS規則樹,然後通過DOM樹和CSS規則樹生成渲染
	樹。渲染樹與DOM樹不同,渲染樹中並沒有head、display爲none等不必顯示的節
	點。在解析CSS的同時,可以繼續加載解析HTML,但在解析執行JS腳本時,會停
	止解析後續HTML,這就會出現阻塞問題。
1.8 瀏覽器佈局渲染
	根據渲染樹佈局,計算CSS樣式,即每個節點在頁面中的大小和位置等幾何信息。

2. 常見相應碼:

2.1 1xx(臨時相應)
	100:請求者應當繼續提出請求。
	101(切換協議) 請求者已要求服務器切換協議,服務器已確認並準備進行切換。
2.2 2xx(成功)
	200:正確的請求返回正確的結果,如果不想細分正確的請求結果都可以直接返回
	200。
	201:表示資源被正確的創建。比如說,我們 POST 用戶名、密碼正確創建了一個
	用戶就可以返回 201。
	202:請求是正確的,但是結果正在處理中,這時候客戶端可以通過輪詢等機制繼續
	請求。
	203:請求的代理服務器修改了源服務器返回的 200 中的內容,我們通過代理服務
	器向服務器 A 請求用戶信息,服務器 A 正常響應,但代理服務器命中了緩存並返回
	了自己的緩存內容,這時候它返回 203 告訴我們這部分信息不一定是最新的,我們
	可以自行判斷並處理。
2.3 3xx(已重定向)
	300:請求成功,但結果有多種選擇。
	301:請求成功,但是資源被永久轉移。比如說,我們下載的東西不在這個地址需要
	去到新的地址。
	303:使用 GET 來訪問新的地址來獲取資源。
	304:請求的資源並沒有被修改過。
	308:使用原有的地址請求方式來通過新地址獲取資源。
2.4 4xx(請求錯誤)
	400:請求出現錯誤,比如請求頭不對等。
	401:沒有提供認證信息。請求的時候沒有帶上 Token 等。
	402:爲以後需要所保留的狀態碼。
	403:請求的資源不允許訪問。就是說沒有權限。
	404:請求的內容不存在。
	406:請求的資源並不符合要求。
	408:客戶端請求超時。
	413:請求體過大。
	415:類型不正確。
	416:請求的區間無效。
2.5 5xx(服務器錯誤)
	500:服務器錯誤。
	501:請求還沒有被實現。
	502:網關錯誤。
	503:服務暫時不可用。服務器正好在更新代碼重啓。
	505:請求的 HTTP 版本不支持。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章