瀏覽器-伺服器-請求與響應,瀏覽器響應

來源:互聯網
上載者:User

瀏覽器-伺服器-請求與響應,瀏覽器響應

  瀏覽器訪問伺服器,本質就是請求資源。
  比如請求靜態資源:index.html,我們在瀏覽器地址欄輸入:www.a.com/index.html,瀏覽器為了支援HTTP協議,發送的資料必須符合HTTP協議資料的格式,也就是這樣:

  GET /index.html HTTP/1.1  Accept-Language:zh-cn  Connection:Keep-Alive  Host:www.a.com  User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)  Accept-Encoding:gzip,deflate


  這些資訊就成了請求資訊,瀏覽器利用Socket,通過網路IO流發往伺服器。如果做個比喻的話,瀏覽器比作男生,伺服器比作女生,我想表達的意思是,瀏覽器是主動連結,並且主動請求資料,也就是想要的資源,而伺服器存在資源,她只會等待瀏覽器主動請求她,她才會做出響應。

  此時伺服器必須已經開啟,因為她要監聽某一個連接埠才能知道有人給她發資訊了,這裡比如是 80 連接埠。伺服器監聽80連接埠,有點類似於事件驅動編程的感覺,伺服器利用ServerSocket,得到請求資訊。伺服器解析請求資訊,得到需要請求的資源。這裡先簡單一分為二:


1 請求靜態資源:

  伺服器將會去伺服器實現定義好的工作目錄下,也是我們網站發布打包後的檔案存放的地方,尋找a.html檔案,若找到使用IO流,將檔案載入到記憶體中,設定狀態代碼為200,再輸出到網路IO流,發送給瀏覽器,瀏覽器接收到響應資訊,截取響應體,使用渲染引擎(所謂的核心)進行渲染。若找不到檔案,則伺服器設定回應標頭為404,我們可以自訂一句話來說明原因,大多數伺服器返回404 File Not Found。這就是我們載入靜態檔案的流程。

 

2 請求動態資源servlet:

  先說說動態語言,即運行時才能得知變數的類型。而動態資源,就是未執行的.class檔案,得到瀏覽器的請求資訊,伺服器執行一系列的事先定義好的.class檔案,得到一個動態結果返回給瀏覽器。

  做個比喻,好比靜態資源就是你要買一輛普通的車,你就直接到車店,發送請求給車店,車店得到請求,解析它,知道你要買哪輛,然後返回給你汽車(有些癡人說夢哈)。動態資源呢,就是,你要私人定製一個豪華車,然後你就去汽車廠,發送請求給汽車廠,汽車廠得到請求之後,解析它,獲得一些有用資訊:車大小,裡面配置,外表裝飾等等,請注意,這裡沒有現成的車直接返回,而是得通過一系列的生產車間動態產生,等到生產完成,返回定製汽車,串連關閉。

  比喻打完,開始說正常流程。伺服器得到瀏覽器發來的請求資訊之後,解析它,得到了要執行的類名。這裡就用到了【反射】,個人感覺反射技術很偉大,雖然確實降低效能,但是降低了類與類之間的耦合,就好比動態資源,我不清楚如果沒有反射,我們將如何獲得動態資源。得到想要的類名,利用反射,得到該類的對象,執行想要的方法,然後返回結果。

 

  註:此文章針對Java應用伺服器Tomcat,至於其它伺服器的請求和響應原理,我沒做考證,所以我沒將猜測說出來。

 

 

 

                                                                                                                                                                                2016-08-31 09:02:16

                                                                                                                                                                                    欲戴王冠,必承其重

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.