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

多播的實現和需要注意的問題

網絡 網絡管理
網絡中存在三種傳輸概念,單播,多播,廣播,單播和廣播大家可能都很了解,單播,連接的建立是一對一的,廣播則是向一個網絡內所有用戶發送。

前段時間研究了一小段時間的網絡多播問題,自己很有感觸,把自己的經歷寫出來,希望有需要的可以少走一些彎路。

先說一下原理,我覺得這個還是需要說一下的。

網絡中存在三種傳輸概念,單播,多播,廣播,單播和廣播大家可能都很了解,單播,連接的建立是一對一的,廣播則是向一個網絡內所有用戶發送。

我們這里只說多播,多播的好處我就不說了,節省帶寬什么的。

其實我個人覺得,單播多播都可以看錯是某種意義上的廣播,單播可以理解為網絡只有一個用戶,多播則可以理解為是受限制的一組廣播用戶(指定的一組用戶)。

網絡中存在五種IP地址,A,B,C,D,E類

需要明白的一點事,IP地址分為兩部分,IP=類別+網絡號+主機號

多播的實現和需要注意的問題

其中,對于A類地址來說,10.0.0.0 ~ 10.255.255.255為私有地址,127.0.0.0~127.255.255.255為回環地址,主機ID全0標識一個網絡,主機ID全1表示廣播地址,B類地址:172.16.0.0 ~ 172.31.255.255為私有地址,主機ID全0標識一個網絡,主機ID全1表示廣播地址,C類地址:192.168.0.0 ~ 192.168.255.255為私有地址(這個應該很熟悉吧),主機ID全0標識一個網絡,主機ID全1表示廣播地址。

組播對應的MAC地址:01-00-5e-xx-xx-xx

映射關系:

 

 

多播只會由感興趣的端口接收,他是怎么知道這些端口的呢?這里就要說D類地址了。這里一定要理解一個概念:多播組。多播的數據是定向的發給一個多播組的,這樣凡是多播組內的成員就會收到數據,有人問了,網絡上有那么多多播組,是怎么知道要發給哪個組。這里就是D類地址了,D類地址充當了多播組的標識,記住,僅僅是標識。可以理解為,多播組的目的地址,多播組的ID。所有的主機可以選擇加入多播組,也就是被標記為一個該多播組的一個ID。如何加入多播組是技術問題,我們后面講。

那么接下來的問題是,分布在全球的這么多臺主機,如果美國的一臺主機加入了這個多播組,英國的一個主機也加入了同樣一個多播組,而我源頭是中國這邊的主機,那么他怎么發過去呢?

需要考慮的問題,數據包如何到達子網路由器(主機-路由器之間的組成員關系協議),數據包如何在公網內路由(路由器-路由器之間的組播路由協議)(轉發規則),數據如何被目的子網路由器接受并轉發。

首先,這個數據包要能到達你所在的子網的路由器,這一步如何實現的?答案,是IGMP協議。

IGMP(Internet Group Management Protocol),看名字就可以看出是因特網組播管理協議。是主機與路由器之間唯一的信令協議。目前有三個版本,V1,V2,V3(不同之處主要是V1,V2,V2是主動離開組播組,V1則是不會主動離開).通過用wireshark軟件抓包測試,你會發現,目前網絡上大部分是V2版本的組播協議包。主機向本地路由器發送一個IGMP,加入相對應的組播(組播地址端口,自己定義)。這樣主機是可以加入組播了,但是到來的組播數據包是如何知道數據包要發給誰呢?還是IGMP!當發現有數據包來的時候,本地路由器向本地子網內的主機發送一個查詢報文(IGMP),加入了多播組的主機則會發送一個回復給路由器(IGMP包),那后面就會轉發此數據包了。如果主機要離開組播組怎么辦呢?也是IGMP!主機只需要向路由器發送一個離開的消息(IGMP包)給路由器就可以了。

