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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

深究Java中的RMI底层原理

發(fā)布時間:2023/12/19 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深究Java中的RMI底层原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原博客地址:http://blog.csdn.net/sinat_34596644/article/details/52599688

前言:隨著一個系統(tǒng)被用戶認可,業(yè)務量、請求量不斷上升,那么單機系統(tǒng)必然就無法滿足了,于是系統(tǒng)就慢慢走向分布式了,隨之而來的是系統(tǒng)之間“溝通”的障礙。一般來說,解決系統(tǒng)之間的通信可以有兩種方式:即遠程調用和消息。RMI(Remote Method Invocation)就是遠程調用的一種方式,也是這篇文章主要介紹的。


一、RMI的一個簡單示例

這個示例拆分為服務端和客戶端,放在兩個idea項目中,并且通過了單機和雙機兩種環(huán)境的測試,是真正意義上的分布式應用。

項目結構

服務端應用: Server

主程序: ? ? ? ?com.jnu.wwt.entry.Server

服務接口: ? ? com.jnu.wwt.service.IOperation

服務實現(xiàn): ? ? com.jnu.wwt.service.impl.OperationImpl

客戶端應用: Client

主程序: ? ? ? ?com.jnu.wwt.entry.Client

服務接口: ? ?com.jnu.wwt.service.IOperation


源碼:

Server.java

