日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

当我谈 HTTP 时,我谈些什么?

發布時間:2024/4/11 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 当我谈 HTTP 时,我谈些什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當我們打開網站時也許不會去留意網站前面的HTTP是怎么來的。但是它毫無疑問在網絡中有著舉足輕重的地位。本文從起源到發展,詳說HTTP從1到3的演變。

說在前面

本文不致力于講完 HTTP 的全部內容,事實上短短的篇幅也不可能講完。本文也無意于深挖 HTTP 中的某一點,這是像 《HTTP 權威指南》或者是 RFC 協議做的事。

本文目標是幫助讀者理清 HTTP 的演化過程,說說 HTTP 變化的那些事。

HTTP 的起源

HTTP 最初是 Tim BernersLee 1989 年在歐洲核子研究組織(CERN)所發起的。Tim BernersLee 提出了一種能讓遠隔兩地的研究者們共享知識的設想。這個設想的基本理念是:借助多文檔之間相互關聯形成的超文本(HyperText),連成可相互參閱的 WWW(World Wide Web,萬維網)。用于傳輸的超文本傳輸協議(HyperText Transfer Protocol),即 HTTP 由此誕生。

WWW 這一名稱,是 Web 瀏覽器當年用來瀏覽超文本的客戶端應用程序時的名稱。現在則用來表示這一系列的集合,也可簡稱為 Web。

HTTP 本身是一個簡單的請求-響應協議,它通常運行在 TCP 之上。從整個網絡模型來看,HTTP 是應用層的一個協議。在 OSI 七層模型中,HTTP 位于最上層。它并不涉及數據包的傳輸,只是規定了客戶端和服務器之間的通信格式。定了客戶端可能發送給服務器什么樣的消息以及得到什么樣的響應。請求和響應消息的頭以 ASCII 碼形式給出。

HTTP 采用 BS 架構,也就是瀏覽器到服務器的架構,客戶端通過瀏覽器發送 HTTP 請求給服務器,服務器經過解析響應客戶端的請求。就是這個簡單實用的模型,使得 HTTP 這個基于 TCP/IP 的協議迅速推廣。

HTTP/0.9 到 HTTP/1.1

HTTP 的演化并不是一蹴而就的。當年 HTTP 的出現主要是為了解決文本傳輸的難題。由于協議本身非常簡單,于是在此基礎上設想了很多應用方法并投入了實際使用。現在 HTTP 已經超出了 Web 這個框架的局限,被運用到了各種場景里。

HTTP/0.9

HTTP 協議最早的一個版本是 1990 年發布的 HTTP/0.9。

前面說到,HTTP 于 1989 年問世。那時的 HTTP 并沒有作為正式的標準被建立。這時的 HTTP 其實含有 HTTP/1.0 之前版本的意思,因此被稱為 HTTP/0.9。這個版本只有一個命令:GET。通過 GET 可以獲取服務器的資源,比如請求服務器根目錄下的 index.html 文件。這個版本的協議規定,服務器只能回應 HTML 格式的字符串,不能回應其它格式,也就是說圖像、視頻等多媒體資源,在 HTTP/0.9 這個版本上是無法進行傳輸的。

HTTP/1.0

