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

從Linux源碼看Socket(TCP)的Listen及連接隊列

系統 Linux
從Linux源碼看Socket(TCP)的listen及連接隊列前言筆者一直覺得如果能知道從應用到框架再到操作系統的每一處代碼,是一件Exciting的事情。

[[346270]]

從Linux源碼看Socket(TCP)的listen及連接隊列前言筆者一直覺得如果能知道從應用到框架再到操作系統的每一處代碼,是一件Exciting的事情。今天筆者就來從Linux源碼的角度看下Server端的Socket在進行listen的時候到底做了哪些事情(基于Linux 3.10內核),當然由于listen的backlog參數和半連接hash表以及全連接隊列都相關,在這一篇博客里也一塊講了。

Server端Socket需要Listen

眾所周知,一個Server端Socket的建立,需要socket、bind、listen、accept四個步驟。今天筆者就聚焦于Listen這個步驟。

代碼如下:

  1. void start_server(){ 
  2.     // server fd 
  3.     int sockfd_server; 
  4.     // accept fd  
  5.     int sockfd; 
  6.     int call_err; 
  7.     struct sockaddr_in sock_addr; 
  8.   ...... 
  9.     call_err=bind(sockfd_server,(struct sockaddr*)(&sock_addr),sizeof(sock_addr)); 
  10.     if(call_err == -1){ 
  11.         fprintf(stdout,"bind error!\n"); 
  12.         exit(1); 
  13.     } 
  14.     // 這邊就是我們今天的聚焦點listen 
  15.     call_err=listen(sockfd_server,MAX_BACK_LOG); 
  16.     if(call_err == -1){ 
  17.         fprintf(stdout,"listen error!\n"); 
  18.         exit(1); 
  19.     } 

首先我們通過socket系統調用創建了一個socket,其中指定了SOCK_STREAM,而且最后一個參數為0,也就是建立了一個通常所有的TCP Socket。在這里,我們直接給出TCP Socket所對應的ops也就是操作函數。

如果你想知道上圖中的結構是怎么來的,可以看下筆者以前的博客:

https://my.oschina.net/alchemystar/blog/1791017

Listen系統調用好了,現在我們直接進入Listen系統調用吧。

  1. #include <sys/socket.h> 
  2. // 成功返回0,錯誤返回-1,同時錯誤碼設置在errno 
  3. int listen(int sockfd, int backlog); 

注意,這邊的listen調用是被glibc的INLINE_SYSCALL裝過一層,其將返回值修正為只有0和-1這兩個選擇,同時將錯誤碼的絕對值設置在errno內。這里面的backlog是個非常重要的參數,如果設置不好,是個很隱蔽的坑。

對于java開發者而言,基本用的現成的框架,而java本身默認的backlog設置大小只有50。這就會引起一些微妙的現象,這個在本文中會進行講解。

 

接下來,我們就進入Linux內核源碼棧吧

  1. listen 
  2.  |->INLINE_SYSCALL(listen......) 
  3.   |->SYSCALL_DEFINE2(listen, int, fd, int, backlog) 
  4.    /* 檢測對應的描述符fd是否存在,不存在,返回-BADF 
  5.    |->sockfd_lookup_light 
  6.    /* 限定傳過來的backlog最大值不超出 /proc/sys/net/core/somaxconn 
  7.    |->if ((unsigned int)backlog > somaxconn) backlog = somaxconn 
  8.    |->sock->ops->listen(sock, backlog) <=> inet_listen 

值得注意的是,Kernel對于我們傳進來的backlog值做了一次調整,讓其無法>內核參數設置中的somaxconn。

inet_listen

接下來就是核心調用程序inet_listen了。

  1. int inet_listen(struct socket *sock, int backlog) 
  2.  
  3.  /* Really, if the socket is already in listen state 
  4.   * we can only allow the backlog to be adjusted. 
  5.   *if ((sysctl_tcp_fastopen & TFO_SERVER_ENABLE) != 0 && 
  6.       inet_csk(sk)->icsk_accept_queue.fastopenq == NULL) { 
  7.       // fastopen的邏輯 
  8.    if ((sysctl_tcp_fastopen & TFO_SERVER_WO_SOCKOPT1) != 0) 
  9.     err = fastopen_init_queue(sk, backlog); 
  10.    else if ((sysctl_tcp_fastopen & 
  11.       TFO_SERVER_WO_SOCKOPT2) != 0) 
  12.     err = fastopen_init_queue(sk, 
  13.         ((uint)sysctl_tcp_fastopen) >> 16); 
  14.    else 
  15.     err = 0; 
  16.    if (err) 
  17.     goto out
  18.   } 
  19.  if(old_state != TCP_LISTEN) { 
  20.   
  21.   err = inet_csk_listen_start(sk, backlog); 
  22.  } 
  23.  sk->sk_max_ack_backlog =backlog; 
  24.  ...... 

從這段代碼中,第一個有意思的地方就是,listen這個系統調用可以重復調用!第二次調用的時候僅僅只能修改其backlog隊列長度(雖然感覺沒啥必要)。

 

首先,我們看下除fastopen之外的邏輯(fastopen以后開單章詳細討論)。也就是最后的inet_csk_listen_start調用。

  1. int inet_csk_listen_start(struct sock *sk, const int nr_table_entries) 
  2.  ...... 
  3.  // 這里的nr_table_entries即為調整過后的backlog 
  4.  // 但是在此函數內部會進一步將nr_table_entries = min(backlog,sysctl_max_syn_backlog)這個邏輯 
  5.  int rc = reqsk_queue_alloc(&icsk->icsk_accept_queue, nr_table_entries); 
  6.  ...... 
  7.  inet_csk_delack_init(sk); 
  8.  // 設置socket為listen狀態 
  9.  sk->sk_state = TCP_LISTEN; 
  10.  // 檢查端口號 
  11.  if (!sk->sk_prot->get_port(sk, inet->inet_num)){ 
  12.   // 清除掉dst cache 
  13.   sk_dst_reset(sk); 
  14.   // 將當前sock鏈入listening_hash 
  15.   // 這樣,當SYN到來的時候就能通過__inet_lookup_listen函數找到這個listen中的sock 
  16.   sk->sk_prot->hash(sk); 
  17.  } 
  18.  sk->sk_state = TCP_CLOSE; 
  19.  __reqsk_queue_destroy(&icsk->icsk_accept_queue); 
  20.  // 端口已經被占用,返回錯誤碼-EADDRINUSE 
  21.  return -EADDRINUSE; 

這里最重要的一個調用sk->sk_prot->hash(sk),也就是inet_hash,其將當前sock鏈入全局的listen hash表,這樣就可以在SYN包到來的時候尋找到對應的listen sock了。如下圖所示:

 

如圖中所示,如果開啟了SO_REUSEPORT的話,可以讓不同的Socket listen(監聽)同一個端口,這樣就能在內核進行創建連接的負載均衡。在Nginx 1.9.1版本開啟了之后,其壓測性能達到3倍!

 

半連接隊列hash表和全連接隊列

在筆者一開始翻閱的資料里面,都提到。tcp的連接隊列有兩個,一個是sync_queue,另一個accept_queue。但筆者仔細閱讀了一下源碼,其實并非如此。事實上,sync_queue其實是個hash表(syn_table)。另一個隊列是icsk_accept_queue。

所以在本篇文章里面,將其稱為reqsk_queue(request_socket_queue的簡稱)。在這里,筆者先給出這兩個queue在三次握手時候的出現時機。如下圖所示:

 

當然了,除了上面提到的qlen和sk_ack_backlog這兩個計數器之外,還有一個qlen_young,其作用如下:

  1. qlen_young:  
  2. 記錄的是剛有SYN到達, 
  3. 沒有被SYN_ACK重傳定時器重傳過SYN_ACK 
  4. 同時也沒有完成過三次握手的sock數量 

如下圖所示:

 

至于SYN_ACK的重傳定時器在內核中的代碼為下面所示:

  1. static void tcp_synack_timer(struct sock *sk) 
  2.  inet_csk_reqsk_queue_prune(sk, TCP_SYNQ_INTERVAL, 
  3.        TCP_TIMEOUT_INIT, TCP_RTO_MAX); 

這個定時器在半連接隊列不為空的情況下,以200ms(TCP_SYNQ_INTERVAL)為間隔運行一次。限于篇幅,筆者就在這里不多討論了。

為什么要存在半連接隊列

因為根據TCP協議的特點,會存在半連接這樣的網絡攻擊存在,即不停的發SYN包,而從不回應SYN_ACK。如果發一個SYN包就讓Kernel建立一個消耗極大的sock,那么很容易就內存耗盡。所以內核在三次握手成功之前,只分配一個占用內存極小的request_sock,以防止這種攻擊的現象,再配合syn_cookie機制,盡量抵御這種半連接攻擊的風險。

半連接hash表和全連接隊列的限制

由于全連接隊列里面保存的是占用內存很大的普通sock,所以Kernel給其加了一個最大長度的限制。這個限制為:

  1. 下面三者中的最小值 
  2. 1.listen系統調用中傳進去的backlog 
  3. 2./proc/sys/inet/ipv4/tcp_max_syn_backlog 
  4. 3./proc/sys/net/core/somaxconn  
  5. min(backlog,tcp_ma_syn_backlog,somaxcon) 

如果超過這個somaxconn會被內核丟棄,如下圖所示:

 

這種情況的連接丟棄會發生比較詭異的現象。在不設置tcp_abort_on_overflow的時候,client端無法感知,就會導致即在第一筆調用的時候才會知道對端連接丟棄了。

 

那么,怎么讓client端在這種情況下感知呢,我們可以設置一下tcp_abort_on_overflow

  1. echo '1' > tcp_abort_on_overflow 

設置后,如下圖所示:

 

當然了,最直接的還是調大backlog!

  1. listen(fd,2048) 
  2. echo '2048' > /proc/sys/inet/ipv4/tcp_max_syn_backlog 
  3. echo '2048' > /proc/sys/net/core/somaxconn 

backlog對半連接隊列的影響

這個backlog對半連接隊列也有影響,如下代碼所示:

  1. /* TW buckets are converted to open requests without 
  2.   * limitations, they conserve resources and peer is 
  3.   * evidently real one. 
  4.   */ 
  5.  // 在開啟SYN cookie的情況下,如果半連接隊列長度超過backlog,則發送cookie 
  6.  // 否則丟棄 
  7.  if (inet_csk_reqsk_queue_is_full(sk) && !isn) { 
  8.   want_cookie = tcp_syn_flood_action(sk, skb, "TCP"); 
  9.   if (!want_cookie) 
  10.    goto drop
  11.  } 
  12.  
  13.  /* Accept backlog is full. If we have already queued enough 
  14.   * of warm entries in syn queue, drop request. It is better than 
  15.   * clogging syn queue with openreqs with exponentially increasing 
  16.   * timeout. 
  17.   */ 
  18.  // 在全連接隊列滿的情況下,如果有young_ack,那么直接丟棄 
  19.  if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) { 
  20.   NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENOVERFLOWS); 
  21.   goto drop
  22.  } 

