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

框架篇:Linux網(wǎng)絡I/O+Reactor模型

系統(tǒng) Linux
網(wǎng)絡I/O,可以理解為網(wǎng)絡上的數(shù)據(jù)流。通常我們會基于socket與遠端建立一條TCP或者UDP通道,然后進行讀寫。

[[354886]]

本文轉(zhuǎn)載自微信公眾號「潛行前行」,作者cscw 。轉(zhuǎn)載本文請聯(lián)系潛行前行公眾號。   

前言

網(wǎng)絡I/O,可以理解為網(wǎng)絡上的數(shù)據(jù)流。通常我們會基于socket與遠端建立一條TCP或者UDP通道,然后進行讀寫。單個socket時,使用一個線程即可高效處理;然而如果是10K個socket連接,或者更多,我們?nèi)绾巫龅礁咝阅芴幚?

  • 基本概念介紹
  • 網(wǎng)絡I/O的讀寫過程
  • linux下的五種網(wǎng)絡I/O模型
  • 多路復用I/O深入理解一波
  • Reactor模型
  • Proacotr模型

基本概念介紹

  • 進程(線程)切換

所有系統(tǒng)都有調(diào)度進程的能力,它可以掛起一個當前正在運行的進程,并恢復之前掛起的進程

  • 進程(線程)的阻塞

運行中的進程,有時會等待其他事件的執(zhí)行完成,比如等待鎖,請求I/O的讀寫;進程在等待過程會被系統(tǒng)自動執(zhí)行阻塞,此時進程不占用CPU

  • 文件描述符

在Linux,文件描述符是一個用于表述指向文件引用的抽象化概念,它是一個非負整數(shù)。當程序打開一個現(xiàn)有文件或者創(chuàng)建一個新文件時,內(nèi)核向進程返回一個文件描述符

  • linux信號處理

Linux進程運行中可以接受來自系統(tǒng)或者進程的信號值,然后根據(jù)信號值去運行相應捕捉函數(shù);信號相當于是硬件中斷的軟件模擬

在零拷貝機制篇章已介紹過 用戶空間和內(nèi)核空間和緩沖區(qū),這里就省略了

網(wǎng)絡IO的讀寫過程

  • 當在用戶空間發(fā)起對socket套接字的讀操作時,會導致上下文切換,用戶進程阻塞(R1)等待網(wǎng)絡數(shù)據(jù)流到來,從網(wǎng)卡復制到內(nèi)核;(R2)然后從內(nèi)核緩沖區(qū)向用戶進程緩沖區(qū)復制。此時進程切換恢復,處理拿到的數(shù)據(jù)
  • 這里我們給socket讀操作的第一階段起個別名R1,第二階段稱為R2
  • 當在用戶空間發(fā)起對socket的send操作時,導致上下文切換,用戶進程阻塞等待(1)數(shù)據(jù)從用戶進程緩沖區(qū)復制到內(nèi)核緩沖區(qū)。數(shù)據(jù)copy完成,此時進程切換恢復

linux五種網(wǎng)絡IO模型

阻塞式I/O (blocking IO)

  1. ssize_t recvfrom(int sockfd,void *buf,size_t len,unsigned int flags, struct sockaddr *from,socket_t *fromlen); 

 

  • 最基礎的I/O模型就是阻塞I/O模型,也是最簡單的模型。所有的操作都是順序執(zhí)行的
  • 阻塞IO模型中,用戶空間的應用程序執(zhí)行一個系統(tǒng)調(diào)用(recvform),會導致應用程序被阻塞,直到內(nèi)核緩沖區(qū)的數(shù)據(jù)準備好,并且將數(shù)據(jù)從內(nèi)核復制到用戶進程。最后進程才被系統(tǒng)喚醒處理數(shù)據(jù)
  • 在R1、R2連續(xù)兩個階段,整個進程都被阻塞

