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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

tomcat8源码分析-Connector初始化

發布時間:2025/3/15 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat8源码分析-Connector初始化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

談起Tomcat的誕生,最早可以追溯到1995年。近20年來,Tomcat始終是使用最廣泛的Web服務器,由于其使用Java語言開發,所以廣為Java程序員所熟悉。很多人早期的J2EE項目,由程序員自己實現Jsp頁面或者Servlet接受請求,后來借助Struts1、Struts2、Spring等中間件后,實際也是利用Filter或者Servlet處理請求,大家肯定要問了,這些Servlet處理的請求來自哪里?Tomcat作為Web服務器是怎樣將HTTP請求交給Servlet的呢?

  本文就Tomcat對HTTP的請求處理細節進行分析。

  提示:閱讀本文前,請確保首先理解了《Tomcat源碼分析——生命周期管理》中的內容。

CONNECTOR的初始化

  根據《Tomcat源碼分析——生命周期管理》一文的內容,我們知道Tomcat中有很多容器,包括Server、Service、Connector等。其中Connector正是與HTTP請求處理相關的容器。Service是Server的子容器,而Connector又是Service的子容器。那么這三個容器的初始化順序為:Server->Service->Connector。Connector的實現分為以下幾種:

  • Http Connector:基于HTTP協議,負責建立HTTP連接。它又分為BIO Http Connector與NIO Http Connector兩種,后者提供非阻塞IO與長連接Comet支持。
  • AJP Connector:基于AJP協議,AJP是專門設計用于Tomcat與HTTP服務器通信定制的協議,能提供較高的通信速度和效率。如與Apache服務器集成時,采用這個協議。
  • APR HTTP Connector:用C實現,通過JNI調用的。主要提升對靜態資源(如HTML、圖片、CSS、JS等)的訪問性能。現在這個庫已獨立出來可用在任何項目中。由于APR性能較前兩類有很大提升,所以目前是Tomcat的默認Connector。

現在我們直接來看Connector的initInternal方法吧,見代碼清單1。

代碼清單1