數據發送到路由器后,路由器根據什么將數據包轉發到其他路由器呢(公網內路由器的轉發)?答案是:域內組播路由協議及域間組播路由協議。其實個人感覺不需要區分這個域間和域內路由,我們只需要關心,數據包可以在因特網上自由轉發就可以了。這里需要知道的是兩個域內路由協議,PIM-SM,PIM-DM,DVMRP(主要區別是密集模式和稀疏模式區別)。路由器間的轉發需要的是這幾個路由協議,原理在網上一搜一大堆,我就不講了。這幾個協議主要在轉發,鄰居發現什么的有些區別,比如說剪枝策略。

組播的轉發利用了一個叫逆向路徑轉發策略(RPF),RPF協議決定是否轉發次數據包以及丟棄掉。

路由器檢查到達組播包的源地址,如果信息包是在可返回源站點的接口上到達,則RPF檢查成功,信息包被轉發如果RPF檢查失敗,丟棄信息包。

大家這個時候可能對這個有些概念,組播說的也很神乎,比如很省帶寬,畢竟是一發多,只需要發送一份,但是可以很多都接受。比單播好用多了,那你可能會問,那組播的應用應該很廣了?答案是肯定的,組播的應用很多,比如多媒體會議,聯網游戲等。但是有個問題目前確實致命的!應用的條件:路由器沒有開啟這個功能!

大致可以說一下組播路由的過程,數據包從源端口出發,經路由器轉發(這個應該是所有路由器都會經過,可是所有哦),然后到達有目的組播的成員則轉發給他。這個時候你可能會發現一個問題,如果組播大規模應用的話,那網絡上這種數據包會非常多,畢竟誰都可以創建組播組,然后發送,路由器是要進行轉發的。

我自己本來也是想實現一個組播功能的類似于視頻會議的應用的,但是測試的時候發現,數據包就是沖不出去內網,只能在局域網內轉(局域網內可以收到)。后來發現是路由器雖然有這個功能,但是默認都給關閉了。記得當時查這個資料的時候,在一個路由器管理員配置的一個BBS,上面一個人發帖,有人回答說:管理員如果開啟這個功能,那只能說有病。足可以看出,目前路由器對組播支持的尷尬處境。

所以這里只是提醒一下做這個的朋友,路由器對這個支持不是很好,如果要做的話多考慮一下。可能我理解不對,如果有做出來這個的,希望能提供觀點哈。

