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

HTTP2總結及簡單實踐總結

移動開發
在 HTTP/0.9 和 HTTP/1.0 中,第3步之后,服務端就會關閉連接,也就是TCP的四次揮手,但是在 HTTP/1.1 后,客戶端在發送HTTP請求時頭部可以帶上 Connection:Keep-Alive ,就是告訴服務器保持連接,不要關閉TCP。當 Connection:Close 時,服務器會關閉連接。

HTTP發展歷史

在總結http2之前先來回顧下http的發展歷史。以下三張圖片來自 Jerry Qu

HTTP/0.9 (1991)

HTTP2總結及簡單實踐

HTTP/1.0 (1996)

HTTP2總結及簡單實踐

HTTP/1.1 (1999)

HTTP2總結及簡單實踐

HTTP通信過程

眾所周知,http是基于tcp之上的應用層協議,即在tcp連接建立之后,在tcp的鏈路上傳送數據。

 

HTTP2總結及簡單實踐

  1. 首先進行TCP連接,三次握手, C --(SYN{k})--> S , S --(ACK{k+1}&SYN{j})--> C , C --ACK{j+1}--> S
  2. 客戶端發送ACK后,就會發送一個HTTP請求
  3. 服務端接受到ACK,確認TCP連接建立,再接著收到HTTP請求,進行解析并將結果返回客戶端。
  4. 客戶端收到HTTP請求結果。

在 HTTP/0.9 和 HTTP/1.0 中,第3步之后,服務端就會關閉連接,也就是TCP的四次揮手,但是在 HTTP/1.1 后,客戶端在發送HTTP請求時頭部可以帶上 Connection:Keep-Alive ,就是告訴服務器保持連接,不要關閉TCP。當 Connection:Close 時,服務器會關閉連接。

HTTP2 的通信過程無外乎這是這個流程,但是通過TCP傳輸的數據會有不同,客戶端和服務器的行為也有了新的規則。引入了Connection、Stream、Message、Frame這四個概念,從下圖大概可以看出他們之間的關系。

HTTP2總結及簡單實踐

  • Connection: 其實就是一個TCP連接
  • Stream:已建立的連接上的雙向字節流
  • Message:請求或者響應,由一個或多個幀組合而成
  • Frame: Message中的二進制幀,HTTP/2通信的最小單位,后面會詳細解釋

HTTP/2 新特性

  • 二進制分幀(Binary framing layer)
  • 多路復用 (Multiplexing)
  • 單一連接(One connection per origin)
  • 數據流優先級(Stream prioritization)
  • 首部壓縮(Header Compression)
  • 流控 (Flow control)
  • 服務端推送(Server Push)

這些新特性的產生,主要是為了解決之前的問題,我們來對比下之前的 HTTP/1.1 ,看看解決了哪些問題

二進制分幀(Binary framing layer)

二進制分幀就是把http的數據按照規定的格式進行封裝,類似IP和TCP的數據包, 簡單畫了個承載HTTP2數據的以太幀結構,方便理解。

HTTP2總結及簡單實踐

通過wireshark抓包可以看到http2的結構

HTTP2總結及簡單實踐

  • Length: 無符號的自然數,24個比特表示,僅表示幀負載所占用字節數,不包括幀頭所占用的9個字節。默認大小區間為為0~16,384(2^14),一旦超過默認最大值2^14(16384),發送方將不再允許發送,除非接收到接收方定義的SETTINGS_MAX_FRAME_SIZE(一般此值區間為2^14 ~ 2^24)值的通知。
  • Type: 8個比特表示,定義了幀負載的具體格式和幀的語義,HTTP/2規范定義了10個幀類型,這里不包括實驗類型幀和擴展類型幀
  • Flags: 8個比特表示,服務于具體幀類型,默認值為0x0。有一個小技巧需要注意,一般來講,8個比特可以容納8個不同的標志,比如,PADDED值為0x8,二進制表示為00001000;END_HEADERS值為0x4,二進制表示為00000100;END_STREAM值為0X1,二進制為00000001。可以同時在一個字節中傳達三種標志位,二進制表示為00001101,即0x13。因此,后面的幀結構中,標志位一般會使用8個比特表示,若某位不確定,使用問號?替代,表示此處可能會被設置標志位
  • R: 在HTTP/2語境下為保留的比特位,固定值為0X0
  • Stream Identifier: 無符號的31比特表示無符號自然數。0x0值表示為幀僅作用于連接,不隸屬于單獨的流。

