亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 系統(tǒng) > Unix > 正文

UNIX網(wǎng)絡(luò)編程讀書筆記:UNIX域協(xié)議

2024-06-28 13:27:25
字體:
供稿:網(wǎng)友
UNIX網(wǎng)絡(luò)編程讀書筆記:UNIX域協(xié)議紅心概述

UNIX域協(xié)議并不是一個(gè)實(shí)際的協(xié)議族,而是在單個(gè)主機(jī)上執(zhí)行客戶/服務(wù)器通信的一種方法,所用API與在不同主機(jī)上執(zhí)行客戶/服務(wù)器通信所用的API(套接口API)相同。UNIX域協(xié)議可視為進(jìn)程間通信(ipC)方法之一。

UNIX域提供兩類套接口:字節(jié)流套接口(類似TCP)和數(shù)據(jù)報(bào)套接口(類似UDP)。

使用UNIX域套接口的理由有3個(gè):

燈泡在源自Berkeley的實(shí)現(xiàn)中,UNIX域套接口往往比通信兩端位于同一主機(jī)的TCP套接口快出一倍。

燈泡UNIX域套接口可用于在同一個(gè)主機(jī)上的不同進(jìn)程間傳遞描述字。

燈泡UNIX域套接口較新的實(shí)現(xiàn)把客戶的憑證(用戶ID和組ID)提供給服務(wù)器,從而能夠提供額外的安全檢查措施。

UNIX域中用于標(biāo)識(shí)客戶和服務(wù)器的協(xié)議地址是普通文件系統(tǒng)中的路徑名。這些路徑名不是普通的UNIX文件:除非把它們和UNIX域套接口關(guān)聯(lián)起來,否則無法讀寫這些文件。

紅心UNIX域套接口地址結(jié)構(gòu)

在頭文件<sys/un.h>中定義了UNIX域套接口地址結(jié)構(gòu):

struct sockaddr_un {    sa_family_t    sun_family;       /* AF_LOCAL */    char           sun_path[104];    /* null-terminated pathname */};

存放在sun_path數(shù)組中的路徑名必須以空格字符結(jié)尾。

實(shí)現(xiàn)提供的SUN_LEN宏以一個(gè)指向sockaddr_un結(jié)構(gòu)的指針為參數(shù)并返回該結(jié)構(gòu)的長(zhǎng)度,其中包括路徑名中非空字節(jié)數(shù)。

未指定地址(通配地址),通過以空字符串作為路徑名指示,也就是一個(gè)sun_path[0]值為0的地址結(jié)構(gòu)。這是UNIX域中與IPv4的INADDR_ANY常值以及IPv6的IN6ADDR_ANY_INIT常值等價(jià)的一個(gè)地址。

POSIX把UNIX域協(xié)議重新命名為“本地IPC”,以消除它對(duì)于UNIX操作系統(tǒng)的依賴。歷史性的AF_UNIX常值變?yōu)锳F_LOCAL。盡管POSIX努力使它獨(dú)立于操作系統(tǒng),它的套接口地址結(jié)構(gòu)仍然保留_un后綴。

熱烈的笑臉實(shí)例:UNIX域套接口的bind調(diào)用

創(chuàng)建一個(gè)UNIX域套接口,往其上bind一個(gè)路徑名,再調(diào)用getsockname輸出這個(gè)綁定的路徑名。

#include <sys/un.h>#include <sys/socket.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>intmain(int argc, char **argv){    int                   sockfd;    socklen_t             len;    struct sockaddr_un    addr1, addr2;    if(argc != 2)    {        PRintf("usage: unixbind <pathname> ");        exit(0);    }    sockfd = socket(AF_LOCAL, SOCK_STREAM, 0);    unlink(argv[1]);    /* 如果文件系統(tǒng)中已存在該路徑名,bind將會(huì)失敗。為此我們先調(diào)用unlink刪除這個(gè)路徑名,以防止它已經(jīng)存在。 */    bzero(&addr1, sizeof(addr1));    addr1.sun_family = AF_LOCAL;    strncpy(addr1.sun_path, argv[1], sizeof(addr1.sun_path) - 1);    bind(sockfd, (struct sockaddr *)&addr1, SUN_LEN(&addr1));    len = sizeof(addr2);    getsockname(sockfd, (struct sockaddr *)&addr2, &len);    printf("bound name = %s, returned len = %d/n", addr2.sun_path, len);        exit(0);}

