精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HTTP 2.0 為什么這么設(shè)計(jì)

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
我們知道,HTTP 的下層協(xié)議是 TCP,需要經(jīng)歷三次握手才能建立連接。而 HTTP 1.0 的時(shí)候一次請(qǐng)求和響應(yīng)結(jié)束就會(huì)斷開(kāi)鏈接,這樣下次請(qǐng)求又要重新三次握手來(lái)建立連接。

HTTP 1.0 是 1996 年發(fā)布的,奠定了 web 的基礎(chǔ)。時(shí)隔三年,1999 年又發(fā)布了 HTTP

1.1,對(duì)功能上做了擴(kuò)充。之后又時(shí)隔十六年,2015 年發(fā)布了 HTTP 2.0。

同學(xué)們肯定會(huì)覺(jué)得,隔了這么長(zhǎng)時(shí)間,而且還從版本號(hào)還從 1 到了 2,那肯定有很多的新功能。其實(shí)不是的,HTTP 2.0 沒(méi)有沒(méi)有功能上的新增,只是優(yōu)化了性能。

為什么要這么大的版本升級(jí)來(lái)優(yōu)化性能,HTTP 1.1 的性能很差么?

那我們就來(lái)看下 HTTP 1.1 有什么問(wèn)題:

HTTP 1.1 的問(wèn)題

我們知道,HTTP 的下層協(xié)議是 TCP,需要經(jīng)歷三次握手才能建立連接。而 HTTP 1.0 的時(shí)候一次請(qǐng)求和響應(yīng)結(jié)束就會(huì)斷開(kāi)鏈接,這樣下次請(qǐng)求又要重新三次握手來(lái)建立連接。

圖片

為了減少這種建立 TCP 鏈接的消耗,HTTP 1.1 支持了 keep-alive,只要請(qǐng)求或響應(yīng)頭帶上 Connection: keep-alive,就可以告訴對(duì)方先不要斷開(kāi)鏈接,我之后還要用這個(gè)鏈接發(fā)消息。當(dāng)需要斷開(kāi)的時(shí)候,再指定 Connection: close 的 header。

這樣就可以用同一個(gè) TCP 鏈接進(jìn)行多次 HTTP 請(qǐng)求響應(yīng)了:

圖片

但這樣雖然減少了鏈接的建立,在性能上卻有問(wèn)題,下次請(qǐng)求得等上一個(gè)請(qǐng)求返回響應(yīng)才能發(fā)出。

這個(gè)問(wèn)題有個(gè)名字,叫做隊(duì)頭阻塞,很容易理解,因?yàn)槎鄠€(gè)請(qǐng)求要排隊(duì)嘛,隊(duì)前面的卡住了,那后面的也就執(zhí)行不了了。

怎么解決這個(gè)問(wèn)題呢?

HTTP 1.1 提出了管道的概念,就是多個(gè)請(qǐng)求可以并行發(fā)送,返回響應(yīng)后再依次處理。

也就是這樣:

圖片

其實(shí)這樣能部分解決問(wèn)題,但是返回的響應(yīng)依然要依次處理,解決不了隊(duì)頭阻塞的問(wèn)題。

所以說(shuō)管道化是比較雞肋的一個(gè)功能,現(xiàn)在絕大多數(shù)瀏覽器都默認(rèn)關(guān)閉了,甚至都不支持。

那還能怎么解決這個(gè)隊(duì)頭阻塞的問(wèn)題呢?

開(kāi)多個(gè)隊(duì)不就行了。

瀏覽器一般會(huì)同一個(gè)域名建立 6-8 個(gè) TCP 鏈接,也就是 6-8 個(gè)隊(duì),如果一個(gè)隊(duì)發(fā)生隊(duì)頭阻塞了,那就放到其他的隊(duì)里。

這樣就緩解了隊(duì)頭阻塞問(wèn)題。

我們寫(xiě)的網(wǎng)頁(yè)想盡快的打開(kāi)就要利用這一點(diǎn),比如把靜態(tài)資源部署在不同的域名下。這樣每個(gè)域名都能并發(fā) 6-8 個(gè)下載請(qǐng)求,網(wǎng)頁(yè)打開(kāi)的速度自然就會(huì)快很多。

這種優(yōu)化手段叫做“域名分片”,CDN 一般都支持這個(gè)。