HTTP2幀中的類型如下:

 

HTTP2總結及簡單實踐

想了解每一個類型的詳細數據結構可以參考我的另一篇文章http2幀類型詳解

通過Google Developers中的一個圖,我們可以更好的理解,HTTP2的分幀在網絡數據中所處的位置,以及和HTTP/1.1的不同之處。

HTTP2總結及簡單實踐

HTTP/1.1中的頭部變成HEADERS類型的幀,請求體/回應體變成DATA類型的幀,通過二進制分幀,將傳輸的數據使用二進制方式,對比文本方式減少數據量;通過不同類型的幀實現流控、服務器推送等功能。

多路復用 (Multiplexing) & 單一連接(One connection per origin)

我們知道在HTTP2之前,我們如果想加快網頁資源的加載速度,會采用同時建立多條連接的方式,但是這樣每次建立TCP連接效率比較低,并且瀏覽器往往會限制最大連接數(例如chrome的最大連接數為6)。另外在HTTP/1.1中引入了Pipeline,可以在一個TCP連接中連續發送多個請求,不用關心前面的響應是否到達,但是服務器必須要按照收到請求的順序來進行響應,這樣一旦前面的請求阻塞,后來的請求也將不能及時回應。

HTTP2中,因為新的二進制幀的使用,使得可以輕松復用單個TCP連接。客戶端和服務器可以將 HTTP 消息分解為互不依賴的幀,然后交錯發送,最后再在另一端把它們重新組裝起來。

還是 Google Developers的圖:

HTTP2總結及簡單實踐

可以看到我們可以并行交錯的發送多個響應和請求,并且使用同一個TCP連接,沒有先后順序,每個幀中攜帶有如何組裝的信息,客戶端會等某項工作所需要的所有的資源都就緒之后再執行。

數據流優先級(Stream prioritization)

由于可以進行單連接復用,服務器和客戶端的幀都是交錯發送,對于發送給服務器的幀,為了解決哪些該先處理,哪些該后處理,因此引入了數據流的優先級,服務器根據優先級來分配資源。例如優先級高的獲得更多的CPU和帶寬資源。那么優先級是如何標示的呢?還記得前面的幀類型中有一個Type為PRIORITY,這種類型的幀就是為了告訴服務器這個stream的優先級,此外HEADERS幀中也包含了優先級信息。

HTTP/2通過父依賴和權重來標示優先級,每一個stream會標示一個父stream id,沒有標示的默認為虛擬的root stream,這樣按照這種依賴關系構建一個依賴樹,樹上層的stream權重較高,同一層的stream會有一個weight來區分資源分配比。。

HTTP2總結及簡單實踐

上圖是依賴樹的一些示例,從左到右,共四棵樹。

  • 第一個兩個stream A 和 B,沒有標明父stream,默認依賴虛擬的root節點,A、B處于同一層,優先級相同,根據權重分配資源,A分到 12/(12+4)=3/4 資源,B分到 1/4 資源。
  • 第二個D和C有層級結構,C的父級是D,那么服務器拿完整資源優先處理D,然后再處理C。
  • 第三個,服務器先處理D,再處理C,然后處理A和B,A分到 3/4 資源,B分到 1/4 資源。
  • 第四個,先處理D,再講資源對半分處理E和C,之后再按照權重處理A和B

需要注意的一點是,流優先級并不是強制約束,當優先級高的流阻塞時,并不能不讓服務器處理優先級低的流

