今天在downloadsquad看到一則新聞,是指說Google Chrome內建了SPDY,來改善網路的效能。而以一般的使用者角度來看,我們實在不太怎麼需要知道他是如何改進的,只要知道它有內建這個功能,並且可以增進瀏覽速度即可。不過如果我只寫這樣,大多數的人一定會覺得這篇文章是沒什麼意義的文章,所以我以我讀Google官方文章後的了解,來介紹一下,它的改進方式。

 

在介紹它的原理之前,我們必須知道我們網路共有七層,至於是那七層請有興趣的人自行去Google查詢。而在傳輸層中,常見的傳輸協定有TCP和UDP,而TCP的傳輸必須由客戶端(Client,一般是指瀏覽器)發出一個請求(Request),而在接收方(一般通常是Server)接到請求後,Server要再發出一個回應(Response),而這樣還不能確認是安全的連線,也因此必須再發送第二次請求和第二次回應,以增加傳輸的可靠性。

 

雖然TCP這樣是一個安全的設計模組,但是如果傳輸過程遇到請求或回應或逾時的狀態,那麼傳輸的時間就會拉得很長,也因此整個瀏覽的速度就會降得很慢,而由於目前我們在瀏覽網站是採用HTTP的協定,而HTTP的協定又是TCP的封包所組成,也因此HTTP天生就有以下的缺陷。

  • 單一連接:雖然後來的瀏覽器都已經將連線數提高了,但是仍然是很慢。
  • 請求必須從客戶端所發出:這是由於TCP天生的缺陷所造成的
  • 未壓縮的檔頭(Header):由於TCP的封包每個都有檔頭,以確認是安全的傳輸,並且包著一些要給接收方知道的資訊,但現在的瀏覽器,除了最基本的TCP封包外,還會包上自己的User-Agent等一些瀏覽器的資料,所以檔頭愈來愈大,傳輸的過程就愈來愈慢。
  • 多餘的檔頭傳輸:由於我們傳輸一定是靠多個封包來完成的,而這些封包都有重覆的資訊,如瀏覽器的User Agent,並不可能因為傳輸而有所改變,但是瀏覽器還是將這些重覆傳送,造成資源浪費。
  • 選擇性的壓縮:HTTP是採用部份壓縮資料的方式傳輸,而在傳輸的過程還是有未壓縮的資料,也因此會浪費頻寬。

Google為了解決以上的問題,研發了SPDY的傳輸模組,依我的理解是,他是改良TCP的傳輸過程,主要是採用了「多種串流」、「調整優先權」、「壓縮檔頭」的方式來傳輸。多種串流是指說將所有的串流都弄在用一個TCP連線上,如此一來TCP對於伺服器的請求就會變少。而調整優先權則是指說用戶端可以向伺服器要他所要求的項目,但是必須為每個要求的項目排定優先權,以避免某個「要求的項目」所造成的阻塞。至於封包的部份,則是採用 GZip的壓縮,另外壓縮檔頭,減少不必要的封包傳輸。
雖然這個新的協定可以有效地增加傳輸速度,但它目前有兩個限制,第一個限制是他是建立在SSL協定之上,也就是你必須使用HTTPS的傳輸模式才會感受到明顯地差異;第二個限制則是必須伺服器支援,目前有許多網站都已經支援這個通訊協定,像是LINE、Google等,而目前瀏覽器則是有 Firefox、Opera、Google Chrome支援。
如果你要看你目前有那些連接是使用SPDY的傳輸協定,只要輸入「chrome://net-internals」,並且切到SPDY就可以囉!

Written by 

城市裡的小小迷僮工程師,喜歡用鍵盤記錄個人生活的點滴,身邊的人事物都我的靈感,用心踏出每個腳步,用文字灌溉《海芋小站》,用專業解決問題。

發表迴響