非阻塞式I/O (nonblocking IO)

 

  • 非阻塞IO也是一種同步IO。它是基于輪詢(polling)機制實現(xiàn),在這種模型中,套接字是以非阻塞的形式打開的。就是說I/O操作不會立即完成,但是I/O操作會返回一個錯誤代碼(EWOULDBLOCK),提示操作未完成
  • 輪詢檢查內(nèi)核數(shù)據(jù),如果數(shù)據(jù)未準備好,則返回EWOULDBLOCK。進程再繼續(xù)發(fā)起recvfrom調(diào)用,當然你可以暫停去做其他事
  • 直到內(nèi)核數(shù)據(jù)準備好,再拷貝數(shù)據(jù)到用戶空間,然后進程拿到非錯誤碼數(shù)據(jù),接著進行數(shù)據(jù)處理。需要注意,拷貝數(shù)據(jù)整個過程,進程仍然是屬于阻塞的狀態(tài)
  • 進程在R2階段阻塞,雖然在R1階段沒有被阻塞,但是需要不斷輪詢

多路復用I/O (IO multiplexing)

 

  • 一般后端服務都會存在大量的socket連接,如果一次能查詢多個套接字的讀寫狀態(tài),若有任意一個準備好,那就去處理它,效率會高很多。這就是“I/O多路復用”,多路是指多個socket套接字,復用是指復用同一個進程
  • linux提供了select、poll、epoll等多路復用I/O的實現(xiàn)方式
  • select或poll、epoll是阻塞調(diào)用
  • 與阻塞IO不同,select不會等到socket數(shù)據(jù)全部到達再處理,而是有了一部分socket數(shù)據(jù)準備好就會恢復用戶進程來處理。怎么知道有一部分數(shù)據(jù)在內(nèi)核準備好了呢?答案:交給了系統(tǒng)系統(tǒng)處理吧
  • 進程在R1、R2階段也是阻塞;不過在R1階段有個技巧,在多進程、多線程編程的環(huán)境下,我們可以只分配一個進程(線程)去阻塞調(diào)用select,其他線程不就可以解放了嗎

信號驅(qū)動式I/O (SIGIO)

 

  • 需要提供一個信號捕捉函數(shù),并和socket套接字關聯(lián);發(fā)起sigaction調(diào)用之后進程就能解放去處理其他事
  • 當數(shù)據(jù)在內(nèi)核準備好后,進程會收到一個SIGIO信號,繼而中斷去運行信號捕捉函數(shù),調(diào)用recvfrom把數(shù)據(jù)從內(nèi)核讀取到用戶空間,再處理數(shù)據(jù)
  • 可以看出用戶進程是不會阻塞在R1階段,但R2還是會阻塞等待

異步IO (POSIX的aio_系列函數(shù))

 

  • 相對同步IO,異步IO在用戶進程發(fā)起異步讀(aio_read)系統(tǒng)調(diào)用之后,無論內(nèi)核緩沖區(qū)數(shù)據(jù)是否準備好,都不會阻塞當前進程;在aio_read系統(tǒng)調(diào)用返回后進程就可以處理其他邏輯
  • socket數(shù)據(jù)在內(nèi)核就緒時,系統(tǒng)直接把數(shù)據(jù)從內(nèi)核復制到用戶空間,然后再使用信號通知用戶進程
  • R1、R2兩階段時進程都是非阻塞的

多路復用IO深入理解一波

select

  1. int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 

1)使用copy_from_user從用戶空間拷貝fd_set到內(nèi)核空間

2)注冊回調(diào)函數(shù)__pollwait

3)遍歷所有fd,調(diào)用其對應的poll方法(對于socket,這個poll方法是sock_poll,sock_poll根據(jù)情況會調(diào)用到tcp_poll,udp_poll或者datagram_poll)

4)以tcp_poll為例,其核心實現(xiàn)就是__pollwait,也就是上面注冊的回調(diào)函數(shù)

5)__pollwait的主要工作就是把current(當前進程)掛到設備的等待隊列中,不同的設備有不同的等待隊列,對于tcp_poll來說,其等待隊列是sk->sk_sleep(注意把進程掛到等待隊列中并不代表進程已經(jīng)睡眠了)。在設備收到一條消息(網(wǎng)絡設備)或填寫完文件數(shù)據(jù)(磁盤設備)后,會喚醒設備等待隊列上睡眠的進程,這時current便被喚醒了

6)poll方法返回時會返回一個描述讀寫操作是否就緒的mask掩碼,根據(jù)這個mask掩碼給fd_set賦值

7)如果遍歷完所有的fd,還沒有返回一個可讀寫的mask掩碼,則會調(diào)用schedule_timeout是調(diào)用select的進程(也就是current)進入睡眠

