Web工作方式

1. Web服務器的工作原理

我們平時瀏覽網頁的時候,會打開瀏覽器,輸入網址後按下回車鍵,然後就會顯示出你想要瀏覽的內容。在這個看似簡單的用戶行爲背後,到底隱藏了些什麼?

對於普通的上網過程,系統其實是這樣做的:瀏覽器本身是一個客戶端,當你輸入URL的時候,瀏覽器首先會去請求DNS服務器,通過DNS獲取相應域名對應的IP,然後通過IP地址找到IP對應的服務器後,要求建立TCP連接,等瀏覽器發送完HTTP Request(請求)包後,服務器接收到請求包之後開始處理請求包,服務器調用自身服務,返回HTTP Response(響應)包;客戶端收到來自服務器的響應後開始渲染這個Response包裏的主體(body),等收到全部的內容,隨後斷開與該服務器之間的TCP連接。

一個Web服務器也被稱爲HTTP服務器,它通過HTTP協議與客戶端通信。這個客戶端通常指的是Web瀏覽器(其實手機客戶端內部也是瀏覽器實現的)。

Web服務器的工作原理可以簡單地歸納如下:

  • 客戶端通過TCP/IP協議建立到服務器的TCP連接;
  • 客戶端向服務器發生HTTP協議請求包,請求服務器裏的資源文檔;
  • 服務器向客戶機發送HTTP協議應答包,如果請求的資源包含有動態語言的內容,那麼服務器會調用動態語言的解釋引擎負責處理“動態內容”,並將處理得到的數據返回給客戶端;
  • 客戶端與服務器斷開。由客戶端解釋HTML文檔,在客戶端屏幕上渲染圖形結果。

一個簡單的HTTP事務就是這樣實現的,看起來複雜,原理其實是挺簡單的。需要注意的是客戶端與服務器之間的通信是非持久連接的,當服務器發送了應答後就與客戶端斷開連接,等待下一次請求。

2. URL和DNS解析

我們瀏覽網頁都是通過URL實現的,那麼URL到底是怎麼樣的?

URL(Uniform Resource Locator)統一資源定位符的英文縮寫,用於描述一個網絡上的資源,基本格式如下:

scheme://host[:port#]/path/.../[?query-string][#anchor]
scheme       指定底層使用的協議(例如HTTP, HTTPS, FTP)
host         HTTP服務器的IP地址或者域名
port#        HTTP服務器的默認端口是80,這種情況下端口號可以省略,如果使用了別的端口,必須指明
path         訪問資源的路徑
query-string 發送給HTTP服務器的數據
anchor       錨

DNS(Domain Name System)域名系統的英文縮寫,是一種組織成域層次結構的計算機和網絡服務命名系統,它用於TCP/IP網絡,它從事將主機名或域名轉換爲實際IP地址的工作。

DNS解析過程

詳細DNS解析過程如下:

  1. 在瀏覽器中輸入www.qq.com域名,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關係,如果有,就先調用這個IP地址映射,完成域名解析;
  2. 如果hosts裏沒有這個域名映射,則查找本地DNS解析器緩存,是否有這個網址映射關係,如果有,直接返回,完成域名解析;
  3. 如果hosts與本地DNS解析器緩存都沒有相應的網址映射關係,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果查詢的域名包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性;
  4. 如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關係,則調用這個IP地址映射,完成域名解析,此解析不具有權威性;
  5. 如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至“根DNS服務器”,“根DNS服務器”收到請求後會判斷這個域名(.com)是誰來授權管理的,並會返回一個負責該頂級域名解析器的一個IP.本地DNS服務器收到IP信息後,將會聯繫負責.com域的這臺服務器。這臺負責.com域的服務器收到請求後,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址後,就會找qq.com域服務器,重複上面的動作,進行查詢,直到找到www.qq.com主機;
  6. 如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,找根DNS或把請求轉至上一級,以此循環。不管是本地DNS服務器是否使用轉發,還是根提示,最後都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。

所謂“遞歸查詢過程”就是“查詢的遞交者”更替,而“迭代查詢過程”則是“查詢的遞交者”不變。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章