首部壓縮 (Header Compression)

由于當前網站內容越來越復雜,單個頁面的請求數基本都是幾十個甚至上百,每個請求都要帶上客戶端或者用戶的標識,例如:UA,cookie等頭部數據,請求數量多了以后,傳輸http頭部消耗的流量也非常可觀,并且頭部數據中大部分都是相同的,這就是赤裸裸的浪費呀。于是產生了頭部壓縮技術來節省流量。

HTTP2總結及簡單實踐

  • 維護一份相同的靜態字典(Static Table),包含常見的頭部名稱,以及特別常見的頭部名稱與值的組合
  • 維護一份相同的動態字典(Dynamic Table),可以動態地添加內容
  • 支持基于靜態哈夫曼碼表的哈夫曼編碼(Huffman Coding)

靜態字典

靜態字典就是把常用的頭部映射為字節較短的索引序號,如下圖所示,截取了前面幾個映射,全部定義可以看 Static Table Definition

HTTP2總結及簡單實踐

例如當頭部有個字段是 :method: GET ,那么查表可知,可以用序號2標識,于是這個字段的數據就是 0000010 (2的二進制表示)

動態字典

靜態字典能表示的頭部數據畢竟有限,壓縮率也不會高。但是對于一個站點來講,和某個用戶交互時會發生非常多的請求,但是每次請求頭部差別不大,會有很多重復數據,因為用戶和瀏覽器的標識是不變的。那么我們可以針對一次HTTP2的連接生成一個可添加映射的動態字典,這樣再后面的連接中就可以使用動態字典中的序號。動態字典的生成過程其實就是通知對方添加映射,客戶端可以通知服務端添加,反之亦可。

具體的通知方式就是按照協議規定的格式傳輸數據。

Huffman Coding

哈弗曼編碼的特性是出現頻率越高,編碼長度越短。HTTP2協議中根據大量的請求頭部數據樣本生成了一種canonical Huffman code,具體在 Huffman Code 列出。

流控 (Flow control)

HTTP/2 流量控制的目標,在流量窗口初始值的約束下,給予接收端以全權,控制當下想要接受的流量大小。

算法:

  • 兩端(收發)保有一個流量控制窗口(window)初始值。
  • 發送端每發送一個DATA幀,就把window遞減,遞減量為這個幀的大小,要是window小于幀大小,那么這個幀就必須被拆分。如果window等于0,就不能發送任何幀
  • 接收端可以發送 WINDOW_UPDATE幀給發送端,發送端以幀內指定的Window Size Increment作為增量,加到window上

服務端推送 (Server Push)

流程:

  • 客戶端在交換 SETTINGS 幀時,設置字段 SETTINGS_ENABLE_PUSH(0x2) 為1顯式允許服務器推送
  • 服務器在接受到請求時,分析出要推送的資源,先發個 PUSH_PROMISE 幀給瀏覽器
  • 然后再發送各個response header和response body
  • 瀏覽器收到 PUSH_PROMISE 幀時,根據header block fragment字段里的url,可以知道當前有沒有緩存,從而判斷是否要接收。如果不要,瀏覽器就要發送個 RST_STREAM 來終止服務器推送

問題:

  • 流量浪費。若瀏覽器有緩存,不要這個推送,就會出現浪費流量的現象,因為整個過程都是異步的,在服務器接收到RST_STREAM時,響應很有可能部份發出或者全部發出了。

HTTP/2簡單實踐