除了隊(duì)頭阻塞的問(wèn)題,HTTP 1.1 還有沒(méi)有別的問(wèn)題?

有,比如 header 部分太大了。

不知道大家有沒(méi)有感覺(jué),就算你內(nèi)容只傳輸幾個(gè)字符,也得帶上一大堆 header:

圖片

而且這些 header 還都是文本的,這樣占據(jù)的空間就格外的大。

比如,如果是二進(jìn)制,表示 true 和 false 直接 1 位就行了,而文本的那就得經(jīng)過(guò)編碼,“true” 就占了 4 個(gè)字節(jié),也就是 32 位。那就是 32 倍的差距呀!

所以呢,HTTP 1.1 的時(shí)候,我們就要盡量避免一些小請(qǐng)求,因?yàn)榫退阏?qǐng)求的內(nèi)容很少,也會(huì)帶上一大段 header。特別是有 cookie 的情況,問(wèn)題格外明顯。

因此,我們的網(wǎng)頁(yè)就要做打包,也就是需要打包工具把模塊合并成多個(gè) chunk 來(lái)加載。需要把小圖片合并成大圖片,通過(guò)調(diào)整 background:position 來(lái)使用。需要把一些 css、圖片等內(nèi)聯(lián)。而且靜態(tài)資源的域名也要禁止攜帶 cookie。

這些都是為了減少請(qǐng)求次數(shù)來(lái)達(dá)到提高加載性能的目的。

而且 HTTP 的底層是 TCP,其實(shí)是可以雙向傳輸數(shù)據(jù)的,現(xiàn)在卻只能通過(guò)請(qǐng)求---響應(yīng)這種一問(wèn)一答的方式,并沒(méi)有充分利用起 TCP 的能力。

聊了這么多,不知道大家是否有優(yōu)化它的沖動(dòng)了。

也就是因?yàn)檫@些問(wèn)題,HTTP 2.0 出現(xiàn)了,做了很多性能優(yōu)化,基本解決了上面那些問(wèn)題。

那 HTTP2 都做了哪些優(yōu)化呢?

HTTP 2.0 的優(yōu)化

先不著急看 HTTP 2.0 是怎么優(yōu)化的,就上面那些問(wèn)題來(lái)說(shuō),如果讓我們解決,我們會(huì)怎么解決?

比如隊(duì)頭阻塞的問(wèn)題,也就是第二個(gè)響應(yīng)要等第一個(gè)響應(yīng)處理完之后才能處理。怎么解決?

這個(gè)很容易解決呀,每個(gè)請(qǐng)求、響應(yīng)都加上一個(gè) ID,然后每個(gè)響應(yīng)和通過(guò) ID 來(lái)找到它對(duì)應(yīng)的請(qǐng)求。各回各家,自然就不用阻塞的等待了。

再比如說(shuō) header 過(guò)大這個(gè)問(wèn)題,怎么解決?

文本傳輸太占空間,換成二進(jìn)制的是不是會(huì)好很多。

還有,每次傳輸都有很多相同的 header,能不能建立一張表,傳的時(shí)候只傳輸下標(biāo)就行了。

還有,body 可以壓縮,那 header 是不是可以壓縮。

這樣處理之后,應(yīng)該會(huì)好很多。

那沒(méi)有充分利用 TCP 的能力,只支持請(qǐng)求--響應(yīng)的方式呢?

那就支持服務(wù)端主動(dòng)推送呀,但是客戶端可以選擇接收或者不接收。

上面是我們對(duì)這些問(wèn)題的解決方案的思考,我們?cè)賮?lái)看看 HTTP2 是怎么解決這些問(wèn)題的:

HTTP2 確實(shí)是通過(guò) ID 把請(qǐng)求和響應(yīng)關(guān)聯(lián)起來(lái)了,它把這個(gè)概念叫做流 stream。

而且我們之前說(shuō)了 header 需要單獨(dú)的優(yōu)化嘛,所以把 header 和 body 部分分開(kāi)來(lái)傳送,叫做不同的幀 frame。

每個(gè)幀都是這樣的格式:

圖片

payload 部分是傳輸?shù)膬?nèi)容這沒(méi)啥可說(shuō)的。