附一個簡單的多播程序,同一子網下運行無誤,只需要打開這個客戶端就可以。兩個進程,一個負責發,一個負責接收。

  1. #include <iostream>   
  2. #include <winsock2.h> //注意這里的include文件順序   
  3. #include <Ws2tcpip.h>   
  4. #include <process.h> //_beginthread要求   
  5.    
  6. #pragma comment(lib, "ws2_32.lib")   
  7.    
  8. using namespace std;   
  9.    
  10. const char* MULTICAST_IP = "230.1.1.99"; //多播組地址   
  11. const int MULTICAST_PORT = 2002; //多播組端口   
  12.    
  13. const int BUFFER_SIZE = 1024;   
  14.    
  15. void do_send(void* arg); //讀取用戶輸入并發送到多播組線程函數   
  16. void do_read(void* arg); //讀物多播組數據函數   
  17.    
  18. int main()   
  19. {   
  20.     //這個結構被用來存儲被WSAStartup函數調用后返回的Windows Sockets數據。   
  21.     //它包含Winsock.dll執行的數據。   
  22.         WSAData wsaData;   
  23.    
  24.         /*  
  25.         使用Socket的程序在使用Socket之前必須調用WSAStartup函數。該函數的第一個參數指明程序請求使用的Socket版本,其中高位字節指明副版本、低位字節指明主版本;操作系統利用第二個參數返回請求的Socket的版本信息。  
  26.         加載Windows套接字動態鏈接庫  
  27.         */   
  28.         if( WSAStartup(MAKEWORD(2,2), &wsaData) != 0 )   
  29.         {   
  30.         cout <<"Error in WSAStartup"<<endl;   
  31.         return 0;   
  32.         }   
  33.    
  34.         SOCKET server;   
  35.         //原始的方式   
  36.         /*  
  37.         第一個參數指定應用程序使用的通信協議的協議族,對于TCP/IP協議族,該參數置AF_INET;  
  38.         第二個參數指定要創建的套接字類型,流套接字類型為SOCK_STREAM、數據報套接字類型為SOCK_DGRAM、  
  39.         原始套接字SOCK_RAW(WinSock接口并不適用某種特定的協議去封裝它,而是由程序自行處理數據包以及協議首部);  
  40.         另一種方式WSASocket  
  41.         */   
  42.         server = socket(AF_INET, SOCK_DGRAM, 0); //創建一個UDP套接口   
  43.         cout<<"create socket: "<<server<<endl;   
  44.    
  45.         int ret ;   
  46.    
  47.         const int on = 1; //允許程序的多個實例運行在同一臺機器上   
  48.         /*  
  49.         調用setsockopt()函數為套接字設置SO_REUSEADDR選項,以允許套接字綁扎到一個已在使用的地址上。設置套接字的選項  
  50.         */   
  51.         ret = setsockopt(server, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on));   
  52.         if( ret == SOCKET_ERROR )   
  53.         {   
  54.         WSACleanup();   
  55.            
  56.         cout<<"Error in setsockopt(SO_REUSEADDR): "<<WSAGetLastError()<<endl;   
  57.         return 0;   
  58.         }   
  59.            
  60.         const int routenum = 10;   
  61.    
  62.         //ret = setsockopt(server,IPPROTO_IP,IP_MULTICAST_TTL,\   
  63.            
  64.         ret = setsockopt(server,IPPROTO_IP,IP_MULTICAST_TTL,\   
  65.         (char*)&routenum,sizeof(routenum));   
  66.         if( ret == SOCKET_ERROR )   
  67.         {   
  68.         WSACleanup();   
  69.    
  70.         cout<<"Error in setsockopt(IP_MULTICAST_TTL): "<<WSAGetLastError()<<endl;   
  71.         return 0;   
  72.         }   
  73.    
  74.         const int loopback = 0; //禁止回饋   
  75.         //使組播報文環路有效或無效   
  76.         ret = setsockopt(server,IPPROTO_IP,IP_MULTICAST_LOOP,\   
  77.         (char*)&loopback,sizeof(loopback));   
  78.         if( ret == SOCKET_ERROR )   
  79.         {   
  80.         WSACleanup();   
  81.    
  82.         cout<<"Error in setsockopt(IP_MULTICAST_LOOP): "<<WSAGetLastError()<<endl;   
  83.         return 0;   
  84.         }   
  85.         //地址信息,local設置為多播組端口   
  86.         sockaddr_in local;   
  87.         memset(&local, 0, sizeof(local));   
  88.         local.sin_family = AF_INET;   
  89.         local.sin_port = htons(MULTICAST_PORT);   
  90.         //INADDR_ANY為0.0.0.0   
  91.         local.sin_addr.S_un.S_addr = INADDR_ANY;   
  92.            
  93.         ret = bind(server, (sockaddr*)(&local), sizeof(local));   
  94.    
  95.         if( ret == SOCKET_ERROR )   
  96.         {   
  97.         WSACleanup();   
  98.    
  99.         cout<<"Error in bind: "<<WSAGetLastError()<<endl;   
  100.         return 0;   
  101.         }   
  102.         //多播組結構   
  103.         ip_mreq mreq;   
  104.         memset(&mreq, 0, sizeof(mreq));   
  105.         //本機地址   
  106.         mreq.imr_interface.S_un.S_addr = INADDR_ANY;   
  107.         //點分十進制地址轉化為IP地址   
  108.         mreq.imr_multiaddr.S_un.S_addr = inet_addr(MULTICAST_IP);   
  109.    
  110.         //加入一個多播組   
  111.         ret = setsockopt(server,IPPROTO_IP,IP_ADD_MEMBERSHIP,\   
  112.         (char*)&mreq,sizeof(mreq));   
  113.         if( ret == SOCKET_ERROR )   
  114.         {   
  115.         WSACleanup();   
  116.    
  117.         cout<<"Error in setsockopt(IP_ADD_MEMBERSHIP): "<<WSAGetLastError()<<endl;   
  118.         return 0;   
  119.         }   
  120.    
  121.         //創建了兩個線程,一個讀用戶輸入并發送,一個讀多播組數據   
  122.         HANDLE hHandle[2];   
  123.         hHandle[0] = (HANDLE)_beginthread(do_send,0,(void*)server);   
  124.         hHandle[1] = (HANDLE)_beginthread(do_read,0,(void*)server);   
  125.    
  126.         //如果用戶輸入結束,程序就終止了   
  127.         WaitForSingleObject(hHandle[0], INFINITE);   
  128.    
  129.         WSACleanup();   
  130.    
  131.         return 0;   
  132. }   
  133.    
  134. void do_send(void* arg)   
  135.         {   
  136.         SOCKET server = (SOCKET)arg;   
  137.    
  138.         char sendline[BUFFER_SIZE+1];   
  139.    
  140.         sockaddr_in remote;   
  141.         memset(&remote, 0, sizeof(remote));   
  142.         remote.sin_addr.s_addr = inet_addr ( MULTICAST_IP );   
  143.         remote.sin_family = AF_INET ;   
  144.         remote.sin_port = htons(MULTICAST_PORT);   
  145.    
  146.         for(;;) //讀取用戶輸入知道用戶輸入"end"   
  147.         {   
  148.         cin.getline(sendline, BUFFER_SIZE);   
  149.    
  150.         if(strncmp(sendline,"end",3)==0)   
  151.             break;   
  152.    
  153.         //發送用戶輸入的數據到多播組   
  154.         sendto(server, sendline, strlen(sendline), 0, (sockaddr*)(&remote), sizeof(remote));    
  155.         }   
  156.    
  157.         cout<<"do_send end..."<<endl;   
  158. }   
  159.    
  160. void do_read(void* arg)   
  161. {   
  162.         SOCKET server = (SOCKET)arg;   
  163.    
  164.         char buf[BUFFER_SIZE+1];   
  165.         int ret;   
  166.    
  167.         sockaddr_in client;   
  168.         int clientLen;   
  169.    
  170.         for(;;) //一直讀取知道主線程終止   
  171.         {   
  172.         clientLen = sizeof(client);   
  173.         memset(&client, 0, clientLen);   
  174.    
  175.         ret = recvfrom(server, buf, BUFFER_SIZE, 0, (sockaddr*)(&clientLen), &clientLen);   
  176.         if ( ret == 0) //do_read在用戶直接回車發送了一個空字符串   
  177.         {   
  178.         continue;   
  179.         }   
  180.         else if( ret == SOCKET_ERROR )   
  181.         {   
  182.         if( WSAGetLastError() == WSAEINTR ) //主線程終止recvfrom返回的錯   
  183.         break;   
  184.    
  185.         cout<<"Error in recvfrom: "<<WSAGetLastError()<<endl;   
  186.         break ;   
  187.         }   
  188.         buf[ret] = '\0';   
  189.         cout<<"received: "<<buf<<endl;   
  190.         }   
  191.    
  192.         cout<<"do_read end..."<<endl;   
  193. }   

 

