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

深入原理學(xué)習(xí)之–TCP長連接與心跳保活

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
可能很多 Java 程序員對 TCP 的理解只有一個三次握手,四次握手的認(rèn)識,我覺得這樣的原因主要在于 TCP 協(xié)議本身稍微有點抽象(相比較于應(yīng)用層的 HTTP 協(xié)議)。

 前言

可能很多 Java 程序員對 TCP 的理解只有一個三次握手,四次握手的認(rèn)識,我覺得這樣的原因主要在于 TCP 協(xié)議本身稍微有點抽象(相比較于應(yīng)用層的 HTTP 協(xié)議);其次,非框架開發(fā)者不太需要接觸到 TCP 的一些細(xì)節(jié)。其實我個人對 TCP 的很多細(xì)節(jié)也并沒有完全理解,這篇文章主要針對微信交流群里有人提出的長連接,心跳的問題,做一個統(tǒng)一的整理。

[[277474]]

在 Java 中,使用 TCP 通信,大概率會涉及到 Socket、Netty,本文會借用它們的一些 API 和設(shè)置參數(shù)來輔助介紹。

長連接與短連接

TCP 本身并沒有長短連接的區(qū)別,長短與否,完全取決于我們怎么用它。

  • 短連接:每次通信時,創(chuàng)建 Socket;一次通信結(jié)束,調(diào)用 socket.close()。這就是一般意義上的短連接,短連接的好處是管理起來比較簡單,存在的連接都是可用的連接,不需要額外的控制手段。
  • 長連接:每次通信完畢后,不會關(guān)閉連接,這樣就可以做到連接的復(fù)用。長連接的好處便是省去了創(chuàng)建連接的耗時。

短連接和長連接的優(yōu)勢,分別是對方的劣勢。想要圖簡單,不追求高性能,使用短連接合適,這樣我們就不需要操心連接狀態(tài)的管理;想要追求性能,使用長連接,我們就需要擔(dān)心各種問題:比如端對端連接的維護,連接的保活。

長連接還常常被用來做數(shù)據(jù)的推送,我們大多數(shù)時候?qū)νㄐ诺恼J(rèn)知還是 request/response 模型,但 TCP 雙工通信的性質(zhì)決定了它還可以被用來做雙向通信。在長連接之下,可以很方便的實現(xiàn) push 模型。

短連接沒有太多東西可以講,所以下文我們將目光聚焦在長連接的一些問題上。純講理論未免有些過于單調(diào),所以下文我借助 Dubbo 這個 RPC 框架的一些實踐來展開 TCP 的相關(guān)討論。

服務(wù)治理框架中的長連接

前面已經(jīng)提到過,追求性能的時候,必然會選擇使用長連接,所以借助 Dubbo 可以很好的來理解 TCP。我們開啟兩個 Dubbo 應(yīng)用,一個 server 負(fù)責(zé)監(jiān)聽本地 20880(眾所周知,這是 Dubbo 協(xié)議默認(rèn)的端口),一個 client 負(fù)責(zé)循環(huán)發(fā)送請求。執(zhí)行l(wèi)sof -i:20880命令可以查看端口的相關(guān)使用情況:

 

深入原理學(xué)習(xí)之–TCP長連接與心跳保活

 

image-20190106203341694

  • *:20880 (LISTEN)說明了 Dubbo 正在監(jiān)聽本地的 20880 端口,處理發(fā)送到本地 20880 端口的請求
  • 后兩條信息說明請求的發(fā)送情況,驗證了 TCP 是一個雙向的通信過程,由于我是在同一個機器開啟了兩個 Dubbo 應(yīng)用,所以你能夠看到是本地的 53078 端口與 20880 端口在通信。我們并沒有手動設(shè)置 53078 這個客戶端端口,他是隨機的,但也闡釋了一個道理:即使是發(fā)送請求的一方,也需要占用一個端口。
  • 稍微說一下 FD 這個參數(shù),他代表了文件句柄,每新增一條連接都會占用新的文件句柄,如果你在使用 TCP 通信的過程中出現(xiàn)了open too many files的異常,那就應(yīng)該檢查一下,你是不是創(chuàng)建了太多的連接,而沒有關(guān)閉。細(xì)心的讀者也會聯(lián)想到長連接的另一個好處,那就是會占用較少的文件句柄。