8) 當設備驅(qū)動發(fā)生自身資源可讀寫后,會喚醒其等待隊列上睡眠的進程。如果超過一定的超時時間(timeout指定),還是沒人喚醒,則調(diào)用select的進程會重新被喚醒獲得CPU,進而重新遍歷fd,判斷有沒有就緒的fd

9)把fd_set從內(nèi)核空間拷貝到用戶空間

select的缺點

每次調(diào)用select,都需要把fd集合從用戶態(tài)拷貝到內(nèi)核態(tài),這個開銷在fd很多時會很大

同時每次調(diào)用select都需要在內(nèi)核遍歷傳遞進來的所有fd,這個開銷在fd很多時也很大

select支持的文件描述符數(shù)量太小了,默認是1024

epoll

  1. int epoll_create(int size);   
  2. int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);   
  3. int epoll_wait(int epfd, struct epoll_event *events,int maxevents, int timeout);  
  • 調(diào)用epoll_create,會在內(nèi)核cache里建個紅黑樹用于存儲以后epoll_ctl傳來的socket,同時也會再建立一個rdllist雙向鏈表用于存儲準備就緒的事件。當epoll_wait調(diào)用時,僅查看這個rdllist雙向鏈表數(shù)據(jù)即可
  • epoll_ctl在向epoll對象中添加、修改、刪除事件時,是在rbr紅黑樹中操作的,非常快
  • 添加到epoll中的事件會與設備(如網(wǎng)卡)建立回調(diào)關系,設備上相應事件的發(fā)生時會調(diào)用回調(diào)方法,把事件加進rdllist雙向鏈表中;這個回調(diào)方法在內(nèi)核中叫做ep_poll_callback

epoll的兩種觸發(fā)模式

epoll有EPOLLLT和EPOLLET兩種觸發(fā)模式,LT是默認的模式,ET是“高速”模式(只支持no-block socket)

  • LT(水平觸發(fā))模式下,只要這個文件描述符還有數(shù)據(jù)可讀,每次epoll_wait都會觸發(fā)它的讀事件
  • ET(邊緣觸發(fā))模式下,檢測到有I/O事件時,通過 epoll_wait 調(diào)用會得到有事件通知的文件描述符,對于文件描述符,如可讀,則必須將該文件描述符一直讀到空(或者返回EWOULDBLOCK),否則下次的epoll_wait不會觸發(fā)該事件

epoll相比select的優(yōu)點

解決select三個缺點

  • 對于第一個缺點:epoll的解決方案在epoll_ctl函數(shù)中。每次注冊新的事件到epoll句柄中時(在epoll_ctl中指定EPOLL_CTL_ADD),會把所有的fd拷貝進內(nèi)核,而不是在epoll_wait的時候重復拷貝。epoll保證了每個fd在整個過程中只會拷貝一次(epoll_wait不需要復制)
  • 對于第二個缺點:epoll為每個fd指定一個回調(diào)函數(shù),當設備就緒,喚醒等待隊列上的等待者時,就會調(diào)用這個回調(diào)函數(shù),而這個回調(diào)函數(shù)會把就緒的fd加入一個就緒鏈表。epoll_wait的工作實際上就是在這個就緒鏈表中查看有沒有就緒的fd(不需要遍歷)
  • 對于第三個缺點:epoll沒有這個限制,它所支持的FD上限是最大可以打開文件的數(shù)目,這個數(shù)字一般遠大于2048,舉個例子,在1GB內(nèi)存的機器上大約是10萬左右,一般來說這個數(shù)目和系統(tǒng)內(nèi)存關系很大

epoll的高性能

  • epoll使用了紅黑樹來保存需要監(jiān)聽的文件描述符事件,epoll_ctl增刪改操作快速
  • epoll不需要遍歷就能獲取就緒fd,直接返回就緒鏈表即可
  • linux2.6 之后使用了mmap技術,數(shù)據(jù)不在需要從內(nèi)核復制到用戶空間,零拷貝

關于epoll的IO模型是同步異步的疑問

概念定義

  • 同步I/O操作:導致請求進程阻塞,直到I/O操作完成
  • 異步I/O操作:不導致請求進程阻塞,異步只用處理I/O操作完成后的通知,并不主動讀寫數(shù)據(jù),由系統(tǒng)內(nèi)核完成數(shù)據(jù)的讀寫
  • 阻塞,非阻塞:進程/線程要訪問的數(shù)據(jù)是否就緒,進程/線程是否需要等待