我們在dmesg里面經??吹降?/p>

  1. Possible SYN flooding on port 8080  

就是由于半連接隊列滿以后,Kernel發送cookie校驗而導致。

總結

TCP作為一個古老而又流行的協議,在演化了幾十年后,其設計變的相當復雜。從而在出問題的時候變的難于分析,這時候就要reading the fucking source code!而筆者也正是寫這篇博客而詳細閱讀源碼的時候偶然間靈光一閃,找到了最近一個詭異問題的根因。這個詭異問題的分析過程將會在近期寫出來分享給大家。

本文轉載自微信公眾號「解Bug之路」,可以通過以下二維碼關注。轉載本文請聯系解Bug之路公眾號。

 

責任編輯:武曉燕 來源: 解Bug之路
相關推薦

2020-10-10 07:00:16

LinuxSocketTCP

2021-06-10 09:52:33

LinuxTCPAccept

2021-07-15 14:27:47

LinuxSocketClose

2023-03-10 14:50:34

TCP 連接網絡通信

2021-07-14 09:48:15

Linux源碼Epoll

2025-11-05 03:00:00

Linux內核TCP粘包

2015-04-23 18:46:38

TCPTCP協議

2019-09-16 09:29:01

TCP全連接隊列半連接隊列

2010-01-21 11:19:44

