從打開一個網(wǎng)址說起

當(dāng)在瀏覽器中輸入一個網(wǎng)址的時候,瀏覽器會渲染出對應(yīng)的網(wǎng)頁的內(nèi)容。作為web開發(fā)人員來說,應(yīng)該知道這個過程:

  1. 當(dāng)輸入的一個網(wǎng)址為域名的時候,瀏覽器則根據(jù)本機(jī)的網(wǎng)關(guān)和DNS服務(wù)器來解析出訪問的真正的IP地址。如果是直接訪問IP則直接與服務(wù)器通信,發(fā)送請求。 請求原理簡單如下:

    大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)
    (此處只是簡單表示下域名解析原理,解析過程比這個復(fù)雜的多。)

  2. 發(fā)送請求的時候會經(jīng)歷TCP三次握手過程(http也是基于TCP的協(xié)議),當(dāng)TCP連接建立成功后,瀏覽器會根據(jù)http協(xié)議,把請求的內(nèi)容封裝成請求報文,發(fā)送給web服務(wù)器.

  3. 服務(wù)器會根據(jù)請求的報文的內(nèi)容,執(zhí)行對應(yīng)的程序和讀取對應(yīng)的文件,按照http協(xié)議的規(guī)則返回響應(yīng)內(nèi)容(包括header和body)。

  4. 服務(wù)器根據(jù)響應(yīng)頭來解析響應(yīng)的內(nèi)容,完成html+css+js的渲染和執(zhí)行。

http協(xié)議

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。

用簡單的話來說,當(dāng)客戶端與服務(wù)器端通信的時候,需要傳輸?shù)膬?nèi)容有(HTML 文件,js+css, 圖片,文本, 查詢結(jié)果等),http協(xié)議把內(nèi)容傳輸規(guī)范化??梢噪S便查看下一個http協(xié)議的內(nèi)容:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

(上面的圖是請求jqury的請求和響應(yīng)信息)

請求的頭信息

  GET /script/jquery.js HTTP/1.1
  Host: common.cnblogs.com
  Connection: keep-alive
  Pragma: no-cache
  Cache-Control: no-cache
  User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
  Accept: */*
  Referer: http://kb.cnblogs.