header 部分最開(kāi)始是長(zhǎng)度,然后是這個(gè)幀的類型,有這樣幾種類型:

  • SETTINGS 幀:配置信息,比如最大幀 size,是否支持 server push 等。
  • HEADERS 幀:請(qǐng)求或響應(yīng)的 header。
  • DATA 幀:請(qǐng)求或響應(yīng)的 body。
  • CONTINUATION 幀:一個(gè)幀不夠裝的時(shí)候,可以分幀,用這個(gè)可以引用上一個(gè)幀。
  • PUSH_PROMISE 幀:服務(wù)端推送數(shù)據(jù)的幀。
  • END_STREAM 幀:表示流傳輸結(jié)束。
  • RST_STREAM 幀,用來(lái)終止當(dāng)前流。

這幾種幀里面 HEADERS 和 DATA 幀沒(méi)啥可說(shuō)的。

SETTING 幀是配置信息,先告訴對(duì)方我這里支持什么,幀大小設(shè)置為多大等。

幀大小是有個(gè)上限的,如果幀太大了,可以分成多個(gè),這時(shí)候幀類型就是 CONTINUATION(繼續(xù))。也很容易理解。

HTTP2 確實(shí)是支持服務(wù)端推送的,這時(shí)候幀類型也是單獨(dú)的,叫做 PUSH_PROMISE。

流是用來(lái)傳輸請(qǐng)求響應(yīng)或者服務(wù)端推送的,那傳輸完畢的時(shí)候就可以發(fā)送 END_STREAM 幀來(lái)表示傳輸完了,然后再傳輸 RST_STREAM

來(lái)結(jié)束當(dāng)前流。

幀的類型講完了,我們繼續(xù)往后看,后面還有個(gè) flags 標(biāo)志位,這個(gè)在不同的幀類型里會(huì)放不同的內(nèi)容:

圖片

比如 header 幀會(huì)在 flags 中設(shè)置優(yōu)先級(jí),這樣高優(yōu)先級(jí)的流就可以更早的被處理。

HTTP 1.1 的時(shí)候都是排隊(duì)處理的,沒(méi)什么優(yōu)先級(jí)可言,而 HTTP 2.0 通過(guò)流的方式實(shí)現(xiàn)了請(qǐng)求的并發(fā),那自然就可以控制優(yōu)先級(jí)了。

后面還有個(gè) R,這個(gè)現(xiàn)在還沒(méi)啥用,是一個(gè)保留的位。

再后面的流標(biāo)識(shí)符就是 stream id 了,關(guān)聯(lián)同一個(gè)流的多個(gè)幀用的。

幀的格式講完了,大家是不是有點(diǎn)暈暈的。確實(shí),幀還是有很多種的。這些幀之間發(fā)送順序也不同,不同的幀會(huì)在不同狀態(tài)下發(fā)送,也會(huì)改變流的狀態(tài)。

我們來(lái)看下流的狀態(tài)機(jī),也就是流收到什么幀會(huì)進(jìn)入什么狀態(tài),并且在什么狀態(tài)下會(huì)發(fā)送什么幀:

(看不明白可以先往后看)

圖片

剛開(kāi)始,流是 idle 狀態(tài),也就是空閑。

收到或發(fā)送 HEADERS 幀以后會(huì)進(jìn)入 open 狀態(tài)。

oepn 狀態(tài)下可以發(fā)送或接收多次 DATA 幀。

之后發(fā)送或接收 END_STREAM 幀進(jìn)入 half_closed 狀態(tài)。

half_closed 狀態(tài)下收到或者發(fā)送 RST_STREAM 幀就關(guān)閉流。

這個(gè)流程很容易理解,就是先發(fā)送 HEADER,再發(fā)送 DATA,之后告訴對(duì)方結(jié)束,也就是 END_STREAM,然后關(guān)閉 RST_STREAM。

圖片

但是 HTTP2 還可以服務(wù)端推送呀,所以還有另一條狀態(tài)轉(zhuǎn)換流程。

流剛開(kāi)始是 idle 狀態(tài)。

接收到 PUSH_PROMISE 幀,也就是服務(wù)端推送過(guò)來(lái)的數(shù)據(jù),變?yōu)?reserved 狀態(tài)。

reserved 狀態(tài)可以再發(fā)送或接收 header,之后進(jìn)入 half_closed 狀態(tài)。