運(yùn)行結(jié)果如下:

image

紅心socketpair函數(shù)

socketpair函數(shù)創(chuàng)建兩個(gè)隨后連接起來的套接口。本函數(shù)僅適用于UNIX域套接口。

#include <sys/socket.h>int socketpair(int family, int type, int protocol, int sockfd[2]);返回:0——成功,-1——出錯(cuò)

family參數(shù)必須為AF_LOCAL;

protocol參數(shù)必須為0;

type參數(shù)可以是SOCK_STREAM,也可以是SOCK_DGRAM。

新創(chuàng)建的兩個(gè)套接口描述字作為sockfd[0]和sockfd[1]返回。

本函數(shù)類似于UNIX的pipe函數(shù):返回兩個(gè)彼此連接的描述字。事實(shí)上,源自berkeley的實(shí)現(xiàn)通過執(zhí)行與socketpair一樣的內(nèi)部操作給出pipe接口。

這樣創(chuàng)建的兩個(gè)套接口不曾命名;也就是說其中沒有涉及隱式的bind調(diào)用。它與調(diào)用pipe創(chuàng)建的普通UNIX管道類似,差別在于流管道(socketpair創(chuàng)建的)是全雙工的,即兩個(gè)描述字都是既可讀又可寫。

POSIX不要求全雙工管道。

紅心套接口函數(shù)

當(dāng)用于UNIX域套接口時(shí),套接口函數(shù)中存在一些差異和限制:

燈泡由bind創(chuàng)建的路徑名缺省訪問權(quán)限應(yīng)為0777(屬主用戶、組用戶和其他用戶都可讀、可寫并可執(zhí)行),并按照當(dāng)前umask值進(jìn)行修正。

燈泡與UNIX域套接口關(guān)聯(lián)的路徑名應(yīng)該是一個(gè)絕對(duì)路徑名,而不是一個(gè)相對(duì)路徑名。

燈泡在connect調(diào)用中指定的路徑名必須是一個(gè)當(dāng)前捆綁在某個(gè)打開的UNIX域套接口上的路徑名,而且它們的套接口類型(字節(jié)流或數(shù)據(jù)報(bào))也必須一致。

燈泡調(diào)用connect連接一個(gè)UNIX域套接口涉及的權(quán)限測(cè)試等同于調(diào)用open以只讀方式訪問相應(yīng)的路徑名。

燈泡UNIX域字節(jié)流套接口類似于TCP套接口:它們都為進(jìn)程提供一個(gè)無記錄邊界的字節(jié)流接口。

燈泡如果對(duì)于某個(gè)UNIX域字節(jié)流套接口的connect調(diào)用發(fā)現(xiàn)這個(gè)監(jiān)聽套接口的隊(duì)列已滿,調(diào)用就立即返回一個(gè)ECONNREFUSED錯(cuò)誤。這一點(diǎn)不同于TCP:如果TCP監(jiān)聽套接口的隊(duì)列已滿,TCP監(jiān)聽端就忽略新到達(dá)的SYN,而TCP連接發(fā)起端將數(shù)次發(fā)送SYN進(jìn)行重試。

燈泡UNIX域數(shù)據(jù)報(bào)套接口類似UDP套接口:它們都提供一個(gè)保留記錄邊界的不可靠的數(shù)據(jù)報(bào)服務(wù)。

