總體來說分為以下幾個過程:
一、URL 到底是啥URL(Uniform Resource Locator),統(tǒng)一資源定位符,用于定位互聯(lián)網(wǎng)上資源,俗稱網(wǎng)址。 scheme://host.domain:port/path/filename 二、域名解析(DNS)在瀏覽器輸入網(wǎng)址后,首先要經過域名解析,因為瀏覽器并不能直接通過域名找到對應的服務器,而是要通過 IP 地址。大家這里或許會有個疑問----計算機既可以被賦予 IP 地址,也可以被賦予主機名和域名。比如 1.IP 地址IP 地址是指互聯(lián)網(wǎng)協(xié)議地址,是 IP Address 的縮寫。IP 地址是 IP 協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個網(wǎng)絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。IP 地址是一個 32 位的二進制數(shù),比如 127.0.0.1 為本機 IP。 2.什么是域名解析DNS 協(xié)議提供通過域名查找 IP 地址,或逆向從 IP 地址反查域名的服務。DNS 是一個網(wǎng)絡服務器,我們的域名解析簡單來說就是在 DNS 上記錄一條信息記錄。 例如 baidu.com 220.114.23.56(服務器外網(wǎng)IP地址)80(服務器端口號) 3. 瀏覽器如何通過域名去查詢 URL 對應的 IP 呢
4. 小結瀏覽器通過向 DNS 服務器發(fā)送域名,DNS 服務器查詢到與域名相對應的 IP 地址,然后返回給瀏覽器,瀏覽器再將 IP 地址打在協(xié)議上,同時請求參數(shù)也會在協(xié)議搭載,然后一并發(fā)送給對應的服務器。接下來介紹向服務器發(fā)送 HTTP 請求階段,HTTP 請求分為三個部分:TCP 三次握手、http 請求響應信息、關閉 TCP 連接。 三、TCP 三次握手在客戶端發(fā)送數(shù)據(jù)之前會發(fā)起 TCP 三次握手用以同步客戶端和服務端的序列號和確認號,并交換 TCP 窗口大小信息。 1.TCP 三次握手的過程如下:
2.為啥需要三次握手謝希仁著《計算機網(wǎng)絡》中講“三次握手”的目的是“為了防止已失效的連接請求報文段突然又傳送到了服務端,因而產生錯誤”。 四、發(fā)送 HTTP 請求TCP 三次握手結束后,開始發(fā)送 HTTP 請求報文。 1.請求行包含請求方法、URL、協(xié)議版本
POST /chapter17/user.html HTTP/1.1 以上代碼中“POST”代表請求方法,“/chapter17/user.html”表示 URL,“HTTP/1.1”代表協(xié)議和協(xié)議的版本?,F(xiàn)在比較流行的是 Http1.1 版本 2.請求頭包含請求的附加信息,由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號“:”分隔。請求頭部通知服務器有關于客戶端請求的信息。它包含許多有關的客戶端環(huán)境和請求正文的有用信息。其中比如:Host,表示主機名,虛擬主機;Connection,HTTP/1.1 增加的,使用 keepalive,即持久連接,一個連接可以發(fā)多個請求;User-Agent,請求發(fā)出者,兼容性以及定制化需求。 3.請求體,可以承載多個請求參數(shù)的數(shù)據(jù),包含回車符、換行符和請求數(shù)據(jù),并不是所有請求都具有請求數(shù)據(jù)。name=tom&password=1234&realName=tomson 上面代碼,承載著 name、password、realName 三個請求參數(shù)。 五、服務器處理請求并返回 HTTP 報文1. 服務器服務器是網(wǎng)絡環(huán)境中的高性能計算機,它偵聽網(wǎng)絡上的其他計算機(客戶機)提交的服務請求,并提供相應的服務,比如網(wǎng)頁服務、文件下載服務、郵件服務、視頻服務。而客戶端主要的功能是瀏覽網(wǎng)頁、看視頻、聽音樂等等,兩者截然不同。 每臺服務器上都會安裝處理請求的應用——web server。常見的 web server 產品有 apache、nginx、IIS 或 Lighttpd 等。 2.MVC 后臺處理階段后臺開發(fā)現(xiàn)在有很多框架,但大部分都還是按照 MVC 設計模式進行搭建的。 1、視圖(view) 它是提供給用戶的操作界面,是程序的外殼。 2、模型(model) 模型主要負責數(shù)據(jù)交互。在 MVC 的三個部件中,模型擁有最多的處理任務。一個模型能為多個視圖提供數(shù)據(jù)。 3、控制器(controller) 它負責根據(jù)用戶從'視圖層'輸入的指令,選取'模型層'中的數(shù)據(jù),然后對其進行相應的操作,產生最終結果。控制器屬于管理者角色,從視圖接收請求并決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。 3.http 響應報文響應報文由響應行(request line)、響應頭部(header)、響應主體三個部分組成。如下圖所示: (1) 響應行包含:協(xié)議版本,狀態(tài)碼,狀態(tài)碼描述 狀態(tài)碼規(guī)則如下: (2) 響應頭部包含響應報文的附加信息,由 名/值 對組成 (3) 響應主體包含回車符、換行符和響應返回數(shù)據(jù),并不是所有響應報文都有響應數(shù)據(jù) 六、瀏覽器解析渲染頁面瀏覽器拿到響應文本 HTML 后,接下來介紹下瀏覽器渲染機制 瀏覽器解析渲染頁面分為一下五個步驟:
1.根據(jù) HTML 解析 DOM 樹
2.根據(jù) CSS 解析生成 CSS 規(guī)則樹
3.結合 DOM 樹和 CSS 規(guī)則樹,生成渲染樹
4.根據(jù)渲染樹計算每一個節(jié)點的信息(布局)
5.根據(jù)計算好的信息繪制頁面
七、斷開連接當數(shù)據(jù)傳送完畢,需要斷開 tcp 連接,此時發(fā)起 tcp 四次揮手。
|
|