/** * Created by wwt on 2016/9/14. */ public class Server {public static void main(String args[]) throws Exception{//以1099作為LocateRegistry接收客戶端請求的端口,并注冊服務的映射關系 Registry registry=LocateRegistry.createRegistry(1099); IOperation iOperation=new OperationImpl(); Naming.rebind("rmi://127.0.0.1:1099/Operation",iOperation); System.out.println("service running..."); }}

IOperation.java(服務端和客戶端各需要一份)

/** * 服務端接口必須實現(xiàn)java.rmi.Remote * Created by wwt on 2016/9/14. */ public interface IOperation extends Remote{/** * 遠程接口上的方法必須拋出RemoteException,因為網絡通信是不穩(wěn)定的,不能吃掉異常 * @param a * @param b * @return */ int add(int a, int b) throws RemoteException; }

OperationImpl.java

/** * Created by wwt on 2016/9/14. */ public class OperationImpl extends UnicastRemoteObject implements IOperation{public OperationImpl() throws RemoteException {super(); }@Override public int add(int a, int b) throws RemoteException{return a+b; }}

Client.java

/** * Created by wwt on 2016/9/15. */ public class Client {public static void main(String args[]) throws Exception{IOperation iOperation= (IOperation) Naming.lookup("rmi://127.0.0.1:1099/Operation"); System.out.println(iOperation.add(1,1)); }}

運行結果

先運行Server應用,服務就起來了。然后切換到Client應用,點擊運行,Client調用Server的服務,返回結果。





二、RMI做了些什么

現(xiàn)在我們先忘記Java中有RMI這種東西。假設我們需要自己實現(xiàn)上面例子中的效果,怎么辦呢?可以想到的步驟是:

  • 編寫服務端服務,并將其通過某個服務機的端口暴露出去供客戶端調用。
  • 編寫客戶端程序,客戶端通過指定服務所在的主機和端口號、將請求封裝并序列化,最終通過網絡協(xié)議發(fā)送到服務端。
  • 服務端解析和反序列化請求,調用服務端上的服務,將結果序列化并返回給客戶端。
  • 客戶端接收并反序列化服務端返回的結果,反饋給用戶。

這是大致的流程,我們不難想到,RMI其實也是幫我們封裝了一些細節(jié)而通用的部分,比如序列化和反序列化,連接的建立和釋放等,下面是RMI的具體流程:


這里涉及到幾個新概念:

Stub和Skeleton:這兩個的身份是一致的,都是作為代理的存在。客戶端的稱作Stub,服務端的稱作Skeleton。要做到對程序員屏蔽遠程方法調用的細節(jié),這兩個代理是必不可少的,包括網絡連接等細節(jié)。

Registry:顧名思義,可以認為Registry是一個“注冊所”,提供了服務名到服務的映射。如果沒有它,意味著客戶端需要記住每個服務所在的端口號,這種設計顯然是不優(yōu)雅的。


三、走進RMI原理之前,先來看看用到的類及其層次結構和主要的方法。





哪里看不懂隨時回來看看結構。。。開始了



四、一步步解剖RMI的底層原理


  • 服務端啟動Registry服務
Registry registry=LocateRegistry.createRegistry(1099);從上面這句代碼入手,追溯下去,可以發(fā)現(xiàn)服務端創(chuàng)建了一個RegistryImpl對象,這里做了一個判斷。如果服務端指定的端口號是1099并且系統(tǒng)開啟了安全管理器,那么可以在限定的權限集內(listen和accept)繞過系統(tǒng)的安全校驗。反之則必須進行安全校驗。這里純粹是為了效率起見。真正做的事情在setUp()方法中,繼續(xù)看下去。public RegistryImpl(final int var1) throws RemoteException {if(var1 == 1099 && System.getSecurityManager() != null) {try {AccessController.doPrivileged(new PrivilegedExceptionAction() {public Void run() throws RemoteException {LiveRef var1x = new LiveRef(RegistryImpl.id, var1); RegistryImpl.this.setup(new UnicastServerRef(var1x)); return null; }}, (AccessControlContext)null, new Permission[]{new SocketPermission("localhost:" + var1, "listen,accept")}); } catch (PrivilegedActionException var3) {throw (RemoteException)var3.getException(); }} else {LiveRef var2 = new LiveRef(id, var1); this.setup(new UnicastServerRef(var2)); }}setUp()方法將指向正在初始化的RegistryImpl對象的遠程引用ref(RemoteRef)賦值為傳入的UnicastServerRef對象,這里涉及了向上轉型。然后繼續(xù)移交UnicastServerRef的exportObject()方法。private void setup(UnicastServerRef var1) throws RemoteException {this.ref = var1; var1.exportObject(this, (Object)null, true); }進入UnicastServerRef的exportObject()方法。可以看到,這里首先為傳入的RegistryImpl創(chuàng)建一個代理,這個代理我們可以推斷出就是后面服務于客戶端的RegistryImpl的Stub對象。然后將UnicastServerRef的skel(skeleton)對象設置為當前RegistryImpl對象。最后用skeleton、stub、UnicastServerRef對象、id和一個boolean值構造了一個Target對象,也就是這個Target對象基本上包含了全部的信息。調用UnicastServerRef的ref(LiveRef)變量的exportObject()方法。public Remote exportObject(Remote var1, Object var2, boolean var3) throws RemoteException {Class var4 = var1.getClass(); Remote var5; try {var5 = Util.createProxy(var4, this.getClientRef(), this.forceStubUse); } catch (IllegalArgumentException var7) {throw new ExportException("remote object implements illegal remote interface", var7); }if(var5 instanceof RemoteStub) {this.setSkeleton(var1); }Target var6 = new Target(var1, this, var5, this.ref.getObjID(), var3); this.ref.exportObject(var6); this.hashToMethod_Map = (Map)hashToMethod_Maps.get(var4); return var5; }到上面為止,我們看到的都是一些變量的賦值和創(chuàng)建工作,還沒有到連接層,這些引用對象將會被Stub和Skeleton對象使用。接下來就是連接層上的了。追溯LiveRef的exportObject()方法,很容易找到了TCPTransport的exportObject()方法。這個方法做的事情就是將上面構造的Target對象暴露出去。調用TCPTransport的listen()方法,listen()方法創(chuàng)建了一個ServerSocket,并且啟動了一條線程等待客戶端的請求。接著調用父類Transport的exportObject()將Target對象存放進ObjectTable中。public void exportObject(Target var1) throws RemoteException {synchronized(this) {this.listen(); ++this.exportCount; }boolean var2 = false; boolean var12 = false; try {var12 = true; super.exportObject(var1); var2 = true; var12 = false; } finally {if(var12) {if(!var2) {synchronized(this) {this.decrementExportCount(); }}}}if(!var2) {synchronized(this) {this.decrementExportCount(); }}}到這里,我們已經將RegistryImpl對象創(chuàng)建并且起了服務等待客戶端的請求。
  • 客戶端獲取服務端Rgistry代理

IOperation iOperation= (IOperation) Naming.lookup("rmi://127.0.0.1:1099/Operation"); 從上面的代碼看起,容易追溯到LocateRegistry的getRegistry()方法。這個方法做的事情是通過傳入的host和port構造RemoteRef對象,并創(chuàng)建了一個本地代理。可以通過Debug功能發(fā)現(xiàn),這個代理對象其實是RegistryImpl_Stub對象。這樣客戶端便有了服務端的RegistryImpl的代理(取決于ignoreStubClasses變量)。但注意此時這個代理其實還沒有和服務端的RegistryImpl對象關聯(lián),畢竟是兩個VM上面的對象,這里我們也可以猜測,代理和遠程的Registry對象之間是通過socket消息來完成的。

public static Registry getRegistry(String host, int port, RMIClientSocketFactory csf)throws RemoteException {Registry registry = null; if (port <= 0)port = Registry.REGISTRY_PORT; if (host == null || host.length() == 0) {// If host is blank (as returned by "file:" URL in 1.0.2 used in // java.rmi.Naming), try to convert to real local host name so // that the RegistryImpl's checkAccess will not fail. try {host = java.net.InetAddress.getLocalHost().getHostAddress(); } catch (Exception e) {// If that failed, at least try "" (localhost) anyway... host = ""; }} LiveRef liveRef =new LiveRef(new ObjID(ObjID.REGISTRY_ID), new TCPEndpoint(host, port, csf, null), false); RemoteRef ref =(csf == null) ? new UnicastRef(liveRef) : new UnicastRef2(liveRef); return (Registry) Util.createProxy(RegistryImpl.class, ref, false); }


  • 服務端創(chuàng)建服務對象
從OperationImpl的構造函數看起。調用了父類UnicastRemoteObject的構造方法,追溯到UnicastRemoteObject的私有方法exportObject()。這里做了一個判斷,判斷服務的實現(xiàn)是不是UnicastRemoteObject的子類,如果是,則直接賦值其ref(RemoteRef)對象為傳入的UnicastServerRef對象。反之則調用UnicastServerRef的exportObject()方法。這里我們是第一種情況。 private static Remote exportObject(Remote obj, UnicastServerRef sref)throws RemoteException {// if obj extends UnicastRemoteObject, set its ref. if (obj instanceof UnicastRemoteObject) {((UnicastRemoteObject) obj).ref = sref; }return sref.exportObject(obj, null, false); }

  • 將服務實現(xiàn)綁定到服務端的Registry上,使得客戶端只需與Registry交互。
Naming.rebind("rmi://127.0.0.1:1099/Operation",iOperation);從上面這行代碼開始看,容易發(fā)現(xiàn)Naming的方法全部都是調用的Registry的方法。這里通過host和port找到我們第一步啟動的服務端Registry服務對象,追溯到其rebind()方法,可以看到,其實做的事情很是簡單,就是把名字和服務實現(xiàn)存進一個Map里面。 public void rebind(String var1, Remote var2) throws RemoteException, AccessException {checkAccess("Registry.rebind"); this.bindings.put(var1, var2); }
  • 客戶端查找遠程服務

接下來就是重頭戲了,從下面代碼看起。

IOperation iOperation= (IOperation) Naming.lookup("rmi://127.0.0.1:1099/Operation"); 追溯下去,獲取到遠程Registry對象的代理對象之后,調用RegistryImpl_Stub的lookUp()方法。主要代碼如下。做的事情是利用上面通過服務端host和port等信息創(chuàng)建的RegistryImpl_stub對象構造RemoteCall調用對象,operations參數中是各個Registry中聲明的操作,2指明了是lookUp()操作。接下來分步驟看看...

try {RemoteCall var2 = super.ref.newCall(this, operations, 2, 4905912898345647071L); try {ObjectOutput var3 = var2.getOutputStream(); var3.writeObject(var1); } catch (IOException var18) {throw new MarshalException("error marshalling arguments", var18); }super.ref.invoke(var2); Remote var23; try {ObjectInput var6 = var2.getInputStream(); var23 = (Remote)var6.readObject(); } catch (IOException var15) {throw new UnmarshalException("error unmarshalling return", var15); } catch (ClassNotFoundException var16) {throw new UnmarshalException("error unmarshalling return", var16); } finally {super.ref.done(var2); }return var23; }

調用 RegistryImpl_Stub的ref(RemoteRef)對象的newCall()方法,將RegistryImpl_Stub對象傳了進去,不要忘了構造它的時候我們將服務器的主機端口等信息傳了進去,也就是我們把服務器相關的信息也傳進了newCall()方法。newCall()方法做的事情簡單來看就是建立了跟遠程RegistryImpl的Skeleton對象的連接。(不要忘了上面我們說到過服務端通過TCPTransport的exportObject()方法等待著客戶端的請求)

public RemoteCall newCall(RemoteObject var1, Operation[] var2, int var3, long var4) throws RemoteException {clientRefLog.log(Log.BRIEF, "get connection"); Connection var6 = this.ref.getChannel().newConnection(); try {clientRefLog.log(Log.VERBOSE, "create call context"); if(clientCallLog.isLoggable(Log.VERBOSE)) {this.logClientCall(var1, var2[var3]); }StreamRemoteCall var7 = new StreamRemoteCall(var6, this.ref.getObjID(), var3, var4); try {this.marshalCustomCallData(var7.getOutputStream()); } catch (IOException var9) {throw new MarshalException("error marshaling custom call data"); }return var7; } catch (RemoteException var10) {this.ref.getChannel().free(var6, false); throw var10; } } 連接建立之后自然就是發(fā)送請求了。我們知道客戶端終究只是擁有Registry對象的代理,而不是真正地位于服務端的Registry對象本身,他們位于不同的虛擬機實例之中,無法直接調用。必然是通過消息進行交互的。看看super.ref.invoke()這里做了什么?容易追溯到StreamRemoteCall的executeCall()方法。看似本地調用,但其實很容易從代碼中看出來是通過tcp連接發(fā)送消息到服務端。由服務端解析并且處理調用。

try {if(this.out != null) {var2 = this.out.getDGCAckHandler(); }this.releaseOutputStream(); DataInputStream var3 = new DataInputStream(this.conn.getInputStream()); byte var4 = var3.readByte(); if(var4 != 81) {if(Transport.transportLog.isLoggable(Log.BRIEF)) {Transport.transportLog.log(Log.BRIEF, "transport return code invalid: " + var4); }throw new UnmarshalException("Transport return code invalid"); }this.getInputStream(); var1 = this.in.readByte(); this.in.readID(); } 至此,我們已經將客戶端的服務查詢請求發(fā)出了。

  • 服務端接收客戶端的服務查詢請求并返回給客戶端結果
這里我用的方法是直接斷點在服務端的Thread的run()方法中,因為我們知道服務端已經用線程跑起了服務(當然我是先斷點在Registry_Impl的lookUp()方法并查找調用棧找到源頭的)。一步一步我們找到了Transport的serviceCall()方法,這個方法是關鍵。瞻仰一下主要的代碼,到ObjectTable.getTarget()為止做的事情是從socket流中獲取ObjId,并通過ObjId和Transport對象獲取Target對象,這里的Target對象已經是服務端的對象。再借由Target的派發(fā)器Dispatcher,傳入參數服務實現(xiàn)和請求對象RemoteCall,將請求派發(fā)給服務端那個真正提供服務的RegistryImpl的lookUp()方法,這就是Skeleton移交給具體實現(xiàn)的過程了,Skeleton負責底層的操作。 try {ObjID var40; try {var40 = ObjID.read(var1.getInputStream()); } catch (IOException var34) {throw new MarshalException("unable to read objID", var34); }Transport var41 = var40.equals(dgcID)?null:this; Target var5 = ObjectTable.getTarget(new ObjectEndpoint(var40, var41)); final Remote var38; if(var5 != null && (var38 = var5.getImpl()) != null) {final Dispatcher var6 = var5.getDispatcher(); var5.incrementCallCount(); boolean var8; try {transportLog.log(Log.VERBOSE, "call dispatcher"); final AccessControlContext var7 = var5.getAccessControlContext(); ClassLoader var42 = var5.getContextClassLoader(); Thread var9 = Thread.currentThread(); ClassLoader var10 = var9.getContextClassLoader(); try {var9.setContextClassLoader(var42); currentTransport.set(this); try {AccessController.doPrivileged(new PrivilegedExceptionAction() {public Void run() throws IOException {Transport.this.checkAcceptPermission(var7); var6.dispatch(var38, var1); return null; }}, var7); return true; } catch (PrivilegedActionException var32) {throw (IOException)var32.getException(); }} finally {var9.setContextClassLoader(var10); currentTransport.set((Object)null); }} catch (IOException var35) {transportLog.log(Log.BRIEF, "exception thrown by dispatcher: ", var35); var8 = false; } finally {var5.decrementCallCount(); }return var8; }throw new NoSuchObjectException("no such object in table"); }
看看RegistryImpl的lookUp()實現(xiàn)。做了同步控制,并通過服務名從Map中取出服務對象。返回給客戶端。還記得我們在bindings中存放的其實是OperationImpl的真正實現(xiàn),并非是Stub對象。 public Remote lookup(String var1) throws RemoteException, NotBoundException {Hashtable var2 = this.bindings; synchronized(this.bindings) {Remote var3 = (Remote)this.bindings.get(var1); if(var3 == null) {throw new NotBoundException(var1); } else {return var3; }} }
  • 客戶端獲取通過lookUp()查詢獲得的客戶端OperationImpl的Stub對象
這里就不多說了。。多說無益。心好累。憑什么服務端返回給客戶端的是服務的實現(xiàn),但是客戶端獲取到的是Stub對象呢?用同樣的斷點的方法,我們可以發(fā)現(xiàn)問題出在MarshalInputStream的resolveProxyClass()上,里面其實也是創(chuàng)建了一個代理。這就是那個Stub類。
  • 客戶端進行真正地遠程服務調用
到目前為止,客戶端已經有了Stub對象。就可以和服務端進行愉快地交流了。細心的朋友可能發(fā)現(xiàn)這個例子中的服務實現(xiàn)OperationImpl繼承了UnicastRemoteObject,就像前面說的,它似乎不會像RegistryImpl一樣在服務端生成Skeleton對象。(對于非UnicastRemoteObject的則會生成Skeleton沒啥爭議)。我的理解是必然會進行一些處理生成Skeleton對象。因為Registry只是用來查找服務,最終調用服務還是得要客戶端與服務的連接。這個連接必然由Skeleton為我們屏蔽了。
小結:前面我們做了很多工作,大量工作用于起Registry服務和如何查找客戶端需要調用的服務。但事實上,這個Registry可以服務于很多的其他服務。一旦客戶端和服務端通過Stub和Skeleton建立了socket連接,后面的操作直接通過這個連接完成就結了!

五、看看Skeleton和Stub如何為我們屏蔽底層連接細節(jié)

Stub類:

  • public?class?Person_Stub?implements?Person?{????????
  • ????private?Socket?socket;????????
  • ????public?Person_Stub()?throws?Throwable?{????????
  • ????????//?connect?to?skeleton????????
  • ????????socket?=?new?Socket("computer_name",?9000);????????
  • ????}????????
  • ????public?int?getAge()?throws?Throwable?{????????
  • ????????//?pass?method?name?to?skeleton????????
  • ????????ObjectOutputStream?outStream?=????????
  • ????????????new?ObjectOutputStream(socket.getOutputStream());????????
  • ????????outStream.writeObject("age");????????
  • ????????outStream.flush();????????
  • ????????ObjectInputStream?inStream?=????????
  • ????????????new?ObjectInputStream(socket.getInputStream());????????
  • ????????return?inStream.readInt();????????
  • ????}????????
  • ????public?String?getName()?throws?Throwable?{????????
  • ????????//?pass?method?name?to?skeleton????????
  • ????????ObjectOutputStream?outStream?=????????
  • ????????????new?ObjectOutputStream(socket.getOutputStream());????????
  • ????????outStream.writeObject("name");????????
  • ????????outStream.flush();????????
  • ????????ObjectInputStream?inStream?=????????
  • ????????????new?ObjectInputStream(socket.getInputStream());????????
  • ????????return?(String)inStream.readObject();????????
  • ????}??
  • } ??
  • 可以看到,Stub對象做的事情是建立到服務端Skeleton對象的Socket連接。將客戶端的方法調用轉換為字符串標識傳遞給Skeleton對象。并且同步阻塞等待服務端返回結果。

    Skeleton類:

  • public?class?Person_Skeleton?extends?Thread?{????????
  • ????private?PersonServer?myServer;????????
  • ????public?Person_Skeleton(PersonServer?server)?{????????
  • ????????//?get?reference?of?object?server????????
  • ????????this.myServer?=?server;????????
  • ????}????????
  • ????public?void?run()?{????????
  • ????????try?{????????
  • ????????????//?new?socket?at?port?9000????????
  • ????????????ServerSocket?serverSocket?=?new?ServerSocket(9000);????????
  • ????????????//?accept?stub's?request????????
  • ????????????Socket?socket?=?serverSocket.accept();????????
  • ????????????while?(socket?!=?null)?{????????
  • ????????????????//?get?stub's?request????????
  • ????????????????ObjectInputStream?inStream?=????????
  • ????????????????????new?ObjectInputStream(socket.getInputStream());????????
  • ????????????????String?method?=?(String)inStream.readObject();????????
  • ????????????????//?check?method?name????????
  • ????????????????if?(method.equals("age"))?{????????
  • ????????????????????//?execute?object?server's?business?method????????
  • ????????????????????int?age?=?myServer.getAge();????????
  • ????????????????????ObjectOutputStream?outStream?=????????
  • ????????????????????????new?ObjectOutputStream(socket.getOutputStream());????????
  • ????????????????????//?return?result?to?stub????????
  • ????????????????????outStream.writeInt(age);????????
  • ????????????????????outStream.flush();????????
  • ????????????????}????????
  • ????????????????if(method.equals("name"))?{????????
  • ????????????????????//?execute?object?server's?business?method????????
  • ????????????????????String?name?=?myServer.getName();????????
  • ????????????????????ObjectOutputStream?outStream?=????????
  • ????????????????????????new?ObjectOutputStream(socket.getOutputStream());????????
  • ????????????????????//?return?result?to?stub????????
  • ????????????????????outStream.writeObject(name);????????
  • ????????????????????outStream.flush();????????
  • ????????????????}????????
  • ????????????}????????
  • ????????}?catch(Throwable?t)?{????????
  • ????????????t.printStackTrace();????????
  • ????????????System.exit(0);????????
  • ????????}????????
  • ????}?????????????
  • } ?
  • Skeleton對象做的事情是將服務實現(xiàn)傳入構造參數,獲取客戶端通過socket傳過來的方法調用字符串標識,將請求轉發(fā)到具體的服務上面。獲取結果之后返回給客戶端。

    六、總結: 本來是Java一個很簡單的用法,用了將近3天看了這部分的內容,感覺收獲還是比較大的。阿里實習的時候,一個師兄曾經說過,看源代碼需要看到什么程度?老實說這玩意看起來真的太累了。。總算是看完了。我覺得這是走向分布式的比較重要的一步。由于篇幅的關系,沒有涉及到TCP連接的細節(jié)。有興趣的可以看看源碼。 “看到你覺得你能說服自己就可以了”。
    七、附注: 這里參考了這篇文章以及其引用的各篇文章。java RMI原理詳解
    致敬和感謝!

    總結

    以上是生活随笔為你收集整理的深究Java中的RMI底层原理的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    国产又粗又猛又黄又爽 | 成年人免费看av | 国产精品一区二区三区在线看 | 黄色软件网站在线观看 | 国内精品一区二区 | 伊人五月天 | 成人久久免费视频 | av女优中文字幕在线观看 | 日本mv大片欧洲mv大片 | 亚洲激情综合 | 国语精品免费视频 | 国产亚洲精品久久久网站好莱 | 9在线观看免费高清完整版在线观看明 | 精品国产免费看 | 色com| 久久精品4 | 久久久国产成人 | 精品成人在线 | 五月丁色 | 97电影在线看视频 | 日韩有码第一页 | 久久久午夜精品理论片中文字幕 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 国产中文字幕在线观看 | 欧美天堂影院 | 免费观看黄色av | 中文网丁香综合网 | www.五月天色 | 99久久国产免费免费 | 国产91精品在线播放 | 不卡视频国产 | 中文字幕一区二区三区在线播放 | 97操碰| 久久综合九色综合网站 | 久久国产精品99久久久久久丝袜 | 在线观看91网站 | 一区二区三区在线影院 | 在线看污网站 | 久久精品国产亚洲 | 天天草av| 国产视频精品免费播放 | 午夜久久福利 | www黄色av| 一本到在线 | 操操操日日日干干干 | 免费在线观看黄 | 午夜视频在线瓜伦 | 亚洲免费黄色 | 久久网站免费 | 精品福利网站 | 欧美日韩18 | 午夜国产福利在线观看 | 亚洲欧美综合 | 亚洲精品动漫成人3d无尽在线 | 欧美日韩视频 | 成人在线你懂得 | 99色在线播放 | av超碰免费在线 | 久久精品79国产精品 | 亚洲精品国产综合99久久夜夜嗨 | 欧美不卡在线 | 色欧美88888久久久久久影院 | 成人av动漫在线观看 | 奇米四色影狠狠爱7777 | 成人黄色毛片视频 | 91秒拍国产福利一区 | 精品视频999| 久久精品99| 日韩欧美在线视频一区二区 | 亚洲无吗天堂 | 亚洲人成人天堂h久久 | 中文在线a∨在线 | 911国产在线观看 | 国产xx在线| 中文字幕有码在线观看 | 天天人人 | 欧美日韩国产网站 | 欧美坐爱视频 | 欧美大片在线观看一区 | 国产精品久久久久久影院 | 国产区网址 | 天天操天天干天天爽 | 国内视频1区 | 亚洲综合成人专区片 | 久久手机视频 | 一区二区精品视频 | 久草五月 | 97视频免费播放 | 亚洲国产精品资源 | 天天射综合网站 | 国产一区国产二区在线观看 | 亚洲一级久久 | 国产一级免费在线观看 | 国产精品久久久av久久久 | 日韩免费一区二区在线观看 | 全黄色一级片 | 日韩免费久久 | 色噜噜狠狠狠狠色综合 | a黄色片在线观看 | 丰满少妇在线观看资源站 | 欧美精品在线观看一区 | 午夜精品久久久久久中宇69 | 三级黄色三级 | 国产一级二级三级视频 | 日韩综合精品 | 狠狠干五月天 | 97超碰在| 亚洲亚洲精品在线观看 | 国产一区二区三区视频在线 | 99久热精品 | 九九视频这里只有精品 | 日韩综合一区二区三区 | 中文字幕91 | 亚洲午夜精品久久久久久久久久久久 | 国产一区二区精品久久 | 天天操天天干天天玩 | 久久综合精品一区 | 超碰在线最新地址 | 日韩va欧美va亚洲va久久 | 99视频偷窥在线精品国自产拍 | 精品国产一区二区三区噜噜噜 | 成人精品亚洲 | 亚洲欧美视频在线观看 | 欧美永久视频 | 久久精品www人人爽人人 | 免费高清在线视频一区· | 欧美精品久久久久久久久老牛影院 | 久久国产精品免费观看 | 亚洲日本韩国一区二区 | 九草在线观看 | 91av在线免费视频 | 特级西西444www大精品视频免费看 | 色综合久久88色综合天天人守婷 | 一个色综合网站 | 国产经典三级 | 欧美大片大全 | 婷婷丁香在线 | 亚洲国产中文字幕在线视频综合 | 五月婷婷综合激情 | 激情五月婷婷 | av大全免费在线观看 | 最新影院 | 视频国产在线观看18 | 免费观看mv大片高清 | 久久免费久久 | 在线观看中文字幕一区二区 | 国产91电影在线观看 | 日韩城人在线 | 国产xxxx性hd极品 | 国产精品xxxx18a99 | 国产精品高清一区二区三区 | 久久久久免费观看 | 久久影视中文字幕 | 欧美一二三在线 | 亚洲无吗av | 久久综合国产伦精品免费 | 日韩a欧美 | 免费91麻豆精品国产自产在线观看 | 日本mv大片欧洲mv大片 | 亚洲资源在线观看 | 天天爱天天舔 | av电影中文| 日韩欧美在线免费观看 | 另类老妇性bbwbbw高清 | 免费精品国产va自在自线 | 一区二区三区免费在线观看视频 | 91九色蝌蚪在线 | 午夜免费在线观看 | 久久这里只有精品首页 | 久99久视频 | 精品亚洲成人 | 中文字字幕在线 | 九九九热精品免费视频观看网站 | 国产精品久久久久久久久久东京 | 国产理论片在线观看 | 欧美国产大片 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美日韩久久 | 国产精品理论视频 | 激情综合色综合久久综合 | 中文字幕国内精品 | 亚洲精品一区二区三区在线观看 | 日韩久久视频 | 国产精品久久在线 | 黄色软件在线观看视频 | 国产精品一区二区无线 | 97人人看 | 国产精品99久久久久人中文网介绍 | 免费又黄又爽的视频 | 成年人在线免费看视频 | 日韩久久久久久 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | www.人人干| 日韩免费一区 | 欧美一级电影 | 国产在线最新 | 天天操天天吃 | 国产色就色 | 狠狠色丁香久久综合网 | 日韩精品在线播放 | av免费网 | www.com.黄 | 国产精品久久久久一区二区 | 久久色亚洲 | 欧美污污视频 | 99热这里只有精品免费 | 欧美激情片在线观看 | 在线观看免费一级片 | 激情综合五月 | 91久久国产综合精品女同国语 | 欧美一级乱黄 | 久久精品国产亚洲精品2020 | 欧美日韩一区久久 | 在线国产小视频 | 欧美尹人| 99视频精品在线 | 久久影院中文字幕 | 在线一区观看 | 欧美精品在线观看免费 | 色综合久久88色综合天天免费 | 91精品国产麻豆国产自产影视 | 韩国av在线播放 | 国产高清一区二区 | 国产成人黄色片 | 99视频这里有精品 | 91视频亚洲| 国产精品精品国产 | 伊人电影在线观看 | 精品在线视频播放 | 亚洲成成品网站 | 国产黄色精品视频 | av噜噜噜在线播放 | 五月激情亚洲 | 亚洲黄色在线 | 91在线观看高清 | 亚洲欧美日韩精品久久久 | 99国产精品久久久久老师 | 久久综合久久久久88 | 免费看的黄色 | 中文av一区二区 | 国产在线看 | 精品在线免费观看 | 久久免费视频播放 | 一区二区三区在线免费 | 免费观看v片在线观看 | 色综合久久精品 | 美国av片在线观看 | 国产精品永久免费观看 | 国产日韩欧美在线观看视频 | 色吊丝在线永久观看最新版本 | 91c网站色版视频 | 久久国产精品99精国产 | 91精品久久久久久久久久入口 | 成年人app网址 | 中文在线a在线 | 国产精品区二区三区日本 | 成人在线视频你懂的 | 毛片久久久 | 在线观看国产一区二区 | av在线精品| 免费在线观看一区 | 深夜视频久久 | 久久99精品国产99久久 | 国产精品免费一区二区 | 一区中文字幕 | 国产精品免费看久久久8精臀av | aaa免费毛片 | 91免费国产在线观看 | 在线观看国产麻豆 | 久久最新网址 | 欧美日本在线视频 | 国产在线p| 国产高清视频网 | 91在线精品视频 | 在线观看免费日韩 | 黄色国产高清 | 日日爽| 91亚色在线观看 | 日日夜夜添 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 一区二区成人国产精品 | av在线电影网站 | 久久精品91久久久久久再现 | 免费看片网站91 | 日韩和的一区二在线 | 毛片播放网站 | 亚洲 成人 一区 | 91精品视频在线 | 7777精品伊人久久久大香线蕉 | japanese黑人亚洲人4k | 久久深夜福利免费观看 | 国产在线美女 | 六月丁香社区 | 欧美极品xxxxx | 亚洲乱码精品久久久久 | 欧美午夜精品久久久久 | 成年人国产视频 | 亚洲视频h| 午夜精品影院 | 黄色毛片大全 | 97免费在线观看 | 99在线观看视频 | 在线免费黄色片 | 久久国产网站 | 中文字幕在线日 | 国内精品小视频 | 亚洲三级在线播放 | 国产精品人人做人人爽人人添 | 免费av大全 | 国产一区二区在线免费视频 | 中文字幕在线观看91 | 久久精品首页 | 久久精品综合网 | 91视频88av| av在线电影网站 | 九九视频一区 | 国产一区二区在线观看视频 | 色婷婷在线播放 | 91精品免费在线视频 | 美女视频一区 | 欧美一区二视频在线免费观看 | 青青草国产免费 | 五月婷婷播播 | 日韩网页 | 久久五月天色综合 | 中文在线免费观看 | 丁香网五月天 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 成人在线免费观看视视频 | 欧美在线视频免费 | 九九热视频在线免费观看 | 色com| 久久综合中文字幕 | 成人久久久精品国产乱码一区二区 | 激情视频国产 | 日韩av电影中文字幕 | 日韩免费在线 | 在线观看岛国av | 日韩成片| 欧美成天堂网地址 | 国产精品1000 | 亚洲综合最新在线 | 91av色| 极品嫩模被强到高潮呻吟91 | 国产精品无 | 亚洲手机天堂 | 久久这里只有精品首页 | 麻豆视频在线免费看 | 久久久久久久久久久影院 | 九九热在线观看视频 | 久草视频视频在线播放 | 久久福利| 日韩 精品 一区 国产 麻豆 | 免费观看一级成人毛片 | 97免费视频在线 | 中文av资源站 | 91麻豆传媒 | 亚洲高清在线视频 | 激情五月婷婷综合网 | 欧美大荫蒂xxx | 国产一级三级 | 久久久av免费 | 在线免费中文字幕 | 91九色老| 久久99精品久久久久久久久久久久 | 手机在线观看国产精品 | 日韩精品一区二区三区三炮视频 | 久久午夜网| 最近2019好看的中文字幕免费 | 综合网成人 | 国产69精品久久久久久久久久 | 天堂av网址 | aaawww| 亚洲专区 国产精品 | 亚洲精品观看 | 国产精品video爽爽爽爽 | 在线观看av不卡 | 在线影视 一区 二区 三区 | 午夜精品久久久久久久99婷婷 | 国产精品久久久久亚洲影视 | 综合在线色| 天天插一插 | 国色天香永久免费 | 91精品对白一区国产伦 | 亚洲激情 在线 | 天天av天天 | 人人插人人射 | 麻豆超碰 | 九九在线国产视频 | 国产乱对白刺激视频不卡 | 国产精品s色 | www婷婷 | www.com.黄| 最新不卡av | 国产一区麻豆 | 人人盈棋牌 | 久久免费的精品国产v∧ | 国产破处视频在线播放 | 国产麻豆剧果冻传媒视频播放量 | 在线视频 区| 精品一区二区免费 | 中文字幕在线观看不卡 | 国产手机在线 | 国产精品黄 | 天天色宗合| av福利在线免费观看 | 操久| 成人久久18免费网站图片 | 99国产精品视频免费观看一公开 | 日本在线视频网址 | 国产一区二区三区高清播放 | 久久99久久99久久 | jizz欧美性9| 成人小视频在线免费观看 | 麻豆视频一区 | 成人羞羞免费 | 久草精品视频在线看网站免费 | 久久热首页 | 久久午夜网| 亚洲一区二区视频在线播放 | 亚洲综合丁香 | 成人av电影免费观看 | 欧美精品做受xxx性少妇 | 国产最新视频在线观看 | 久久五月天色综合 | 成人av免费在线播放 | 高清不卡一区二区在线 | 在线三级播放 | 成人av教育 | 国产手机免费视频 | 香蕉视频最新网址 | 久久久久福利视频 | 色综合网在线 | 国产成人久久久77777 | 在线亚洲小视频 | 日韩啪啪小视频 | 奇米影视777四色米奇影院 | 午夜精品导航 | 亚洲干视频在线观看 | 日韩电影在线观看中文字幕 | 久久成人免费视频 | 日韩中文字幕91 | 国产精品久久久久久影院 | 91精品久久久久 | 久久免费精品一区二区三区 | 欧美亚洲另类在线视频 | 欧美极品少妇xxxx | 日韩中文字幕免费视频 | 欧美a级片网站 | 五月婷婷狠狠 | 在线午夜电影神马影院 | 成 人 黄 色 视频免费播放 | 国产精品美女久久久免费 | 手机看片99 | 日韩欧美精品在线视频 | 久久久视频在线 | 91丨九色丨国产女 | 欧美亚洲国产一卡 | av网站有哪些| 欧美激情视频在线观看免费 | www久久久久 | 亚洲高清久久久 | www.夜色.com | 亚洲砖区区免费 | 黄色在线视频网址 | 日韩一区二区三区免费电影 | 黄色亚洲精品 | 激情五月色播五月 | 97国产大学生情侣酒店的特点 | 狠狠的干狠狠的操 | 成人免费在线网 | www.五月天| wwxxx日本| 91在线播放综合 | 国产成人一区三区 | 国产午夜精品一区二区三区欧美 | av在线免费播放网站 | 国产99久久久国产精品免费二区 | 人人爽人人乐 | 在线观看成人小视频 | 日日夜夜狠狠干 | 久久视屏网 | 国内精品久久久久久久97牛牛 | 亚洲国产精品推荐 | 激情五月看片 | 亚洲精品ww | 日韩区视频 | 国产精品免费在线视频 | 国产成年免费视频 | 亚洲国产丝袜在线观看 | 天天爱av导航 | 日韩一区二区三区高清在线观看 | 亚洲精品在线一区二区 | 日韩精品一区二区三区水蜜桃 | ww亚洲ww亚在线观看 | 欧美日韩中文字幕在线视频 | 免费高清在线一区 | 国产精品自产拍在线观看蜜 | 国内少妇自拍视频一区 | 91在线porny国产在线看 | 亚洲精品观看 | 久久精品视频免费观看 | 国产午夜三级一区二区三 | 欧美精品第一 | 久久99精品国产麻豆婷婷 | 美女在线免费观看视频 | 久久精品国产99国产 | 欧洲激情在线 | 欧美大片mv免费 | 欧美成人在线免费 | 在线免费观看黄色 | 久青草影院 | 成人一级 | av免费看在线 | 国产高清在线免费视频 | 美女网站视频色 | 91中文在线 | 狠狠躁夜夜躁人人爽超碰91 | 日韩一区在线播放 | 婷婷黄色片 | 亚洲精品国产精品国自产 | 国产色视频网站 | 国产精品久久久久久久久久久久 | 超碰在线公开免费 | 91精品色| 亚洲精品乱码白浆高清久久久久久 | 亚洲 欧洲av | 在线免费观看不卡av | 午夜精品成人一区二区三区 | 免费亚洲片 | 日韩成人免费在线电影 | 成人永久视频 | 成人午夜黄色 | 日韩精品久久一区二区 | 国产日本亚洲高清 | 午夜影院一级 | a级国产乱理论片在线观看 特级毛片在线观看 | 青青五月天 | 久久久久国产成人精品亚洲午夜 | 色资源二区在线视频 | 中文字幕在线日本 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 欧美孕妇视频 | 国产精品资源 | 日韩精品视频第一页 | 涩涩成人在线 | 久久综合色天天久久综合图片 | 亚洲天天 | 亚洲最大av网 | 久久优| 国产亚洲精品久 | 国产精品每日更新 | 黄色在线观看免费网站 | 色小说在线 | 亚洲国产美女精品久久久久∴ | 丁香视频 | 欧美精品亚洲精品日韩精品 | 成人一区在线观看 | 91在线在线观看 | 黄色av一区 | 免费一级毛毛片 | 免费成人短视频 | 色综合天天视频在线观看 | 精品国产aⅴ麻豆 | 成人免费观看网站 | 97精品国产 | 天天亚洲 | 天天操天天操 | 日韩午夜电影网 | 国产视频中文字幕在线观看 | 九九热免费在线观看 | 天天做天天爱天天爽综合网 | 中文字幕一区二区三区久久蜜桃 | 在线视频 一区二区 | 国产精品一区二区久久久 | 天天干天天操天天爱 | 狠狠干 狠狠操 | 99热精品久久 | 国产精品免费在线播放 | 在线不卡中文字幕播放 | 欧美巨乳波霸 | 97视频网址 | 日韩av手机在线看 | 色综合久久久久久中文网 | 国产成人99av超碰超爽 | 久久在线一区 | www免费看 | www99久久| 日韩高清无线码2023 | 一区二区三区高清不卡 | 精品国产视频在线观看 | 日本久久久久久久久久久 | 一区二区三区 亚洲 | 国产一区高清在线观看 | 激情伊人| ww亚洲ww亚在线观看 | 欧美一区在线观看视频 | 国产一二三四在线观看视频 | 在线视频一二区 | 日韩美av在线 | 最近中文字幕mv | 日本久久久精品视频 | 天天躁日日躁狠狠躁av中文 | 五月综合在线观看 | 欧美黑吊大战白妞欧美 | 成人国产精品久久久春色 | 在线中文字幕视频 | 日韩视频专区 | 免费久久网站 | 国产一级电影在线 | 99国产一区二区三精品乱码 | 久久综合狠狠综合久久狠狠色综合 | 精品国产一区二区三区四区在线观看 | 国精产品一二三线999 | 日韩精品不卡在线 | 欧美亚洲国产日韩 | 91av资源网 | 免费成人在线网站 | 亚洲欧洲视频 | 婷婷丁香色 | 久久精品国产亚洲精品2020 | 99热精品久久 | 成 人 免费 黄 色 视频 | 精品一区中文字幕 | 国产色视频网站2 | 欧美网址在线观看 | 在线看片91 | 一区二区三区免费在线观看 | 国产一区二区三区四区在线 | 日本一区二区三区视频在线播放 | 国产精品99久久久久人中文网介绍 | 最近中文字幕在线 | 高清视频一区 | 日韩黄色大片在线观看 | 亚洲激情 欧美激情 | 一区二区中文字幕在线观看 | 欧美国产三区 | 国产黑丝一区二区 | 色播99 | 黄色毛片电影 | 日韩中文字幕91 | 综合天堂av久久久久久久 | 久久精品4 | 成人免费在线电影 | 综合网中文字幕 | 成年人视频在线免费观看 | 五月激情视频 | 精品96久久久久久中文字幕无 | 久久精品精品电影网 | 91av原创 | 天天做日日爱夜夜爽 | 免费看一及片 | 久久九精品 | 国产精品免费观看国产网曝瓜 | 久久国产欧美日韩 | 日韩免费播放 | 国产69久久久 | 欧美巨大荫蒂茸毛毛人妖 | 欧美片一区二区三区 | www.香蕉视频 | a级国产乱理论片在线观看 特级毛片在线观看 | 黄色国产成人 | 久久久久国产一区二区三区 | 中文字幕资源在线 | 成人午夜电影在线 | 国产精品久久久久久久久久东京 | 波多野结衣一区 | 欧美一区二区在线看 | 天天干天天操天天爱 | 国内精品久久久久久久久久久 | 午夜日b视频 | 国产呻吟在线 | 日韩精品免费一区二区在线观看 | 国产视频欧美视频 | 国产亚洲va综合人人澡精品 | 高清不卡免费视频 | 欧美了一区在线观看 | 成人精品一区二区三区中文字幕 | a色视频| 久久久久久免费 | 中文字幕电影高清在线观看 | 久久九九免费视频 | 成 人 a v天堂 | 高清一区二区三区 | 亚洲综合国产精品 | 久久手机免费视频 | 国产视频在线看 | 不卡电影一区二区三区 | www.天天操 | 五月婷婷开心中文字幕 | 在线观看中文字幕网站 | 免费在线观看av网站 | 久福利 | 在线中文字幕一区二区 | 国内一级片在线观看 | 成人性生交大片免费看中文网站 | 日韩精品1区2区 | 日韩精品一区二区三区三炮视频 | 人操人| 亚洲综合成人婷婷小说 | 天天操天天色天天射 | 狠狠ri| 免费看黄的视频 | 超碰97免费 | 最近中文字幕在线播放 | 久久久久国产成人精品亚洲午夜 | 国产专区精品视频 | 免费福利在线 | 国产一级片直播 | 日本最新一区二区三区 | 成人av在线直播 | 久久激五月天综合精品 | 日韩精品一区二区三区免费视频观看 | 国产91精品一区二区麻豆网站 | 免费高清看电视网站 | 午夜av大片 | 国产精品久久网站 | 国产一级二级三级在线观看 | 丁香六月色 | 久久五月激情 | 久久网站免费 | 国产日本在线观看 | 99久久久久久久 | 成人免费视频a | 国产人成在线视频 | 婷婷精品进入 | 在线观看91久久久久久 | 亚洲一区二区视频 | 91精品网站在线观看 | 日韩欧美视频免费观看 | 在线观av | 久久久国产精品人人片99精片欧美一 | 中文在线免费看视频 | 日韩网站视频 | 在线免费黄色片 | 国产精品免费在线播放 | 99精品欧美一区二区三区黑人哦 | 在线中文字幕网站 | 一本一本久久aa综合精品 | 亚洲精品高清在线 | 精品色999 | 亚洲精品乱码久久久久久高潮 | 成年人在线播放视频 | 国产理论免费 | 五月天亚洲激情 | 久久久蜜桃一区二区 | 丁香激情综合国产 | 久草在线视频新 | 一区在线观看 | www.五月婷婷 | 一级理论片在线观看 | 国产精品久久久久久久久久免费 | 在线看不卡av | 成人小视频在线播放 | 久久伊人免费视频 | 人人爽人人射 | 美女网色 | 不卡电影一区二区三区 | 欧美热久久 | 成人国产精品一区 | 日韩三级视频在线观看 | 亚洲黄色在线观看 | 国产一级片久久 | 丁香综合av | 成人午夜久久 | 免费在线观看一区二区三区 | 中文视频在线播放 | 国产精品igao视频网网址 | 色资源中文字幕 | 亚洲第一中文字幕 | 欧美天天射 | 欧美成年性 | 激情欧美一区二区三区免费看 | 日日干天天| 午夜 久久 tv | 亚洲资源在线网 | 狠狠久久婷婷 | 国产手机免费视频 | 国产成人精品一区二区在线观看 | 中文字幕免费不卡视频 | 91在线观看视频 | 伊人久久精品久久亚洲一区 | 亚洲精品在线视频播放 | 亚洲综合网站在线观看 | 99热高清 | 日韩在线视频一区二区三区 | 久久综合免费 | 中文字幕在线成人 | 亚洲成人动漫在线观看 | 国产专区视频在线观看 | 男女靠逼app | 特黄一级毛片 | 久久综合之合合综合久久 | 久久久免费高清视频 | 在线观看黄色大片 | 久久精品国产一区二区电影 | 欧美性网站 | 久久久久久久久影视 | 西西444www | 国产在线黄色 | 国产精品久久久久久久久久久久午夜 | 国内精品久久久久影院优 | 久久久久福利视频 | 中文字幕观看在线 | 伊人va| 97人人超碰在线 | 91精品国产成人 | 免费观看成人网 | 国产精品永久在线观看 | 在线观看激情av | 久久视频在线 | 免费在线观看成人小视频 | 黄色小网站在线观看 | 日韩三级视频在线观看 | 丁香婷婷激情国产高清秒播 | 日韩免费精品 | 丁香激情网 | 成人在线视 | 久久久亚洲国产精品麻豆综合天堂 | 日韩一级黄色大片 | 福利视频导航网址 | 欧美久久久久久久久中文字幕 | 99精品国产高清在线观看 | 色多多视频在线观看 | 黄色软件视频大全免费下载 | 四虎影视久久久 | 日韩一级片网址 | 中文资源在线播放 | 亚洲六月丁香色婷婷综合久久 | 国产精品99免视看9 国产精品毛片一区视频 | 视频一区在线免费观看 | www.看片网站 | 欧美一区二区三区在线视频观看 | 成人免费视频播放 | 国产精品久久久久久久久久久免费看 | 成人国产一区二区 | 精品国产自在精品国产精野外直播 | 国产伦理久久精品久久久久_ | 亚洲综合视频在线观看 | 天天曰天天射 | 欧美-第1页-屁屁影院 | 久久66热这里只有精品 | 韩国av一区二区三区在线观看 | 日韩中文字幕免费在线播放 | 国产精品一区二区三区在线免费观看 | 婷婷夜夜 | 色99视频 | 999国产精品视频 | 66av99精品福利视频在线 | 中文字幕在线观看免费观看 | 日韩小视频 | 97成人在线视频 | 免费三级av | 国产成人精品久久久 | 亚洲不卡在线 | 国产一区免费 | 国产69精品久久99的直播节目 | 伊人伊成久久人综合网站 | 在线观看视频91 | 伊人成人精品 | 天天天操操操 | 黄色av网站在线观看免费 | 久久久国产精品人人片99精片欧美一 | 日韩精品久久一区二区 | 天天摸天天操天天爽 | 黄色软件在线观看免费 | 一二三区av | 亚洲午夜久久久久久久久电影网 | 天天操夜夜干 | 精品久久网 | 亚洲精品视频一二三 | 狠狠干网址 | 婷婷精品 | 波多野结衣久久资源 | 夜夜嗨av色一区二区不卡 | 久久久久免费 | 最新真实国产在线视频 | 国产美女久久久 | 激情五月亚洲 | 国产中文字幕91 | 国产精品欧美久久久久无广告 | 91九色综合 | 午夜三级在线 | 久久精品视频国产 | 涩涩网站在线观看 | 香蕉网站在线观看 | 综合久久久久久久 | 免费电影播放 | 午夜视频在线观看欧美 | 99久久久久国产精品免费 | 久久精品视频观看 | 欧美色图亚洲图片 | 日韩大片在线观看 | 婷婷亚洲综合 | 欧美精品一区二区在线播放 | 最新日韩在线 | 久久婷婷色 | 午夜av不卡 | 国产精品2020 | 91c网站色版视频 | 亚洲午夜剧场 | 日韩欧美精品在线 | 国产在线视频一区 | 国产中文字幕91 | 色爱区综合激月婷婷 | 91久久久久久久一区二区 | 亚洲精品免费观看视频 | 狠狠操综合网 | 国产美女视频免费观看的网站 | 在线看免费 | www操操操 | 久草精品国产 | 国产精品成人国产乱一区 | 久久久精品99 | 久久国产精品免费一区 | 国产中文a | 综合天天| 99性视频 | 天天操夜操 | 国产日韩在线播放 | 国产精品不卡视频 | 久草在线观 | 国产亚洲精品电影 | 免费裸体视频网 | 亚洲电影一区二区 | 成人污视频在线观看 | 一区二区精品在线观看 | 97在线观看 | 国产成视频在线观看 | 久久久在线视频 | 日韩在线观看视频免费 | 日本不卡一区二区三区在线观看 | 91精品播放 | 国产亚洲va综合人人澡精品 | 久久久一本精品99久久精品66 | 国产精品一区二区三区四区在线观看 | 在线直播av | 性色av一区二区三区在线观看 | 91在线视频观看 | 六月丁香在线观看 | 黄色app网站在线观看 | 欧美精品二区 | 国产精品久久久久久久av大片 | 麻豆91视频 | 久久久久这里只有精品 | 亚洲少妇自拍 | 欧美日韩免费在线观看视频 | 四虎在线观看精品视频 | 久久99精品国产91久久来源 | 亚洲午夜精品一区 | 日韩欧美一区二区不卡 | 99夜色 | 欧美日韩不卡一区二区三区 | 国产 在线 日韩 | 91福利视频久久久久 | 夜夜嗨av色一区二区不卡 | 综合网天天色 | 国产精品激情偷乱一区二区∴ | 高清av中文字幕 | 久久久久久片 | 亚洲国产中文字幕在线 | 国内久久久久久 | 91免费观看视频网站 | 99在线热播 | 精品免费一区 | 天天爽夜夜爽人人爽曰av | 亚洲国产精品久久久久婷婷884 | 92av视频| 免费看国产曰批40分钟 | 日韩黄色免费在线观看 | 青青久视频 | 国产精品亚洲片夜色在线 | 国产精品久久久久久爽爽爽 | 国产高清精品在线 | 91免费版在线观看 | 国产一区二区久久久 | 久久精品香蕉视频 | 婷婷中文字幕在线观看 | 香蕉网站在线观看 | 国产伦理一区二区三区 | 欧美极品一区二区三区 | 亚洲视频每日更新 | 久久成人精品电影 | 中文字幕第一页在线vr | 亚洲最新在线视频 | 国产淫片免费看 | 日本在线视频网址 | 国产成人久久精品77777 | 91在线成人 | 日本在线精品视频 | 亚洲视频aaa| www.狠狠插.com | 国内精品免费 | 国产麻豆精品久久 | 黄色看片 | 亚洲欧美国产精品久久久久 | 天天草天天插 | 日韩专区在线播放 |