燈泡在一個(gè)未綁定的UNIX域套接口上發(fā)送數(shù)據(jù)報(bào)不會(huì)自動(dòng)給這個(gè)套接口捆綁一個(gè)路徑名,這一點(diǎn)不同于UDP套接口:在一個(gè)未綁定的UDP套接口上發(fā)送UDP數(shù)據(jù)報(bào)導(dǎo)致給這個(gè)套接口捆綁一個(gè)臨時(shí)端口。這一點(diǎn)意味著除非數(shù)據(jù)報(bào)發(fā)送端已經(jīng)捆綁一個(gè)路徑名到它的套接口,否則數(shù)據(jù)報(bào)接收端無法發(fā)回應(yīng)答數(shù)據(jù)報(bào)。類似地,對(duì)于某個(gè)UNIX域數(shù)據(jù)報(bào)套接口的connect調(diào)用不會(huì)給本套接口綁定一個(gè)路徑名,這一點(diǎn)不同于TCP和UDP。

紅心UNIX域字節(jié)流客戶/服務(wù)器程序
/* unixstrserv01.c */#include <sys/un.h>#include <errno.h>#include <sys/wait.h>#include <signal.h>#include <sys/socket.h>#include <sys/types.h>#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <string.h>#define UNIXSTR_PATH    "/tmp/unix.str"intmain(int argc, char **argv){    int                   listenfd, connfd;    pid_t                 childpid;    socklen_t             clilen;    struct sockaddr_un    cliaddr, servaddr;    void                  sig_chld(int);    daemonize("unixstrserver");    listenfd = socket(AF_LOCAL, SOCK_STREAM, 0);    unlink(UNIXSTR_PATH);    bzero(&servaddr, sizeof(servaddr));    servaddr.sun_family = AF_LOCAL;    strcpy(servaddr.sun_path, UNIXSTR_PATH);        bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr));    listen(listenfd, 5);    signal(SIGCHLD, sig_chld);    for(;;)    {        clilen = sizeof(cliaddr);            if((connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &clilen)) < 0)        {            if(errno == EINTR)                continue;    /* back to for() */            else            {                perror("accept");                exit(1);            }        }                if((childpid = fork()) == 0)        {            close(listenfd);            str_echo(connfd);            exit(0);        }        close(connfd);    }}voidsig_chld(int signo){    pid_t    pid;    int      stat;        while((pid = waitpid(-1, &stat, WNOHANG)) > 0)    {        printf("child %d terminated/n", pid);    }        return;}
/* unixstrcli01.c */#include <sys/un.h>#include <strings.h>#include <sys/un.h>#include <sys/socket.h>#include <sys/types.h>#include <stdio.h>#include <stdlib.h>#define UNIXSTR_PATH    "/tmp/unix.str"intmain(int argc, char **argv){    int    sockfd;    struct sockaddr_un    servaddr;        sockfd = socket(AF_LOCAL, SOCK_STREAM, 0);        bzero(&servaddr, sizeof(servaddr));    servaddr.sun_family = AF_LOCAL;    strcpy(servaddr.sun_path, UNIXSTR_PATH);        connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));    str_cli(stdin, sockfd);    exit(0);}

其他相關(guān)使用到的函數(shù)參見:http://www.CUOXin.com/nufangrensheng/p/3587962.html 以及http://www.CUOXin.com/nufangrensheng/p/3544104.html。

紅心UNIX域數(shù)據(jù)報(bào)客戶/服務(wù)器程序
/* unixdgserv01.c */#include <sys/un.h>#include <sys/socket.h>#define UNIXDG_PATH    "/tmp/unix.dg"int main(int argc, char **argv){    int                   sockfd;    struct sockaddr_un    servaddr, cliaddr;        sockfd = socket(AF_LOCAL, SOCK_DGRAM, 0);    unlink(UNIXDG_PATH);    bzero(&servaddr, sizeof(servaddr));    servaddr.sun_family = AF_LOCAL;    strcpy(servaddr.sun_path, UNIXDG_PATH);    bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));        dg_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));}
/* unixdgcli01.c */#include <sys/un.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <sys/types.h>#define UNIXDG_PATH    "/tmp/unix.dg"intmain(int argc, char **argv){    int                   sockfd;    struct sockaddr_un    cliaddr, servaddr;    sockfd = socket(AF_LOCAL, SOCK_DGRAM, 0);        bzero(&cliaddr, sizeof(cliaddr));    cliaddr.sun_family = AF_LOCAL;    strcpy(cliaddr.sun_path, tmpnam(NULL));        bind(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));        bzero(&servaddr, sizeof(servaddr));    servaddr.sun_family = AF_LOCAL;    strcpy(servaddr.sun_path, UNIXDG_PATH);        dg_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));    exit(0);}

