問題:在瀏覽器輸入一個網(wǎng)址,接下來會做什么?
Step1: DNS(Domain Name System)解析
DNS(Domain Name System)服務是和HTTP協(xié)議一樣位于應用層的協(xié)議欣簇。它提供域名到IP地址之間的解析。
用戶通常使用主機名或域名來訪問對方的計算機坯约,而不是通過IP地址訪問熊咽。
首先,找緩存闹丐。瀏覽器緩存横殴,系統(tǒng)緩存,路由器緩存妇智,ISP DNS 緩存滥玷, 遞歸搜索(你的ISP(Internet Service Provider)的DNS從根域名服務器開始進行遞歸搜索,從.com頂級域名服務器到對應網(wǎng)址的域名服務器)
DNS解析是一個遞歸查詢的過程
完整請求過程
Step2-TCP連接
HTTP協(xié)議作為TCP作為傳輸層協(xié)議巍棱。HTTP報文是包裹在TCP報文中發(fā)送;
服務器在收到TCP報文時提取出HTTP報文蛋欣;
HTTPS則在進入TCP報文之前對HTTP做一次加密航徙,使用SSL或TLS對HTTP報文加密。
HTTP請求報文: 請求行陷虎,請求報文和請求正文
- 請求行:GET index.html HTTP/1.1
- 請求報文:Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Authorization, Cookie, User-Agent等到踏;
-
請求正文:一般客戶端想服務器傳遞數(shù)據(jù),這些數(shù)據(jù)就存儲在請求正文中尚猿。
HTTP響應報文: 狀態(tài)碼窝稿,響應報頭報文和響應正文
- 狀態(tài)碼:
1xx:指示信息–表示請求已接收,繼續(xù)處理凿掂。
2xx:成功–表示請求已被成功接收伴榔、理解纹蝴、接受。
200:請求成功
204:無內(nèi)容踪少。
3xx:重定向–要完成請求必須進行更進一步的操作塘安。
301:永久性轉(zhuǎn)移
302:暫時性轉(zhuǎn)移
304:未修改。所請求的資源未修改援奢,服務器返回此狀態(tài)碼時兼犯,不會返回任何資源〖客戶端通常會緩存訪問過的資源切黔,通過提供一個頭信息指出客戶端希望只返回在指定日期之后修改的資源
4xx:客戶端錯誤–請求有語法錯誤或請求無法實現(xiàn)。
400:客戶端請求的語法錯誤具篇,服務器無法理解
401:請求要求用戶的身份認證
403:服務器理解請求客戶端的請求纬霞,但是拒絕執(zhí)行此請求
404:請求資源不存在
422:參數(shù)錯誤,同400
5xx:服務器端錯誤–服務器未能實現(xiàn)合法的請求栽连。
500:內(nèi)部服務器錯誤
501:服務器不支持請求的功能险领,無法完成請求
503:服務器停機維護
- 響應報頭
Server,Content-Type等 -
響應報文
服務器返回給瀏覽器的文本信息秒紧,通常HTML绢陌,CSS,圖片等