1. 程式人生 > >一、深入web的請求過程

一、深入web的請求過程

一、深入web的請求過程

1.1、B/S網路架構概述

· 從前端到後端,都基於應用層協議HTTP來互動資料。一個請求就對應了一個操作,完成操作之後就斷開了連線。基於這樣的特點可以用來滿足海量的使用者的操作。這樣的連線叫做短連結。

· 在瀏覽器中輸入了一個連結,會發生的響應的步驟:

1、請求DNS將域名解析成相應的IP地址

2、通過IP找到對應的伺服器

3、向這個伺服器發起get請求

4、這個伺服器返回預設的資源給使用者使用的瀏覽器

 

·網際網路上所有的資源都有一個URL。釋出一個服務或者是一個資源道網際網路上,一個自己的URL可以使網路上的使用者訪問到自己的資源或者是服務。

·必須基於HTTP與服務端互動。

·資料展示在瀏覽器中進行。獲取資料之後,在瀏覽器上才能恢復出它原來的樣子。

1.2、發起HTTP請求

·在網頁中輸入了一個URL然後按下回車鍵,就是發起了一個HTTP請求。

·不借助瀏覽器建立一個HTTP連線和建立一個Socket連線,然後寫入的二進位制資料必須符合HTTP的要求。

1、根據URL解析出的IP地址,和預設的80埠和遠方的伺服器建立Socket連線。

2、瀏覽器根據這個URL組裝成一個get型別的HTTP請求頭

3、通過outputStream.write傳送到目標伺服器,等待inputStream.read返回資料。

·發起一個HTTP請求,本質上就是建立一個Socket連線。

·HttpClient就是Java中處理HTTP請求的一個工具包。

有一個使用HttpClient的方法結構,在書本的 page.5 。

1.3、HTTP解析

·HTTP Header 掌握著網際網路上成千上萬的使用者的資料的傳輸、使用者瀏覽器的渲染行為、伺服器的執行邏輯。在書本的 page.7 。

  1.3.1使用瀏覽器自帶的除錯工具檢視 HttpHeader

  1.3.2瀏覽器的快取機制

·瀏覽器會快取一些之前開啟這個頁面的資訊,在下一次開啟的時候,可能會使用一些快取的檔案資訊。 ·在使用F5重新整理這個頁面的時候,會在請求頭中,加入一些資訊,向伺服器申明,需要最新的檔案資訊,而不是使用快取的檔案。

·追加的請求頭是:Cache-Control:no-cache。

關於快取的一些請求頭:

1、Cache-Control:快取控制,用來設定是否被快取,以及怎麼快取。

2、Expires:快取失效的時間,使用的是格林威治時間(GMT)。

3、Last-Modified/Etag:伺服器上的資源最後一次更改的時間(GMT)。

4、If-Medified-Since:快取的資源是不是最新的,如果是最新的,那麼伺服器就會返回一個304狀態碼,就不會返回新的資料。

5、Etag:使用編號來確定資源是不是新的。

1.4、DNS域名解析

1.4.1解析DNS域名的過程

域名解析,將域名解析成相應的IP地址

1、輸入一個域名,瀏覽器會檢查快取中是否有這個域名的快取。如果有,解析結束。

# 這個方法存在的弊端是快取的時間不好掌握,使用TTL屬性可以控制域名快取的時間。

# 如果時間過長,域名和IP的變動,就會將使用者帶到錯誤的位置,如果太短會佔用大量的解析時間。

2、如果瀏覽器的快取中沒有,就會在作業系統的快取中尋找關於這個域名的資訊。如果找到了,解析結束。

# 在Windows中,在C:\Windows\System32\drivers\etc\hosts檔案中修改一個域名對應的IP。

# 也就是說可以將任意一個域名,通過對這個檔案的修改,牽引到任意的IP地址。

3、如果上面的不走無法解決就會在真正的域名解析伺服器中解析了。

# 第一個DNS解析的是:本地區域名伺服器(LocalDNS)。這個域名解析伺服器承擔了大部分的域名解析工作。

# 它會快取域名解析結果。

4、如果LDNS沒有解決,就會到Root Server域名伺服器,它會返回一個所查詢的主域名伺服器地址。

5、根據主伺服器地址,會到全球只有13臺的豬域名解析伺服器(gTLD Server)進行解析。它們是全球頂級域名解析伺服器。

6、LDNS向gTLD傳送請求。

7、接受請求的gTLD伺服器查詢並返回這個域名對應的Name Server伺服器地址。

#(可以理解為Name Server從gTLD中接受資訊,解析出IP地址)

8、Name Server查詢這個域名的IP,返回給Local DNS。

9、Local DNS 根據TTL值,快取這個域名和IP的對應關係。

10、返回這個IP和TTL值給使用者,並根據TTL值快取在本地。

1.4.2跟蹤域名解析的過程 | 在書本的 page.15 。

1.4.3清除快取的域名

在本地(瀏覽器、作業系統)和LDNS會快取域名和IP對應關係。

在書本的 page.18 。 

1.4.4幾種域名的解析方式

主要分為A記錄、MX記錄、CNAME記錄、NS記錄、TXT記錄。

A記錄:能將多個域名解析到桶一個IP地址。

MX記錄:將某個域名下的郵件伺服器解析到自己的Mail Server。

CNAME記錄:為一個域名設定一個或者多個別名。

 

1.5、CDN的工作機制

CDN就是分散式網路(Content Delivery Network)。

CDN以快取網站中的靜態資料為主,例如CSS、JS、圖片和HTML等資料。使用者從主站伺服器請求到動態內容了之後,再到CND中獲取靜態資料。從而加速網站的載入速度。

CDN要達到以下的目標:可擴充套件性、安全性、可靠性。

 

1.5.1 CDN的架構

首先向Local DNS伺服器發起請求,經過迭代解析,然後回到這個域名的註冊伺服器去解析,在註冊伺服器,通過CNAME得到一個另外的域名。這個域名指向CDN中的均衡負載伺服器,然後訪問最近的CDN節點。

 

1.5.2均衡負載

  均衡負載就是對工作量進行平衡,分攤到多個單元上執行,共同完成一個任務。提高了伺服器的響應速度和利用率,解決了網路擁塞問題。

均衡負載架構的種類有:鏈路負載均衡、叢集負載均衡、作業系統負載均衡。

 

鏈路負載均衡:負載均衡是指使用DNS的解析來實現的,使用者最終訪問哪個Web Server伺服器由DNS Server來控制。

 

叢集負載均衡又分為硬體負載均衡和軟體負載均衡,其中

  硬體負載均衡:使用使用裝置,這樣的裝置很昂貴。

  軟體負載均衡:節約成本,但是一次訪問請求要經過多次代理伺服器,增加了網路負擔。

 

作業系統負載均衡:利用作業系統級別的中斷來實現負載均衡。

1.6、CDN的動態加速

CDN的動態加速:在CDN解析的過程中,通過動態的鏈路探測,來尋找最好的回源路徑,通過排程DNS在將所有的請求在這條路徑上回源。從而加快使用者的訪問效率。