使用到的相關(guān)函數(shù)可參考:http://www.CUOXin.com/nufangrensheng/p/3592158.html。

燈泡注意燈泡與UDP客戶不同的是,當(dāng)使用UNIX域數(shù)據(jù)報(bào)協(xié)議時(shí),我們必須顯式bind一個(gè)路徑名到我們的套接口,這樣服務(wù)器才會(huì)有回送應(yīng)答的路徑名。

紅心描述字傳遞

當(dāng)考慮從一個(gè)進(jìn)程到另一個(gè)進(jìn)程傳遞打開的描述字時(shí),我們通常會(huì)想到:

(1)fork調(diào)用返回后,子進(jìn)程共享父進(jìn)程的所有打開的描述字。

(2)exec調(diào)用執(zhí)行之后,所有描述字通常保持打開狀態(tài)不變。

在(1)中,進(jìn)程先打開一個(gè)描述字,再調(diào)用fork,然后父進(jìn)程關(guān)閉這個(gè)描述字,子進(jìn)程則處理這個(gè)描述字。這樣一個(gè)打開的描述字就從父進(jìn)程傳遞到子進(jìn)程。然而我們也可能想讓子進(jìn)程打開一個(gè)描述字并把它傳遞給父進(jìn)程。

當(dāng)前的UNIX系系統(tǒng)提供了用于從一個(gè)進(jìn)程到任一其他進(jìn)程傳遞任一打開的描述字的方法。也就是說,這兩個(gè)進(jìn)程之間無需存在親緣關(guān)系。這種技術(shù)要求首先在這兩個(gè)進(jìn)程之間創(chuàng)建一個(gè)UNIX域套接口,然后使用sendmsg跨這個(gè)UNIX域套接口發(fā)送一個(gè)特殊消息。這個(gè)消息由內(nèi)核處理,從而把打開的描述字從發(fā)送進(jìn)程傳遞到接收進(jìn)程。使用UNIX域套接口的描述字傳遞方法是最便于移植的編程技術(shù)。

在兩個(gè)進(jìn)程之間傳遞描述字涉及的步驟如下:

(1)創(chuàng)建一個(gè)字節(jié)流或數(shù)據(jù)報(bào)的UNIX域套接口。

如果目標(biāo)是fork一個(gè)子進(jìn)程,讓子進(jìn)程打開待傳遞的描述字,再把它傳遞回父進(jìn)程,那么父進(jìn)程可以預(yù)先調(diào)用socketpair創(chuàng)建一個(gè)可用于在父子進(jìn)程之間交換描述字的流管道。

如果進(jìn)程之間沒有親緣關(guān)系,那么服務(wù)器進(jìn)程必須創(chuàng)建一個(gè)UNIX域字節(jié)流套接口,bind一個(gè)路徑到該套接口,以允許客戶進(jìn)程connect到該套接口??蛻羧缓罂梢韵蚍?wù)器發(fā)送一個(gè)打開某個(gè)描述字的請(qǐng)求,服務(wù)器再把該描述字通過UNIX域套接口傳遞回客戶??蛻艉头?wù)器之間也可以使用UNIX域數(shù)據(jù)報(bào)套接口,不過這么做缺乏優(yōu)勢(shì),而且數(shù)據(jù)報(bào)存在被丟棄的可能性。

(2)發(fā)送進(jìn)程通過調(diào)用返回描述字的任一UNIX函數(shù)打開一個(gè)描述字,這些函數(shù)的例子有:open、pipe、mkfifo、socket和accept??梢栽谶M(jìn)程之間傳遞的描述字不限類型,這就是我們稱這種技術(shù)為“描述字傳遞”而不是“文件描述字傳遞”的原因。