后面的流程是一樣的,也是 END_STREAM 和 RST_STREAM。

這個(gè)流程是 HTTP2 特有的,也就是先推送數(shù)據(jù),再發(fā)送 headers,然后結(jié)束流。

圖片

這就是 http2 發(fā)送一次請(qǐng)求、響應(yīng),或者一次服務(wù)端推送的流程,都是封裝在一個(gè)個(gè)流里面的。

流和流之間可以并發(fā),還可以設(shè)置優(yōu)先級(jí),這樣自然就沒(méi)有了隊(duì)頭阻塞的問(wèn)題,這個(gè)特性叫做多路復(fù)用。也就是復(fù)用同一個(gè)鏈接,建立起多條通路(流)的意思。

而且傳輸?shù)?header 幀也是經(jīng)過(guò)處理的,就像我們前面說(shuō)的,會(huì)用二進(jìn)制的方式表示,用做壓縮,而且壓縮算法是專門(mén)設(shè)計(jì)的,叫做 HPACK:

兩端會(huì)維護(hù)一個(gè)索引表,通過(guò)下標(biāo)來(lái)標(biāo)識(shí) header,這樣傳輸量就少了不少:

圖片

首先,header 里其實(shí)不止有 header,還有一行 GET xxx/xxx 的請(qǐng)求行,和 200 xxx 的響應(yīng)行,為了統(tǒng)一處理,就換成了 :host :path 等 header 來(lái)表示。

這樣發(fā)送的時(shí)候只需要發(fā)送下標(biāo)就行:

圖片

比如 :method: get 就只需要發(fā)送個(gè) 2: get。

這個(gè)編碼也是根據(jù)頻率高低來(lái)設(shè)置的,頻率高的用小編碼,這種方式叫做哈夫曼編碼。

這樣就實(shí)現(xiàn)了 header 的壓縮。

至此, HTTP2.0 的主要特性就講完了,也就是多路復(fù)用,服務(wù)端推送,頭部壓縮,二進(jìn)制傳輸。

最主要的特性是多路復(fù)用,也就是流和幀,流在什么狀態(tài)下發(fā)送什么幀。其他的特性是圍繞這個(gè)來(lái)設(shè)計(jì)的。

回過(guò)頭來(lái)看一下 HTTP1.1 的問(wèn)題是否都得到了解決:

隊(duì)頭阻塞:通過(guò)流的來(lái)標(biāo)識(shí)請(qǐng)求、響應(yīng),同一個(gè)流的分為多個(gè)幀來(lái)傳輸,多個(gè)流之間可以并發(fā),不會(huì)相互阻塞。

header 太大:通過(guò)二進(jìn)制的形式,加上 HPACK的壓縮算法,使得 header 減小了很多。

沒(méi)有充分利用 TCP 的特性:支持了服務(wù)端推送。

這樣看來(lái),HTTP2.0 確實(shí)解決了 HTTP 1.1 的問(wèn)題。

看起來(lái),HTTP 2.0 已經(jīng)很完美了?

其實(shí)不是的,雖然 HTTP 層面沒(méi)有了隊(duì)頭阻塞問(wèn)題,多個(gè)請(qǐng)求響應(yīng)可以并行處理。但是同一個(gè)流的多個(gè)幀還是有隊(duì)頭阻塞問(wèn)題,以為你 TCP 層面會(huì)保證順序處理,丟失了會(huì)重傳,這就導(dǎo)致了上一個(gè)幀沒(méi)收到的話,下一個(gè)幀是處理不了的。

這個(gè)問(wèn)題是 TCP 的可靠傳輸?shù)奶匦詭?lái)的,所以想徹底解決隊(duì)頭阻塞問(wèn)題,只能把 HTTP 的底層傳輸協(xié)議換掉了。

這就是 HTTP3 做的事情了,它的傳輸層協(xié)議換成了 UDP。當(dāng)然,現(xiàn)在 HTTP3 還不是很成熟,我們先重點(diǎn)關(guān)注 HTTP2 即可。

總結(jié)

1996 年發(fā)布 HTTP 1.0,1999 年 HTTP 1.1,2015 年 HTTP 2.0。

1.1 和 2 之間間隔了 15 年,確實(shí)改變了很多,但是只是優(yōu)化了性能。