HTTP 正式作為標準被公布是在 1996 年的 5 月,版本被命名為 HTTP/1.0,并記載于 RFC1945 [https://www.ietf.org/rfc/rfc1945.txt]。雖說是初期標準,但該協議標準至今仍被廣泛使用在服務器端。

HTTP/1.0 版本發布,增加了 POST 命令和 HEAD 命令,豐富了瀏覽器與服務器的互動手段。這個版本的 HTTP 協議可以發送任何格式的內容,包括傳輸文字、圖像、視頻、文件等,這為互聯網的大發展奠定了基礎。

HTTP/1.0 除了增加了請求方法以及對發送文件的支持之外,還增加了格式的改變。除了數據部分,每次通信都必須包括頭信息(HTTP header),用來描述一些元數據。另外還增加了狀態碼、多字符集支持、多部分發送(multi-part type)、權限(authorization)、緩存(cache)、內容編碼(content encoding)等等。

HTTP/1.1

HTTP/1.0 版也并不是完美的,它的主要缺點是,每一次建立 TCP 連接只能發送一個請求。發送數據完畢,連接就關閉,如果還要請求其他資源,就必須再新建一個連接。如果多次請求,勢必就會對服務器產生較大的資源性能損耗。

1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 協議版本。當初的標準是 RFC2068,之后發布的修訂版 RFC2616 就是當前的最新版本。

其中最著名的是 1999 年 6 月公布的 RFC 2616 [https://tools.ietf.org/html/rfc2616],定義了 HTTP 協議中現今廣泛使用的一個版本——HTTP/1.1。

這個版本最大的變化就是將持久化連接加入了 HTTP 標準,即 TCP 連接默認不關閉,可以被多個請求復用。此外,HTTP/1.1 版還新增了許多方法,例如:PUT、PATCH、HEAD、OPTIONS、DELETE。得到進一步完善的HTTP/1.1 版本,一直沿用至今。

HTTP 協議簡單介紹

請求

客戶端發送一個 HTTP 請求到服務器,請求消息包括以下格式:

請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成。

Get 請求例子

1 > GET / HTTP/1.1
2 > Host: www.baidu.com
3 > User-Agent: curl/7.52.1
4 > Accept: /

第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的 HTTP 版本。

第二部分:請求頭部,緊接著請求行(即第一行)之后的部分,用來說明服務器要使用的附加信息

從第二行起為請求頭部,HOST 將指出請求的目的地。User-Agent,服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎。該信息由你的瀏覽器來定義,并且在每個請求中自動發送等等。

第三部分:空行,請求頭部后面的空行是必須的

即使第四部分的請求數據為空,也必須有空行。

第四部分:請求數據也叫主體,可以添加任意的其他數據。

這個例子的請求數據為空。

響應消息

一般情況下,服務器接收并處理客戶端發過來的請求后,會返回一個 HTTP 的響應消息。

HTTP 響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。

例子

1 < HTTP/1.1 200 OK
2 < Accept-Ranges: bytes
3 < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
4 < Connection: keep-alive
5 < Content-Length: 2381
6 < Content-Type: text/html
7 < Date: Thu, 11 Jun 2020 16:04:33 GMT
8 < Etag: “588604c8-94d”
9 < Last-Modified: Mon, 23 Jan 2017 13:27:36 GMT
10 < Pragma: no-cache
11 < Server: bfe/1.0.8.18
12 < Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
13 <
14 < !DOCTYPE html>
15 < !–STATUS OK–> <meta HTTP-equiv=content-type content=text/html;charset=utf-8><meta HTTP-equiv=X-UA-Compatible content=IE=Edge>…
16

第一部分:狀態行,由 HTTP 協議版本號、狀態碼、狀態消息三部分組成。

第一行為狀態行,(HTTP/1.1)表明 HTTP 版本為 1.1 版本,狀態碼為 200,狀態消息為(ok)

第二部分:消息報頭,用來說明客戶端要使用的一些附加信息

第二行和第三行為消息報頭。

Date:生成響應的日期和時間;Content-Type:指定了 MIME 類型的 HTML(text/html),編碼類型是 UTF-8

第三部分:空行,消息報頭后面的空行是必須的

第四部分:響應正文,服務器返回給客戶端的文本信息。

空行后面的 HTML 部分為響應正文。

狀態碼

狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:

  • 1xx:指示信息–表示請求已接收,繼續處理

  • 2xx:成功–表示請求已被成功接收、理解、接受

  • 3xx:重定向–要完成請求必須進行更進一步的操作

  • 4xx:客戶端錯誤–請求有語法錯誤或請求無法實現

  • 5xx:服務器端錯誤–服務器未能實現合法的請求

安全性與 HTTPS

HTTP 的誕生是為了解決信息傳遞和共享的問題,并沒有考慮到互聯網高速發展后面臨的安全問題。

一般來說 HTTP 從 TCP 三次握手后,便開始了數據傳輸。由于 HTTP 本身以明文形式來傳輸數據,并不具備任何數據加密、身份校驗的機制。同時下層協議并不對數據安全性、保密性提供保證。所以在網絡傳輸的過程中,任意節點的第三方都可以隨意劫持流量、篡改數據或竊取信息。

HTTP 無法確保數據的保密性、完整性和真實性,已經不能適應現代互聯網應用的安全需求。

隨著 Web 的日益壯大,HTTP 的使用呈巨額增長趨勢,對信息安全的需求也愈來愈迫切,SSL(Secure SocketsLayer ,安全套接層)應運而生。

當對于安全需求,首先想到的就是對信息進行加密。SSL ,安全套接層,顧名思義是在 TCP 上提供的安全套接字層。其位于應用層和傳輸層之間,應用層數據不再直接傳遞給傳輸層而是傳遞給 SSL 層,SSL 層對從應用層收到的數據進行加密,利用數據加密、身份驗證和消息完整性驗證機制,為網絡上數據的傳輸提供安全性保證。HTTPS 便是指 Hyper Text Transfer Protocol over SecureSocket Layer。

談到具體實施上,業內通常采用的一般有對稱加密和非對稱加密。采用何種方式進行加密?如何判斷服務器未被篡改?如何傳遞加密密鑰?帶著這樣的問題,我們來看看 HTTPS 的工作流程。

1、客戶端發起 HTTPS 請求

這個沒什么好說的,就是用戶在瀏覽器里輸入一個 HTTPS 網址,然后連接到 server 的 443 端口。

2、服務端的配置

采用 HTTPS 協議的服務器必須要有一套數字證書,可以自己制作,也可以向組織申請,區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(Let‘s Encrypt 就是個不錯的選擇,免費的 SSL 證書)。

這套證書其實就是一對公鑰和私鑰,如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然后發給你,因為只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。

3、傳送證書

這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間等等。

4、客戶端解析證書

這部分工作是有客戶端的 TLS 來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。

如果證書沒有問題,那么就生成一個隨機值,然后用證書對該隨機值進行加密,就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。

5、傳送加密信息

這部分傳送的是用證書加密后的隨機值,目的就是讓服務端得到這個隨機值,以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。

6、服務段解密信息

服務端用私鑰解密后,得到了客戶端傳過來的隨機值(私鑰),然后把內容通過該值進行對稱加密,所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠復雜,數據就夠安全。

7、傳輸加密后的信息

這部分信息是服務段用私鑰加密后的信息,可以在客戶端被還原。

8、客戶端解密信息

客戶端用之前生成的私鑰解密服務段傳過來的信息,于是獲取了解密后的內容,整個過程第三方即使監聽到了數據,也束手無策。

簡單說完了 HTTPS 的工作流程。讓我們再將注意力放在 SSL 的演化上。

1994年,Netscape 創建了 SSL 協議的原始規范并逐步發布協議改進版本。1995 年發布 SSL 2.0。1996年,Netscape 和 Paul Kocher 共同設計發布 SSL 3.0 協議,獲得互聯網廣泛認可和支持。因特網工程任務組(IETF)接手負責該協議,并將其重命名為 TLS(傳輸層安全)協議。

我們看到,SSL 2.0 規范是在 1995 年左右發布的,而 SSL 3.0 是在 1996 年 11 月發布的。有趣的是,SSL 3.0 是在 RFC 6101 [https://tools.ietf.org/html/rfc6101] 中描述的,該 RFC 于 2011 年 8 月發布。它位于歷史類別中,該類別通常是被考慮和被丟棄的文檔想法,或者是在決定記錄它們時已經具有歷史意義的協議(根據 IETF [https://www.ietf.org/about/groups/iesg/statements/] 說明)。在這種情況下,有一個描述 SSL 3.0 的 IETF 文檔是很有必要的,因為在其可以被用作規范參考。

再來看看,SSL 是如何激發 TLS 的發展的。后者在 1996 年 11 月以 draft-ietf-tls-protocol-00 [https://tools.ietf.org/html/draft-ietf-tls-protocol-00] 宣告開始。它經歷了六個草案版本,并于 1999 年初作為 RFC 2246 [https://tools.ietf.org/html/rfc2246] - TLS 1.0 正式發布。

在 1995 和 1999 年間,SSL 和 TLS 協議用于保護互聯網上的 HTTP 通信。這作為事實上的標準運行良好。直到 1998 年 1 月,隨著 I-D draft-ietf-tls-HTTPs-00 [https://tools.ietf.org/html/draft-ietf-tls-HTTPs-00] 的發布,HTTPS 的正式標準化過程才開始。該工作于 2000 年 5 月以 RFC 2616 - HTTP 上的 TLS 的發布結束。

TLS 在 2000 到 2007 年間繼續發展,標準化為 TLS 1.1 和 1.2。直至七年后,TLS 的下一個版本開始進行,該版本在 2014 年四月被采納為 draft-ietf-tls-tls13-00 [https://tools.ietf.org/html/draft-ietf-tls-tls13-00],并在 28 份草稿后,于 2018 年八月出了完成版本 RFC 8446 [https://tools.ietf.org/html/rfc8446] - TLS 1.3。

改進與 HTTP2

回到 HTTP 本身。在很長一段時間里,HTTP/1.1 已經足夠好了(確實是,現在仍應用最為廣泛),但是,Web 不斷變化的需求使得我們需要一個更好更合適的協議。

HTTP/1.1 自從 1997 年發布以來,我們已經使用 HTTP/1.x 相當長一段時間了。但隨著互聯網近十年爆炸式的發展,從當初網頁內容以文本為主,到現在以富媒體(如圖片、聲音、視頻)為主,而且對頁面內容實時性高要求的應用越來越多(比如聊天、視頻直播),所以當時協議規定的某些特性,已經逐漸無法滿足現代網絡的需求了。

如果你有仔細觀察,那些最流行的網站首頁所需要下載資源的話,會發現一個非常明顯的趨勢。近年來加載網站首頁需要下載的數據量在逐漸增加,并已經超過了 2100K。但在這里我們更關心的是:平均每個頁面為了完成顯示與渲染所需要下載的資源數也已經超過了 100 個。

基于此,在 2010 年到 2015 年,谷歌通過實踐一個實驗性的 SPDY 協議,證明了一個在客戶端和服務器端交換數據的另類方式。其收集了瀏覽器和服務器端的開發者的焦點問題,明確了響應數量的增加和解決復雜的數據傳輸。在啟動 SPDY 這個項目時預設的目標是:

  • 頁面加載時間 (PLT) 減少 50%。

  • 無需網站作者修改任何內容。

  • 將部署復雜性降至最低,無需變更網絡基礎設施。

  • 與開源社區合作開發這個新協議。

  • 收集真實性能數據,驗證這個實驗性協議是否有效。為了達到降低目標,減少頁面加載時間的目標,SPDY 引入了一個新的二進制分幀數據層,以實現多向請求和響應、優先次序、最小化及消除不必要的網絡延遲,目的是更有效地利用底層 TCP 連接。

**HTTP/1.1 有兩個主要的缺點:安全不足和性能不高,**由于背負著 HTTP/1.x 龐大的歷史包袱,所以協議的修改,兼容性是首要考慮的目標,否則就會破壞互聯網上無數現有的資產。

而如上圖所示,SPDY 位于 HTTP 之下,TCP 和 SSL 之上,這樣可以輕松兼容老版本的 HTTP 協議同時可以使用已有的 SSL 功能。

SPDY 協議在 Chrome 瀏覽器上證明可行以后,就被當作 HTTP/2 的基礎,主要特性都在 HTTP/2 之中得到繼承。

于是時間來到 2015 年,HTTP/2.0 問世。

HTTP/2 相比 HTTP/1.1 的修改并不會破壞現有程序的工作,但是新的程序可以借由新特性得到更好的速度。

HTTP/2 保留了 HTTP/1.1 的大部分語義,例如請求方法、狀態碼、乃至 URI 和絕大多數 HTTP 頭部字段一致。而 HTTP/2 采用了新的方法來編碼、傳輸客戶端和服務器間的數據。

來看看 HTTP/2 的具體特點:

  • 二進制分幀層:在應用層與傳輸層之間增加一個二進制分幀層,以此達到在不改動 HTTP 的語義,HTTP 方法、狀態碼、URI 及首部字段的情況下,突破 HTTP/1.1 的性能限制,改進傳輸性能,實現低延遲和高吞吐量。在二進制分幀層上,HTTP/2.0 會將所有傳輸的信息分割為更小的消息和幀,并對它們采用二進制格式的編碼,其中 HTTP1.x 的首部信息會被封裝到 Headers 幀,而我們的 request body 則封裝到 Data 幀里面。

  • 多路復用:對于 HTTP/1.x,即使開啟了長連接,請求的發送也是串行發送的,在帶寬足夠的情況下,對帶寬的利用率不夠,HTTP/2.0 采用了多路復用的方式,可以并行發送多個請求,提高對帶寬的利用率。

  • 數據流優先級:由于請求可以并發發送了,那么如果出現了瀏覽器在等待關鍵的 CSS 或者 JS 文件完成對頁面的渲染時,服務器卻在專注的發送圖片資源的情況怎么辦呢?HTTP/2.0 對數據流可以設置優先值,這個優先值決定了客戶端和服務端處理不同的流采用不同的優先級策略。

  • 服務端推送:在 HTTP/2.0 中,服務器可以向客戶發送請求之外的內容,比如正在請求一個頁面時,服務器會把頁面相關的 logo,CSS 等文件直接推送到客戶端,而不會等到請求來的時候再發送,因為服務器認為客戶端會用到這些東西。這相當于在一個 HTML 文檔內集合了所有的資源。

  • 頭部壓縮:使用首部表來跟蹤和存儲之前發送的鍵值對,對于相同的內容,不會再每次請求和響應時發送。

  • HTTP/2.0 支持明文 HTTP 傳輸,而 SPDY 強制使用 HTTPS。

  • HTTP/2.0 消息頭的壓縮算法采用 HPACK,而非 SPDY 采用的 DEFLATE。

QUIC 和 HTTP3

雖然 HTTP/2 提高了網頁的性能,但是并不代表它已經是完美的了,HTTP/3 就是為了解決 HTTP/2 所存在的一些問題而被推出來的。隨著時間的演進,越來越多的流量都往手機端移動,手機的網絡環境會遇到的問題像是封包丟失機率較高、較長的 Round Trip Time (RTT)和連接遷移等問題,都讓主要是為了有線網路設計的HTTP/TCP協議遇到貧頸。

我們可以看兩個典型的問題。

第一握手帶來的消耗。HTTP/2 使用 TCP 協議來傳輸的,而如果使用 HTTPS 的話,還需要使用 TLS 協議進行安全傳輸,而使用 TLS 也需要一個握手過程,這樣就需要有兩個握手延遲過程:

  • 在建立 TCP 連接的時候,需要和服務器進行三次握手來確認連接成功,也就是說需要在消耗完 1.5 個 RTT 之后才能進行數據傳輸。

  • 進行 TLS 連接,TLS 有兩個版本——TLS 1.2 和 TLS 1.3,每個版本建立連接所花的時間不同,大致是需要1~2個 RTT。

總之,在傳輸數據之前,我們需要花掉 3~4 個 RTT。

第二,TCP 的隊頭阻塞并沒有得到徹底解決。我們知道,為了實現多路復用,在 HTTP/2 中多個請求是跑在一個 TCP 管道中的。但當出現了丟包時,HTTP/2 的表現反倒不如 HTTP/1.X 了。因為 TCP 為了保證可靠傳輸,有個特別的丟包重傳機制,丟失的包必須要等待重新傳輸確認,HTTP/2 出現丟包時,整個 TCP 都要開始等待重傳,那么就會阻塞該 TCP 連接中的所有請求。而對于 HTTP/1.1 來說,可以開啟多個 TCP 連接,出現這種情況反到只會影響其中一個連接,剩余的 TCP 連接還可以正常傳輸數據。

至此,我們很容易就會想到,為什么不直接去修改 TCP 協議?其實這已經是一件不可能完成的任務了。因為 TCP 存在的時間實在太長,已經充斥在各種設備中,并且這個協議是由操作系統實現的,更新起來非常麻煩,不具備顯示操作性。

HTTP/3 乘著 QUIC 來了。

HTTP3 是基于 QUIC 的協議,如上圖。先說 QUIC,QUIC 協議是 Google 提出的一套開源協議,它基于 UDP 來實現,直接競爭對手是 TCP 協議。QUIC 協議的性能非常好,甚至在某些場景下可以實現 0-RTT 的加密通信。

在 Google 關于 QUIC [https://docs.google.com/document/d/1gY9-YNDNAB1eip-RTPbqphgySwSNSDHLq9D5Bty4FSU/edit] 的文件中提到,與 HTTP/2 相比,QUIC 主要具有下列優勢:

  • Reduce connection establishment latency (減少連接建立時間)

  • Improved congestion control (改進擁塞控制)

  • Multiplexing without head-of-line blocking (沒有隊頭阻塞的多路復用)

  • Forward error correction (修復之前的錯誤)

  • Connection migration(支持網絡遷移)

多路復用,避免隊頭阻塞

這句話說起來很容易,但理解起來并不那么顯然,要想理解 QUIC 協議到底做了什么以及這么做的必要性,我想還是從最基礎的 HTTP/1.0 聊起比較合適。

Pipiline

根據谷歌的調查, 現在請求一個網頁,平均涉及到 80 個資源,30 多個域名。考慮最原始的情況,每請求一個資源都需要建立一次 TCP 請求,顯然不可接受。HTTP 協議規定了一個字段 Connection,不過默認的值是 close,也就是不開啟。

早在 1999 年提出的 HTTP 1.1 [https://www.ietf.org/rfc/rfc2616.txt] 協議 中就把 Connection 的默認值改成了Keep-Alive,這樣同一個域名下的多個 HTTP 請求就可以復用同一個 TCP 連接。這種做法被稱為 HTTP Pipeline,優點是顯著的減少了建立連接的次數,也就是大幅度減少了 RTT。

以上面的數據為例,如果 80 個資源都要走一次 HTTP 1.0,那么需要建立 80 個 TCP 連接,握手 80 次,也就是 80 個 RTT。如果采用了 HTTP 1.1 的 Pipeline,只需要建立 30 個 TCP 連接,也就是 30 個 RTT,提高了 62.5% 的效率。

Pipeline 解決了 TCP 連接浪費的問題,但它自己還存在一些不足之處,也就是所有管道模型都難以避免的隊頭阻塞問題。

隊頭阻塞

我們再舉個簡單而且直觀的例子,假設加載一個 HTML 一共要請求 10 個資源,那么請求的總時間是每一個資源請求時間的總和。最直觀的體驗就是,網速越快請求時間越短。然而如果某一個資源的請求被阻塞了(比如 SQL 語句執行非常慢)。但對于客戶端來說所有后續的請求都會因此而被阻塞。

隊頭阻塞(Head of line blocking,下文簡稱 HOC)說的是當有多個串行請求執行時,如果第一個請求不執行完,后續的請求也無法執行。比如上圖中,如果第四個資源的傳輸花了很久,后面的資源都得等著,平白浪費了很多時間,帶寬資源沒有得到充分利用。

因此,HTTP 協議允許客戶端發起多個并行請求,比如在筆者的機器上最多支持六個并發請求。并發請求主要是用于解決 HOC 問題,當有三個并發請求時,情況會變成這樣:

可見雖然第四個資源的請求被阻塞了,但是其他的資源請求并不一定會被阻塞,這樣總的來說網絡的平均利用率得到了提升。

支持并發請求是解決 HOC 問題的一種方案,這句話沒有錯。但是我們要理解到:“并發請求并非是直接解決了 HOC 的問題,而是盡可能減少 HOC 造成的影響“,以上圖為例,HOC 的問題依然存在,只是不會太浪費帶寬而已。

有讀者可能會好奇,為什么不多搞幾個并發的 HTTP 請求呢?剛剛說過筆者的電腦最多支持 6 個并發請求,谷歌曾經做過實驗,把 6 改成 10,然后嘗試訪問了三千多個網頁,發現平均訪問時間竟然還增加了 5% 左右。這是因為一次請求涉及的域名有限,再多的并發 HTTP 請求并不能顯著提高帶寬利用率,反而會消耗性能。

SPDY 的做法

有沒有辦法解決隊頭阻塞呢?

答案是肯定的。SPDY 協議的做法很值得借鑒,它采用了多路復用(Multiplexing)技術,允許多個 HTTP 請求共享同一個 TCP 連接。我們假設每個資源被分為多個包傳遞,在 HTTP 1.1 中只有前面一個資源的所有數據包傳輸完畢后,后面資源的包才能開始傳遞(HOC 問題),而 SPDY 并不這么要求,大家可以一起傳輸。

這么做的代價是數據會略微有一些冗余,每一個資源的數據包都要帶上標記,用來指明自己屬于哪個資源,這樣客戶端最后才能把他們正確的拼接起來。不同的標記可以理解為圖中不同的顏色,每一個小方格可以理解為資源的某一個包。

TCP 窗口

是不是覺得 SPDY 的多路復用已經夠厲害了,解決了隊頭阻塞問題?很遺憾的是,并沒有,而且我可以很肯定的說,只要你還在用 TCP 鏈接,HOC 就是逃不掉的噩夢,不信我們來看看 TCP 的實現細節。

我們知道 TCP 協議會保證數據的可達性,如果發生了丟包或者錯包,數據就會被重傳。于是問題來了,如果一個包丟了,那么后面的包就得停下來等這個包重新傳輸,也就是發生了隊頭阻塞。當然 TCP 協議的設計者們也不傻,他們發明了滑動窗口的概念:

這樣的好處是在第一個數據包(1-1000) 發出后,不必等到 ACK 返回就可以立刻發送第二個數據包。可以看出圖中的 TCP 窗口大小是 4,所以第四個包發送后就會開始等待,直到第一個包的 ACK 返回。這樣窗口可以向后滑動一位,第五個包被發送。

如果第一、二、三個的包都丟失了也沒有關系,當發送方收到第四個包時,它可以確信一定是前三個 ACK 丟了而不是數據包丟了,否則不會收到 4001 的 ACK,所以發送方可以大膽的把窗口向后滑動四位。

滑動窗口的概念大幅度提高了 TCP 傳輸數據時抗干擾的能力,一般丟失一兩個 ACK 根本沒關系。但如果是發送的包丟失,或者出錯,窗口就無法向前滑動,出現了隊頭阻塞的現象。

QUIC 是如何做的

QUIC 協議基于 UDP 實現,我們知道 UDP 協議只負責發送數據,并不保證數據可達性。這一方面為 QUIC 的多路復用提供了基礎,另一方面也要求 QUIC 協議自己保證數據可達性。

SPDY 為各個數據包做好標記,指明他們屬于哪個 HTTP 請求,至于這些包能不能到達客戶端,SPDY 并不關心,因為數據可達性由 TCP 協議保證。既然客戶端一定能收到包,那就只要排序、拼接就行了。QUIC 協議采用了多路復用的思想,但同時還得自己保證數據的可達性。

TCP 協議的丟包重傳并不是一個好想法,因為一旦有了前后順序,隊頭阻塞問題將不可避免。而無序的數據發送給接受者以后,如何保證不丟包,不錯包呢?這看起來是個不可能完成的任務,不過如果把要求降低成:最多丟一個包,或者錯一個包。事情就簡單多了,操作系統中有一種存儲方式叫 RAID 5,采用的是異或運算加上數據冗余的方式來保證前向糾錯(FEC: Forward Error Correcting)。QUIC 協議也是采用這樣的思想,這里不再贅述。

利用冗余數據的思想,QUIC 協議基本上避免了重發數據的情況。當然 QUIC 協議還是支持重傳的,比如某些非常重要的數據或者丟失兩個包的情況。

少 RTT,請求更快速

前面說到,一次 HTTPS 請求,它的基本流程是三次 TCP 握手外加四次 SSL/TLS 握手。也就是需要三個 RTT。但是 QUIC 在某些場景下,甚至能夠做到 0RTT。

首先介紹下什么是 0RTT。所謂的 0RTT 就是通信雙方發起通信連接時,第一個數據包便可以攜帶有效的業務數據。而我們知道,這個使用傳統的TCP是完全不可能的,除非你使能了 TCP 快速打開特性,而這個很難,因為幾乎沒人愿意為了這個收益去對操作系統的網絡協議棧大動手腳。未使能 TCP 快速打開特性的TCP傳輸第一筆數據前,至少要等1個RTT。

我們這里再說說 HTTP2。對于 HTTP2 來說,本來需要一個額外的 RTT 來進行協商,判斷客戶端與服務器是不是都支持 HTTP2,不過好在它可以和 SSL 握手的請求合并。這也導致了一個現象,就是大多數主流瀏覽器僅支持 HTTPS2 而不單獨支持 HTTP2。因為 HTTP2 需要一個額外的 RTT,HTTPS2 需要兩個額外的 RTT,僅僅是增加一個 RTT 就能獲得數據安全性,還是很劃算的。

TCP 快速打開

何謂 TCP 快速打開,即客戶端可以在發送第一個 SYN 握手包時攜帶數據,但是 TCP 協議的實現者不允許將把這個數據包上傳給應用層。這主要是為了防止 TCP 泛洪攻擊 [https://tools.ietf.org/html/rfc4987]。

因為如果 SYN 握手的包能被傳輸到應用層,那么現有的防護措施都無法防御泛洪攻擊,而且服務端也會因為這些攻擊而耗盡內存和 CPU。

當然 TCP 快速打開并不是完全不可行的。人們設計了 TFO (TCP Fast Open),這是對 TCP 的拓展,不僅可以在發送 SYN 時攜帶數據,還可以保證安全性。

TFO 設計了一個 Cookie,它在第一次握手時由 server 生成,Cookie 主要是用來標識客戶端的身份,以及保存上次會話的配置信息。因此在后續重新建立 TCP 連接時,客戶端會攜帶 SYN + Cookie + 請求數據,然后不等 ACK 返回就直接開始發送數據。

服務端收到 SYN 后會驗證 Cookie 是否有效,如果無效則會退回到三次握手的步驟,如下圖所示:

同時,為了安全起見,服務端為每個端口記錄了一個值 PendingFastOpenRequests,用來表示有多少請求利用了 TFO,如果超過預設上限就不再接受。

關于 TFO 的優化,可以總結出三點內容:

  • TFO 設計的 Cookie 思想和 SSL 恢復握手時的 Session Ticket 很像,都是由服務端生成一段 Cookie 交給客戶端保存,從而避免后續的握手,有利于快速恢復。

  • 第一次請求絕對不會觸發 TFO,因為服務器會在接收到 SYN 請求后把 Cookie 和 ACK 一起返回。后續客戶端如果要重新連接,才有可能使用這個 Cookie 進行 TFO

  • TFO 并不考慮在 TCP 層過濾重復請求,以前也有類似的提案想要做過濾,但因為無法保證安全性而被拒絕。所以 TFO 僅僅是避免了泛洪攻擊(類似于 backlog),但客戶端接收到的,和 SYN 包一起發來的數據,依然有可能重復。不過也只有可能是 SYN 數據重復,所以 TFO 并不處理這種情況,要求服務端程序自行解決。這也就是說,不僅僅要操作系統的支持,更要求應用程序(比如 MySQL)也支持 TFO。

TFO 使得 TCP 協議有可能變成 0-RTT,核心思想和 Session Ticket 的概念類似: 將當前會話的上下文緩存在客戶端。如果以后需要恢復對話,只需要將緩存發給服務器校驗,而不必花費一個 RTT 去等待。

結合 TFO 和 Session Ticket 技術,一個本來需要花費 3 個 RTT 才能完成的請求可以被優化到一個 RTT。如果使用 QUIC 協議,我們甚至可以更進一步,將 Session Ticket 也放到 TFO 中一起發送,這樣就實現了 0-RTT 的對話恢復。

QUIC 是怎么做的

讓我們看看 QUIC 是怎么做的。

首先聲明一點,如果一對使用 QUIC 進行加密通信的雙方此前從來沒有通信過,那么 0-RTT 是不可能的,即便是 QUIC 也是不可能的。

QUIC 握手的過程需要一次數據交互,0-RTT 時延即可完成握手過程中的密鑰協商,比 TLS 相比效率提高了 5 倍,且具有更高的安全性。在握手過程中使用 Diffie-Hellman 算法協商初始密鑰,初始密鑰依賴于服務器存儲的一組配置參數,該參數會周期性的更新。初始密鑰協商成功后,服務器會提供一個臨時隨機數,雙方根據這個數再生成會話密鑰。

具體握手過程如下:

(1) 客戶端判斷本地是否已有服務器的全部配置參數,如果有則直接跳轉到(5),否則繼續

(2) 客戶端向服務器發送 inchoate client hello(CHLO) 消息,請求服務器傳輸配置參數

(3) 服務器收到 CHLO,回復 rejection(REJ) 消息,其中包含服務器的部分配置參數

(4) 客戶端收到 REJ,提取并存儲服務器配置參數,跳回到(1)

(5) 客戶端向服務器發送 full client hello 消息,開始正式握手,消息中包括客戶端選擇的公開數。此時客戶端根據獲取的服務器配置參數和自己選擇的公開數,可以計算出初始密鑰。

(6) 服務器收到 full client hello,如果不同意連接就回復 REJ,同(3);如果同意連接,根據客戶端的公開數計算出初始密鑰,回復 server hello(SHLO)消息,SHLO 用初始密鑰加密,并且其中包含服務器選擇的一個臨時公開數。

(7) 客戶端收到服務器的回復,如果是 REJ 則情況同(4);如果是 SHLO,則嘗試用初始密鑰解密,提取出臨時公開數

(8) 客戶端和服務器根據臨時公開數和初始密鑰,各自基于 SHA-256 算法推導出會話密鑰

(9) 雙方更換為使用會話密鑰通信,初始密鑰此時已無用,QUIC 握手過程完畢。之后會話密鑰更新的流程與以上過程類似,只是數據包中的某些字段略有不同。

寫在最后

想起有一個名言:計算機領域沒有什么問題是加一層解決不了的,如果有,就再加一層。網絡模型本來就是層層累加,到了 Web 得以快速生動的展現給人們以豐富的內容。從 HTTP 的演變過程中,我們可以看到中間又累加了若干層。不知道以后,又會是怎么樣呢?

大家會發現,筆者在文中不止一次提到了演變這個詞。是的,這是來自達爾文進化論中的理論。在筆者看來,“物競天擇,適者生存”的演變理論和計算機領域的技術變化是很類似的,只不過在這里,不是天擇,而是人擇。由市場,由用戶來選擇。不知道接下來,作為選擇者的我們,又將怎樣主導技術的走向?

總結

以上是生活随笔為你收集整理的当我谈 HTTP 时,我谈些什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久草精品 | 天天射日| 日韩高清在线看 | 一级性生活片 | 美女福利视频在线 | 日韩视频在线播放 | 国产精品高清免费在线观看 | 少妇bbbb搡bbbb搡bbbb | 亚洲综合在 | 狠狠精品| 免费看片成年人 | 91精品国产网站 | 福利视频第一页 | 叶爱av在线 | 黄在线免费看 | 色婷婷激情电影 | 国产又粗又猛又爽又黄的视频先 | 久久成人精品视频 | 欧美精品在线观看免费 | 中文字幕高清 | 国产a国产a国产a | 亚洲精品在线视频 | 久久国产电影院 | 日韩在线观看 | 欧美一区二视频在线免费观看 | 夜夜骑首页 | 欧美精品二 | 国产电影一区二区三区四区 | 成人精品国产免费网站 | 日本精品视频一区 | 天天干天天摸天天操 | 免费a视频在线 | 久草在线资源观看 | 久久麻豆视频 | 国产精品毛片久久 | 久久99精品国产99久久6尤 | 久久精品久久精品久久 | 最近高清中文在线字幕在线观看 | 日韩亚洲在线 | 欧美精品久久久久久久久久久 | 天天操天天舔天天干 | 色全色在线资源网 | 午夜国产福利在线观看 | av直接看| 视频一区视频二区在线观看 | 国产精品v欧美精品v日韩 | 久久精品网站视频 | 日韩成人黄色av | 免费av在线播放 | 日韩电影在线观看中文字幕 | 激情综合婷婷 | 黄色国产精品 | 久久久国产精品亚洲一区 | 韩国一区二区三区在线观看 | 天天色婷婷 | 欧美最猛性xxxxx(亚洲精品) | 久久国产精品影片 | 国产色影院 | 成人福利在线播放 | 久久久影视 | avove黑丝 | 国产日产精品一区二区三区四区 | 日韩在线中文字幕视频 | 成人av在线观 | 亚洲精品国产精品乱码在线观看 | 国产美女搞久久 | 国产成人精品一区二区三区在线观看 | 91资源在线免费观看 | 日本在线h | 欧美精品在线观看免费 | 在线亚州| 五月激情天 | 日韩天堂在线观看 | 成人免费影院 | 日韩欧美在线一区二区 | 久久国产精品99久久久久久丝袜 | 中国一级片免费看 | 美女网站在线免费观看 | 毛片播放网站 | av经典在线 | 欧美专区日韩专区 | 天天干天天在线 | 欧美黄色软件 | 888av| 97在线视频观看 | 91精品视频免费看 | 国产黄大片在线观看 | 国产 亚洲 欧美 在线 | 亚洲精品福利在线 | 成人av电影网址 | 欧美一区二区在线免费观看 | 五月天激情电影 | 久久久人人爽 | 99精品国产成人一区二区 | 亚洲人片在线观看 | 国产一区二区网址 | 亚洲激情小视频 | 欧美日本中文字幕 | 亚洲最大成人免费网站 | 日韩字幕 | 99久久9| 国产黄在线观看 | 麻豆成人精品 | 亚欧洲精品视频在线观看 | 国产亚州av| 日本少妇高清做爰视频 | 天天搞夜夜骑 | 国产成人精品一区二区三区在线观看 | 在线观看免费黄色 | 日日夜夜精品视频天天综合网 | 91视频在线免费观看 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 亚洲国产精品第一区二区 | 亚洲综合婷婷 | 91精彩在线视频 | 91自拍91| 天天操夜夜看 | 91网在线 | 久久在线精品 | 国产一区二区中文字幕 | 成人18视频| 在线日韩精品视频 | 久久婷婷视频 | 国内外成人在线视频 | 2020天天干天天操 | 国产亚洲精品成人av久久ww | 久久精品精品电影网 | 久久久久9999亚洲精品 | 亚洲国产精品电影 | 中文字幕欧美日韩va免费视频 | 在线观看网站黄 | 国产在线观看免费观看 | 国产69精品久久久久9999apgf | 欧美不卡视频在线 | 这里只有精品视频在线观看 | 日韩精品一区二区电影 | 国产精品69av| www.久久视频 | 久久免费试看 | 97在线资源 | 久久精品看| 欧美激情第十页 | 97**国产露脸精品国产 | 91成人免费在线视频 | 深爱激情丁香 | 91污视频在线观看 | 国产精品亚洲视频 | 国产精品久久久久亚洲影视 | 最新av免费在线观看 | 亚洲高清av | 国产黄色精品视频 | 国产一区免费在线观看 | www国产一区| av福利资源 | 四虎永久视频 | 日韩一区二区在线免费观看 | 久久久久高清 | 欧美在线视频免费 | 超碰成人免费电影 | 国产短视频在线播放 | 成人a级免费视频 | 国产精品美女视频 | 亚洲爱av| 国产福利在线 | 久久精品视频在线免费观看 | 九九视频在线观看视频6 | 二区三区精品 | 波多野结衣在线播放一区 | 特级毛片网站 | 亚洲人久久久 | 极品久久久久久久 | 91精品中文字幕 | 激情五月婷婷激情 | 国产乱码精品一区二区蜜臀 | 91精品视屏 | 麻豆视频国产精品 | 日韩欧美在线观看 | 午夜视频不卡 | 日韩爱爱片 | 日日夜夜av | 精品国产伦一区二区三区免费 | 国产精品久久艹 | 男女激情麻豆 | 日本韩国中文字幕 | 黄色一区三区 | 午夜在线免费观看视频 | 亚洲一级黄色大片 | 国产精在线 | 国产91精品在线播放 | 国产一级在线视频 | 麻豆免费在线播放 | 精品产品国产在线不卡 | 99久久精品国产亚洲 | 狠狠色伊人亚洲综合网站色 | 96av在线视频 | 日韩精品在线播放 | 色婷婷骚婷婷 | 亚洲欧洲成人精品av97 | 久久精彩视频 | 久久免费a | 中文视频在线播放 | 成人黄色毛片 | 免费黄a | 亚洲精品美女久久17c | 丁香花在线视频观看免费 | 午夜国产福利在线观看 | 天天色天天骑天天射 | 国产小视频91 | 国产精品视频久久 | 六月激情 | 网站在线观看你们懂的 | 天天综合网~永久入口 | 免费黄色网址大全 | 国际精品久久久久 | 国产精品激情 | 热久久影视 | 亚洲精品午夜久久久 | 一级淫片在线观看 | 精品亚洲成a人在线观看 | 日韩久久激情 | 国产精品99久久久久久武松影视 | 成人av播放 | 在线视频 区 | 久久成人国产精品 | 日本中文字幕在线观看 | 91试看 | 奇米网网址 | 亚洲精品动漫成人3d无尽在线 | 999成人国产 | 久热免费在线观看 | 精品久久久久久亚洲综合网 | 天天天色综合 | 亚洲最快最全在线视频 | 一区二区三区四区五区在线视频 | 久久免费看视频 | 成人四虎影院 | 午夜影视剧场 | 国产成人精品aaa | 色搞搞 | 日韩免费不卡av | 国产明星视频三级a三级点| 久久影院午夜论 | 色综合久久综合网 | 中文字幕欧美三区 | 在线看毛片网站 | 国产精品视频免费在线观看 | wwwwww国产 | 婷婷色吧| 在线日韩视频 | 色是在线视频 | 永久免费的啪啪网站免费观看浪潮 | 久久精品91视频 | 97色国产| 狠狠色丁香久久婷婷综合五月 | 久久综合影视 | 国产伦精品一区二区三区照片91 | 久久成人综合视频 | 成年人毛片在线观看 | 在线观看韩日电影免费 | 精品嫩模福利一区二区蜜臀 | 色av资源网 | 丝袜美腿一区 | 免费视频97 | 午夜精品久久一牛影视 | 福利久久久 | 9999在线视频 | 中文字幕人成乱码在线观看 | 成人午夜免费剧场 | av青草| 四虎精品成人免费网站 | 久久免费电影网 | 人人爱爱人人 | 色综合网| 91成人在线网站 | 国产精品一区二区三区在线看 | 99精品热视频只有精品10 | 午夜在线看片 | 天天操天天射天天操 | 免费亚洲精品视频 | 久久黄色影院 | 91在线日本| 国内精品视频在线播放 | 日韩免费视频线观看 | 亚洲国产97在线精品一区 | 中文在线a天堂 | 天天综合网天天综合色 | 婷婷视频在线观看 | 亚洲天堂网站 | 黄色av一区二区 | 欧美日韩91 | 麻豆视频在线观看免费 | 久久九九影视网 | 国产亚洲精品久久久久久无几年桃 | 久久国产精品视频免费看 | 成年人在线播放视频 | 亚洲区色 | 免费看片成年人 | 天天综合天天做天天综合 | 国产精品福利午夜在线观看 | 狠狠躁日日躁夜夜躁av | 中文字幕色网站 | 色丁香综合 | 国产在线观看 | 亚洲,播放 | 草久草久 | 麻豆久久精品 | 国产黄网在线 | 日日夜夜天天综合 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 看黄色91 | 中文字幕在线一区二区三区 | 久久婷婷色 | 欧美激情视频久久 | 成人性生交大片免费看中文网站 | 尤物一区二区三区 | 久久精品国产成人 | 亚洲年轻女教师毛茸茸 | 制服丝袜在线91 | 国产黄色片久久 | 人人网av| 亚洲精品国产精品乱码在线观看 | 久久国产精品区 | 久久综合免费视频 | 日韩理论在线观看 | 久久毛片网 | 一区二区三区四区在线 | 国产成人精品区 | 在线91视频 | 国产免费不卡 | 国产精品一区二区久久精品 | 成人免费视频视频在线观看 免费 | 成人小电影在线看 | 黄a网 | 天堂av免费观看 | 18岁免费看片 | 免费毛片aaaaaa | 99精品网站 | 日日干天天爽 | 人人干网站 | 91福利视频一区 | 亚洲精品视频网址 | 欧美色一色 | 国产视频亚洲精品 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 欧美精品少妇xxxxx喷水 | 狠狠色丁香久久婷婷综合五月 | 美女网站在线免费观看 | 亚州精品在线视频 | 乱子伦av| 黄色成人av网址 | 一二三精品视频 | 国内精品久久久 | 96国产在线 | 中文字幕在线观看完整 | 国产成人一区二区在线观看 | 人人草天天草 | 久久,天天综合 | 日韩在线免费电影 | 国产专区在线看 | www.香蕉视频 | 中文字幕精 | 激情五月婷婷丁香 | 中文字幕在线观看完整版 | 97超碰资源站| 国产精品永久久久久久久www | 国产日韩精品一区二区三区 | 在线观看的黄色 | 欧美精品在线视频 | 日韩理论电影在线观看 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 久久超级碰视频 | 久久国产精品久久久 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 波多野结衣资源 | 久久久久久久久久久高潮一区二区 | 国产在线国偷精品产拍 | 日韩免费一区二区 | 国产精品99久久99久久久二8 | 99久热在线精品视频成人一区 | 97操碰 | 高清av在线| 中文字幕在线免费97 | 亚洲乱亚洲乱妇 | 国产裸体永久免费视频网站 | 99久久国产免费免费 | 精品久久久久一区二区国产 | 亚洲另类视频在线观看 | 狠狠色丁香久久综合网 | 欧美精品久久人人躁人人爽 | 成人久久18免费网站麻豆 | 有码一区二区三区 | 在线观看视频免费大全 | 免费特级黄毛片 | 中文字幕婷婷 | 99视频在线 | 欧美另类交在线观看 | 久久婷婷一区二区三区 | 97人人超碰在线 | 欧美最猛性xxxx | 国产精品视频 | 欧美日韩精品在线一区二区 | 久久久蜜桃一区二区 | www.色午夜,com | 亚洲精品乱码久久久久v最新版 | 国产一区欧美一区 | 国产成人一区二区三区久久精品 | 一级欧美一级日韩 | 国产玖玖精品视频 | 日韩激情一二三区 | 欧美日韩国产一区二区在线观看 | 在线免费黄色片 | 国产理伦在线 | 国产一级片免费观看 | 激情在线网址 | 日本久久精品 | 91亚洲欧美激情 | 国产高清一区二区 | 久久精品亚洲精品国产欧美 | 国产一级在线免费观看 | 免费av观看网站 | 伊甸园永久入口www 99热 精品在线 | 亚洲成人二区 | 精品欧美乱码久久久久久 | 夜夜高潮夜夜爽国产伦精品 | 免费网站观看www在线观看 | 成人在线超碰 | 这里有精品在线视频 | 中文字幕第一页在线 | 97色se| 免费在线观看黄色网 | 欧美精品久久久久久久久久 | 欧美精品午夜 | 手机看片国产日韩 | 精品免费一区 | 黄色在线免费观看网站 | 免费a v在线 | 九九国产视频 | 国产黄色成人 | 欧美日韩中字 | 久久国产精品免费 | 久草在线在线视频 | 成年人在线看片 | 亚洲一区精品二人人爽久久 | 开心激情婷婷 | 最近日本韩国中文字幕 | 日韩 在线观看 | 久久久美女 | 福利视频第一页 | 久久免费大片 | 日本在线精品视频 | 亚洲精品久久久久中文字幕m男 | 久久精品国产亚洲精品 | 日韩免费视频在线观看 | 狠狠狠色丁香综合久久天下网 | 天天天天爱天天躁 | 91av电影在线 | 欧美日韩视频一区二区三区 | 500部大龄熟乱视频 欧美日本三级 | 午夜少妇av| 国产精品18久久久久白浆 | 久久字幕精品一区 | 久久精彩免费视频 | 日本aaaa级毛片在线看 | 国产一区高清在线 | 99九九视频 | 成人av在线一区二区 | av成人在线看 | 日韩在线观看你懂的 | 精品久久久久久综合日本 | 日韩网站在线看片你懂的 | 二区三区在线 | 国产电影黄色av | 日韩高清一二三区 | 国产在线a不卡 | 我要色综合天天 | 狠狠色丁香久久婷婷综合_中 | 丁香婷婷激情 | 国产青草视频在线观看 | 97视频免费观看 | 嫩草91影院 | 中文区中文字幕免费看 | 精品在线视频观看 | 国产一区二区不卡在线 | 激情在线免费视频 | 国产精品18久久久 | 欧美久久成人 | 狠狠的干狠狠的操 | 一区二区三区播放 | 在线观看av中文字幕 | 国产精品一区二区三区电影 | 久艹在线观看视频 | 91精品资源 | 国产亚洲综合性久久久影院 | 成人精品一区二区三区电影免费 | 在线观看免费成人av | 人人爽人人射 | 久久影院一区 | 在线观看的黄色 | 这里只有精品视频在线 | 国偷自产中文字幕亚洲手机在线 | 国产精品久久久久四虎 | www.午夜| 在线观看成人国产 | 日韩高清精品一区二区 | 激情综合一区 | 免费观看9x视频网站在线观看 | www.在线观看av | 伊人欧美 | 丁香花五月 | 亚洲人精品午夜 | 99久国产 | 天天射天天 | 在线观看国产亚洲 | 国产精品aⅴ | 色a综合| 亚洲国产精品人久久电影 | 久久国产精品精品国产色婷婷 | 久久99精品久久久久婷婷 | 国产精品123| 麻豆免费视频 | 国产黄色在线网站 | 综合在线色 | 国内精品中文字幕 | 亚洲精品免费播放 | 成人aaa毛片| 亚在线播放中文视频 | 婷婷日日 | 九九电影在线 | 国产精品一区二区久久久 | 亚洲资源网 | 99这里精品| 免费成人结看片 | 亚洲理论片在线观看 | 天天做日日爱夜夜爽 | 欧美国产精品久久久久久免费 | 午夜久久久久久久久久影院 | 人人看人人艹 | 99热国产在线 | 欧美日韩国产伦理 | 一区二区三区四区精品 | 911久久香蕉国产线看观看 | 精品国产a | 日韩在线视频看看 | 亚洲精品视频在线观看视频 | 久久久久久久久免费 | 五月天六月婷婷 | 中文字幕免费久久 | 99成人在线视频 | 天天干天天干天天 | 在线视频欧美亚洲 | 中文字幕精品久久 | 久久亚洲精品电影 | 国产精品入口麻豆 | av免费电影在线观看 | 国产精品免费一区二区三区在线观看 | 人人澡人人爱 | 9999国产精品| 久久婷婷一区二区三区 | a视频免费在线观看 | 国产69精品久久久久99 | 国内精品免费 | 国产高清在线a视频大全 | 天天综合网国产 | 不卡的av电影 | 欧美性精品 | 五月天开心 | 久久久国产影院 | 久久久久久网址 | 国产做aⅴ在线视频播放 | 欧美一区二区在线 | 国产高清视频 | 久久视频中文字幕 | 欧美日韩一区二区三区在线观看视频 | 成年人电影免费在线观看 | 狠狠色丁香婷婷综合橹88 | 亚洲国产午夜精品 | 九九视频精品免费 | 久久国产精品一区二区 | 色妞色视频一区二区三区四区 | 久久网页| 黄色三级网站 | 激情五月五月婷婷 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 久久久久久久亚洲精品 | 嫩草91影院 | 色福利网| 婷婷六月天天 | 日韩99热| 日韩va欧美va亚洲va久久 | av五月婷婷 | 成人黄色片免费看 | 麻豆超碰 | 亚洲精品小视频 | 97在线看片 | 91大神精品视频在线观看 | 亚洲精品乱码久久久久久写真 | 成年人免费在线 | 免费观看全黄做爰大片国产 | 在线黄色观看 | 久久婷婷久久 | 奇米先锋 | 国产亚洲精品美女久久 | 亚洲成人动漫在线观看 | 99精品国产aⅴ | 国产尤物在线观看 | 丝袜美腿在线播放 | 中文乱幕日产无线码1区 | 国产午夜影院 | www国产亚洲精品 | 五月天婷婷丁香花 | 在线观看91av | 97国产精品久久 | 日日噜噜噜噜夜夜爽亚洲精品 | 成人一区在线观看 | 日本在线观看中文字幕 | 91视频专区| 国产精品福利久久久 | 国产福利电影网址 | 久久久久久久影视 | 亚洲自拍av在线 | 日本精品视频免费观看 | 日本激情视频中文字幕 | 亚洲 成人 一区 | 亚洲精品美女久久17c | 丁香六月在线 | 国产午夜精品理论片在线 | 久久久久久久免费观看 | 黄色av电影网 | 激情综合交 | 99视频在线精品免费观看2 | 国产精品女同一区二区三区久久夜 | 天天爱天天操 | 婷婷综合视频 | 亚洲v精品| 国产精品欧美日韩在线观看 | 五月天丁香 | 丁香婷婷在线 | 国产九九在线 | 国产在线精品播放 | 国产精品麻豆果冻传媒在线播放 | 日韩电影中文,亚洲精品乱码 | a视频在线播放 | 亚洲香蕉视频 | 粉嫩高清一区二区三区 | 欧美激情片在线观看 | 免费视频 三区 | 成人av免费在线 | 国产特黄色片 | 久久免费看a级毛毛片 | 亚洲精品久 | 国产流白浆高潮在线观看 | 天堂中文在线视频 | 亚洲午夜精品在线观看 | 久久精品这里精品 | 国产成人久久久77777 | 97超碰影视| 丁香婷婷久久 | 久久优 | 国产精品av在线 | 国产精品视频app | 国产精品理论片在线播放 | 中文字幕之中文字幕 | 成人免费网站在线观看 | 国产精品99久久久久久久久 | 视频二区在线 | 91尤物国产尤物福利在线播放 | 97电影网站| 久久99最新地址 | 激情开心站 | 国产中文视频 | 婷婷色网站 | 婷婷激情在线 | 久久久久久久久久久影院 | 色五月成人 | 日韩成人中文字幕 | 久久久久免费观看 | 精品久久久久久亚洲综合网站 | 中文字幕 第二区 | 99热手机在线观看 | 欧美久久电影 | 色国产视频 | 91在线看黄| a级片久久久 | 天天射网 | 久久久穴 | 欧美日韩高清一区二区 | 成人av一区二区三区 | 玖玖在线资源 | 米奇狠狠狠888| 亚洲夜夜爽| 国产高清在线观看av | 97成人免费 | 久久久综合香蕉尹人综合网 | 九月婷婷人人澡人人添人人爽 | 日韩欧美一区二区三区在线 | 黄色aaaaa| 免费看的毛片 | 国产精品久久一区二区三区不卡 | 成年人天堂com | 亚洲精品视频在线播放 | 香蕉视频在线免费看 | 久久综合久久八八 | 99精品视频99| 久久国产精品小视频 | 91成人在线视频 | 二区三区在线观看 | 91精品国产99久久久久久红楼 | 国产日韩精品一区二区三区在线 | 91成年人在线观看 | 97视频免费看 | 91精品区 | 欧美日韩性视频在线 | 日韩剧情 | 日韩一区二区三区高清免费看看 | 国产精品女 | 992tv在线观看 | 国产又黄又爽无遮挡 | 国产精品久久久久久久免费观看 | 黄色片视频免费 | 亚洲天堂网视频 | 国产精品一区二 | 干亚洲少妇 | 久草在线国产 | 国产精品嫩草影院9 | 免费在线观看av网站 | 成人午夜电影久久影院 | www日韩视频 | 91热在线 | 久久国产手机看片 | 国内丰满少妇猛烈精品播放 | 日韩丝袜在线观看 | 日韩高清免费在线观看 | av资源网在线播放 | 国产激情久久久 | 成人小视频免费在线观看 | 国产91精品高清一区二区三区 | 91视频高清免费 | 国产视频2 | 亚洲成人av片 | 最近的中文字幕大全免费版 | 精品一区精品二区高清 | 欧美日韩国产综合网 | 9797在线看片亚洲精品 | 在线a视频免费观看 | 在线免费av网站 | 久久成人黄色 | 欧美日高清视频 | 久久第四色 | 国产精品入口66mio女同 | 免费黄色激情视频 | 97看片网| 欧美精品v国产精品v日韩精品 | 国产资源av | 奇米7777狠狠狠琪琪视频 | 日韩在线一区二区免费 | 97超碰超碰久久福利超碰 | 中文字幕亚洲综合久久五月天色无吗'' | 六月丁香综合 | 97福利| 国产精品18videosex性欧美 | 99热最新在线 | 五月天激情综合 | 懂色av懂色av粉嫩av分享吧 | 成人黄色大片在线观看 | 黄色一级免费网站 | 成人a大片| 亚洲一级黄色 | 欧美一级特黄高清视频 | 亚洲欧美精品在线 | 手机在线看a | 国产一级视频在线 | 国产精品成人一区二区三区 | 国产精品免费不卡 | 五月天婷婷免费视频 | 亚洲另类久久 | 色无五月 | 91av网址 | 久久99日韩 | 国内精品久久久久影院一蜜桃 | 五月天综合色 | 免费在线观看污网站 | 国产资源 | 午夜一级免费电影 | 美女黄色网在线播放 | 国产999精品 | 久青草国产在线 | 一级一片免费看 | 日韩精品免费一线在线观看 | 久久免费99精品久久久久久 | 一区二区激情视频 | 国产精品毛片一区二区 | 在线观看国产 | 综合天堂av久久久久久久 | 国产精品一区二区久久久久 | 日本公妇在线观看 | 国产精品一区二区av影院萌芽 | 最近日本中文字幕a | 91黄站| 91麻豆精品国产91久久久久久久久 | 亚洲草视频 | 五月婷香蕉久色在线看 | 日韩av一区二区在线播放 | www.久久久.com| 久久久综合电影 | 成人毛片在线视频 | 香蕉久久国产 | 中国一级特黄毛片大片久久 | 黄色a大片| 亚洲日本va在线观看 | 欧美精品久久久久久久久免 | 日韩高清dvd | 国产精品www| 免费观看黄色av | 波多野结衣在线观看视频 | 日韩天天综合 | 国产小视频在线观看免费 | 久久婷婷视频 | 综合精品久久久 | 精品视频99 | 超碰97国产精品人人cao | 欧美色伊人 | 国产亚州av | 狠狠撸电影 | 欧美日韩国产一区二区三区在线观看 | 亚洲精品日韩一区二区电影 | 正在播放国产精品 | 欧美精品免费一区二区 | 久久精品99国产精品日本 | 在线观看一级视频 | 五月天久久狠狠 | 人人爽人人爽人人爽学生一级 | 久久精品国产一区二区 | 婷婷综合av | 亚洲九九九在线观看 | 日本不卡一区二区 | 亚洲精欧美一区二区精品 | 日本精品视频一区二区 | 欧美午夜a| 国内视频1区| 国产99区 | 久久久久免费精品视频 | 狠狠色噜噜狠狠狠 | 日韩欧美综合精品 | 91亚洲综合 | 欧美激情综合色综合啪啪五月 | 精品免费视频. | 美女福利视频网 | 伊人午夜 | 91原创在线观看 | 日韩国产精品一区 | 美女在线免费观看视频 | 最新av在线免费观看 | 66av99精品福利视频在线 | 精品久久精品 | 国产手机视频精品 | 久久开心激情 | 成片人卡1卡2卡3手机免费看 | 一区二区三区高清在线 | 久久爽久久爽久久av东京爽 | 中文字幕亚洲在线观看 | 天天色天天射天天干 | 色哟哟国产精品 | 久久论理 | 日本精品午夜 | 日日草夜夜操 | 国产精品视频app | 97品白浆高清久久久久久 | 91久久国产露脸精品国产闺蜜 | 成人一级黄色片 | 国产亚洲精品v | 亚洲乱码精品久久久久 | 五月婷婷六月丁香 | 免费 在线 中文 日本 | 国产尤物一区二区三区 | 天堂黄色片| 久久人人爽av | 99久e精品热线免费 99国产精品久久久久久久久久 | 婷婷丁香激情 | 国产精品福利av | 国产精品一区二区三区视频免费 | 中文字幕无吗 | 亚洲午夜久久久久久久久电影网 | 亚洲视频播放 | .精品久久久麻豆国产精品 亚洲va欧美 | 亚洲精品资源 | 综合在线观看 | 最近免费中文字幕大全高清10 | 国产亚洲在线 | 五月开心六月婷婷 | 久久好看免费视频 | 九色琪琪久久综合网天天 | 久久综合给合久久狠狠色 | 成人性生交视频 | 99热这里只有精品8 久久综合毛片 | 91精品一区二区三区久久久久久 | 成人cosplay福利网站 | 欧美日韩xxxxx | 欧美另类tv| 亚洲精品国产精品乱码在线观看 | 欧美在线free | 一区二区理论片 | 天天操天天射天天插 | 在线观看成年人 | 久久99久久精品国产 | 色亚洲激情 | 亚洲国产成人av网 | 一区二区三区高清 | 久久99久久99久久 | 一区二区三区在线观看免费视频 | 91亚洲在线| 亚洲日本激情 | 伊人午夜视频 | 99在线观看 | 久久伊人精品一区二区三区 | 中文字幕亚洲精品在线观看 | 在线观看中文字幕av | 国产精品精品国产婷婷这里av | 中文字幕在线观看亚洲 | 亚洲激情国产精品 | 热99在线 | 九九久久电影 | 国产成人在线观看免费 | 欧美亚洲一级片 | 在线免费观看黄网站 | 96久久 | 成人国产亚洲 | 国产高清av免费在线观看 | 天天操天天爱天天干 | 久久久久久久久亚洲精品 | 亚洲区另类春色综合小说校园片 | 久久国色夜色精品国产 | 亚洲理论影院 | 亚洲不卡av一区二区三区 | 久99久中文字幕在线 | 国产无遮挡又黄又爽在线观看 | 玖玖国产精品视频 | 激情av在线播放 | 日本韩国精品一区二区在线观看 | 久久在视频 | 久久精品视频网站 | 美女视频久久 | 三级在线视频观看 | 日本护士三级少妇三级999 | 九九热精品在线 | 国产精品视频久久久 | 在线综合 亚洲 欧美在线视频 | 国产成人一区二区三区久久精品 | 五月天中文字幕mv在线 | 国产又粗又猛又黄又爽 | 欧美伊人网| 日韩大片在线免费观看 | www久久99 | 国产精品2020 | 日韩a在线观看 | 欧美福利精品 | 国产免费观看久久 | 国产成人亚洲在线观看 | 久久久网页 | 国产免费成人 | 国产伦理一区二区三区 | 国产99久久久国产精品免费看 | 国产视频黄 | 国产精品a成v人在线播放 | 99综合电影在线视频 | 日夜夜精品视频 | 五月婷婷在线视频观看 | 黄色a视频 | 色综合 久久精品 | 成人香蕉视频 | 中文字幕高清有码 | 日本视频精品 | 深夜激情影院 | 国产美女在线精品免费观看 | 丰满少妇高潮在线观看 | 成人免费看黄 | 国产成人a亚洲精品 | 福利视频一区二区 | 欧美性生活小视频 | 中文在线a∨在线 | 日韩电影在线看 | 99视频一区二区 | 免费观看一级 | 免费av的网站 | 亚洲精品小视频 | 亚洲国产无 | 亚洲精品国产成人av在线 | 国产黄色电影 | 911香蕉视频| 在线国产视频 | 亚洲欧美日韩在线看 | 美女国产 | 亚洲精品视频大全 | 成年人电影毛片 | 久久久国产精品一区二区三区 | 色婷婷狠狠操 | 91中文字幕在线视频 | 欧美日韩91 | 久久99久久99精品免费看小说 |