Okhttp是一個java生態中有名的的http client,由于其簡單易用,性能較好,支持http2。下面用這個工具來實踐下,因為本人博客已經在nginx上配置了http2,就拿本博客來實驗下。

 

  1. public class Http2Example { 
  2.     final static OkHttpClient client = new OkHttpClient.Builder().build(); 
  3.     public static void main(String[] args) { 
  4.         Request request = new Request.Builder() 
  5.                 .url("https://blog.fliaping.com"
  6.                 .build(); 
  7.         try { 
  8.             Response response = client.newCall(request).execute(); 
  9.             System.out.println(JSON.toJSONString(response.protocol())); 
  10.             System.out.println(response.headers().toString()); 
  11.             System.out.println(response.body().string()); 
  12.         } catch (IOException e) { 
  13.             e.printStackTrace(); 
  14.         } 
  15.     } 

用過Okhttp的同學就會發現,這跟平時用的方法一樣啊,沒有任何區別,是的沒錯,就是沒有任何區別。別的不多說,執行下看看,不幸的是你會發現protocol還是http1.1,并不是h2,這是怎么回事?這是因為HTTP2新加入了ALPN(Application Layer Protocol Negotiation),從字面意思理解就是應用層協議協商,即雙方商量下用哪個協議。不幸的是jdk8是在2014年發布的,當時HTTP2協議還沒出生,幸運的是通過第三方jar包就可以支持ALPN。另外jdk9已經支持了HTTP2,雖然還沒正式發布,但是我們可以試用下JDK 9 Early-Access Builds。

jdk7和jdk8通過添加jvm參數加入第三方alpn支持包,注意版本不能搞錯,jdk7使用 alpn-boot-7.*.jar ,jdk8使用 alpn-boot-8.*.jar ,這里有版本對應關系 alpn-versions

 

  1. # jdk8 
  2. -Xbootclasspath/p:/home/payne/Downloads/alpn-boot-8.1.11.v20170118.jar 
  3. # jdk7 
  4. -Xbootclasspath/p:/home/payne/Downloads/alpn-boot-7.1.3.v20150130.jar 
  5. # jdk9 
  6. # 使用jdk9平臺時,注意okhttp版本大于3.3.0  
  7. # https://mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot 

 

責任編輯:未麗燕 來源: Payne's Blog
相關推薦

2009-06-29 14:19:43

Strust2實踐

2019-10-15 08:00:00

HTTP2HTTP前端

2015-09-23 10:14:48

iOS 代碼實踐

2023-10-11 18:30:38

2018-11-14 15:00:08

HTTP程序員前端

2016-10-21 10:36:54

http2spdynode.js

2015-08-13 10:31:18

Java 9新功能

2010-06-12 17:37:18

UML實踐指南

2011-11-02 15:42:27

2010-02-01 09:55:42

Python HTTP

2024-04-30 09:10:55

HTTP2TCP內網

2009-03-17 10:11:33

2022-09-01 08:17:15

Gateway微服務網關

2010-05-24 09:49:47

ADO.NET

2017-05-08 08:20:34

False注入MySQLSQL注入

2019-05-05 08:43:07

Windows認證密碼

2018-12-18 10:07:41

Spring Boot服務器HTTP2

2024-02-02 09:28:21

FrankenPHP應用

2014-03-12 10:13:00

iOSSEL對象

2012-02-02 13:04:50

JavaSpring
點贊
收藏

51CTO技術棧公眾號

av在线播放一区| 亚洲黄色在线观看视频| 国产99久久久国产精品成人免费 | 日韩一级理论片| 高潮毛片7777777毛片| 国产精品videosex极品| 精品国产免费久久| 69堂免费视频| 精彩国产在线| 久久久精品日韩| 国产亚洲精品久久久| 欧美高清视频不卡网| 欧美一级爽aaaaa大片| 无码日韩精品一区二区| 日韩成人三级| 欧美一二三在线| 欧美亚洲黄色片| 欧洲成人av| 乱人伦精品视频在线观看| 亚洲无线码在线一区观看| 妺妺窝人体色www在线观看| seseavlu视频在线| 盗摄精品av一区二区三区| 久久久久久高潮国产精品视| 免费无码一区二区三区| 美女色狠狠久久| 亚洲精品菠萝久久久久久久| 99精品在线直播| 精品成人久久久| 日韩欧美国产精品综合嫩v| 日韩一区二区免费在线观看| 久激情内射婷内射蜜桃| av黄色在线观看| 国产伦精品一区二区三区免费迷 | 91亚洲天堂| 波多野结衣中文一区| 清纯唯美日韩制服另类| 欧美成欧美va| 免费欧美一区| 欧美成人激情免费网| 妞干网在线免费视频| 91三级在线| 国产女同互慰高潮91漫画| 91香蕉国产在线观看| av大片免费在线观看| 99精品美女| 日韩毛片中文字幕| 国产xxx在线观看| 成人网ww555视频免费看| 一区二区免费在线| 亚洲国产欧美日韩| 午夜性色福利影院| 国产精品538一区二区在线| 日韩美女在线观看| 国产精品成人aaaa在线| 99久久婷婷| 亚洲欧洲日产国码av系列天堂| 五月六月丁香婷婷| 色天使综合视频| 精品久久久久久久久久国产| 中国一级黄色录像| 视频一区二区三区不卡| 久久久五月婷婷| 国产综合18久久久久久| 中文字幕在线观看第二页| 国产精品一级| 97热在线精品视频在线观看| 免费中文字幕视频| 五月天综合网站| 在线看日韩欧美| 色一情一交一乱一区二区三区| 精品在线网站观看| 国产精品国产三级国产aⅴ中文| 精品一区二区三区免费毛片| 亚洲 美腿 欧美 偷拍| 91影院在线观看| 欧美成人在线免费观看| www黄在线观看| 最新日韩av在线| 特级西西444| 婷婷色在线资源| 亚洲国产中文字幕| 大肉大捧一进一出好爽视频| 中文在线资源| 欧美三电影在线| 精品国产乱码久久久久久1区二区| 久久一级大片| 亚洲精品电影久久久| 欧美多人猛交狂配| 国产精品久久久久9999赢消| 欧美风情在线观看| 欧美精品二区三区| 乱一区二区av| 国产欧美日韩伦理| 波多野结衣在线影院| 亚洲欧美电影院| 激情五月宗合网| 视频91a欧美| 精品国产91乱码一区二区三区| aaaaaav| 色乱码一区二区三区网站| 美女久久久久久久| 影音先锋在线国产| 激情久久五月天| 久久精品99| 69av在线| 岛国av午夜精品| 欧美成年人视频在线观看| 视频一区日韩精品| 亚洲美女www午夜| 日韩三级久久久| 亚洲免费成人| 国产精品扒开腿做爽爽爽的视频| 999av视频| kk眼镜猥琐国模调教系列一区二区| 欧美综合77777色婷婷| 国产精品一区二区三区视频网站| 伊人开心综合网| 国产自偷自偷免费一区| 国产成人高清精品免费5388| 一色桃子一区二区| 国产精品第108页| 久88久久88久久久| 日韩.欧美.亚洲| 欧美24videosex性欧美| 欧美日韩午夜在线视频| 奇米777第四色| 天天影视欧美综合在线观看| 欧美专区第一页| 亚洲国产精品视频在线| 中文字幕亚洲不卡| 男女啪啪网站视频| 任你躁在线精品免费| 欧美超级免费视 在线| 91在线视频免费播放| 丁香婷婷综合色啪| 午夜久久久久久久久久久| 日本久久一区| 日韩在线欧美在线国产在线| 欧美一区二区三区不卡视频| 成人av手机在线观看| 亚洲国产一二三精品无码| 91精品网站在线观看| 中文字幕日韩在线播放| 波多野结衣日韩| 久久久电影一区二区三区| 国产无限制自拍| www.爱久久| 高清一区二区三区日本久| 亚洲国产日韩在线观看| 一区二区三区影院| 蜜桃视频无码区在线观看| 女人香蕉久久**毛片精品| 91老司机在线| 丝袜美腿av在线| 欧美色爱综合网| 久久久精品成人| 麻豆极品一区二区三区| 亚洲日本无吗高清不卡| 欧美aaaaaa| 久久精品中文字幕| a天堂中文在线观看| 亚洲猫色日本管| 欧美熟妇精品一区二区蜜桃视频| 日韩视频二区| 青青成人在线| 亚洲欧美在线综合| 欧美第一淫aaasss性| 日韩在线视频免费| 色婷婷av久久久久久久| 97国产成人精品视频| 中文字幕xxxx| 中文字幕一区二区不卡| 色婷婷综合在线观看| 欧美午夜一区| 免费观看成人在线| 欧美日韩精品一区二区三区视频| www.亚洲成人| 国产精品毛片一区二区在线看舒淇| 中文字幕一区二区三| 三级黄色片免费看| 欧美日韩国内| 亚洲xxx大片| 狂野欧美激情性xxxx欧美| 精品欧美一区二区久久| 国产午夜福利一区二区| 91免费视频网| www.精品在线| 国产专区一区| 鲁丝片一区二区三区| 成人精品国产| 欧美精品激情blacked18| 特黄aaaaaaaaa真人毛片| 亚洲一级在线观看| 永久免费看mv网站入口78| 奇米影视一区二区三区小说| 在线观看成人av| 成人资源在线| 欧美最猛性xxxxx(亚洲精品)| 又爽又大又黄a级毛片在线视频| 欧美日本精品一区二区三区| 黑鬼狂亚洲人videos| 国产91精品一区二区| 欧美午夜性视频| 日本不卡电影| 国产成人精品一区二区三区福利| 欧美13videosex性极品| 中文字幕亚洲综合久久筱田步美| 国精产品乱码一区一区三区四区| 天天综合天天综合色| 中国美女黄色一级片| 国产激情视频一区二区在线观看| 男人天堂成人在线| 欧美.日韩.国产.一区.二区| 精品国产免费人成电影在线观...| 黄色亚洲网站| www.欧美精品| 久久久久久久久亚洲精品| 欧美情侣在线播放| 日韩女优在线观看| 久久精品人人做人人综合 | 成人a视频在线观看| 女海盗2成人h版中文字幕| 中文字幕视频在线免费欧美日韩综合在线看 | 中文字幕+乱码+中文字幕明步| 亚洲嫩草精品久久| 精品人妻中文无码av在线| 9色porny自拍视频一区二区| 潘金莲激情呻吟欲求不满视频| 一本色道88久久加勒比精品| 国产成人亚洲综合无码| av一区二区在线观看| 国产综合精品一区二区三区| 久久天堂久久| 亚洲精品日产aⅴ| 日韩欧美2区| 清纯唯美亚洲激情| 中文字幕中文字幕在线中高清免费版| 尤物九九久久国产精品的分类| 欧美一区二区黄片| 日韩欧美在线1卡| 亚洲天堂手机版| 欧美日韩在线播放| 亚洲欧美一二三区| 懂色aⅴ精品一区二区三区蜜月| 国产性猛交xx乱| 国产精品精品国产色婷婷| 爱爱免费小视频| 99re66热这里只有精品3直播| 初高中福利视频网站| 国产精品羞羞答答xxdd| 中国黄色片一级| 蜜桃视频免费观看一区| 精品一区二区中文字幕| 久久福利毛片| 国产精品少妇在线视频| 亚洲尤物影院| 亚洲自偷自拍熟女另类| 亚洲深夜福利| 每日在线更新av| av成人激情| 色综合av综合无码综合网站| 99国内精品| 成人在线免费观看av| aⅴ色国产欧美| 久久久精品三级| 日韩国产精品久久| 美女福利视频在线| 老司机午夜精品视频| 妞干网在线免费视频| 免费在线成人网| 亚洲黄色片免费| 视频精品一区| 91麻豆精品国产91久久久久久| 日韩欧美国产另类| 色综合天天综合在线视频| 无码人妻av免费一区二区三区| 午夜激情综合网| 国产99久久久久久免费看| 欧美系列亚洲系列| 91tv国产成人福利| 亚洲福利在线播放| 日本成人一区二区三区| 国产亚洲欧洲高清| 国产视频二区在线观看| 久久亚洲春色中文字幕| 久久免费电影| 欧美在线观看网站| 欧美日韩卡一| 成人国产一区二区| 黄色网一区二区| 欧美日韩一区二区视频在线观看 | 电影一区二区| 国产精品自拍偷拍| 久久综合另类图片小说| 久久久精品动漫| 欧美好骚综合网| 777久久精品一区二区三区无码| 男人的天堂亚洲在线| 中文字幕国内自拍| 福利电影一区二区| 成人免费毛片糖心| 亚洲欧美另类综合偷拍| 毛片在线免费视频| 日韩欧美视频在线| 欧美一区二区视频| 久久中文久久字幕| av中文字幕在线观看第一页| 成人激情视频在线| 私拍精品福利视频在线一区| 亚洲亚洲精品三区日韩精品在线视频| 一区二区影视| 国产午夜福利视频在线观看| 蜜桃久久久久久久| 天天躁日日躁狠狠躁av麻豆男男| 国产精品国产三级国产普通话99 | 欧美激情精品久久久六区热门| 黄色片网址在线观看| 麻豆精品国产传媒mv男同| 天堂久久久久久| 亚洲精品免费一二三区| 无码人妻精品一区二区三区不卡| 678五月天丁香亚洲综合网| 五月婷婷开心中文字幕| 久久影视免费观看| 欧美一区国产| 激情小说网站亚洲综合网 | 久久久久久天堂| 欧美日韩在线播放一区| 亚洲 精品 综合 精品 自拍| 欧美成人免费网| 成人亚洲视频| 欧洲一区二区日韩在线视频观看免费| 中文字幕一区二区三区久久网站 | 交100部在线观看| 成人国产精品免费视频| 精品黄色一级片| 欧美三级一级片| 国产一区二区三区不卡在线观看| 亚欧精品视频一区二区三区| 欧美日韩免费区域视频在线观看| 99国产精品一区二区三区| 久久久999国产精品| 国产激情久久| 日本电影一区二区三区| 日韩在线播放一区二区| 欧美大片免费播放器| 一区二区在线观看视频在线观看| www.亚洲激情| 日韩在线中文视频| 成人av色网站| 日韩精品一线二线三线| 免费观看成人鲁鲁鲁鲁鲁视频| 无码国产69精品久久久久同性| 富二代精品短视频| 毛片在线能看| 日本三级韩国三级久久| 亚洲最好看的视频| 爱情岛论坛成人| 欧美高清一级片在线观看| 免费黄色av片| 日韩午夜在线视频| 色综合视频一区二区三区日韩| 亚洲高清视频一区二区| 久久超碰97人人做人人爱| 91无套直看片红桃在线观看| 欧美丝袜丝交足nylons图片| 毛片在线视频| 91日韩在线视频| 国产精品成人一区二区网站软件| 国产精品日日摸夜夜爽| 亚洲成a人片综合在线| 亚洲黄色小说网| 国产91在线播放| 成人羞羞网站| 国内自拍第二页| 一区二区视频免费在线观看| aaa一区二区| 久久久av电影| 欧美激情99| 欧美少妇性生活视频| 中文字幕乱码亚洲精品一区 | 99国产精品| 好吊视频在线观看| 欧美日韩三级视频| 中文字幕免费高清电视剧网站在线观看| 92看片淫黄大片欧美看国产片| 国产精品chinese| 真实乱视频国产免费观看| 欧美三级电影网站| 性欧美videos高清hd4k| 欧洲一区二区日韩在线视频观看免费| 91探花在线观看| 久热99视频在线观看| 美女一区二区在线观看| 密臀av一区二区三区| 亚洲一本大道在线| 麻豆导航在线观看| 91免费观看网站| 韩国一区二区三区在线观看|