1.1 的問(wèn)題是第二個(gè)請(qǐng)求要等第一個(gè)響應(yīng)之后才能發(fā)出,就算用了管道化,多個(gè)響應(yīng)之間依然也會(huì)阻塞,這就是“隊(duì)頭阻塞”問(wèn)題。

而且 header 部分太大了,還是純文本的,可能比 body 部分傳的都多。

針對(duì) 1.1 的隊(duì)頭阻塞問(wèn)題,我們會(huì)做域名分片,針對(duì) header 過(guò)大的問(wèn)題,我們會(huì)減少請(qǐng)求次數(shù),也就是打包分 chunk、資源內(nèi)聯(lián)、雪碧圖、靜態(tài)資源請(qǐng)求禁止 cookie 等優(yōu)化策略。

HTTP 2.0 解決了 1.1 的這些問(wèn)題,通過(guò)多路復(fù)用,也就是請(qǐng)求和響應(yīng)在一個(gè)流里,通過(guò)同一個(gè)流 id 來(lái)關(guān)聯(lián)多個(gè)幀的方式來(lái)傳輸數(shù)據(jù)。多個(gè)流可以并發(fā)。

我們看了幀的格式,有長(zhǎng)度、類型、stream id、falgs 還有 payload 等部分。

幀的類型還是挺多的,有 HEADRS、DATA、SETTINGS、PUSH_PROMISE、END_STREAM、EST_STREAM、等。

這些幀類型之間也不是毫無(wú)關(guān)聯(lián)的,流在不同的狀態(tài)下會(huì)發(fā)送、接收不同的幀,而且發(fā)送、接收不同的幀也會(huì)進(jìn)入不同的狀態(tài)。

理解 HTTP2.0 的 stream 就要理解這樣的一個(gè)狀態(tài)流轉(zhuǎn)流程。

此外,HTTP 2.0 通過(guò)單獨(dú)設(shè)計(jì)的 HPACK 算法對(duì) header 做了壓縮,也支持服務(wù)端推送。而且內(nèi)容是通過(guò)二進(jìn)制傳輸?shù)?,解決了 HTTP 1.1 的問(wèn)題。

但是 HTTP 2.0 的底層是 TCP,它的可靠傳輸?shù)奶匦允沟猛粋€(gè)流內(nèi)的多個(gè)幀依然是順序傳輸?shù)?,依然有?duì)頭阻塞問(wèn)題。也是因?yàn)?HTP 3把底層協(xié)議換成 UDP。

雖然還是有一些問(wèn)題,但 HTTP 2.0 已經(jīng)基本上把 HTTP 1.1 的各方面性能不好的點(diǎn)都優(yōu)化到了極致,是很有意義的一次版本升級(jí)。

責(zé)任編輯:姜華 來(lái)源: 神光的編程秘籍
相關(guān)推薦

2022-05-23 10:11:36

HTTP緩存

2022-06-13 21:52:02

CDN網(wǎng)絡(luò)節(jié)點(diǎn)

2021-10-30 19:57:00

HTTP2 HTTP

2011-01-28 08:55:44

網(wǎng)頁(yè)設(shè)計(jì)Web

2019-07-16 16:00:31

HTTP時(shí)延服務(wù)

2024-02-26 21:15:20

Kafka緩存參數(shù)

2013-03-04 10:10:36

WebKit瀏覽器

2018-08-16 08:03:21

Python語(yǔ)言解釋器

2022-06-02 08:03:19

PyCharmPython代碼

2019-08-30 14:58:47

JavaScript程序員編程語(yǔ)言

2020-02-27 15:44:41

Nginx服務(wù)器反向代理

2020-02-27 21:03:30

調(diào)度器架構(gòu)效率

2012-08-17 10:01:07

云計(jì)算

2020-03-30 15:05:46

Kafka消息數(shù)據(jù)

2020-06-16 14:13:50

Kubernetes容器Linux

2024-03-07 10:21:56

2014-05-26 17:00:51

2020-09-27 08:12:09

Nginx反向代理負(fù)載均衡

2020-11-10 22:53:54

oracle數(shù)據(jù)庫(kù)

2017-01-23 13:08:46