異步IO的概念是要求無阻塞I/O調(diào)用。前面有介紹到I/O操作分兩階段:R1等待數(shù)據(jù)準備好。R2從內(nèi)核到進程拷貝數(shù)據(jù)。雖然epoll在2.6內(nèi)核之后采用mmap機制,使得其在R2階段不需要復制,但是它在R1還是阻塞的。因此歸類到同步IO

Reactor模型

Reactor的中心思想是將所有要處理的I/O事件注冊到一個中心I/O多路復用器上,同時主線程/進程阻塞在多路復用器上;一旦有I/O事件到來或是準備就緒,多路復用器返回,并將事先注冊的相應I/O事件分發(fā)到對應的處理器中

相關概念介紹:

  • 事件:就是狀態(tài);比如:讀就緒事件指的是我們可以從內(nèi)核讀取數(shù)據(jù)的狀態(tài)
  • 事件分離器:一般會把事件的等待發(fā)生交給epoll、select;而事件的到來是隨機,異步的,所以需要循環(huán)調(diào)用epoll,在框架里對應封裝起來的模塊就是事件分離器(簡單理解為對epoll封裝)
  • 事件處理器:事件發(fā)生后需要進程或線程去處理,這個處理者就是事件處理器,一般和事件分離器是不同的線程

Reactor的一般流程

  • 1)應用程序在事件分離器注冊讀寫就緒事件和讀寫就緒事件處理器
  • 2)事件分離器等待讀寫就緒事件發(fā)生
  • 3)讀寫就緒事件發(fā)生,激活事件分離器,分離器調(diào)用讀寫就緒事件處理器
  • 4)事件處理器先從內(nèi)核把數(shù)據(jù)讀取到用戶空間,然后再處理數(shù)據(jù)

 

單線程 + Reactor

 

多線程 + Reactor

 

多線程 + 多個Reactor

 

Proactor模型的一般流程

1)應用程序在事件分離器注冊讀完成事件和讀完成事件處理器,并向系統(tǒng)發(fā)出異步讀請求

2)事件分離器等待讀事件的完成

3)在分離器等待過程中,系統(tǒng)利用并行的內(nèi)核線程執(zhí)行實際的讀操作,并將數(shù)據(jù)復制進程緩沖區(qū),最后通知事件分離器讀完成到來

4)事件分離器監(jiān)聽到讀完成事件,激活讀完成事件的處理器

5)讀完成事件處理器直接處理用戶進程緩沖區(qū)中的數(shù)據(jù)

 

Proactor和Reactor的區(qū)別

Proactor是基于異步I/O的概念,而Reactor一般則是基于多路復用I/O的概念

Proactor不需要把數(shù)據(jù)從內(nèi)核復制到用戶空間,這步由系統(tǒng)完成

歡迎指正文中錯誤

參考文章

聊聊Linux 五種IO模型[1]

網(wǎng)絡io模型[2]

網(wǎng)絡IO[3]

5種網(wǎng)絡IO模型[4]

epoll原理詳解及epoll反應堆模型[5]

參考資料

 

[1]聊聊Linux 五種IO模型: https://www.jianshu.com/p/486b0965c296[2]網(wǎng)絡io模型: https://www.jianshu.com/p/a95bcb116765[3]網(wǎng)絡IO: https://www.cnblogs.com/hesper/p/11547263.html[4]5種網(wǎng)絡IO模型: https://www.cnblogs.com/findumars/p/6361627.html[5]epoll原理詳解及epoll反應堆模型: https://blog.csdn.net/daaikuaichuan/article/details/83862311

 

責任編輯:武曉燕 來源: 潛行前行
相關推薦

2020-06-03 17:30:42

LinuxIO

2010-06-25 09:47:29

Linux系統(tǒng)監(jiān)控

2022-01-04 11:11:32

Redis單線程Reactor

2021-02-10 08:09:48

Netty網(wǎng)絡多路復用

2014-07-28 16:47:41

linux性能

2021-05-17 11:14:36

網(wǎng)絡請求ajaxpromise

2023-12-05 17:44:24

reactor網(wǎng)絡

2020-10-13 07:51:03

五種IO模型

2011-01-14 09:25:28

LinuxIO機制

2021-01-19 06:43:10

Netty框架網(wǎng)絡技術