責任編輯:林琳 來源: CSDN博客
相關推薦

2013-09-29 10:36:08

VMware虛擬化

2009-04-23 14:30:19

UML建模

2020-10-26 14:01:22

Java泛型

2021-07-30 09:00:40

鴻蒙HarmonyOS應用

2023-10-04 00:03:00

SQL數據庫

2010-10-08 09:38:42

mysql修改表

2009-08-10 15:56:35

802局域網網橋兼容性

2010-03-26 14:23:47

Python入門

2011-05-26 17:37:11

Ajax

2016-12-26 18:51:34

AndroidJavascriptJSONObject

2010-04-21 10:04:33

Oracle移植

2021-02-05 17:35:07

數據高管CIO技術

2013-09-03 13:01:01

團隊管理團隊

2024-05-16 15:15:14

2011-12-21 09:54:15

項目經理

2010-06-29 15:54:36

UML建模

2013-08-21 09:38:21

802.11acMeru5G wifi

2017-03-17 11:00:08

數字化陳勇Gartner

2009-11-10 14:15:40

2010-07-12 13:00:49

UML建模
點贊
收藏

51CTO技術棧公眾號

猫咪成人在线观看| 麻豆电影在线播放| 久久精品人人| 中文字幕亚洲国产| 色婷婷激情视频| 黄色羞羞视频在线观看| 久久亚洲私人国产精品va媚药| 国产成人在线一区| 91精品国产高清一区二区三蜜臀| 国产一区在线电影| 欧美亚州韩日在线看免费版国语版| 在线观看日本一区| 欧美视频xxx| 老牛国产精品一区的观看方式| 日韩视频―中文字幕| 国内精品免费视频| 成人在线高清| 天天色图综合网| 亚洲欧美久久234| 日韩有码第一页| 男男视频亚洲欧美| 久久免费福利视频| 99精品1区2区| 亚洲一区二区三区视频播放| 手机看片久久久| 午夜久久美女| 色av吧综合网| theav精尽人亡av| 9999精品免费视频| 日本道精品一区二区三区| 日本高清视频免费在线观看| 久热av在线| 成人美女视频在线看| 国产美女被下药99| 无码人妻aⅴ一区二区三区有奶水| 久久久9色精品国产一区二区三区| 日韩精品极品毛片系列视频| 亚洲五月激情网| 亚洲www啪成人一区二区| 一区二区三区国产精品| 特级毛片在线免费观看| 男生女生差差差的视频在线观看| 高清不卡一区二区在线| 国产精品一区av| 波多野结衣在线观看一区| 亚洲精品欧洲| 欧美国产亚洲精品久久久8v| 日本成人精品视频| 精品国产视频| 亚洲欧美在线播放| 好吊一区二区三区视频| 国产无遮挡裸体免费久久| 日韩一级片网站| 999久久久精品视频| 日韩精选视频| 在线看不卡av| 欧美 国产 小说 另类| cao在线视频| 午夜久久久影院| 日韩视频免费播放| 成人三级小说| 亚洲成人精品一区| 青草青青在线视频| 天堂资源在线| 欧美日韩亚洲成人| 精品99在线视频| 欧美激情喷水| 欧美亚洲自拍偷拍| 三年中国国语在线播放免费| 亚洲1234区| 在线亚洲一区二区| 日韩欧美国产片| 欧美午夜三级| 欧美一区二区精品久久911| 99精品视频国产| 一区二区日韩| 日韩精品一区二区三区老鸭窝| 潘金莲一级淫片aaaaa| 日韩在线视频一区二区三区| 亚洲成人久久久久| 女人被狂躁c到高潮| 精品一区二区三| 色婷婷av一区二区三区久久| 九九热视频在线免费观看| 国产精品久久久久久| 欧美成在线视频| 久久久久性色av无码一区二区| 在线看片欧美| 国产99久久精品一区二区永久免费| 黄色片视频免费| 国产在线精品一区二区三区不卡| 91精品国产高清久久久久久91裸体| 亚洲第一天堂网| 91玉足脚交白嫩脚丫在线播放| 欧美日韩综合另类| 黄网站在线免费| 午夜激情综合网| 久久久精品麻豆| 日韩一二三区在线观看| 日韩电视剧在线观看免费网站| 日韩av在线看免费观看| 四季av一区二区三区免费观看 | 婷婷国产在线| 中文字幕不卡在线播放| 欧美日韩中文字幕在线播放| 中文一区一区三区高中清不卡免费| 欧美影院午夜播放| 女性生殖扒开酷刑vk| 精品国产一区二区三区小蝌蚪| 久久视频在线看| www欧美在线| 精品亚洲成a人| 麻豆91蜜桃| 在线观看电影av| 在线观看91视频| 亚洲色偷偷色噜噜狠狠99网| 菁菁伊人国产精品| 日韩av在线影院| 日韩欧美综合视频| 久久成人精品| 国产精品一 二 三| 免费av在线| 亚洲成av人片一区二区三区| 欧美牲交a欧美牲交aⅴ免费下载| 成人自拍av| 亚洲高清免费观看高清完整版| 91制片厂在线| 日本不卡高清视频| 精品免费国产| 秋霞在线午夜| 6080日韩午夜伦伦午夜伦| 亚洲人成人无码网www国产| 欧美理论在线| 92国产精品久久久久首页| 国产精品视频一区二区久久| 五月综合激情婷婷六月色窝| 日本r级电影在线观看| 成人同人动漫免费观看 | 成人黄页网站视频| 亚洲欧美激情四射在线日| 国产一级淫片免费| 国产精品一区久久久久| 日本特级黄色大片| 欧美日韩精品一区二区三区视频| 亚洲国产欧美一区| xxxx 国产| 国产二区国产一区在线观看| 在线观看成人av| 国产精品4hu.www| 宅男66日本亚洲欧美视频| 午夜婷婷在线观看| 91最新地址在线播放| 国产二区视频在线| 国产精品成人自拍| 午夜精品福利在线观看| 亚洲精品国产av| 竹菊久久久久久久| 日韩中文在线不卡| 亚洲天堂999| 欧美激情综合在线| 日韩欧美国产片| 欧美电影三区| 91美女片黄在线观| 影音先锋男人在线资源| 日韩欧美一区在线观看| 九九免费精品视频| 成人三级伦理片| 九九爱精品视频| 天堂网av成人| 国产精品草莓在线免费观看| eeuss影院在线观看| 欧美日韩一区二区三区在线看| 亚洲一级理论片| 极品少妇一区二区| 色婷婷777777仙踪林| 在线观看视频一区二区三区| 久久久久久久久久久亚洲| 欧美一级淫片aaaaaa| 精品成人久久av| 成人在线一级片| 久久97超碰国产精品超碰| 国产一二三四五| 欧美激情影院| 国产精品欧美激情在线播放| 麻豆av免费在线观看| 精品国产免费一区二区三区四区 | 色综合久久综合网| 影音先锋男人看片资源| 粉嫩aⅴ一区二区三区四区五区 | 蜜桃视频m3u8在线观看| 国产一区二区三区久久精品| 国产又粗又长又大视频| 亚洲一区二区三区四区在线| 粉嫩av蜜桃av蜜臀av| 麻豆精品久久精品色综合| 18黄暴禁片在线观看| 狠狠综合久久av一区二区蜜桃| 91免费国产网站| 中文字幕21页在线看| 久久久国产精品亚洲一区| 亚洲三区在线播放| 欧美精品精品一区| 特级西西444www大精品视频免费看| 国产精品久久久爽爽爽麻豆色哟哟| 69亚洲乱人伦| 精品一区二区三区日韩| 91视频最新入口| 91精品久久久久久久蜜月 | 亚洲精品在线a| 国产精品高潮呻吟久久av黑人| 精品国产丝袜高跟鞋| 亚洲精品大尺度| 国产精品suv一区| 亚洲小说欧美激情另类| 最新中文字幕av| 国产91精品一区二区| 国产xxxxx在线观看| 一区二区三区四区在线观看国产日韩| 国产伦精品一区二区三区视频免费| 亚洲天堂导航| 中日韩美女免费视频网址在线观看| 蜜臀av在线观看| 欧美性色黄大片| 日本特黄特色aaa大片免费| 亚洲青青青在线视频| 捆绑裸体绳奴bdsm亚洲| 国产综合成人久久大片91| www.爱色av.com| 亚洲高清激情| japanese在线视频| 九九亚洲视频| 岛国视频一区免费观看| 在线成人免费| 国产精品成人av在线| 2020日本在线视频中文字幕| 中文字幕免费国产精品| 国产毛片在线看| 亚洲国语精品自产拍在线观看| 91激情在线观看| 欧美性xxxx极品hd满灌| 久久机热这里只有精品| 一区二区中文字幕在线| 人妻一区二区视频| 国产女同互慰高潮91漫画| 欧美做受高潮中文字幕| 九九国产精品视频| www.99av.com| 美女网站在线免费欧美精品| 日韩亚洲在线视频| 国产精品乱看| 99999精品视频| 国产日韩专区| 91好吊色国产欧美日韩在线| 欧美日本一区二区视频在线观看 | 免费成人av电影| 欧美α欧美αv大片| 99热这里是精品| 欧美区在线观看| 国产一区二区三区三州| 制服.丝袜.亚洲.中文.综合| 91精东传媒理伦片在线观看| 欧美一区二区三区视频免费播放| 91精品国产乱码久久| 欧美日韩国产大片| 四虎影院在线免费播放| 欧美午夜片在线看| 伊人网中文字幕| 欧美精品色一区二区三区| www.色日本| 精品精品国产高清一毛片一天堂| 精品人妻一区二区三区蜜桃| 亚洲白虎美女被爆操| 人妻少妇精品无码专区久久| 精品国产制服丝袜高跟| 黄色小视频免费在线观看| 日韩精品在线视频观看| 久草视频在线看| 在线看日韩欧美| 羞羞电影在线观看www| 久久久久久久久久国产| 俄罗斯一级**毛片在线播放 | 精品国产一区二区三区免费| 国产美女撒尿一区二区| 欧美成ee人免费视频| 婷婷中文字幕一区| 欧美乱做爰xxxⅹ久久久| 亚洲精选国产| 亚洲无吗一区二区三区| 美女视频一区二区| 色婷婷综合在线观看| 99久久久久免费精品国产| 国产精品亚洲无码| 国产精品网站导航| 日韩精品在线免费看| 欧美性猛交xxx| 在线视频播放大全| 日韩av一卡二卡| 国产日本在线观看| 久久成人精品视频| 日本不卡免费高清视频在线| 国产精品久久久久77777| 不卡精品视频| 精品欧美一区二区在线观看视频| 日韩国产在线| 国产精品久久..4399| 日韩国产高清在线| 亚洲午夜久久久久久久久| 国产欧美一区二区精品忘忧草 | 精品国产乱码久久久久久蜜坠欲下| 青青视频免费在线| 日一区二区三区| 人妻精油按摩bd高清中文字幕| 久久综合狠狠综合| 放荡的美妇在线播放| 色婷婷亚洲一区二区三区| 亚洲天堂2021av| 亚洲欧美在线磁力| 日韩精品分区| 国产精品三级在线| 中文有码一区| 免费高清一区二区三区| 秋霞av亚洲一区二区三| 18禁裸乳无遮挡啪啪无码免费| 中文字幕日韩一区| 不卡av电影在线| 亚洲精品永久免费| 欧美性受ⅹ╳╳╳黑人a性爽| 国产黑人绿帽在线第一区| 男人的天堂久久| 中文字幕在线中文| 久久精品国产精品亚洲红杏| 日韩人妻无码一区二区三区| 一区二区高清在线| 国产精品欧美久久久久天天影视| 一本一道久久a久久精品逆3p| heyzo在线播放| 91亚洲精品在线观看| 久久国产中文字幕| 日韩中文字幕组| 97se狠狠狠综合亚洲狠狠| 国产精品成人av久久| 欧美一区二区三区在线视频| h网站视频在线观看| 国产欧美一区二区三区久久人妖| 香蕉久久精品| 黄色片网址在线观看| 成人午夜短视频| 可以直接看的黄色网址| 欧美无砖专区一中文字| 粉嫩av一区| 国产不卡在线观看| 亚洲婷婷影院| 一区二区在线播放视频| 国产亚洲精品福利| 无码任你躁久久久久久久| 亚洲欧美精品suv| 高潮一区二区| 久久国产精品-国产精品| 男女av一区三区二区色多| av网站有哪些| 富二代精品短视频| 美州a亚洲一视本频v色道| 欧美在线观看视频| 国产精品白浆| 无码人妻h动漫| www欧美成人18+| 久久精品99北条麻妃| 国产亚洲精品一区二区| 精品网站在线| 欧美aaa在线观看| 国产美女在线观看一区| 草视频在线观看| 精品亚洲一区二区| 欧美特大特白屁股xxxx| 日本精品二区| 麻豆精品视频在线观看视频| 熟女少妇a性色生活片毛片| 3d成人动漫网站| 国产在线看片| 亚洲在线一区二区| 精品成人一区| 美女脱光内衣内裤| 欧美日韩视频在线一区二区| 久久77777| 欧美日韩一区二 | 99在线精品视频免费观看20| 久久这里只有精品99| 五月天亚洲色图| 艹b视频在线观看| 亚洲精品写真福利| 看电影就来5566av视频在线播放| 国产精品久久久亚洲| 韩国精品一区二区三区| 久久久久久久久久久国产精品| 欧美亚洲一区二区在线观看| 久久不射影院| 三区精品视频观看| 久久99国产精品麻豆| 久久久久久少妇| 精品国产自在精品国产浪潮|