大數(shù)據(jù)客戶畫(huà)像技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品久久久久9999赢消| 精品123区| 99久久婷婷国产综合精品 | 日本三级韩国三级欧美三级| 国产91丝袜在线播放九色| 97超碰国产精品女人人人爽 | 欧美日韩亚洲一二三| 三区四区在线视频| 成人免费三级在线| 国产精品吴梦梦| 国产精品a成v人在线播放| 国产精品一国产精品| 欧美一级电影网站| 成人免费无码av| 男人天堂亚洲天堂| 亚洲国产精品黑人久久久 | 青青草久久爱| 在线播放国产精品二区一二区四区| 精品一区二区成人免费视频| 深夜福利在线观看直播| 国产主播一区二区| 国产精品a久久久久久| 久久久久久久久久久久久久免费看 | 高清日韩一区| 91成人一区二区三区| 午夜综合激情| 欧美激情第一页xxx| 国产jizz18女人高潮| 校园春色另类视频| 欧美电影精品一区二区| 欧美精品一区二区三区免费播放| 男女羞羞视频在线观看| 中文字幕一区三区| 欧美日韩天天操| 欧美一级淫片免费视频魅影视频| 精品无码三级在线观看视频 | 日本黄色一级视频| 亚洲欧洲日本mm| 欧美日本在线视频中文字字幕| 日本精品在线观看视频| 亚洲成aⅴ人片久久青草影院| 精品国产一区二区亚洲人成毛片 | 超碰97久久国产精品牛牛| 欧美日本免费一区二区三区| 无码内射中文字幕岛国片| 女海盗2成人h版中文字幕| 亚洲国产成人91porn| 99久热在线精品视频| 国产精品剧情| 亚洲色图视频网| 黄瓜视频免费观看在线观看www | 中文字幕一区视频| 影音欧美亚洲| 免费看a在线观看| 最新国产成人在线观看| 小说区视频区图片区| 成人三级网址| 一区二区高清免费观看影视大全 | 性娇小13――14欧美| 久久久天堂国产精品女人| 精品无码一区二区三区电影桃花| 欧美激情精品久久久六区热门| 久久精品国产91精品亚洲| 国产又色又爽又高潮免费| 99久久综合狠狠综合久久aⅴ| 丝袜亚洲另类欧美重口| 午夜黄色福利视频| 99久久99久久精品国产片果冰| 日韩在线观看网址| 永久看片925tv| 韩国一区二区三区在线观看| 8x海外华人永久免费日韩内陆视频| 亚洲国产精一区二区三区性色| 最新国产拍偷乱拍精品| 国产成人精品一区二区在线| 超碰在线观看91| 麻豆91精品91久久久的内涵| 亚洲综合社区网| 亚洲精品国产精品国| 91毛片在线观看| 亚洲草草视频| 少妇av在线| 欧美性生交xxxxxdddd| 波多野结衣家庭教师在线| 欧美成人精品三级网站| 欧美久久久久久久久| www男人天堂| 亚洲国产精品嫩草影院久久av| 一区二区成人av| 国产精品久久久精品四季影院| 亚洲激情另类| 国产精品丝袜一区二区三区| 精品久久久中文字幕人妻| 91蜜桃网址入口| 亚洲精品天堂成人片av在线播放| 中文字幕人成乱码在线观看 | 日本精品久久久久久| 久久精品免视看| 久久福利一区二区| 3d欧美精品动漫xxxx无尽| 日韩一区二区免费电影| 久久久久亚洲av无码专区桃色| 97精品视频| 欧美亚洲免费电影| aaa一区二区三区| 久久久久久9999| 国产av熟女一区二区三区| 粉嫩一区二区三区| 精品成人一区二区| 国产精品视频看看| 久久三级视频| 国产日韩在线一区二区三区| av在线播放网站| 午夜激情久久久| 丰满少妇中文字幕| 成人在线丰满少妇av| 91国产视频在线播放| 国产精品国产三级国产普通话对白 | 日本暖暖在线视频| 色综合天天综合给合国产| 一区二区在线免费观看视频| 成人激情在线| 日本伊人精品一区二区三区介绍| 亚洲黄色a级片| 1区2区3区精品视频| 日韩一级免费在线观看| 精品人人人人| 欧美激情亚洲精品| 97在线播放免费观看| 欧美国产精品专区| 欧美韩国日本在线| 欧美三级电影在线| 久久人人爽国产| 亚洲av无码国产综合专区| 亚洲欧洲三级电影| 天天操天天爱天天爽| 亚洲女娇小黑人粗硬| 性欧美在线看片a免费观看 | 亚洲天堂免费观看| 成人免费视频毛片| 99久久精品免费精品国产| 久久艹国产精品| 97久久亚洲| 久久久噜噜噜久久久| 日本欧美一区二区三区乱码| 色999日韩欧美国产| 国产午夜精品久久久久| 91色在线porny| 欧美一级视频免费看| 日韩精品一区二区三区中文在线 | 亚洲精选一区| 国产精品综合久久久久久| 欧美xxx黑人xxx水蜜桃| 欧美一区二区私人影院日本| 欧美爱爱免费视频| 国产在线精品一区二区三区不卡| av动漫免费观看| 日韩高清在线观看一区二区| 欧美日韩xxxxx| av在线亚洲天堂| 亚洲一区视频在线| 无码人妻一区二区三区在线| 中日韩视频在线观看| 九色91视频| 91看片一区| www国产亚洲精品久久网站| 国产精品高潮呻吟av| 亚洲综合清纯丝袜自拍| aaaa黄色片| 亚洲一级在线| 日韩三级电影| 高清在线一区二区| 久久久久久一区二区三区| 四虎在线视频免费观看| 在线视频一区二区三| 四虎成人免费影院| 国产一区二区三区综合| 野外做受又硬又粗又大视频√| 日韩深夜影院| 国产精品第二页| 99福利在线| 亚洲精品福利免费在线观看| www五月天com| 亚洲欧美在线高清| 性囗交免费视频观看| 天堂va蜜桃一区二区三区漫画版| 日本10禁啪啪无遮挡免费一区二区| 999国产精品亚洲77777| 久久99热精品这里久久精品| 四虎精品成人免费网站| 欧美妇女性影城| 亚洲日本韩国在线| 国产精品久久久久桃色tv| 国产免费a级片| 首页欧美精品中文字幕| 精品一区二区成人免费视频| 欧美黑人巨大videos精品| 国产精品自产拍在线观| 波多野结衣在线观看| 在线观看国产欧美| 黄色aaa毛片| 欧美色窝79yyyycom| 国产对白videos麻豆高潮| 国产精品麻豆99久久久久久| 国产不卡一二三| 精品亚洲欧美一区| 国产一区二区在线视频播放| 婷婷综合网站| 日本高清一区| 奇米影视777在线欧美电影观看| 成人欧美在线观看| 亚洲综合在线电影| 91地址最新发布| 在线看女人毛片| 中文字幕亚洲色图| 视频一区二区三区在线看免费看| 91精品国产91久久久久久一区二区| 久久久久99精品成人片三人毛片| 亚洲精品视频观看| 日本不卡一区视频| 国产亚洲欧美激情| 中文字幕无码人妻少妇免费| 国产麻豆视频一区二区| www亚洲成人| 视频一区在线播放| 欧美牲交a欧美牲交| 激情成人亚洲| a级黄色片免费| 五月天激情综合网| 亚洲欧洲日夜超级视频| 免费一区二区三区视频导航| 国产精品嫩草在线观看| 久久久久久亚洲精品美女| 国产欧美亚洲视频| 日本午夜精品久久久久| 国产精品久久久久7777婷婷| 英国三级经典在线观看| 26uuu久久噜噜噜噜| а√天堂中文在线资源8| 色在人av网站天堂精品| 午夜羞羞小视频在线观看| 久久夜色撩人精品| 国产乱色在线观看| 不卡av在线网站| v天堂福利视频在线观看| 久久激情视频免费观看| 精品国产白色丝袜高跟鞋| www.日韩欧美| 国产激情在线视频| 久久久精品久久久| 污污的视频在线观看| 精品自在线视频| 狂野欧美激情性xxxx欧美| 欧美精品www| а√在线天堂官网| 欧美中文字幕在线观看| 亚洲精品永久免费视频| 日本伊人精品一区二区三区介绍 | 欧美日韩国产123区| 中文字幕一区二区三区四区免费看| 欧美午夜宅男影院| 一区二区三区免费在线| 欧美一区二区三区影视| www.国产精品视频| 精品福利视频一区二区三区| 午夜影院免费体验区| 亚洲女人天堂网| 又爽又大又黄a级毛片在线视频| 日韩在线观看免费全| 欧美xxxx做受欧美88bbw| 97成人超碰免| 国产福利亚洲| 91视频免费在线观看| 精品国产导航| 日本精品一区二区| 一本一道久久a久久精品蜜桃| 日韩欧美精品免费| 久色成人在线| 99精品999| 成人av网站在线观看| 欧洲女同同性吃奶| 亚洲色欲色欲www| 欧美一区二区三区四| 欧美日韩国产免费一区二区| 亚洲精品18p| 亚洲最新中文字幕| 色呦呦在线视频| 国产精品久久久久久久久久99| 国产精品毛片无码| 久久久久久久久久码影片| 99久久亚洲精品| 国模无码视频一区二区三区| 精品午夜一区二区三区在线观看| 中国免费黄色片| 国产精品国产三级国产aⅴ原创| 国产亚洲欧美精品久久久www| 色老头久久综合| www.四虎在线观看| 在线激情影院一区| av在线理伦电影| 91精品久久久久久久久久入口 | 在线视频不卡一区二区| 国产精品videosex极品| 亚洲色图久久久| av电影在线观看一区| 男人av资源站| 色综合久久久久久久| 午夜精品无码一区二区三区| 在线播放日韩欧美| 国内精彩免费自拍视频在线观看网址| 国产91网红主播在线观看| 日韩三级不卡| 亚洲欧美丝袜| 久久精品二区三区| 大桥未久恸哭の女教师| 亚洲欧美日韩久久精品| 男人天堂视频在线| 日韩精品在线私人| 草美女在线观看| 成人av资源网| 综合久久亚洲| 亚洲欧美日韩三级| 久久精品人人爽人人爽| 日韩精品成人一区| 欧美成人精品1314www| 精品美女在线观看视频在线观看 | 久久亚洲国产精品成人av秋霞| 怡红院成人在线| 欧美国产视频在线观看| 亚洲东热激情| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 成人黄色在线免费| 国产日韩视频在线| 妺妺窝人体色www在线小说| 成人国产精品免费网站| 精品无码人妻一区二区三| 日韩视频免费观看高清完整版| 日本在线观看网站| 国产精品久久一区| 精品久久久久久久久久久下田 | 成人免费电影视频| 黄色小说在线观看视频| 欧美大胆人体bbbb| 日韩精品卡一| 高清国产在线一区| 精品成人免费| 中文文字幕文字幕高清| 午夜久久久久久电影| 天天干天天爱天天操| 97视频在线观看免费| 久久大胆人体视频| 亚洲国产精品久久久久婷蜜芽| 久久久久久麻豆| 亚洲性猛交富婆| 久久精品国亚洲| 精品视频一区二区三区| 欧美a级免费视频| a级精品国产片在线观看| 五月天综合激情| 亚洲视频免费一区| 久久免费影院| 四虎免费在线观看视频| 国产成人综合在线观看| 日本熟妇色xxxxx日本免费看| 日韩成人av在线播放| 免费成人美女女| 一区二区三区四区五区视频| 黄页网站大全一区二区| 久久久国产精品人人片| 亚洲激情小视频| 国产一区二区三区影视| 中文字幕一区二区三区四区五区六区| 国产一区二区三区免费看 | 人妻丰满熟妇aⅴ无码| 91久久国产最好的精华液| 免费在线看a| 国产一区免费| 日本伊人精品一区二区三区观看方式| 成年人免费视频播放| 日韩欧美亚洲另类制服综合在线| 91超碰在线播放| 欧美一级二级三级| 国产一区啦啦啦在线观看| 丰满少妇乱子伦精品看片| 在线国产精品播放| 一区二区中文字幕在线观看| 成年人免费在线播放| 亚洲欧美色图小说| 视频一区二区三区在线看免费看| 国产综合福利在线| 国产日韩1区| 日韩视频中文字幕在线观看| 亚洲精品成人免费| 欧美大陆国产| 日本www在线视频| 国产精品福利一区二区三区| 神宫寺奈绪一区二区三区| 国产一区二区色| 国产精品尤物| 欧美精品99久久久|