長連接的維護

因為客戶端請求的服務(wù)可能分布在多個服務(wù)器上,客戶端端自然需要跟對端創(chuàng)建多條長連接,使用長連接,我們遇到的第一個問題就是要如何維護長連接。

  1. @Sharable 
  2.  
  3. public class NettyHandler extends SimpleChannelHandler { 
  4.  
  5. private final Map<String, Channel> channels = new ConcurrentHashMap<String, Channel>(); // <ip:port, channel> 
  6.  
  7.  
  8. public class NettyServer extends AbstractServer implements Server { 
  9.  
  10. private Map<String, Channel> channels; // <ip:port, channel> 
  11.  

在 Dubbo 中,客戶端和服務(wù)端都使用ip:port維護了端對端的長連接,Channel 便是對連接的抽象。我們主要關(guān)注 NettyHandler 中的長連接,服務(wù)端同時維護一個長連接的集合是 Dubbo 的設(shè)計,我們將在后面提到。

連接的保活

這個話題就有的聊了,會牽扯到比較多的知識點。首先需要明確一點,為什么需要連接的報活?當(dāng)雙方已經(jīng)建立了連接,但因為網(wǎng)絡(luò)問題,鏈路不通,這樣長連接就不能使用了。需要明確的一點是,通過 netstat,lsof 等指令查看到連接的狀態(tài)處于ESTABLISHED狀態(tài)并不是一件非常靠譜的事,因為連接可能已死,但沒有被系統(tǒng)感知到,更不用提假死這種疑難雜癥了。如果保證長連接可用是一件技術(shù)活。

連接的保活:KeepAlive

首先想到的是 TCP 中的 KeepAlive 機制。KeepAlive 并不是 TCP 協(xié)議的一部分,但是大多數(shù)操作系統(tǒng)都實現(xiàn)了這個機制。KeepAlive 機制開啟后,在一定時間內(nèi)(一般時間為 7200s,參數(shù)tcp_keepalive_time)在鏈路上沒有數(shù)據(jù)傳送的情況下,TCP 層將發(fā)送相應(yīng)的KeepAlive探針以確定連接可用性,探測失敗后重試 10(參數(shù)tcp_keepalive_probes)次,每次間隔時間 75s(參數(shù)tcp_keepalive_intvl),所有探測失敗后,才認(rèn)為當(dāng)前連接已經(jīng)不可用。

在 Netty 中開啟 KeepAlive:

bootstrap.option(ChannelOption.SO_KEEPALIVE, true)

Linux 操作系統(tǒng)中設(shè)置 KeepAlive 相關(guān)參數(shù),修改/etc/sysctl.conf文件:

  1. net.ipv4.tcp_keepalive_time=90  
  2. net.ipv4.tcp_keepalive_intvl=15  
  3. net.ipv4.tcp_keepalive_probes=2 

KeepAlive 機制是在網(wǎng)絡(luò)層面保證了連接的可用性,但站在應(yīng)用框架層面我們認(rèn)為這還不夠。主要體現(xiàn)在兩個方面:

  • KeepAlive 的開關(guān)是在應(yīng)用層開啟的,但是具體參數(shù)(如重試測試,重試間隔時間)的設(shè)置卻是操作系統(tǒng)級別的,位于操作系統(tǒng)的/etc/sysctl.conf配置中,這對于應(yīng)用來說不夠靈活。
  • KeepAlive 的保活機制只在鏈路空閑的情況下才會起到作用,假如此時有數(shù)據(jù)發(fā)送,且物理鏈路已經(jīng)不通,操作系統(tǒng)這邊的鏈路狀態(tài)還是 ESTABLISHED,這時會發(fā)生什么?自然會走 TCP 重傳機制,要知道默認(rèn)的 TCP 超時重傳,指數(shù)退避算法也是一個相當(dāng)長的過程。
  • KeepAlive 本身是面向網(wǎng)絡(luò)的,并不是面向于應(yīng)用的,當(dāng)連接不可用時,可能是由于應(yīng)用本身 GC 問題,系統(tǒng) load 高等情況,但網(wǎng)絡(luò)仍然是通的,此時,應(yīng)用已經(jīng)失去了活性,所以連接自然應(yīng)該認(rèn)為是不可用的。

看來,應(yīng)用層面的連接保活還是必須要做的。

連接的保活:應(yīng)用層心跳

終于點題了,文題中提到的心跳便是一個本文想要重點強調(diào)的另一個 TCP 相關(guān)的知識點。上一節(jié)我們已經(jīng)解釋過了,網(wǎng)絡(luò)層面的 KeepAlive 不足以支撐應(yīng)用級別的連接可用性,本節(jié)就來聊聊應(yīng)用層的心跳機制是實現(xiàn)連接保活的。

如何理解應(yīng)用層的心跳?簡單來說,就是客戶端會開啟一個定時任務(wù),定時對已經(jīng)建立連接的對端應(yīng)用發(fā)送請求(這里的請求是特殊的心跳請求),服務(wù)端則需要特殊處理該請求,返回響應(yīng)。如果心跳持續(xù)多次沒有收到響應(yīng),客戶端會認(rèn)為連接不可用,主動斷開連接。不同的服務(wù)治理框架對心跳,建連,斷連,拉黑的機制有不同的策略,但大多數(shù)的服務(wù)治理框架都會在應(yīng)用層做心跳,Dubbo 也不例外。

應(yīng)用層心跳的設(shè)計細(xì)節(jié)

以 Dubbo 為例,支持應(yīng)用層的心跳,客戶端和服務(wù)端都會開啟一個HeartBeatTask,客戶端在HeaderExchangeClient中開啟,服務(wù)端將在HeaderExchangeServer開啟。文章開頭埋了一個坑:Dubbo 為什么在服務(wù)端同時維護Map呢?主要就是為了給心跳做貢獻,心跳定時任務(wù)在發(fā)現(xiàn)連接不可用時,會根據(jù)當(dāng)前是客戶端還是服務(wù)端走不同的分支,客戶端發(fā)現(xiàn)不可用,是重連;服務(wù)端發(fā)現(xiàn)不可用,是直接 close。

  1. // HeartBeatTask 
  2.  
  3. if (channel instanceof Client) { 
  4.  
  5. ((Client) channel).reconnect(); 
  6.  
  7. else { 
  8.  
  9. channel.close(); 
  10.  

熟悉其他 RPC 框架的同學(xué)會發(fā)現(xiàn),不同框架的心跳機制真的是差距非常大。心跳設(shè)計還跟連接創(chuàng)建,重連機制,黑名單連接相關(guān),還需要具體框架具體分析。

除了定時任務(wù)的設(shè)計,還需要在協(xié)議層面支持心跳。最簡單的例子可以參考 nginx 的健康檢查,而針對 Dubbo 協(xié)議,自然也需要做心跳的支持,如果將心跳請求識別為正常流量,會造成服務(wù)端的壓力問題,干擾限流等諸多問題。

 

深入原理學(xué)習(xí)之–TCP長連接與心跳保活

 

dubbo protocol

其中 Flag 代表了 Dubbo 協(xié)議的標(biāo)志位,一共 8 個地址位。低四位用來表示消息體數(shù)據(jù)用的序列化工具的類型(默認(rèn) hessian),高四位中,第一位為1表示是 request 請求,第二位為 1 表示雙向傳輸(即有返回response),第三位為 1 表示是心跳事件。

心跳請求應(yīng)當(dāng)和普通請求區(qū)別對待。

注意和 HTTP 的 KeepAlive 區(qū)別對待

  • HTTP 協(xié)議的 KeepAlive 意圖在于連接復(fù)用,同一個連接上串行方式傳遞請求-響應(yīng)數(shù)據(jù)
  • TCP 的 KeepAlive 機制意圖在于保活、心跳,檢測連接錯誤。

這壓根是兩個概念。

KeepAlive 常見錯誤

啟用 TCP KeepAlive 的應(yīng)用程序,一般可以捕獲到下面幾種類型錯誤

  1. ETIMEOUT 超時錯誤,在發(fā)送一個探測保護包經(jīng)過 (tcp_keepalive_time + tcp_keepalive_intvl * tcp_keepalive_probes)時間后仍然沒有接收到 ACK 確認(rèn)情況下觸發(fā)的異常,套接字被關(guān)閉
  2. java.io.IOException: Connection timed out
  3. EHOSTUNREACH host unreachable(主機不可達)錯誤,這個應(yīng)該是 ICMP 匯報給上層應(yīng)用的。
  4. java.io.IOException: No route to host
  5. 鏈接被重置,終端可能崩潰死機重啟之后,接收到來自服務(wù)器的報文,然物是人非,前朝往事,只能報以無奈重置宣告之。
  6. java.io.IOException: Connection reset by peer

總結(jié)

有三種使用 KeepAlive 的實踐方案:

默認(rèn)情況下使用 KeepAlive 周期為 2 個小時,如不選擇更改,屬于誤用范疇,造成資源浪費:內(nèi)核會為每一個連接都打開一個保活計時器,N 個連接會打開 N 個保活計時器。 優(yōu)勢很明顯:

  • TCP 協(xié)議層面保活探測機制,系統(tǒng)內(nèi)核完全替上層應(yīng)用自動給做好了
  • 內(nèi)核層面計時器相比上層應(yīng)用,更為高效
  • 上層應(yīng)用只需要處理數(shù)據(jù)收發(fā)、連接異常通知即可
  • 數(shù)據(jù)包將更為緊湊
  1. 關(guān)閉 TCP 的 KeepAlive,完全使用應(yīng)用層心跳保活機制。由應(yīng)用掌管心跳,更靈活可控,比如可以在應(yīng)用級別設(shè)置心跳周期,適配私有協(xié)議。
  2. 業(yè)務(wù)心跳 + TCP KeepAlive 一起使用,互相作為補充,但 TCP 保活探測周期和應(yīng)用的心跳周期要協(xié)調(diào),以互補方可,不能夠差距過大,否則將達不到設(shè)想的效果。

各個框架的設(shè)計都有所不同,例如 Dubbo 使用的是方案三,但阿里內(nèi)部的 HSF 框架則沒有設(shè)置 TCP 的 KeepAlive,僅僅由應(yīng)用心跳保活。和心跳策略一樣,這和框架整體的設(shè)計相關(guān)。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2019-01-07 12:02:02

TCP長連接Java

2020-03-19 10:13:13

OkHttpWebSocket

2022-10-24 08:03:04

MySQL數(shù)據(jù)庫

2013-09-17 14:00:19

AndroidListView原理

2015-10-09 13:15:03

TCP網(wǎng)絡(luò)協(xié)議

2020-02-25 16:48:35

AndroidGoogle 移動系統(tǒng)

2019-01-28 18:02:21

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全技術(shù)周刊

2022-12-02 13:49:41

2020-11-13 10:58:24

Kafka

2024-12-24 10:50:05

GinWeb開發(fā)

2011-05-31 17:08:41

Android 網(wǎng)絡(luò)連接

2011-08-25 10:07:24

Lua 5.0函數(shù)編譯器

2015-04-23 18:46:38

TCPTCP協(xié)議

2018-04-03 10:30:35

2010-08-31 13:06:45

CSS

2016-10-13 10:57:55

phptcp專欄

2015-10-13 15:09:31

2025-02-07 10:34:26

JAVA程序Java 9

2013-09-16 09:56:29

TCP協(xié)議網(wǎng)絡(luò)協(xié)議send

2022-09-05 22:22:00

Stream操作對象
點贊
收藏

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

国产精品久久三| 中国女人久久久| 精品裸体舞一区二区三区| 欧美精品卡一卡二| 玖玖综合伊人| 精品亚洲成a人| 国产+成+人+亚洲欧洲| 在线免费观看视频| 超碰在线成人| 欧美在线免费视屏| 一二三在线视频| 每日更新av在线播放| 国产美女视频91| 日本午夜在线亚洲.国产| 久久久久亚洲av片无码| 自拍偷拍欧美一区| 日韩三级视频在线看| 北条麻妃视频在线| 欧洲中文在线| 国产精品短视频| 久久伦理网站| 国产黄色片av| 日韩av二区在线播放| 久久免费在线观看| www.5588.com毛片| 欧美亚洲国产一区| 日韩精品在线看| 又色又爽又黄18网站| 欧美黄页免费| 欧洲一区二区三区免费视频| 欧美精品一区免费| 丁香高清在线观看完整电影视频| 中文字幕一区二区三区色视频| 蜜桃导航-精品导航| 欧美一级淫片aaaaaa| 国产九九视频一区二区三区| 国产精品精品久久久久久| 天天操天天摸天天干| 午夜国产精品视频| 久久精品亚洲热| 国产视频123区| 精品国产一区一区二区三亚瑟| 精品播放一区二区| 精品无码av一区二区三区| 精品国产伦一区二区三区观看说明 | 欧美视频在线免费看| 日韩国产小视频| 伊人222成人综合网| 国产精品国产三级国产有无不卡| 色综合视频二区偷拍在线| 欧美日韩激情视频一区二区三区| av动漫一区二区| 精品欧美一区二区久久久伦| 手机看片1024日韩| k8久久久一区二区三区| 精品国产乱码久久久久软件| 日韩一卡二卡在线| 97久久精品人人做人人爽50路| 国产精品一区二区a| 亚洲国产日韩在线观看| 成人一区二区三区在线观看| 成人片在线免费看| 日韩中文字幕免费观看| 99在线视频精品| 欧美精品一区二区三区在线看午夜 | 激情六月婷婷久久| 91久久精品国产91久久性色tv| 国产白浆在线观看| 成人小视频免费在线观看| 国产日韩欧美一区二区| 天堂v在线观看| 久久久久国产成人精品亚洲午夜| 日韩激情久久| 欧美r级在线| 亚洲国产日韩a在线播放性色| 精品视频在线观看一区二区| 交100部在线观看| 91精品福利视频| 中文字幕在线视频一区二区三区| 成人爽a毛片| 亚洲欧美日韩精品久久| 特级西西人体高清大胆| 欧美一区激情| 911国产网站尤物在线观看| 伊人网综合在线| 国产成人精品三级麻豆| 欧美第一黄网| 欧美96在线| 精品国产91久久久久久| 91香蕉视频导航| 视频精品一区二区三区| 亚洲精品视频久久| 日韩欧美国产成人精品免费| 亚洲精品乱码久久久久久蜜桃麻豆| 国产成人免费av电影| 国产日韩欧美中文字幕| 久久综合九色综合97_久久久| 亚洲欧美丝袜| 91超碰在线免费| 欧美日韩国产首页| 国产亚洲色婷婷久久99精品91| 欧美一区二区三区激情视频| 久久久久五月天| 中文字幕理论片| 成人激情午夜影院| 在线视频91| 成人片免费看| 欧美大肚乱孕交hd孕妇| 国产精品麻豆免费版现看视频| 韩日在线一区| 成人免费福利在线| 久热av在线| 亚洲成人中文在线| 九九九久久久久久久| 欧美日韩一二| 国产成人短视频| 六月丁香综合网| 综合久久久久综合| 国产又粗又长又大的视频| a级日韩大片| 久久亚洲影音av资源网| 制服丝袜在线一区| 国产午夜精品福利| 日本毛片在线免费观看| 国产伦精品一区二区三区在线播放| 日韩一区二区福利| 在线观看免费视频a| 国产亚洲欧美色| 黄色动漫在线免费看| 国产91精品入| 欧美国产日本高清在线| 国产伦精品一区二区三区四区| 欧美激情一二三区| 免费大片在线观看| 亚洲免费成人av在线| 久久免费成人精品视频| 精品人妻少妇AV无码专区| 亚洲少妇最新在线视频| 亚洲欧美手机在线| 99久精品视频在线观看视频| 国产精品免费视频久久久| 精品亚洲综合| 91久久精品一区二区| 在线免费观看麻豆| 老色鬼久久亚洲一区二区| 欧美精品一区二区三区四区五区| 夜鲁夜鲁夜鲁视频在线播放| 337p日本欧洲亚洲大胆精品| 日韩aaaaaa| 91香蕉视频在线| 欧美激情国产精品日韩| 五月国产精品| 国产精品观看在线亚洲人成网 | www.xxxx欧美| jizz国产视频| 成人欧美一区二区三区| 亚洲欧美一区二区三区不卡| 中文字幕午夜精品一区二区三区| 99免费在线观看视频| 牛牛电影国产一区二区| 亚洲国产精品人久久电影| 久久久精品福利| 国产欧美va欧美不卡在线| 天天操,天天操| 97色伦图片97综合影院| 99在线影院| 亚洲妇女成熟| 在线观看欧美视频| 国产精品毛片久久久久久久av| 亚洲色图另类专区| 污污污www精品国产网站| 久久久久一区| 三年中文高清在线观看第6集| 中文字幕亚洲在线观看| 青青青国产精品一区二区| eeuss影院www在线播放| 欧美一级二级在线观看| 日韩免费不卡视频| 亚洲国产精品黑人久久久| 激情图片中文字幕| 日韩亚洲国产欧美| 亚洲一区二区在线观| 51精品国产| 国产成人一区三区| 一二三四区在线观看| 日韩精品福利在线| 国产精品怡红院| 亚洲高清免费在线| 秋霞网一区二区三区| 成人精品电影在线观看| 欧美大尺度做爰床戏| 国产综合色产| 一本色道久久99精品综合| 91麻豆精品激情在线观看最新| 日韩免费观看av| 美女尤物在线视频| 色偷偷888欧美精品久久久| 天堂网在线播放| 欧美美女bb生活片| 国产成人免费看| 樱花影视一区二区| 久久久久久成人网| 成人动漫精品一区二区| 手机免费av片| 日精品一区二区| www.亚洲视频.com| 亚洲国产精品综合久久久| 欧美精品二区三区四区免费看视频 | 天堂中文av在线资源库| 久久精品国产一区| 国内av一区二区三区| 精品国产一区久久| 国产精品国产一区二区三区四区 | 亚洲一区二区动漫| 欧美日本一区二区三区四区| 国产午夜福利精品| 国产精品国模大尺度视频| 激情综合丁香五月| 国产成+人+日韩+欧美+亚洲| 亚洲欧美视频二区| 久久久夜精品| 青青草精品视频在线| 亚洲一级淫片| 亚洲成人自拍| 精品久久美女| 久久综合给合久久狠狠色| 最新国产一区二区| 97免费资源站| 欧美经典影片视频网站| 91精品国产综合久久男男| 欧美影视资讯| 国产91亚洲精品| 无码小电影在线观看网站免费| 欧美黑人一区二区三区| 亚洲七七久久综合桃花剧情介绍| 日韩在线视频免费观看| 国产黄在线播放| 亚洲小视频在线| 国产在线观看高清视频| 亚洲欧美成人精品| 毛片网站在线| 国产亚洲精品久久久| 国产在线观看黄| 国产一区二区三区视频免费| 黄色大片在线看| 亚洲欧美综合v| 国产最新视频在线观看| 伊人久久男人天堂| av在线电影免费观看| 亚洲最新在线视频| 在线观看精品一区二区三区| 中文字幕亚洲一区| 国产一区久久精品| 欧美www在线| 丁香花在线电影小说观看| 91精品国产高清自在线看超| 英国三级经典在线观看| 国产成人一区二区三区小说| 日韩国产大片| 国产传媒一区二区三区| 国产精品调教视频| 免费一区二区三区| 欧美jizz| 激情六月天婷婷| 99在线精品免费视频九九视| 中国丰满人妻videoshd | 国产精品婷婷午夜在线观看| 黑人と日本人の交わりビデオ| 亚洲色图20p| 国产精品不卡av| 日本高清视频一区二区| 一级特黄aaa| 精品剧情在线观看| 毛片网站在线| 美女av一区二区三区| 韩国成人二区| 国产精品一区二区三区免费视频 | 香蕉精品视频在线| 好看的av在线不卡观看| 日日碰狠狠躁久久躁婷婷| 精品中文字幕一区二区| 中国一级特黄录像播放| 亚洲国产激情av| 久青草视频在线观看| 在线观看成人小视频| 精品人妻一区二区三区浪潮在线| 日韩av在线影院| 91国内在线| 国产黑人绿帽在线第一区| 国产一区 二区| 久久影视中文粉嫩av| 在线成人直播| 国产97色在线 | 日韩| 国产经典欧美精品| 国产黄色大片免费看| 亚洲综合精品自拍| 亚洲天堂手机版| 亚洲精品色婷婷福利天堂| 18+激情视频在线| 国产成人亚洲综合青青| 精品亚洲自拍| 麻豆映画在线观看| 日本美女视频一区二区| 黄色片视频免费观看| 亚洲视频狠狠干| 在线观看你懂的网站| 日韩电影在线观看永久视频免费网站| a视频在线观看免费| 国产精品色婷婷视频| 亚洲精品国模| 日本精品久久久久久久久久| 精品一区二区在线播放| 国产成人无码精品久久二区三| 亚洲成av人片在线观看无码| 国产毛片毛片毛片毛片| 在线看日韩欧美| 欧美色网一区| 久久精品一区二区三区不卡免费视频| 欧美 日韩 国产精品免费观看| 美女在线视频一区二区| 国产欧美一区二区精品婷婷 | 91超碰国产在线| 91色中文字幕| 国产精品久久久久一区二区三区厕所 | 日韩欧美色综合| 毛片av在线| 国产欧美精品一区二区三区介绍| 神马电影久久| 国产极品粉嫩福利姬萌白酱| 99久久精品国产网站| 精品小视频在线观看| 精品日本一线二线三线不卡| v片在线观看| 51精品国产人成在线观看| 亚洲h色精品| 肉色超薄丝袜脚交| 怡红院av一区二区三区| 国产黄色片网站| 欧美激情第6页| 国产成人高清精品免费5388| 久久久久久免费看| va亚洲va日韩不卡在线观看| 日本亚洲色大成网站www久久| 亚洲高清久久网| 一本大道色婷婷在线| 日韩欧美一区二区三区四区| 日韩国产在线观看| 日韩一区二区三区四区视频| 欧美日韩午夜在线视频| 韩国av网站在线| www日韩av| 国产精品久久久免费| 91视频在线网站| 欧美日免费三级在线| 2024短剧网剧在线观看| 不卡日韩av| 国产偷自视频区视频一区二区| 亚洲精品国产熟女久久久| 欧美日韩在线观看一区二区| 浪潮av一区| 国产亚洲情侣一区二区无| 免播放器亚洲| 色婷婷国产精品免| 日韩视频免费直播| 免费在线小视频| 日韩在线国产| 国产精品一区在线观看你懂的| 日韩激情一区二区三区| 日韩精品在线观| 国产精品黄色片| www.国产亚洲| 91啦中文在线观看| 伊人网免费视频| 欧美交受高潮1| 精品大片一区二区| 免费不卡av网站| 精品欧美aⅴ在线网站| 91伦理视频在线观看| 国产福利不卡| 美女爽到高潮91| 国产一级片播放| 一区二区三区四区精品| 清纯唯美激情亚洲| 久久久久免费精品| 一区二区三区色| 国产原创av在线| www日韩av| 捆绑调教一区二区三区| 久久精品国产亚洲AV无码男同| 亚洲视频专区在线| 日韩精品一区二区三区免费视频| 久久久噜噜噜www成人网| 亚洲人亚洲人成电影网站色| 天堂√在线中文官网在线| 91久久久久久国产精品| 久久精品123| 国产污视频在线观看| 日韩视频免费大全中文字幕| 日韩丝袜视频| aaaaa黄色片|