2021-10-13 06:49:15

網(wǎng)絡 IO

2025-07-14 00:20:00

2018-10-08 15:22:36

IO模型

2019-09-12 08:58:26

LinuxUNIX操作系統(tǒng)

2017-01-19 19:14:20

Linux重定向命令

2021-02-22 17:06:58

Linux改動代碼

2025-07-08 02:55:00

2021-11-08 17:03:13

IO模型

2017-03-01 12:36:15

Linux驅(qū)動技術內(nèi)存

2017-03-25 21:33:33

Linux調(diào)度器
點贊
收藏

51CTO技術棧公眾號

亚洲大片免费看| 国产精品资源站在线| 亚洲精品在线观看www| 免费黄色一级网站| 久久77777| 成人一区二区在线观看| 国产91色在线|免| 波多野结衣不卡视频| 哺乳一区二区三区中文视频| 色婷婷一区二区三区四区| 五月婷婷综合色| 午夜精品久久久久久久99热黄桃| 一本久道久久综合婷婷鲸鱼| 自拍偷拍亚洲区| 中文字幕乱视频| 亚洲福利影视| 精品女厕一区二区三区| 一区二区视频在线免费| 日韩中文字幕免费观看| 理论片日本一区| 97成人在线视频| 我要看黄色一级片| 亚洲丝袜啪啪| 欧美第一区第二区| 黄色片视频在线| 色吧亚洲日本| 亚洲一二三区在线观看| 亚洲欧美精品| 久久经典视频| youjizz久久| 91传媒视频在线观看| 中文字幕免费视频观看| 亚洲欧洲视频| 欧美裸体xxxx极品少妇| 一级肉体全黄裸片| 欧美在线关看| 亚洲国产精彩中文乱码av在线播放| 57pao国产成永久免费视频| 久久电影tv| 亚洲国产精品麻豆| 黄色一级片av| 久草免费在线| 国产精品久久久久久久久久免费看| 久久久久一区二区| 视频二区在线观看| 成人精品免费看| 91在线短视频| 草逼视频免费看| 国产精品主播直播| 91久久久久久久久久久久久| 在线观看视频中文字幕| 老妇喷水一区二区三区| 欧美在线视频网| 国产成人综合欧美精品久久| 亚洲电影成人| 韩国欧美亚洲国产| 91浏览器在线观看| 一区二区福利| 91精品国产高清| 国产成人在线免费视频| 日韩亚洲国产精品| 91wwwcom在线观看| 丁香社区五月天| 日韩高清不卡一区二区三区| 国产va免费精品高清在线| 国产精品视频123| 麻豆九一精品爱看视频在线观看免费| 欧美资源在线观看| 波多野结衣在线观看视频| 日韩国产精品久久| 国产精品麻豆va在线播放| 波多野结衣影片| 韩日精品视频一区| 999在线免费观看视频| 亚洲第一页综合| 91视频观看视频| 欧美一区二区三区电影在线观看| 内衣办公室在线| 中文字幕va一区二区三区| 一级做a爰片久久| 50度灰在线| 岛国av一区二区在线在线观看| 97成人在线观看视频| 成人做爰视频www网站小优视频| 在线欧美日韩国产| 亚洲精品久久久久久宅男| 欧美高清一级片| 亚洲激情中文字幕| 中文字幕一区二区三区人妻电影| 中文一区一区三区免费| 亚洲天堂网视频| 国产精品一区二区久久精品爱涩 | 一本一道久久久a久久久精品91| 美女隐私在线观看| 亚洲曰韩产成在线| 久草精品在线播放| 9.1麻豆精品| 亚洲成年人在线播放| xxx在线播放| 午夜欧美理论片| 欧美做受高潮1| 国产特黄一级片| 久久久欧美精品sm网站| 一道精品一区二区三区| 国产传媒在线| 欧美一区二区视频在线观看2022| 久久久久成人精品无码中文字幕| 欧美手机视频| 国内自拍欧美激情| 97人妻一区二区精品免费视频 | 国产蜜臀一区二区打屁股调教| 天天操天天色综合| 日韩av自拍偷拍| 亚欧日韩另类中文欧美| 大胆人体色综合| 天堂av免费在线观看| 成人一级视频在线观看| 亚洲天堂电影网| 天堂√8在线中文| 欧美成人一区二区三区片免费 | 国产精品日韩一区| 深爱五月激情五月| 中文字幕色av一区二区三区| 黄色免费观看视频网站| 日韩免费成人| www.日韩不卡电影av| aaaaaa毛片| 不卡在线观看av| 无码毛片aaa在线| 国产福利91精品一区二区| 日韩h在线观看| 久青草免费视频| 国内精品在线播放| 亚洲精品一区二区三区樱花| 超级碰碰久久| 精品国产第一区二区三区观看体验| 黑人狂躁日本娇小| 日日噜噜夜夜狠狠视频欧美人 | 天天射—综合中文网| 日韩av片永久免费网站| 亚洲 欧美 精品| 亚洲午夜在线视频| 麻豆精品国产传媒| 在线精品国产| 91日韩在线视频| 调教视频免费在线观看| 欧美亚一区二区| 女女互磨互喷水高潮les呻吟| 亚洲一区二区三区四区五区午夜 | 在线播放免费视频| 四季av一区二区凹凸精品| 国产精品福利无圣光在线一区| 日韩黄色影片| 色婷婷久久久综合中文字幕| 久久国产精品无码一级毛片| 先锋影音久久久| 欧美精品123| 欧美专区福利免费| 在线成人中文字幕| 中文字幕久久网| 国产精品福利一区二区三区| 777一区二区| 中文字幕人成人乱码| 不卡的av一区| 爱啪啪综合导航| 亚洲欧美国产一本综合首页| 久久久久亚洲视频| 国产精品电影一区二区三区| 亚洲欧美日韩网站| 亚洲国产免费| 欧美国产综合视频| 国产黄色精品| 欧美激情欧美激情| 色资源在线观看| 欧美天堂亚洲电影院在线播放| 成人精品一二三区| 国产剧情一区在线| 自拍日韩亚洲一区在线| 国产精品羞羞答答在线观看| 91精品国产自产在线| 在线看福利影| 亚洲奶大毛多的老太婆| 中文天堂在线视频| 亚洲精品你懂的| 一边摸一边做爽的视频17国产| 午夜在线视频一区二区区别 | 欧美三级特黄| 蜜桃传媒视频第一区入口在线看| xxxxx.日韩| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲奶汁xxxx哺乳期| 色婷婷国产精品| 成人免费视频国产免费观看| www..com久久爱| 在线观看免费av网址| 亚洲毛片一区| 综合国产精品久久久| 国产成人福利av| 国产精品中文字幕在线观看| 男女在线观看视频| 中文字幕亚洲一区在线观看| 亚洲精品综合网| 欧美丝袜第三区| 日本少妇性生活| 一区二区中文视频| 亚洲欧美色图视频| 国产成人一区二区精品非洲| 黄色国产小视频| 亚洲国产国产亚洲一二三| 一区二区精品在线| 天天久久夜夜| 高清免费日韩| 国产不卡精品| 国产精品日韩精品| 日韩脚交footjobhd| 欧美理论电影在线播放| 搞黄视频在线观看| 亚洲精品大尺度| 国产v片在线观看| 欧美精品乱码久久久久久 | 久久精品欧洲| 国内少妇毛片视频| 国产精品成人一区二区不卡| 日本精品免费| 五月综合久久| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 日韩免费看网站| 亚洲图片视频小说| 色综合天天性综合| 日韩污视频在线观看| 一区二区三区久久| 老熟妇高潮一区二区三区| 国产女同性恋一区二区| brazzers精品成人一区| zzijzzij亚洲日本少妇熟睡| 中国特级黄色片| 国产激情视频一区二区在线观看| 午夜视频在线网站| 美腿丝袜一区二区三区| 男人插女人下面免费视频| 欧美亚洲视频| 日韩avxxx| 另类天堂av| 日韩欧美xxxx| 视频一区二区欧美| caopor在线视频| 久久综合导航| 亚洲色图38p| 视频一区中文字幕| 午夜在线观看av| 人人狠狠综合久久亚洲| 已婚少妇美妙人妻系列| 日韩av一区二| wwww.国产| 捆绑紧缚一区二区三区视频| 欧美伦理片在线观看| 麻豆国产一区二区| 男生操女生视频在线观看| 六月丁香综合在线视频| 国产探花在线观看视频| 国产成人三级在线观看| 国产精品日日摸夜夜爽| 成人动漫中文字幕| 中文乱码人妻一区二区三区视频| 99九九99九九九视频精品| 亚洲国产综合视频| 国产免费观看久久| 小早川怜子一区二区的演员表| 国产精品国产a级| 欧美精品色哟哟| 欧美日韩亚洲一区二| 亚洲欧美综合自拍| 欧美三区在线视频| 国产chinasex对白videos麻豆| 精品国产污网站| 欧美色18zzzzxxxxx| 日韩中文在线中文网在线观看| 黄网站免费在线观看| 九九热最新视频//这里只有精品| caoporn视频在线观看| 国产999精品| 国产一区二区三区精品在线观看 | 一区二区三区四区蜜桃| 日韩美女视频网站| 欧美亚洲综合久久| 亚洲av无码乱码国产精品| 亚洲精品美女在线观看| av在线电影网| 欧美激情视频一区| 欧美日一区二区三区| 亚洲aⅴ男人的天堂在线观看 | a屁视频一区二区三区四区| 91网站在线看| 亚洲人成精品久久久| 91九色国产ts另类人妖| 午夜亚洲一区| avtt中文字幕| 国产欧美日韩精品在线| 国产亚洲成人av| 欧美在线free| 视频二区在线观看| 萌白酱国产一区二区| 一根才成人网| 国产传媒一区二区| 久久中文字幕av一区二区不卡| 国产精品www在线观看| 美国一区二区三区在线播放 | 国产精品成人午夜| 天天操天天摸天天干| 欧美一区二区三区在线| 国产三级在线看| 97国产精品免费视频| 国产一区精品二区| 日本视频精品一区| 99精品热6080yy久久| 亚洲AV无码久久精品国产一区| 国产欧美1区2区3区| 在线观看 中文字幕| 欧美一区二区三区婷婷月色 | 欧美激情性做爰免费视频| 国产成人福利夜色影视| 欧美日韩综合另类| 亚洲激情自拍| 色综合久久久无码中文字幕波多| 国产精品人妖ts系列视频| 久久久久久久久久久影院| 精品国产成人系列| 影院在线观看全集免费观看| 国产日韩欧美自拍| 欧美日韩第一| 中文字幕一区二区三区四区在线视频 | 欧美中文字幕在线观看| 97se亚洲国产一区二区三区| 黄色网络在线观看| 激情五月婷婷综合| 懂色av粉嫩av蜜臀av一区二区三区| 欧洲一区在线电影| 国产三区四区在线观看| 国产精品27p| 国产在线日韩精品| 日本精品免费在线观看| 99久久精品99国产精品 | 三级网站视频在在线播放| 成人免费福利在线| 国产大片一区| 中文字幕1234区| 亚洲天堂免费看| 国产裸体永久免费无遮挡| 久久久国产精品免费| 电影中文字幕一区二区| 97精品国产97久久久久久粉红| 精品一区中文字幕| 成人性生活毛片| 欧美zozo另类异族| bl视频在线免费观看| 精品视频第一区| 久久精品人人| 97精品在线播放| 日韩女优制服丝袜电影| av福利导福航大全在线| 久久99精品久久久久久秒播放器| 亚洲欧美日韩国产一区| 亚洲AV无码成人精品区明星换面 | 黄色aaa毛片| 亚州精品天堂中文字幕| 国产一区不卡| 在线观看免费av网址| 一区二区三区免费网站| 丰满肥臀噗嗤啊x99av| 欧美亚洲第一页| 日韩大片在线观看| 又色又爽又黄视频| 亚洲一区二区三区四区五区黄| 熟妇高潮一区二区高潮| 热草久综合在线| 99久久夜色精品国产亚洲1000部 | 久久综合九色综合欧美98| 国产主播第一页| 久热精品在线视频| 韩国女主播一区二区三区| 国产综合免费视频| 亚洲图片你懂的| 天堂中文在线8| 国产专区精品视频| 日韩视频在线一区二区三区 | 永久免费av在线| 成人性色av| 日韩激情视频在线观看| 亚洲天堂黄色片| 亚洲男人天堂手机在线| a一区二区三区亚洲| 久久久久久久午夜| 国产精品午夜久久| 天天射天天操天天干| 国产伊人精品在线| 亚洲免费综合| 激情五月婷婷在线| 国产亚洲欧美日韩精品| 白嫩白嫩国产精品| 日韩欧美国产片|