(3)發(fā)送進(jìn)程創(chuàng)建一個(gè)msghdr結(jié)構(gòu)(http://www.CUOXin.com/nufangrensheng/p/3567376.html),其中含有待傳遞的描述字POSIX規(guī)定描述字作為輔助數(shù)據(jù)(msghdr結(jié)構(gòu)的msg_control成員)發(fā)送。發(fā)送進(jìn)程調(diào)用sendmsg跨來自步驟(1)的UNIX域套接口發(fā)送該描述字。至此我們說這個(gè)描述字“在飛行中(in flight)”。即使發(fā)送進(jìn)程在調(diào)用sendmsg之后但在接收進(jìn)程調(diào)用recvmsg之前就關(guān)閉了該描述字,對(duì)于接收進(jìn)程它仍然保持打開狀態(tài)。發(fā)送一個(gè)描述字導(dǎo)致該描述字的引用計(jì)數(shù)加1.

(4)接收進(jìn)程調(diào)用recvmsg在來自步驟(1)的UNIX域套接口上接收這個(gè)描述字。這個(gè)描述字在接收進(jìn)程中的描述字號(hào)不同于它在發(fā)送進(jìn)程中的描述子號(hào)是正常的。傳遞一個(gè)描述字并不是傳遞一個(gè)描述字號(hào),而是涉及在接收進(jìn)程中創(chuàng)建一個(gè)新的描述字,而這個(gè)描述字指引的內(nèi)核中文件表項(xiàng)和發(fā)送進(jìn)程中飛行前的那個(gè)描述字指引的相同。

客戶和服務(wù)器之間必須存在某種應(yīng)用協(xié)議,以便描述字的接收進(jìn)程預(yù)先知道何時(shí)期待接收。另外,在期待接收描述字的recvmsg調(diào)用中應(yīng)該避免使用MSG_PEEK標(biāo)志,否則后果不可預(yù)料。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
91久久免费视频| 在线免费观看视频一区| 伊人天天久久大香线蕉av色| 激情视频在线观看免费| 翁止熄痒禁伦短文合集免费视频| 日本高清不卡码| 国产乱妇无码大片在线观看| 亚洲国语精品自产拍在线观看| 91麻豆精品国产91久久| 欧美性猛交xxxxbbbb| 国产精品理人伦一区二区三区| 在线国产视频一区| 比比资源先锋影音网| 国产欧美日韩另类一区| 亚洲精品日韩成人| 最新日本中文字幕| gai在线观看免费高清| 亚洲国语精品自产拍在线观看| 性欧美18一19sex性欧美| 91精品国产乱码久久久久久久久| 亚洲中文字幕无码不卡电影| 国产成人在线观看免费网站| 最新日本中文字幕| 欧美激情久久久久久久久久久| 黄色污污视频在线观看| 丝袜美腿亚洲综合| 婷婷六月激情| 国产馆手机在线观看| 91国产福利在线| 天堂在线视频| 丁香花在线高清完整版视频| 欧美一区二区三区影院| 成人精品在线视频| 免费人成年激情视频在线观看| h版电影在线播放视频网站| 人人干在线视频| 亚洲精品人成网在线播放影院| 精品一区在线播放| 91麻豆国产香蕉久久精品| 成年在线播放小视频| avav成人| 亚洲欧美一区二区视频| 一个人免费观看在线视频www| av观看在线| 亚洲欧美色图区| 亚洲xxxx视频| 亚洲不卡在线播放| 五月花丁香婷婷| 波多野结衣中文在线| 久久久www成人免费精品张筱雨| 国产一区二区三区免费看| 日韩一区二区在线看片| 欧美色图五月天| 91久久国产视频| 欧美亚洲精品一区二区| 91精品一区二区| 精品一区二区三区av| 精品视频123区在线观看| 久久性生活视频| 亚洲美女在线观看| 国产成人自拍在线| 在线国产小视频| 久久久久成人黄色影片| 婷婷六月激情| 韩国视频一区二区| 精品视频在线视频| 日韩av网站在线播放| 亚洲乱码一区av黑人高潮| 日韩欧美中文字幕视频| 亚洲日本黄色| 亚洲91久久| 无码人妻一区二区三区一| 欧美在线导航| 丰满少妇高潮久久三区| 欧美日韩另类视频| 久久久亚洲网站| 亚洲精品理论电影| 中文字幕欧美视频| 久久久久久久一区| 国产无精乱码一区二区三区| 日韩高清一级| 欧美美女一区二区在线观看| 亚洲免费一级视频| 四虎精品永久在线| 久久国产精品一区二区三区| 欧美一区国产| 国产伦精品一区二区三区高清版| 国产精品探花一区二区在线观看| 清纯唯美综合亚洲| 国产69精品久久久久孕妇| 免费国产在线视频| 国产亚洲精品久久飘花| 影音先锋电影在线观看| 青青草草视频| 91网站观看| 国产精品久久久久毛片| www在线观看播放免费视频日本| 国产91久久久久蜜臀青青天草二| 日韩女优人人人人射在线视频| 97超碰人人看| 久久超级碰碰| 日日噜噜夜夜狠狠久久丁香五月| 免费三片60分钟| 天堂视频免费在线观看| 欧美一级淫片aaaaaaa视频| 成人美女视频在线观看| 51一区二区三区| 天天干天天操天天干天天操| 精品污污网站免费看| 亚洲人成绝费网站色ww| 理论片在线不卡免费观看| 伊人av在线com| 激情综合闲人网| 亚洲婷婷综合网| 欧美日韩成人综合在线一区二区| 国产精品人人爽人人爽| 欧美福利专区| 国内精品伊人久久久久av影院| 天天天天天操| 成年人在线观看| 亚洲第一福利在线观看| 岛国片av在线| 超碰在线免费公开| 美腿丝袜亚洲色图| 91色在线观看| 激情小视频网站| 日韩av网址大全| 黄色片免费在线| 日本猛少妇色xxxxx免费网站| 国产youjizz在线| 91丝袜美腿美女视频网站| 5858p先锋影音资源网| 亚洲精品视频啊美女在线直播| 国产乱在线观看完整版视频| 欧美r片在线| 无尽裸体动漫2d在线观看| 中文字幕视频在线| 99精品国产视频| 免播放器亚洲一区| 亚洲美女免费精品视频在线观看| 成人高清在线观看免费| eeuss第一页| 91在线观看污| 日韩三级免费| 99re这里只有| 91久久在线播放| 中文字幕国产精品一区二区| a毛片在线免费观看| 色综合狠狠操| 成人国产视频在线观看| 韩国av一区二区三区| 国产午夜亚洲精品一级在线| 天天综合网天天综合| 国产成人精品久久亚洲高清不卡| 色综合久久网| 成人高清视频在线| 在线国产伦理一区| 亚洲欧美日本国产有色| 18video性欧美19sex高清| 六月激情综合网| 成人在线免费在线观看| 亚洲国产精品av| 久久国产精品网| 亚洲精品成人电影| 国产精品美女一区二区三区| 日韩一级中文字幕| 免费视频中文字幕| 久久精品人人做人人爽| 亚洲中文字幕久久精品无码喷水| 少妇**av毛片在线看| 这里有精品可以观看| 久久久久久久av| 熟女熟妇伦久久影院毛片一区二区| 亚洲 欧美 日韩 在线| 日韩欧美亚洲一区二区三区| 日本电影亚洲天堂一区| 欧美丰满少妇xxxbbb| 精品毛片一区二区三区| 国产欧美日韩视频一区二区| 亚洲经典三级| 日韩理论片一区二区| 国产在线视频网| 真实新婚偷拍xxxxx| 亚洲精品免费在线| 欧美日韩国产免费观看| 亚洲欧美综合图区| 精品视频9999| 福利在线免费视频| 国产丝袜欧美中文另类| 欧美日韩天天操| 国产精品视频地址| 亚洲综合视频1区| 日本h片在线| videoxxxx另类日本极品| 国产精品专区免费| 亚洲kkk444kkk在线观看| 亚洲国产日韩欧美在线观看| 动漫美女被爆操久久久| 免费偷拍视频网站| 国产欧美1区2区3区| 一区二区三区在线免费播放| 久草视频在线资源| 日韩精品久久久久久免费| 久久久久资源| 久久人人看视频| 国产主播自拍av| 国产精品中文字幕日韩精品| 久久国产露脸精品国产| 欧美日韩在线另类| 福利二区91精品bt7086| 久久久久久久久爱| av福利网址网站| www.亚洲免费av| 在线丝袜欧美日韩制服| 成人高清在线观看视频| 韩国精品免费视频| 亚洲三区在线观看无套内射| 国产精品日日摸夜夜添夜夜av| 99久久99久久久精品棕色圆| 久久精品一二三| 亚洲日本香蕉视频| 亚洲天堂一区在线观看| 国产老妇另类xxxxx| 91成人精品网站| 91免费在线视频网站| 日韩最新免费不卡| 超碰在线公开| 91精品国产高清自在线| 亚洲精品美女免费| 国内在线视频| 欧美日韩亚洲国产另类| 美女91在线| 裸体一区二区| 在线观看国产日韩| 乱精品一区字幕二区| 粉嫩av一区二区三区| 欧美亚洲国产一区二区三区| 日韩美女免费线视频| 少妇一区二区三区| 可以在线看黄的网站| 亚洲色图欧洲色图婷婷| 国产熟女一区二区三区五月婷| 中文字幕中文字幕99| 国产精品一区二区三区四区色| 九九在线精品视频| 一本色道久久88亚洲综合88| 一级黄色录像大片| 国产一区二区在线|播放| 日韩精品日韩在线观看| 91精品国产高清自在线| 性欧美video另类hd尤物| 亚洲精品一线二线三线| 人妻无码中文字幕免费视频蜜桃| 久久久精品2019中文字幕之3| 国产精品第九页| 午夜在线视频观看| 亚洲综合在线第一页| 免费在线一区二区三区| 91精品久久久久久久久| 性欧美xxxx视频在线观看| 周于希免费高清在线观看| 欧美精品日韩精品| 国产大学生粉嫩无套流白浆| 无遮挡aaaaa大片免费看| 亚洲欧美偷拍一区| 天天色综合天天色| 精品久久一二三| 国产99视频精品免视看7| 色91精品久久久久久久久| 亚洲第一导航| 精品成人久久久| 日本道不卡免费一区| 无码人妻av一区二区三区波多野| 麻豆国产高清在线播放| 日韩国产一区久久| 日韩在线观看高清| 中文字幕99| 中文字幕亚洲一区二区av在线| 福利社在线免费视频| 国产成人精品福利一区二区三区| 亚洲电影第三页| www国产精品| 日本学生初尝黑人巨免费视频| 极品少妇xxxx精品少妇| 亚洲国产123| 欧美色图一区二区| 国产精品情趣视频| 国产亚洲激情视频在线| 国产精品免费观看久久| 最新在线观看av网站| 巨胸大乳www视频免费观看| 国产亚洲精品久久久| 91网址在线观看| 57pao成人永久免费视频| 国产精品一国产精品k频道56| 懂色中文一区二区在线播放| 在线免费观看视频一区| 欧美日韩一区 二区 三区 久久精品| 日韩av毛片| 一区二区国产在线观看| 久久国产在线观看| 天堂网www天堂在线网| 青青草观看免费视频在线| 亚洲精品一区久久久久久| 粉嫩av一区二区三区粉嫩| 成年男人的天堂| 神马久久久久久久久| 老熟妇一区二区三区| 亚洲一区二区在线视频| 国产肉体xxxx裸体784大胆| 日本三级日本三级日本三级极| 日韩欧美国产一区二区三区| 亚洲成年人影院| 醉酒壮男gay强迫野外xx| 日韩性xxxx爱| 成年人视频网站免费| 欧美性色综合网| 十大黄色软件免费看| 麻豆一区二区在线观看| 五月天av在线| 国产欧美丝祙| 欧美影片第一页| 男人天堂视频在线| 欧美一乱一性一交一视频| 欧美色视频日本高清在线观看| 国产精品久久久久久久裸模| 欧美色图免费看| 无套白嫩进入乌克兰美女|