@Overrideprotected void initInternal() throws LifecycleException {super.initInternal();// Initialize adapteradapter = new CoyoteAdapter(this);protocolHandler.setAdapter(adapter);// Make sure parseBodyMethodsSet has a defaultif (null == parseBodyMethodsSet) {setParseBodyMethods(getParseBodyMethods());}if (protocolHandler.isAprRequired() && !AprLifecycleListener.isAprAvailable()) {throw new LifecycleException(sm.getString("coyoteConnector.protocolHandlerNoApr",getProtocolHandlerClassName()));}if (AprLifecycleListener.isAprAvailable() && AprLifecycleListener.getUseOpenSSL() &&protocolHandler instanceof AbstractHttp11JsseProtocol) {AbstractHttp11JsseProtocol<?> jsseProtocolHandler =(AbstractHttp11JsseProtocol<?>) protocolHandler;if (jsseProtocolHandler.isSSLEnabled() &&jsseProtocolHandler.getSslImplementationName() == null) {// OpenSSL is compatible with the JSSE configuration, so use it if APR is availablejsseProtocolHandler.setSslImplementationName(OpenSSLImplementation.class.getName());}}try {protocolHandler.init();} catch (Exception e) {throw new LifecycleException(sm.getString("coyoteConnector.protocolHandlerInitializationFailed"), e);}}

?

代碼清單1說明了Connector的初始化步驟如下:

步驟一 構造網絡協議處理的COYOTEADAPTER

  代碼清單1構造了CoyoteAdapter對象,并且將其設置為ProtocolHandler的Adapter。ProtocolHandler是做什么的呢?Tomcat處理HTTP請求,需要有一個ServerSocket監聽網絡端口來完成任務。接口ProtocolHandler被設計成控制網絡端口監聽組件運行,負責組件的生命周期控制,這個接口實際并沒有定義網絡端口監聽功能的規范,而是用于負責維護組件的生命周期。從ProtocolHandler的名字來看,它應該是網絡協議的處理者,但它實際不負責這個功能,而是將其交給org.apache.coyote.Adapter來完成,這么設計估計是為了方便維護和拓展新功能。Http11Protocol是ProtocolHandler接口的一個實現(是Connector的默認處理協議),被設計用來處理HTTP1.1網絡協議的請求,通過該類可以完成在某個網絡端口上面的監聽,同時以HTTP1.1的協議來解析請求內容,然后將請求傳遞到Connector所寄居的Container容器pipeline流水工作線上處理。此處的ProtocolHandler是何時生成的呢?還記得《TOMCAT源碼分析——SERVER.XML文件的加載與解析》一文中的Digester和Rule嗎?Digester在解析到<Connector>標簽的時候,會執行startElement方法,startElement中會調用Rule的begin(String namespace, String name, Attributes attributes)方法,Connector對應的Rule包括ConnectorCreateRule,ConnectorCreateRule的begin方法的實現見代碼清單2。

代碼清單2

@Overridepublic void begin(String namespace, String name, Attributes attributes)throws Exception {Service svc = (Service)digester.peek();Executor ex = null;if ( attributes.getValue("executor")!=null ) {ex = svc.getExecutor(attributes.getValue("executor"));}Connector con = new Connector(attributes.getValue("protocol"));if (ex != null) {setExecutor(con, ex);}String sslImplementationName = attributes.getValue("sslImplementationName");if (sslImplementationName != null) {setSSLImplementationName(con, sslImplementationName);}digester.push(con);}

?

代碼清單2中調用了Connector的構造器,傳遞的參數為屬性protocol。我們知道server.xml中的Connector有兩個:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

我們看看Connector的構造器實現,見代碼清單3。

代碼清單3

public Connector(String protocol) {
      //DeprcatedsetProtocol(protocol);
// Instantiate protocol handlerProtocolHandler p = null;try {Class<?> clazz = Class.forName(protocolHandlerClassName);p = (ProtocolHandler) clazz.getConstructor().newInstance();} catch (Exception e) {log.error(sm.getString("coyoteConnector.protocolHandlerInstantiationFailed"), e);} finally {this.protocolHandler = p;}if (Globals.STRICT_SERVLET_COMPLIANCE) {uriCharset = StandardCharsets.ISO_8859_1;} else {uriCharset = StandardCharsets.UTF_8;}}

setProtocol方法已經作廢。以HTTP/1.1為例,由于默認情況下Apr不可用,所以protocolHandlerClassName會被設置為"org.apache.coyote.http11.Http11NioProtocol",那么反射生成的protocolHandler就是Http11NioProtocol實例。Tomcat默認還會配置協議是AJP/1.3的Connector,那么此Connector的protocolHandler就是org.apache.coyote.ajp.AjpProtocol。

代碼清單5

public void setProtocolHandlerClassName(String protocolHandlerClassName) {this.protocolHandlerClassName = protocolHandlerClassName;}

?

除此之外,ProtocolHandler還有其它實現,如圖1所示。

?

圖1  ProtocolHandler類繼承體系

圖1中有關ProtocolHandler的實現類都在org.apache.coyote包中?。前面所說的BIO Http Connector實際就是Http11Protocol,NIO Http Connector實際就是Http11NioProtocol,AJP Connector包括AjpProtocol和AjpAprProtocol,APR HTTP Connector包括AjpAprProtocol、Http11AprProtocol,此外還有一個MemoryProtocolHandler(這個是做什么的,目前沒搞清楚,有知道的同學告訴我下啊!)。

步驟二?將PROTOCOLHANDLER注冊到JMX

  BIO Http Connector的ProtocolHandler(即Http11Protocol)的JMX注冊名為Catalina:type=ProtocolHandler,port=8080。AJP Connector的ProtocolHandler(即AjpProtocol)的JMX注冊名為Catalina:type=ProtocolHandler,port=8009。有關Tomcat中JMX注冊的內容,請閱讀《TOMCAT源碼分析——生命周期管理》一文。

CONNECTOR的啟動

  根據《Tomcat源碼分析——生命周期管理》一文的內容,我們知道Tomcat中有很多容器。ProtocolHandler的初始化稍微有些特殊,Server、Service、Connector這三個容器的初始化順序為:Server->Service->Connector。值得注意的是,ProtocolHandler作為Connector的子容器,其初始化過程并不是由Connector的initInternal方法調用的,而是與啟動過程一道被Connector的startInternal方法所調用。由于本文的目的是分析請求,所以直接從Connector的startInternal方法(見代碼清單6)開始。

代碼清單6

@Overrideprotected void startInternal() throws LifecycleException {// Validate settings before startingif (getPort() < 0) {throw new LifecycleException(sm.getString("coyoteConnector.invalidPort", Integer.valueOf(getPort())));}setState(LifecycleState.STARTING);try {protocolHandler.start();} catch (Exception e) {throw new LifecycleException(sm.getString("coyoteConnector.protocolHandlerStartFailed"), e);}}

代碼清單6說明了Connector的startInternal方法的執行順序如下:

  • 將Connector容器的狀態更改為啟動中(LifecycleState.STARTING);
  • 啟動ProtocolHandler;
  • 初始化PROTOCOLHANDLER

      簡單起見,我們以AbstractProtocol為例剖析ProtocolHandler的init方法,其實現見代碼清單7。

    代碼清單7

    @Overridepublic void init() throws Exception {if (getLog().isInfoEnabled()) {getLog().info(sm.getString("abstractProtocolHandler.init", getName()));}if (oname == null) {// Component not pre-registered so register itoname = createObjectName();if (oname != null) {Registry.getRegistry(null, null).registerComponent(this, oname, null);}}if (this.domain != null) {rgOname = new ObjectName(domain + ":type=GlobalRequestProcessor,name=" + getName());Registry.getRegistry(null, null).registerComponent(getHandler().getGlobal(), rgOname, null);}String endpointName = getName();endpoint.setName(endpointName.substring(1, endpointName.length()-1));endpoint.setDomain(domain);endpoint.init();}

    從代碼清單7看到,AbstractProtocol的初始化步驟如下:

    步驟一?將PROTOCOLHANDLER注冊到JMX

      BIO Http Connector的ProtocolHandler(即Http11Protocol)的JMX注冊名為Catalina:type=ProtocolHandler,port=8080。BIO Http Connector的MapperListener的注冊名為  Catalina:type=Mapper,port=8080。AJP Connector的ProtocolHandler(即AjpProtocol)的JMX注冊名為Catalina:type=ProtocolHandler,port=8009。AJP Connector的MapperListener的注冊名為Catalina:type=Mapper,port=8009。有關Tomcat中JMX注冊的內容,請閱讀《TOMCAT源碼分析——生命周期管理》一文。

      AbstractProtocol的構造器中還設置了提高socket性能的tcpNoDelay等選項,見代碼清單8。

    代碼清單8

    public AbstractProtocol(AbstractEndpoint<S> endpoint) {
          this.endpoint = endpoint;//Deprecated
          setSoLinger(Constants.DEFAULT_CONNECTION_LINGER);setTcpNoDelay(Constants.DEFAULT_TCP_NO_DELAY);}

    步驟二 初始化endpoint,代碼清單9是AbstractEndpoint類的init方法

    代碼清單9

    public void init() throws Exception {if (bindOnInit) {bind();bindState = BindState.BOUND_ON_INIT;}if (this.domain != null) {// Register endpoint (as ThreadPool - historical name)oname = new ObjectName(domain + ":type=ThreadPool,name=\"" + getName() + "\"");Registry.getRegistry(null, null).registerComponent(this, oname, null);for (SSLHostConfig sslHostConfig : findSslHostConfigs()) {registerJmx(sslHostConfig);}}}

    ?

    啟動PROTOCOLHANDLER

      我們繼續以AbstractProtocol為例,剖析ProtocolHandler的start方法,其實現見代碼清單10。

    代碼清單10

    @Overridepublic void start() throws Exception {if (getLog().isInfoEnabled()) {getLog().info(sm.getString("abstractProtocolHandler.start", getName()));}endpoint.start();// Start async timeout threadasyncTimeout = new AsyncTimeout();Thread timeoutThread = new Thread(asyncTimeout, getNameInternal() + "-AsyncTimeout");int priority = endpoint.getThreadPriority();if (priority < Thread.MIN_PRIORITY || priority > Thread.MAX_PRIORITY) {priority = Thread.NORM_PRIORITY;}timeoutThread.setPriority(priority);timeoutThread.setDaemon(true);timeoutThread.start();}

    ?調用endpoint的start方法(見代碼清單11)接受請求的創建線程池并創建一定數量的接收請求線程。清單11是endpoint的start方法:

    代碼清單11

    //AbstractEndpoint.java public final void start() throws Exception {if (bindState == BindState.UNBOUND) {bind();bindState = BindState.BOUND_ON_START;}startInternal();//要調用子類NioEndpoint.java類的實現方法 }//NioEndpoint.java 代碼如下: @Overridepublic void startInternal() throws Exception {if (!running) {running = true;paused = false;processorCache = new SynchronizedStack<>(SynchronizedStack.DEFAULT_SIZE,socketProperties.getProcessorCache());eventCache = new SynchronizedStack<>(SynchronizedStack.DEFAULT_SIZE,socketProperties.getEventCache());nioChannels = new SynchronizedStack<>(SynchronizedStack.DEFAULT_SIZE,socketProperties.getBufferPool());// Create worker collectionif ( getExecutor() == null ) {createExecutor();}initializeConnectionLatch();// Start poller threadspollers = new Poller[getPollerThreadCount()];for (int i=0; i<pollers.length; i++) {pollers[i] = new Poller();Thread pollerThread = new Thread(pollers[i], getName() + "-ClientPoller-"+i);pollerThread.setPriority(threadPriority);pollerThread.setDaemon(true);pollerThread.start();}startAcceptorThreads();}}

    從代碼清單11看出NioEndpoint的start方法的執行步驟如下:

    步驟一 創建線程池與任務隊列

    如果NioEndpoint尚未處于運行中(即running等于true),才會創建線程池和任務隊列。如果尚未創建線程池(即調用getExecutor方法等于null),則需要調用createExecutor方法(見代碼清單12)創建線程池和任務隊列TaskQueue。

    代碼清單12

    public void createExecutor() {internalExecutor = true;TaskQueue taskqueue = new TaskQueue();TaskThreadFactory tf = new TaskThreadFactory(getName() + "-exec-", daemon, getThreadPriority());executor = new ThreadPoolExecutor(getMinSpareThreads(), getMaxThreads(), 60, TimeUnit.SECONDS,taskqueue, tf);taskqueue.setParent( (ThreadPoolExecutor) executor);}

    protected final void startAcceptorThreads() {int count = getAcceptorThreadCount();acceptors = new Acceptor[count];for (int i = 0; i < count; i++) {acceptors[i] = createAcceptor();String threadName = getName() + "-Acceptor-" + i;acceptors[i].setThreadName(threadName);Thread t = new Thread(acceptors[i], threadName);t.setPriority(getAcceptorThreadPriority());t.setDaemon(getDaemon());t.start();}}

    步驟二?創建接收請線程

      如果NioEndpoint尚未處于運行中(即running等于true),才會創建接收請求線程。從代碼清單11可以看出接收請求線程的數量主要由acceptorThreadCount控制,代碼清單9已經告訴我們acceptorThreadCount的默認值為1,但是我們可以通過給Connector增加acceptorThreadCount屬性來修改接收請求線程的數量。這些接收請求線程的主要工作由Acceptor完成,Acceptor的實質是一個Runnable,見代碼清單13。

    代碼清單13

    public abstract static class Acceptor implements Runnable {public enum AcceptorState {NEW, RUNNING, PAUSED, ENDED}protected volatile AcceptorState state = AcceptorState.NEW;public final AcceptorState getState() {return state;}private String threadName;protected final void setThreadName(final String threadName) {this.threadName = threadName;}protected final String getThreadName() {return threadName;}}

    最后初始化MAPPERLISTENER

      MapperListener繼承LifecycleMBeanBase,它的startInternal方法用于初始化,見代碼清單14。

    代碼清單14

    @Overridepublic void startInternal() throws LifecycleException {setState(LifecycleState.STARTING);Engine engine = service.getContainer();if (engine == null) {return;}findDefaultHost();addListeners(engine);Container[] conHosts = engine.findChildren();for (Container conHost : conHosts) {Host host = (Host) conHost;if (!LifecycleState.NEW.equals(host.getState())) {// Registering the host will register the context and wrappers registerHost(host);}}}

    ?

    從代碼清單14看到MapperListener的初始化步驟如下:

    步驟一 查找默認Host

      StandardService的子容器包括:StandardEngine、Connector和Executor。MapperListener本身會持有Connector,所以可以通過各個容器的父子關系,找到Connector的同級容器StandardEngine。StandardHost是StandardEngine的子容器,Engine和Host的默認配置如下:

    <Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/></Host></Engine>

    findDefaultHost方法(見代碼清單15)可以獲取上面配置中的默認Host,Engine元素的defaultHost屬性值必須要與配置的某個Host元素的name屬性值相同。如果defaultHost的屬性值配置無誤,則會添加為MapperListener的Mapper對象屬性的defaultHostName。

    代碼清單15

    private void findDefaultHost() {Engine engine = service.getContainer();String defaultHost = engine.getDefaultHost();boolean found = false;if (defaultHost != null && defaultHost.length() >0) {Container[] containers = engine.findChildren();for (Container container : containers) {Host host = (Host) container;if (defaultHost.equalsIgnoreCase(host.getName())) {found = true;break;}String[] aliases = host.findAliases();for (String alias : aliases) {if (defaultHost.equalsIgnoreCase(alias)) {found = true;break;}}}}if(found) {mapper.setDefaultHostName(defaultHost);} else {log.warn(sm.getString("mapperListener.unknownDefaultHost",defaultHost, service));}}

    ?

    ?步驟二 將Host及其子容器Context,Context的子容器Wrapper注冊到MapperListener的Mapper對象

      Mapper的數據結構,見代碼清單16。

                              代碼清單16
    public final class Mapper {private static final Log log = LogFactory.getLog(Mapper.class);private static final StringManager sm = StringManager.getManager(Mapper.class);// ----------------------------------------------------- Instance Variables/*** Array containing the virtual hosts definitions.*/// Package private to facilitate testingvolatile MappedHost[] hosts = new MappedHost[0];/*** Default host name.*/private String defaultHostName = null;private volatile MappedHost defaultHost = null;/*** Mapping from Context object to Context version to support* RequestDispatcher mappings.*/private final Map<Context, ContextVersion> contextObjectToContextVersionMap =new ConcurrentHashMap<>(); // ------------------------------------------------------- Host Inner Classprotected static final class MappedHost extends MapElement<Host> {public volatile ContextList contextList;/*** Link to the "real" MappedHost, shared by all aliases.*/private final MappedHost realHost;/*** Links to all registered aliases, for easy enumeration. This field* is available only in the "real" MappedHost. In an alias this field* is <code>null</code>.*/private final List<MappedHost> aliases;/*** Constructor used for the primary Host** @param name The name of the virtual host* @param host The host*/public MappedHost(String name, Host host) {super(name, host);realHost = this;contextList = new ContextList();aliases = new CopyOnWriteArrayList<>();}/*** Constructor used for an Alias** @param alias The alias of the virtual host* @param realHost The host the alias points to*/public MappedHost(String alias, MappedHost realHost) {super(alias, realHost.object);this.realHost = realHost;this.contextList = realHost.contextList;this.aliases = null;}public boolean isAlias() {return realHost != this;}public MappedHost getRealHost() {return realHost;}public String getRealHostName() {return realHost.name;}public Collection<MappedHost> getAliases() {return aliases;}public void addAlias(MappedHost alias) {aliases.add(alias);}public void addAliases(Collection<? extends MappedHost> c) {aliases.addAll(c);}public void removeAlias(MappedHost alias) {aliases.remove(alias);}}// ------------------------------------------------ ContextList Inner Classprotected static final class ContextList {public final MappedContext[] contexts;public final int nesting;public ContextList() {this(new MappedContext[0], 0);}private ContextList(MappedContext[] contexts, int nesting) {this.contexts = contexts;this.nesting = nesting;}public ContextList addContext(MappedContext mappedContext,int slashCount) {MappedContext[] newContexts = new MappedContext[contexts.length + 1];if (insertMap(contexts, newContexts, mappedContext)) {return new ContextList(newContexts, Math.max(nesting,slashCount));}return null;}public ContextList removeContext(String path) {MappedContext[] newContexts = new MappedContext[contexts.length - 1];if (removeMap(contexts, newContexts, path)) {int newNesting = 0;for (MappedContext context : newContexts) {newNesting = Math.max(newNesting, slashCount(context.name));}return new ContextList(newContexts, newNesting);}return null;}}// ---------------------------------------------------- Context Inner Classprotected static final class MappedContext extends MapElement<Void> {public volatile ContextVersion[] versions;public MappedContext(String name, ContextVersion firstVersion) {super(name, null);this.versions = new ContextVersion[] { firstVersion };}}protected static final class ContextVersion extends MapElement<Context> {public final String path;public final int slashCount;public final WebResourceRoot resources;public String[] welcomeResources;public MappedWrapper defaultWrapper = null;public MappedWrapper[] exactWrappers = new MappedWrapper[0];public MappedWrapper[] wildcardWrappers = new MappedWrapper[0];public MappedWrapper[] extensionWrappers = new MappedWrapper[0];public int nesting = 0;private volatile boolean paused;public ContextVersion(String version, String path, int slashCount,Context context, WebResourceRoot resources,String[] welcomeResources) {super(version, context);this.path = path;this.slashCount = slashCount;this.resources = resources;this.welcomeResources = welcomeResources;}public boolean isPaused() {return paused;}public void markPaused() {paused = true;}}// ---------------------------------------------------- Wrapper Inner Classprotected static class MappedWrapper extends MapElement<Wrapper> {public final boolean jspWildCard;public final boolean resourceOnly;public MappedWrapper(String name, Wrapper wrapper, boolean jspWildCard,boolean resourceOnly) {super(name, wrapper);this.jspWildCard = jspWildCard;this.resourceOnly = resourceOnly;}}

    根據代碼清單16,我們知道Mapper中維護著一個MappedHost數組,每個MappedHost中有一個ContextList,這個ContextList中維護著一個Context數組。每個Context維護著一個defaultWrapper,三個Wrapper數組(exactWrappers、wildcardWrappers、extensionWrappers)。下面對Host、Context及Wrapper進行功能上的介紹:

    • Host:代表一個虛擬主機,各Host的name不能相同,appBase代表各虛擬主機的應用發布位置;
    • Context:代表一個應用,Context可以根據應用的/WEB-INF/web.xml文件中定義的servlet來處理請求。一個Host下可以有多個Context;
    • Wrapper:?代表一個Servlet或者jsp,它負責管理一個 Servlet,包括的 Servlet 的裝載、初始化、執行以及資源回收。

    ?以我本地為例,在MapperListener類中的startInternal方法中的最后打個斷點,并運行debugger模式,就可以看到注冊到Mapper中的Host及其子容器,如圖2所示。

    圖2  注冊到Mapper中的Host及其Context子容器

    ?圖2說明Host內一共5個Context,由于我的Tomcat是從svn拉下來的,所以webapps目錄下的.svn文件夾也是一個Context,除了這個天外來客,我將其它與請求有關的容器整理后用圖3來展示。

    圖3  我本地的Host、Context及Wrapper

    可以看docs這個context的所有屬性,如下圖:

      至此,Tomcat中為請求處理的準備工作已經完成。有關請求的處理過程請繼續閱讀《Tomcat源碼分析——請求原理分析(中)》一文。


    本文原創首發:博客園,原文鏈接:http://www.cnblogs.com/jiaan-geng/p/4875249.html

    轉載于:https://www.cnblogs.com/nizuimeiabc1/p/8672723.html

    總結

    以上是生活随笔為你收集整理的tomcat8源码分析-Connector初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    中文av资源站 | 免费色视频 | 韩国在线一区 | 国产精品久久久久久影院 | 国产精品美女久久久久久免费 | 麻豆传媒视频观看 | 丁香花在线观看免费完整版视频 | 日韩在线视频国产 | 四虎在线观看 | 香蕉久久国产 | 国精产品一二三线999 | 天天操天天操天天操天天操天天操天天操 | 特级毛片网 | 少妇自拍av | 亚洲国产精品传媒在线观看 | 国产成人精品一区二 | 亚洲精品美女视频 | 午夜a区 | 91九色在线视频观看 | 国产精品一二 | 国产精品人成电影在线观看 | 毛片视频电影 | 午夜影院在线观看18 | 四虎永久国产精品 | 日韩在线精品视频 | 久久国产三级 | 久草在线视频精品 | 成人精品在线 | 中文字幕在线播放视频 | 久久99久久99| 亚洲精品av在线 | 久久久久麻豆v国产 | 综合在线观看色 | 欧美日韩亚洲第一 | 久久久精品二区 | 成人免费观看电影 | 日本三级久久久 | 成人播放器 | 91在线成人 | 97成人精品视频在线观看 | 国产福利电影网址 | 69中文字幕 | 亚洲国产精彩中文乱码av | 国产在线精品区 | 国产精品大片在线观看 | 亚洲精品免费在线播放 | 国产日韩欧美在线一区 | 久久国内精品 | 国产不卡在线视频 | 国产在线精品国自产拍影院 | 亚洲精品视频在线播放 | 91九色丨porny丨丰满6 | 日韩美视频 | 91av小视频 | 97国产精品免费 | 国产成人精品一区在线 | 国产麻豆精品免费视频 | 久久免费看a级毛毛片 | 国产一区二区三区免费在线观看 | www免费看| 国产精品孕妇 | 国产拍揄自揄精品视频麻豆 | 免费国产在线精品 | www狠狠| 在线视频专区 | av电影一区 | 91精品视频免费在线观看 | 欧美一二三在线 | 国产精品美女www爽爽爽视频 | 激情偷乱人伦小说视频在线观看 | 日日夜夜综合 | 欧美日韩精品二区第二页 | 国产精品伦一区二区三区视频 | 国产在线免费av | 美女免费黄网站 | 91福利视频免费观看 | 亚洲更新最快 | 欧美精品视 | 久久精品站 | 中文字幕二区在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 久久精品直播 | 亚洲精品乱码久久久久久高潮 | 久要激情网 | 免费日韩 | 最新av在线网站 | 日本深夜福利视频 | 亚洲视频999 | 色婷婷丁香 | 一区二区三区www | 99国产精品久久久久老师 | 久草精品视频在线观看 | 日韩精品一区二区三区水蜜桃 | 日韩理论片在线 | 久久精品高清视频 | 97香蕉超级碰碰久久免费软件 | 天堂中文在线播放 | 婷婷丁香激情网 | 欧美国产三区 | 国产麻豆精品95视频 | 一区二区精品视频 | 国产高清成人 | 91麻豆网站| 五月婷婷综合激情 | 四虎成人精品在永久免费 | 久久99热这里只有精品国产 | 99久久这里有精品 | 国产传媒中文字幕 | 亚洲影音先锋 | 久久蜜臀一区二区三区av | 亚洲精品久久久蜜臀下载官网 | 在线黄色av | 国产精品久久久久久久av大片 | 国产高清中文字幕 | 不卡日韩av| 免费av网站在线看 | 精品久久五月天 | 国内精自线一二区永久 | 免费av在线网站 | 日韩精品在线视频免费观看 | 婷婷爱五月天 | 精品国产人成亚洲区 | 国产精品成人国产乱一区 | 在线精品在线 | 91成人在线视频观看 | 久久avav| 欧美黄污视频 | 在线亚洲午夜片av大片 | 亚洲免费av一区二区 | 91久久国产自产拍夜夜嗨 | 日韩中文三级 | 很黄很色很污的网站 | 精品自拍sae8—视频 | 国产精品日韩高清 | 久久综合久久久久88 | 欧美亚洲另类在线视频 | 久久不色 | 999视频网站| 日韩精品在线播放 | 91视频啪| 超碰日韩 | 国产91勾搭技师精品 | 精品国产免费一区二区三区五区 | 欧美精品久久久久久久久久 | 一区二区三区在线不卡 | 精品在线观看免费 | 中文资源在线播放 | 摸bbb搡bbb搡bbbb | 安徽妇搡bbbb搡bbbb | 国产精品网红福利 | 在线观看小视频 | 免费在线黄色av | www.夜夜爽| 中文字幕资源在线观看 | 天天操综| 久久久久久美女 | 91精品国产乱码在线观看 | 久久精品一二三 | 国产伦精品一区二区三区高清 | 精品国产福利在线 | 2021国产在线 | 亚洲欧洲精品一区二区 | 日b视频在线观看网址 | 亚洲精品伦理在线 | 免费91麻豆精品国产自产在线观看 | 激情综合网在线观看 | 午夜视频在线观看一区 | 久爱综合 | 不卡av在线播放 | www.久久色.com | 国产精品久久久久久久久久不蜜月 | 免费a视频在线观看 | 国产一级片在线播放 | 最近2019好看的中文字幕免费 | 久久亚洲国产精品 | 91精品国产三级a在线观看 | 国产成人精品久久久 | 综合中文字幕 | 99视频免费播放 | 伊人av综合 | 手机在线欧美 | www色综合 | 在线观看网站av | 二区精品视频 | 久久久国产精品一区二区中文 | 在线看小早川怜子av | 日韩成人高清在线 | 久久爱综合 | 五月天天在线 | 丁香五月亚洲综合在线 | 成人久久久久久久久久 | 高潮久久久 | 国产在线观看一区 | 中文有码在线视频 | 天堂在线一区二区 | 欧美性色综合 | 久久艹99| 超碰在线98 | 国产精品99在线播放 | 欧美精品一区二区免费 | 国产在线国偷精品产拍 | 91探花系列在线播放 | 成人黄色影片在线 | 国产99久久99热这里精品5 | 精品国产亚洲日本 | 国产专区在线看 | 亚洲精品视频中文字幕 | 亚洲精品看片 | 午夜在线国产 | 亚洲精选视频免费看 | 黄色av网站在线免费观看 | 九九欧美 | 手机在线看永久av片免费 | 久久久久高清毛片一级 | 91最新网址在线观看 | 免费成人在线网站 | 国产精品欧美一区二区 | 亚洲精品高清视频在线观看 | 免费av福利 | 欧美成年黄网站色视频 | 激情综合色综合久久综合 | 中文字幕中文字幕在线中文字幕三区 | 九九九国产 | 天天天操操操 | 日韩久久久久久 | 一区二区三区四区五区在线视频 | 丁香花在线视频观看免费 | 粉嫩av一区二区三区四区在线观看 | 国产色视频网站2 | 久久人人爽人人片 | 永久免费的av电影 | 免费看成人| 六月色| 97在线播放 | 91在线免费观看国产 | 特黄特色特刺激视频免费播放 | 999久久国产精品免费观看网站 | 99色精品视频 | 麻豆精品传媒视频 | 一区三区在线欧 | 成人免费91 | 国内精品美女在线观看 | 亚洲一区美女视频在线观看免费 | 91亚色视频在线观看 | 五月天激情婷婷 | 天天色天天射天天综合网 | 国产精品日韩高清 | 1024手机看片国产 | 狠狠色丁香 | 特级黄色视频毛片 | 亚洲一区日韩 | 亚洲在线a| 国产精品 国产精品 | www日韩精品| 天天搞夜夜骑 | 亚洲黄色激情小说 | 亚洲精品国久久99热 | 国内精品久久久久久久久久清纯 | 国产爽妇网| 91麻豆精品国产午夜天堂 | 最新日韩在线观看视频 | 久久免费视频在线观看 | 国产精品久久久久久久久久新婚 | av再线观看 | 国产中文字幕第一页 | 日韩中文字幕免费电影 | 国产在线欧美 | 久久精品一区二区三区四区 | 久久爽久久爽久久av东京爽 | 精品自拍av| 国产精品一区免费观看 | 日韩久久午夜一级啪啪 | 黄色成人影视 | 日本中出在线观看 | 国产精品男女视频 | 日韩免费在线看 | 国产视频一区在线免费观看 | 国产亚洲免费的视频看 | 亚洲美女免费视频 | 免费看片在线观看 | 天天亚洲 | 精品国精品自拍自在线 | 97碰碰视频 | 日韩欧美一区二区在线 | 中文在线字幕免费观 | 东方av在线免费观看 | 一区二区三区不卡在线 | 亚洲精品免费在线播放 | 人人玩人人添人人 | 91在线视频网址 | 国产字幕在线观看 | 在线成人小视频 | av成年人电影 | 亚洲国产精品va在线看黑人动漫 | 成人精品国产 | 国产精品一区免费看8c0m | 亚av在线 | av一级片网站 | 96在线 | 97视频在线观看免费 | 中文字幕一区二区在线观看 | 欧美成天堂网地址 | 欧美日一级片 | 国产原创中文在线 | 亚洲精品美女久久久 | 亚洲精品999 | 在线观看免费av网站 | 在线观看视频你懂得 | 狠狠躁日日躁狂躁夜夜躁 | 天天干天天碰 | 色网站免费在线观看 | 久久久成人精品 | 日韩理论在线播放 | 国产精品免费久久久久影院仙踪林 | 国产色秀视频 | 黄色小网站在线 | 欧美精品三级在线观看 | 亚洲高清在线视频 | 欧美日韩在线视频观看 | 久久久久国产精品免费网站 | 国产精品video | 美女精品在线观看 | 国产亚洲婷婷 | 中文字幕在线观看一区 | 五月婷婷在线视频观看 | 81国产精品久久久久久久久久 | 黄色av电影一级片 | 成人影片免费 | 最近高清中文在线字幕在线观看 | 97看片| 视频三区在线 | 99在线精品视频在线观看 | 中文字幕国产精品 | 日本精品视频在线观看 | 亚洲精品在线一区二区三区 | 久久国产视频网站 | 国产成人一级 | av电影在线不卡 | 久久精品亚洲 | 99在线观看视频 | 手机av观看| 日日摸日日添夜夜爽97 | 丰满少妇高潮在线观看 | 欧美精品久久久久a | 天天躁天天操 | 麻花天美星空视频 | 国产女人18毛片水真多18精品 | 欧美久久精品 | 97在线免费观看视频 | 特黄特色特刺激视频免费播放 | 在线观看视频日韩 | 国产精品视频资源 | 99久久精品国产观看 | 色a综合 | 激情综合五月天 | 色资源网免费观看视频 | 国产精品九九久久久久久久 | 美女很黄免费网站 | 成人一区不卡 | 视频一区在线免费观看 | 中文字幕高清在线播放 | 91精品人成在线观看 | 美女禁18| 视频国产一区二区三区 | 国产精品igao视频网网址 | 国产精品区在线观看 | 天天插天天射 | 精品不卡av | 永久免费毛片在线观看 | 国产在线观看91 | 丁香六月在线 | 久久精品国产亚洲精品2020 | 国产精品入口久久 | 五月天婷亚洲天综合网精品偷 | 欧美久久久一区二区三区 | 亚洲成人精品av | 日日综合网 | 国产录像在线观看 | 色婷婷视频 | 国产免费一区二区三区网站免费 | 国产五月色婷婷六月丁香视频 | 国产乱码精品一区二区蜜臀 | 操操操日日 | 中文字幕av在线电影 | 久久伊人国产精品 | 精品国产_亚洲人成在线 | 91在线麻豆 | 久草视频在线资源 | 91九色在线视频观看 | 成人cosplay福利网站 | 欧美一级日韩三级 | 日韩在线视频播放 | 天天摸天天操天天舔 | 亚洲欧洲一区二区在线观看 | 黄色精品在线看 | 射射色| 精品国产99国产精品 | 99热这里只有精品1 av中文字幕日韩 | 中文字幕色站 | 欧洲精品一区二区 | 在线视频日韩精品 | 伊人五月天婷婷 | 日韩视频区 | 日韩av免费在线看 | 毛片网在线播放 | 91成人精品 | 亚洲码国产日韩欧美高潮在线播放 | 黄色av播放 | 亚洲国产资源 | 欧美色综合久久 | 成人黄色免费在线观看 | 91精品导航| 国产精品一区二区三区在线 | 国内视频1区 | 午夜影院一级片 | 午夜精品久久久久久久99水蜜桃 | 久久香蕉国产精品麻豆粉嫩av | 亚洲成人精品在线观看 | 日韩av快播电影网 | 99久久精品国产亚洲 | 国产一区视频导航 | 97精品国产97久久久久久免费 | 97在线免费观看视频 | 米奇影视7777 | 成人免费共享视频 | 国产精品久久久久久久久久久不卡 | 婷婷色社区 | 国产aa精品 | 日韩在线视频免费观看 | 久久国产精品免费一区二区三区 | 黄污网站在线 | 99精品美女| 日韩二区三区在线观看 | 亚洲丁香久久久 | 日韩一区二区三区观看 | 中文超碰字幕 | 2019中文字幕第一页 | 在线视频日韩一区 | 国产精品系列在线观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 中文字幕久久精品 | 观看免费av | 亚洲精品动漫成人3d无尽在线 | 国产一级精品绿帽视频 | 亚洲精品97| av在线影片 | 在线色亚洲 | 成人高清在线 | 色综合久久久网 | 亚洲一二三区精品 | 免费观看福利视频 | 国产精品第一页在线观看 | 国产一卡久久电影永久 | 热久久电影 | 伊人成人久久 | 97精品国产97久久久久久 | 天天操天天爱天天干 | 亚洲精品动漫成人3d无尽在线 | 97在线看片 | 亚洲九九九| 欧美先锋影音 | 免费大片黄在线 | 热久久最新地址 | 亚洲精品乱码久久久久久蜜桃91 | 97看片网 | 韩日电影在线观看 | 97精品一区二区三区 | 久久久久久久久久网站 | 日韩欧美在线免费观看 | 国产亚洲精品久久久久久久久久久久 | 91视频 - v11av | 在线一二三四区 | 成人cosplay福利网站 | 小草av在线播放 | 91精品免费看 | 99精品视频免费 | 99久久精品国产观看 | 国产精品一区二区三区久久久 | 日韩在线视频免费播放 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 九九影视理伦片 | 国产福利一区二区三区在线观看 | 日韩欧美在线免费观看 | 日韩国产高清在线 | 美女精品在线观看 | 国产精品门事件 | 天天操天天色综合 | 欧美一级大片在线观看 | 中文字幕在线观看一区二区三区 | 国产成人免费 | 一区二区欧美激情 | 男女啪啪免费网站 | 日韩免费高清 | 日本在线观看中文字幕无线观看 | 色99导航| 91精选在线观看 | 蜜臀精品久久久久久蜜臀 | 在线超碰av | 久久久精品欧美 | 99精品欧美一区二区蜜桃免费 | 99在线热播精品免费99热 | 女人18片| 日日射天天射 | 国产手机在线观看视频 | 亚洲精品午夜aaa久久久 | 国产精品理论片在线播放 | 中文字幕a∨在线乱码免费看 | 国内精品99 | 欧美精品一区在线 | 日韩视频中文 | av在线免费在线观看 | 美女一二三区 | 欧美亚洲专区 | 五月婷婷一区二区三区 | 日本中文一区二区 | 久久久2o19精品 | av色网站 | 蜜臀久久99静品久久久久久 | 日本中文字幕在线免费观看 | 精品一区 在线 | 国产精品1000 | 国产色妞影院wwwxxx | 亚洲1级片 | 精品视频99| 精品国产乱码久久久久久天美 | 中文字幕国产 | 在线观看黄a| 国产中文字幕在线 | 99成人免费视频 | 91看国产| 五月天中文字幕mv在线 | 青青河边草免费 | 日韩中文字幕a | 日韩视频中文字幕 | 狠狠网亚洲精品 | 五月婷婷久久丁香 | 国产成人av电影在线观看 | 天天综合入口 | 91在线产啪 | 久99久在线 | 成年人免费观看在线视频 | 日韩丝袜 | 亚洲精品午夜国产va久久成人 | 亚洲无吗av | 伊人伊成久久人综合网小说 | 免费在线观看一区 | 欧美特一级 | 国产久草在线观看 | 免费中文字幕视频 | 91av中文字幕 | 黄污网| aaa免费毛片| 美女网色 | 色狠狠一区二区 | 国产在线精品区 | 国产精久久久久久妇女av | 在线观看黄色国产 | 日韩和的一区二在线 | 国产尤物一区二区三区 | 欧美成人精品欧美一级乱黄 | 久久精品波多野结衣 | 在线亚洲高清视频 | 欧美日韩在线电影 | 五月婷婷综合激情 | 日韩久久久久久久 | 天天夜夜亚洲 | 999色视频| 毛片精品免费在线观看 | 日韩电影在线观看一区二区 | 日韩中文字幕a | 超碰人人做 | 午夜av在线免费 | 区一区二区三在线观看 | 久久久国产一区二区 | 亚洲精品99| 美女性爽视频国产免费app | 9色在线视频 | 色网站免费在线看 | 久久久久久久久久久久影院 | 四虎最新域名 | 在线观看黄 | 99热这里只有精品在线观看 | 亚洲欧洲一级 | 成人激情开心网 | 亚洲第一av在线播放 | 婷婷丁香花五月天 | 成人影视免费 | 99久久精品久久久久久清纯 | 国语久久| 色噜噜狠狠狠狠色综合久不 | 永久免费精品视频 | 国产成人av一区二区三区在线观看 | 最新日韩视频在线观看 | 欧美a级在线 | 亚州精品在线视频 | 国产色啪 | av福利第一导航 | 青青色影院| 免费男女羞羞的视频网站中文字幕 | 亚洲欧美日韩精品久久奇米一区 | 天天色天天 | 日韩国产精品一区 | 欧美另类亚洲 | 日韩午夜视频在线观看 | av电影久久 | av综合站| 免费精品国产va自在自线 | 日韩精品不卡 | 国产中文视频 | 亚洲人在线视频 | 亚洲精品一区中文字幕乱码 | 麻豆一区二区三区视频 | 黄a网 | 国产成人免费 | 97品白浆高清久久久久久 | 日韩精品一区二区三区高清免费 | 久久久www成人免费精品张筱雨 | 日韩精品一区二区三区高清免费 | 狠狠婷婷 | 就操操久久 | 超碰在线官网 | 91成人精品国产刺激国语对白 | 欧美在线视频一区二区三区 | 一级全黄毛片 | 射射色 | 色偷偷人人澡久久超碰69 | 国产精品久久久视频 | 欧美电影黄色 | 久草在线免费在线观看 | 91禁在线观看 | 中文字幕亚洲高清 | 九草视频在线观看 | 在线a人v观看视频 | 欧亚日韩精品一区二区在线 | 18做爰免费视频网站 | 久久老司机精品视频 | 免费三及片| 99欧美精品| 午夜视频一区二区 | 免费久久99精品国产婷婷六月 | 伊人亚洲综合 | 成人影片免费 | av在线网站大全 | 狠狠色丁香婷婷综合久久片 | 日韩欧美视频在线 | 成人免费观看大片 | 天天干国产 | 少妇高潮流白浆在线观看 | 国产精品一区二区三区观看 | 亚洲国产合集 | 国产精品视频永久免费播放 | 免费av在线网 | 欧美另类高潮 | 天堂在线视频免费观看 | 国产一区二区精品91 | 色播五月婷婷 | 国产三级午夜理伦三级 | 最近2019中文免费高清视频观看www99 | 欧洲精品一区二区 | 亚洲热视频 | 成人蜜桃 | 国产精品一区二区62 | 毛片网站在线观看 | 九九热在线精品视频 | 2023国产精品自产拍在线观看 | 国产精品久久久久久吹潮天美传媒 | 中文字幕高清在线播放 | 91色九色 | 亚洲一级电影 | 午夜成人影视 | 一区二区激情 | 一级一级一片免费 | 午夜丰满寂寞少妇精品 | 亚洲欧美激情插 | 69国产成人综合久久精品欧美 | 在线免费视 | 亚洲国产成人久久综合 | 外国av网 | 日韩精品在线观看av | 日韩一区正在播放 | 久久久精品国产免费观看一区二区 | 久久免费视频3 | 波多野结衣久久资源 | 色综合www | 欧美日韩国产一区二 | 99久久精品免费看国产四区 | 韩国精品在线 | 午夜精品一二三区 | 91精品久| 国产亚洲精品中文字幕 | 在线成人一区 | 日本免费久久高清视频 | 色偷偷88888欧美精品久久久 | 伊人六月 | 福利视频一二区 | 久久综合久久综合这里只有精品 | 久久a免费视频 | 综合在线亚洲 | 国产丝袜高跟 | 激情伊人五月天久久综合 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 免费成人在线观看 | 久久精品高清 | 很黄很黄的网站免费的 | 日本一区二区三区免费观看 | 在线97| 婷婷5月激情5月 | 国产精品igao视频网入口 | 免费在线观看国产精品 | 国产手机在线 | 久草视频2 | 2023国产精品自产拍在线观看 | 国产 日韩 在线 亚洲 字幕 中文 | 久久99国产精品久久99 | 一区二区三区三区在线 | 国产精品午夜久久久久久99热 | 国产在线a视频 | 亚洲精品免费播放 | 国产免费又黄又爽 | 99精品视频在线观看播放 | 免费在线观看不卡av | 日韩免费视频在线观看 | 国产成人61精品免费看片 | a黄色片在线观看 | 国产精品剧情 | 国产黄色片免费在线观看 | 中文一二区 | 九九热精| 992tv又爽又黄的免费视频 | 天天干夜夜夜操天 | 国产最顶级的黄色片在线免费观看 | 久精品在线观看 | 国产精品免费一区二区三区在线观看 | 极品中文字幕 | 免费黄色在线网址 | 久国产在线播放 | 久久久久免费电影 | 91在线观看欧美日韩 | 午夜视频在线网站 | 亚洲伊人av | 成人在线观看资源 | 久草热久草视频 | 日韩精品久久久 | 国产精品一区二区62 | 右手影院亚洲欧美 | 丁香六月在线观看 | 黄色在线观看污 | 在线色视频小说 | 日本特黄特色aaa大片免费 | 天天插日日射 | 久久撸在线视频 | 99在线热播 | 久久综合天天 | 久久成人欧美 | 久久激情婷婷 | 天天干天天天天 | 最新av网站在线观看 | 久久综合五月天婷婷伊人 | 国产真实精品久久二三区 | 久久午夜免费视频 | 免费视频一二三区 | 中文字幕在线成人 | 国产精品99久久久精品 | 伊人超碰在线 | 日韩中文三级 | 91成人网在线观看 | 欧美日本啪啪无遮挡网站 | 99久久精品免费看国产 | 激情文学综合丁香 | 免费a级毛片在线看 | 狠狠插天天干 | 国产中文字幕视频 | 综合激情网... | h文在线观看免费 | 国产成年人av | 97色综合 | 九九国产视频 | 在线香蕉视频 | 97成人在线观看视频 | 国产一卡二卡在线 | www.一区二区三区 | 成人av免费网站 | 深爱五月激情五月 | 麻豆精品传媒视频 | 国产91精品一区二区麻豆网站 | 国产在线观看你懂得 | 中文av影院 | av色一区 | 日韩69av | 91丨九色丨国产女 | 亚洲狠狠操 | 超碰在线97免费 | 国产白浆在线观看 | 日韩高清一区二区 | 欧美极品少妇xxxx | 国产成人精品一区二区三区在线观看 | 午夜三级福利 | 在线观看国产一区二区 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 亚洲精品在线观看中文字幕 | 久久免费国产精品 | 亚洲一二三区精品 | 中文字幕精品一区二区精品 | 色综合天天综合 | 91视频在线免费 | 国产一区二区三区免费视频 | 97免费在线观看视频 | 日韩av看片| www.久艹 | 97在线免费| 精品视频123区在线观看 | 日韩免费在线观看 | 91日韩在线专区 | 成人av高清 | 在线观看黄网站 | 国产毛片aaa | 色福利网站 | 五月婷婷,六月丁香 | 97超碰人人澡 | 亚洲电影第一页av | 在线v片免费观看视频 | 国产亚洲精品久久久网站好莱 | 激情综合网五月婷婷 | 91色在线观看| 日日操天天爽 | 欧美a影视| 美女视频免费一区二区 | 日韩免费福利 | 91传媒视频在线观看 | 国产精品粉嫩 | 在线观看不卡视频 | 99久久精品午夜一区二区小说 | 97偷拍在线视频 | 亚洲视频中文 | 久久狠狠干 | 玖玖玖精品 | 精品久久网 | av短片在线观看 | 97超碰在线免费 | 欧美日韩在线网站 | 亚洲综合在线发布 | 成人h动漫在线看 | 9i看片成人免费看片 | 天天操·夜夜操 | 精品1区二区 | 成人毛片一区 | 欧美aa一级片 | 中文字幕免费在线看 | 成人性生交视频 | 亚洲第一色 | 日韩有码网站 | 欧美精品久久久久久久免费 | 国产成人高清在线 | 国产一及片 | 五月天激情综合 | 国产国产人免费人成免费视频 | 一本一本久久a久久 | 91大片网站| 久久精品国产亚洲aⅴ | 欧美激情一区不卡 | 永久免费的啪啪网站免费观看浪潮 | 亚洲视频456 | 9i看片成人免费看片 | 久久综合狠狠综合久久狠狠色综合 | 久久99国产精品免费 | 亚洲一级电影 | 久久综合成人网 | 激情在线五月天 | 日本在线免费看 | 不卡国产视频 | 欧美精品色| 黄a网 | 欧美在线1 | 日本中文字幕一二区观 | 国产精品久久久久999 | 久草99 | 中文字幕乱码亚洲精品一区 | www.久久免费视频 | 园产精品久久久久久久7电影 | 99精品久久99久久久久 | 国产午夜精品久久久久久久久久 | 日韩va在线观看 | 国产资源在线播放 | 亚洲黄色软件 | 日韩中文字幕免费视频 | 中文字幕av一区二区三区四区 | 久久特级毛片 | 日韩视频一 | 在线免费观看成人 | 久久免费的精品国产v∧ | 国产成人精品一区二三区 | 视频在线一区二区三区 | 高清免费在线视频 | 成人h在线播放 | 精品久久久免费视频 | 精品久久久久久久久久久久久久久久久久 | 国产精品成人av电影 | 九九九九热精品免费视频点播观看 | 日韩欧美综合在线视频 | 久久久久女人精品毛片九一 | www.伊人色.com | 又色又爽又黄高潮的免费视频 | 免费看一级黄色大全 | 在线视频手机国产 | 99久久精品国产观看 | 三级性生活视频 | 亚洲欧洲久久久 | 国产美女精品人人做人人爽 | 亚洲精品xx | 激情久久综合 | 久久久久久免费毛片精品 | 少妇bbbb揉bbbb日本 | 欧美激情精品久久久久久变态 | 特级黄录像视频 | 一二三久久久 | 日韩精品久久久免费观看夜色 | www.国产在线视频 | 欧美天天射 | 狠狠地操| 精品在线播放视频 | 日日干天天插 | 天天躁日日躁狠狠躁av中文 | 欧美日韩一区二区免费在线观看 | 香蕉影视在线观看 | 成人三级网址 | 粉嫩av一区二区三区入口 | 国产视频99| 91视频在线网址 | 久久夜色精品国产欧美乱 | 久久丁香网 | 日日天天av | 日韩色综合| 色七七亚洲影院 | av.com在线| 色a网 | 久草视频视频在线播放 | 狠狠色丁香久久综合网 | 99视频久久 | 亚洲第一成网站 | 婷婷 中文字幕 | 欧美一二三区在线观看 | 国产乱对白刺激视频在线观看女王 | 91久久黄色 | japanesefreesex中国少妇 | 国产系列 在线观看 | 特级西西444www大胆高清无视频 | 亚州av免费| 欧美一区影院 | 亚洲最大激情中文字幕 | 亚洲天天看 | 青春草视频| 国产精品999久久久 久产久精国产品 | 伊人色综合久久天天网 | 91亚洲狠狠婷婷综合久久久 | 成人黄色大片在线观看 | 欧洲不卡av| 美女av免费看 | 天天插天天色 | 亚洲精品色视频 | 久久午夜精品视频 | 在线亚洲成人 | 97电影网手机版 | 在线视频app| 久久99精品国产99久久 | 久久激情精品 | 亚洲91中文字幕无线码三区 | 麻豆国产精品永久免费视频 | 欧美日韩视频精品 | 免费又黄又爽的视频 | 亚洲精品国偷拍自产在线观看 | 婷婷激情久久 | 成人在线视频免费观看 | 免费黄色在线网站 | 国产粉嫩在线观看 | 国产成人精品在线观看 | 成人动图| 91人人视频在线观看 | 久久久久久久久久久久久久免费看 | 激情电影影院 | 日韩久久精品一区二区三区下载 | 免费在线黄色av | 中文区中文字幕免费看 | 国产免费又黄又爽 | 免费亚洲成人 | 国产精品色婷婷视频 | 国产亚洲精品久久久网站好莱 | 在线视频99 | 成人黄色电影在线 | 99在线精品视频观看 | 久久天天躁| 亚洲一级国产 | 久久久久免费精品视频 | 久久久久久久av麻豆果冻 | 九九综合久久 | 日韩欧美xx | 午夜私人影院久久久久 | 麻豆免费视频网站 | 99人久久精品视频最新地址 |