TCP Socketlinux

2024-12-04 11:53:05

2021-02-22 10:05:30

連接池網絡前端

2021-02-18 22:18:50

TCP 服務器源碼

2021-03-10 08:20:54

設計模式OkHttp

2017-04-05 20:00:32

ChromeObjectJS代碼

2015-05-28 10:34:16

TCPsocket

2019-11-17 22:11:11

TCPSYN隊列Accept隊列

2019-08-26 09:50:15

TCP連接Socket

2021-10-27 18:36:50

TCP 隊列全連接

2021-03-17 09:51:31

網絡編程TCP網絡協議

2018-02-02 15:48:47

ChromeDNS解析
點贊
收藏

51CTO技術棧公眾號

国产激情视频一区二区三区欧美| 国产精品99一区二区三| 欧美日韩精品二区| 日韩国产伦理| www.国产欧美| 久久精品123| 久久精品电影网| 精品国产人妻一区二区三区| 日本欧美韩国| 亚洲综合色自拍一区| 欧美午夜精品理论片a级大开眼界| 中文字幕观看视频| 一区二区视频欧美| 日韩在线观看免费| 欧美熟妇一区二区| 香蕉成人app| 欧美四级电影网| www在线观看免费| 黄色大片在线播放| 久久综合成人精品亚洲另类欧美 | 国产中文字幕免费| 欧美午夜精彩| 日韩精品欧美激情| 亚洲精品国产久| 国产日韩另类视频一区| 性欧美大战久久久久久久久| 曰韩不卡视频| 精品av中文字幕在线毛片| 夫妻av一区二区| 国产欧美va欧美va香蕉在线 | 欧美人动与zoxxxx乱| 黄色一级视频在线播放| 米奇777四色精品人人爽| 久久精品亚洲乱码伦伦中文 | 久久久久久久久久一区| 成人欧美一区二区三区的电影| 亚洲一区在线视频观看| 一区二区三区在线视频111| 天天操天天射天天| 成人夜色视频网站在线观看| 91精品视频专区| 中文字幕av无码一区二区三区| 久久久久国产精品一区三寸| 国语自产精品视频在线看| 免费一级全黄少妇性色生活片| 色欧美自拍视频| 国产亚洲欧美日韩美女| 一级性生活毛片| 色天天色综合| 精品亚洲aⅴ在线观看| 人妻精品久久久久中文字幕| 欧美激情网址| 国产视频在线一区二区| 亚洲熟妇无码av| 蜜桃国内精品久久久久软件9| 亚洲国产日韩欧美在线图片| chinese麻豆新拍video| 国产香蕉精品| 亚洲成av人影院在线观看| 亚洲少妇一区二区三区| 91精品短视频| 亚洲国产精品一区二区久| 午夜不卡久久精品无码免费| 久久悠悠精品综合网| 精品国产亚洲一区二区三区在线观看| 日本人dh亚洲人ⅹxx| 亚洲国产精品免费视频| 精品国产a毛片| 捆绑凌虐一区二区三区| 免费一区二区| 日韩视频在线免费| 九九视频免费看| 国产一级久久| 国产精品99久久久久久久久久久久 | 日韩在线视频免费| 久久综合精品国产一区二区三区| 日韩欧美亚洲日产国| 日本中文字幕在线视频| 亚洲激情图片一区| 人妻久久久一区二区三区| 精品国模一区二区三区| 欧美性猛交xxxx富婆| 亚洲欧美另类动漫| 久久99精品久久久野外观看| 亚洲国产精品99久久| 免费看污片网站| 天天揉久久久久亚洲精品| 欧美激情按摩在线| 五月婷婷激情视频| 国内精品免费**视频| 国产精品99久久久久久久| 涩爱av在线播放一区二区| 国产精品久久久久久久久动漫| 成人在线免费观看网址| 在线看片福利| 91麻豆精品久久久久蜜臀| 激情av中文字幕| 欧美日韩性在线观看| 麻豆成人在线看| 国产一级18片视频| 国产在线国偷精品产拍免费yy| 国产精品免费在线播放| 国产视频二区在线观看| 一区二区国产视频| 亚洲精品视频导航| silk一区二区三区精品视频 | 天堂在线亚洲视频| 91视频免费在线观看| 黄色国产在线| 亚洲二区在线观看| 手机视频在线观看| 日韩中出av| 精品综合久久久久久97| 中文字幕人妻一区二区三区视频| 成人午夜电影小说| 欧美 另类 交| 在线一区视频观看| 日韩成人在线观看| 久久久国产精品人人片| 久久精品国产网站| 日本一区二区三区视频在线观看 | 亚洲国产精品久久久男人的天堂| 三级在线视频观看| 美日韩中文字幕| 国模视频一区二区| www三级免费| 亚洲欧洲av在线| 福利在线一区二区三区| 色橹橹欧美在线观看视频高清| 欧美黄色www| 99这里有精品视频| 欧美激情一二三区| 国产成人av影视| 久久狠狠久久| 久久久久成人网| 国产不卡精品视频| 亚洲视频一区在线| 亚洲av无日韩毛片久久| 婷婷综合社区| 成人免费淫片视频软件| 亚洲精品承认| 欧美日韩电影在线| 无码人妻精品中文字幕| 美女视频黄 久久| 午夜欧美一区二区三区免费观看| 日韩新的三级电影| 亚洲无亚洲人成网站77777| 色av性av丰满av| 国产三级精品视频| 国语对白做受xxxxx在线中国| 日韩一级电影| 日韩美女中文字幕| 国产午夜在线观看| 在线亚洲人成电影网站色www| 深爱五月激情网| 男人的j进女人的j一区| 亚洲欧洲精品一区| 少妇精品视频在线观看| 久久亚洲电影天堂| 国内毛片毛片毛片毛片| 一区二区三区在线免费观看| 一级日本黄色片| 国内精品福利| 久久综合九色欧美狠狠| 精品国产免费人成网站| 中文字幕在线日韩| 国产精品久久婷婷| 亚洲精品国产视频| 黄色激情在线观看| 久久国产日韩| 吴梦梦av在线| 都市激情亚洲欧美| 欧洲成人免费视频| 中文字幕在线观看日本| 91精品国产一区二区三区| 国产无遮挡aaa片爽爽| 91看片淫黄大片一级在线观看| 国产自偷自偷免费一区 | 精品国产一区二区三区2021| 欧美丰满老妇厨房牲生活| 天堂av在线资源| 欧美日韩一区久久| 欧美成人aaa片一区国产精品| 97se亚洲国产综合在线| 亚洲国产精品三区| 欧美视频成人| 色综合久久久久久久久五月| 国产精品欧美一区二区三区不卡| 97精品欧美一区二区三区| 国内精品一区视频| 日韩情涩欧美日韩视频| 亚洲综合图片网| 亚洲美女视频在线观看| 波多野结衣办公室33分钟| 韩国欧美国产一区| 成人免费观看视频在线观看| 亚洲精品91| 欧美1o一11sex性hdhd| 国产精品一区免费在线| 欧美在线一区二区视频| 羞羞视频在线观看免费| 一区二区中文字幕| 成人小说亚洲一区二区三区 | 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 日本中文在线一区| 国产美女在线一区| 99精品视频在线观看播放| 久久伊人一区二区| 福利欧美精品在线| 成人免费淫片aa视频免费| a日韩av网址| 国模视频一区二区| 宅男网站在线免费观看| 中文字幕精品www乱入免费视频| 蜜臀av中文字幕| 欧美精品v国产精品v日韩精品| 六月丁香激情综合| 亚洲成人黄色影院| 欧美在线视频第一页| 国产精品三级视频| 成人性生交大免费看| 99麻豆久久久国产精品免费优播| 四川一级毛毛片| 精品一区二区影视| 国产九九在线视频| 日韩黄色免费电影| 日韩一级在线免费观看| 日韩香蕉视频| 精品无码一区二区三区爱欲| 欧美日韩国产一区精品一区| 人人妻人人澡人人爽精品欧美一区| 尤物tv在线精品| 欧美日韩国产一二| 日韩丝袜视频| 蜜桃91精品入口| 亚洲人成网站77777在线观看 | 天堂资源中文在线| 亚洲国产中文字幕在线观看| 亚洲国产综合网| 欧美v亚洲v综合ⅴ国产v| 国产精品久久久久久久久久久久久久久久久久 | 国产一区二区日韩精品欧美精品| 污污网站免费在线观看| 精品久久国产字幕高潮| 亚洲av无码国产精品久久不卡 | 国产精品免费久久久| 韩国成人漫画| 国产成人在线精品| 亚洲第一二三四区| 国产精品网址在线| 日本久久久久| 5g国产欧美日韩视频| www国产精品| 精品一区久久久| 最新亚洲精品| 一本久道久久综合| 亚洲国产精品日韩专区av有中文| 青青在线免费视频| 1000部精品久久久久久久久| 久草青青在线观看| 日本aⅴ免费视频一区二区三区| wwww.国产| 国产一区欧美日韩| 久久久久久久久久久久国产精品| 成人污视频在线观看| 巨胸大乳www视频免费观看| 欧美激情在线一区二区| www.99re6| 亚洲一区二区三区三| 可以免费看的av毛片| 日本韩国一区二区三区视频| 夜夜躁狠狠躁日日躁av| 日韩一区二区三区视频在线| 日本高清视频免费看| 国产亚洲欧美另类中文| 黄色网址视频在线观看| 欧美精品videofree1080p| 在线天堂中文资源最新版| 国产精品美乳一区二区免费| 免费精品一区| 另类小说综合网| 91综合在线| 男的插女的下面视频| 日本在线不卡一区| 99免费观看视频| 国产亚洲欧美中文| 日韩女优一区二区| 日韩欧美一区视频| 99热这里只有精品在线观看| 亚洲男人天堂网| 久久精品视频观看| 热久久这里只有| 国产精品久久久久久久久久辛辛| 国产精品一国产精品最新章节| 精品久久精品| 欧美日韩不卡在线视频| 美女任你摸久久| 老司机免费视频| 亚洲丝袜另类动漫二区| 六月丁香激情综合| 欧美变态tickling挠脚心| 成年人免费在线视频| 久久久久久免费精品| 久久夜夜久久| 你懂的视频在线一区二区| 在线看片不卡| 天堂在线资源视频| 91蜜桃在线观看| 久青草免费视频| 欧美精品第一页| 国产精品久久一区二区三区不卡| 久久久久久国产精品| 深夜福利亚洲| 五月天国产一区| 久久国产88| 中文字幕在线视频播放| 亚洲免费伊人电影| 在线观看免费中文字幕| 亚洲美女精品成人在线视频| 福利小视频在线| 91九色国产在线| 欧美wwwww| 亚洲污视频在线观看| 久久久国产综合精品女国产盗摄| 久久久久久久久久久久久久免费看 | 午夜精品免费视频| 日韩精品一区二区三区中文字幕 | 影音先锋亚洲一区| 又黄又爽又色的视频| 国产精品成人一区二区艾草| 无码人妻久久一区二区三区| 亚洲激情电影中文字幕| 久草免费在线色站| 99久久99| 国内视频精品| 又黄又色的网站| 亚洲二区在线视频| 免费观看a视频| 久久噜噜噜精品国产亚洲综合| 视频欧美一区| 红桃一区二区三区| 国产激情一区二区三区| 欧美日韩免费做爰视频| 欧美一区二区三区在线视频 | 成人综合久久| 国产91色在线观看| 18涩涩午夜精品.www| 亚洲在线视频播放| 日韩在线观看视频免费| 欧美日韩免费电影| 在线码字幕一区| 国内精品久久久久影院一蜜桃| 国产日韩欧美在线观看视频| 日韩视频在线永久播放| 2021国产在线| 好吊色欧美一区二区三区 | 亚洲综合色网站| 欧美视频xxx| 青青青国产精品一区二区| 神马久久一区二区三区| 国产一伦一伦一伦| 亚洲人一二三区| 欧美一级一区二区三区| 18一19gay欧美视频网站| 亚洲另类春色校园小说| 91香蕉视频污版| 亚洲日本在线看| 天堂网在线播放| 国产精品99蜜臀久久不卡二区| 日韩一区二区三区免费播放| 五月婷婷六月丁香激情| 亚洲欧美另类综合偷拍| 亚洲精品久久久久久无码色欲四季| 亚州欧美日韩中文视频| 精品一区二区三区在线 | 欧美黄色www| 在线日本制服中文欧美| 中文字幕在线观看日| 亚洲国产综合视频在线观看| 深夜福利视频在线免费观看| 国产精品美乳一区二区免费| 欧美+日本+国产+在线a∨观看| 182在线视频| 欧美日韩国产三级| 成人福利影视| 无遮挡亚洲一区| av在线免费不卡| 亚洲综合精品国产一区二区三区 | 蜜臀av.com| 久久人人超碰精品| 国产丰满果冻videossex| 青草成人免费视频| 欧美久久视频| 色欲av无码一区二区三区| 欧美一区二区三区四区在线观看| 免费看男女www网站入口在线| 在线不卡视频一区二区| 99精品在线观看视频| 国产男男gay体育生网站| 欧美一级电影久久|