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

深入Linux內核理解Socket的本質

系統 Linux
Socket 就如同我們日常生活中的插頭與插座的連接關系。在網絡編程中,Socket 是一種實現網絡通信的接口或機制。 想象一下,插頭插入插座后,電流得以流通,實現了能量的傳遞。

本文將從一個初學者的角度開始聊起,讓大家了解 Socket 是什么以及它的原理和內核實現。

一、Socket 的概念

 Socket 就如同我們日常生活中的插頭與插座的連接關系。在網絡編程中,Socket 是一種實現網絡通信的接口或機制。 想象一下,插頭插入插座后,電流得以流通,實現了能量的傳遞。而在網絡世界里,當一個程序使用 Socket 與另一臺機子建立“連接”時,就如同插頭成功插入了插座,數據能夠在兩者之間進行流通和交換。

圖片圖片

例如,當我們在網上聊天時,發送方的程序通過 Socket 將消息發送出去,接收方的程序通過對應的 Socket 接收這些消息。又比如在下載文件時,下載程序通過 Socket 與提供文件的服務器建立連接,從而能夠獲取到所需的文件數據。總之,它是網絡通信的端點,用于在不同的計算機進程之間進行通信,而計算機中通過五元組:協議類型、源IP地址、源端口號、目標IP地址、目標端口號,通過五元組來唯一

二、Socket 的使用場景

我們想要將數據從 A 電腦的某個進程發到 B 電腦的某個進程。如果需要確保數據能發給對方,就選可靠的 TCP 協議;如果數據丟了也沒關系,就選擇不可靠的 UDP 協議。初學者一般首選 TCP。

這時就需要用 socket 進行編程,首先創建關于 TCP 的 socket:

#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
 
int main() {
    int sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sock_fd == -1) {
        std::cerr << "Failed to create socket" << std::endl;
        return 1;
    }
 
    // 后續代碼...
 
    return 0;
}

這個方法會返回 sock_fd,它是 socket 文件的句柄。

對于服務端,得到 sock_fd 后,依次執行 bind()、listen()、accept() 方法,等待客戶端的連接請求;對于客戶端,得到 sock_fd 后,執行 connect() 方法向服務端發起建立連接的請求,此時會發生 TCP 三次握手。

連接建立完成后,客戶端可以執行 send() 方法發送消息,服務端可以執行 recv() 方法接收消息,反之亦然。

圖片圖片

三、Socket 的設計

現在我們拋開socket,重新設計一個內核網絡傳輸功能。我們想要將數據從 A 電腦的某個進程發到 B 電腦的某個進程,從操作上來看,就是發數據給遠端和從遠端接收數據,也就是寫數據和讀數據。

但這里有兩個問題:

  1. 接收端和發送端可能不止一個,因此需要用 IP 和端口做區分,IP 用來定位是哪臺電腦,端口用來定位是這臺電腦上的哪個進程。
  2. 發送端和接收端的傳輸方式有很多區別,如可靠的 TCP 協議、不可靠的 UDP 協議,甚至還需要支持基于 icmp 協議的 ping 命令。

為了支持這些功能,需要定義一個數據結構 sock,在 sock 里加入 IP 和端口字段。這些協議雖然各不相同,但有一些功能相似的地方,可以將不同的協議當成不同的對象類(或結構體),將公共的部分提取出來,通過“繼承”的方式復用功能。

于是,定義了一些數據結構:

sock 是最基礎的結構,維護一些任何協議都有可能會用到的收發數據緩沖區。

在 Linux 內核 2.6 相關的源碼中,sock 結構體的定義可能類似于:

struct sock {
    // 相關字段
    struct sk_buff_head sk_receive_queue; // 接收數據緩沖區
    struct sk_buff_head sk_write_queue;  // 發送數據緩沖區
    // 其他可能的字段
};

inet_sock 特指用了網絡傳輸功能的 sock,在 sock 的基礎上還加入了 TTL、端口、IP 地址這些跟網絡傳輸相關的字段信息。比如 Unix domain socket,用于本機進程之間的通信,直接讀寫文件,不需要經過網絡協議棧。

可能的定義:

struct inet_sock {
    struct sock sk; // 繼承自 sock
    __be32 port;    // 端口
    __be32 saddr;   // IP 地址
    // 其他相關字段
};

inet_connection_sock 是指面向連接的 sock,在 inet_sock 的基礎上加入面向連接的協議里相關字段,比如 accept 隊列、數據包分片大小、握手失敗重試次數等。雖然現在提到面向連接的協議就是指 TCP,但設計上 Linux 需要支持擴展其他面向連接的新協議。

例如:

struct inet_connection_sock {
    struct inet_sock inet; // 繼承自 inet_sock
    struct request_sock_queue accept_queue; // accept 隊列
    // 其他相關字段
};

tcp_sock 就是正兒八經的 TCP 協議專用的 sock 結構,在 inet_connection_sock 基礎上還加入了 TCP 特有的滑動窗口、擁塞避免等功能。同樣 UDP 協議也會有一個專用的數據結構,叫 udp_sock。

大概如下:

struct tcp_sock {
    struct inet_connection_sock icsk; // 繼承自 inet_connection_sock
    // TCP 特有的字段,如滑動窗口、擁塞避免等相關字段
};

圖片圖片

有了這套數據結構,將它跟硬件網卡對接一下,就實現了網絡傳輸的功能。

四、提供 Socket 層

由于這里面的代碼復雜,還操作了網卡硬件,需要較高的操作系統權限,再考慮到性能和安全,于是將它放在操作系統內核里。

為了讓用戶空間的應用程序使用這部分功能,將這部分功能抽象成簡單的接口,將內核的 sock 封裝成文件。創建 sock 的同時也創建一個文件,文件有個文件描述符 fd,通過它可以唯一確定是哪個 sock。將fd暴露給用戶,用戶就可以像操作文件句柄那樣去操作這個 sock 。

struct file{
    //文件相關的字段
    .....
    void *private_data; //指向sock
}

創建socket時,其實就是創建了一個文件結構體,并將private_data字段指向sock。

圖片圖片

有了 sock_fd 句柄后,提供了一些接口,如 send()、recv()、bind()、listen()、connect() 等,這些就是 socket 提供出來的接口。

所以說,socket 其實就是個代碼庫或接口層,它介于內核和應用程序之間,提供了一堆接口,讓我們去使用內核功能,本質上就是一堆高度封裝過的接口。

我們平時寫的應用程序里代碼里雖然用了socket實現了收發數據包的功能,但其 實真正執行網絡通信功能的,不是應用程序,而是linux內核。

圖片圖片

在操作系統內核空間里,實現網絡傳輸功能的結構是sock,基于不同的協議和應用場景,會被泛化為各種類型的xx_sock,它們結合硬件,共同實現了網絡傳輸功能。為了將這部分功能暴露給用戶空間的應用程序使用,于是引入了socket層,同時將sock嵌入到文件系統的框架里,sock就變成了一個特殊的文件,用戶就可以在用戶空間使用文件句柄,也就是socket_fd來操作內核sock的網絡傳輸能力。

五、Socket 如何實現網絡通信

以最常用的 TCP 協議為例,實現網絡傳輸功能分為建立連接和數據傳輸兩個階段。

(一)建立連接

在客戶端,執行 socket 提供的 connect(sockfd, "ip:port") 方法時,會通過 sockfd 句柄找到對應的文件,再根據文件里的信息指向內核的 sock 結構,通過這個 sock 結構主動發起三次握手。

在服務端,握手次數還沒達到“三次”的連接叫半連接,完成好三次握手的連接叫全連接,它們分別會用半連接隊列和全連接隊列來存放,這兩個隊列會在執行 listen() 方法的時候創建好。當服務端執行 accept() 方法時,就會從全連接隊列里拿出一條全連接。

雖然都叫隊列,但半連接隊列其實是個哈希表,而全連接隊列其實是個鏈表。

在 Linux 內核 2.6 版本的源碼中,相關的代碼實現可能位于網絡子系統的部分。例如,建立連接的過程可能涉及到 tcp_connect() 等函數。

(二)數據傳輸

為了實現發送和接收數據的功能,sock 結構體里帶了一個發送緩沖區和一個接收緩沖區,其實就是個鏈表,上面掛著一個個準備要發送或接收的數據。

當應用執行 send() 方法發送數據時,會通過 sock_fd 句柄找到對應的文件,根據文件指向的 sock 結構,找到這個 sock 結構里帶的發送緩沖區,將數據放到發送緩沖區,然后結束流程,內核看心情決定什么時候將這份數據發送出去。

圖片圖片

接收數據流程也類似,當數據送到 Linux 內核后,先放在接收緩沖區中,等待應用程序執行 recv() 方法來拿。

當應用進程執行 recv() 方法嘗試獲取(阻塞場景下)接收緩沖區的數據時,如果有數據,取走就好;如果沒數據,就會將自己的進程信息注冊到這個 sock 用的等待隊列里,然后進程休眠。如果這時候有數據從遠端發過來了,數據進入到接收緩沖區時,內核就會取出 sock 的等待隊列里的進程,喚醒進程來取數據。

圖片圖片

當多個進程通過 fork 的方式 listen 了同一個 socket_fd,在內核它們都是同一個 sock,多個進程執行 listen() 之后,都會將自身的進程信息注冊到這個 socket_fd 對應的內核 sock 的等待隊列中。在 Linux 2.6 以前,會喚醒等待隊列里的所有進程,但最后其實只有一個進程會處理這個連接請求,其他進程又重新進入休眠,會消耗一定的資源,這就是驚群效應。在 Linux 2.6 之后,只會喚醒等待隊列里的其中一個進程,這個問題被修復了。

服務端 listen 的時候,那么多數據到一個 socket 怎么區分多個客戶端的?以 TCP 為例,服務端執行 listen 方法后,會等待客戶端發送數據來。客戶端發來的數據包上會有源 IP 地址和端口,以及目的 IP 地址和端口,這四個元素構成一個四元組,可以用于唯一標記一個客戶端。服務端會創建一個新的內核 sock,并用四元組生成一個 hash key,將它放入到一個 hash 表中。下次再有消息進來的時候,通過消息自帶的四元組生成 hash key 再到這個 hash 表 里重新取出對應的 sock 就好了。

圖片圖片

六、Socket 怎么實現“繼承”

Linux 內核是 C 語言實現的,而 C 語言沒有類也沒有繼承的特性,是通過結構體里的內存是連續的這一特點來實現“繼承”的效果。將要繼承的“父類”,放到結構體的第一位,然后通過結構體名的長度來強行截取內存,這樣就能轉換結構體,從而實現類似“繼承”的效果。

圖片圖片

例如:

struct tcp_sock {
    /* inet_connection_sock has to be the first member of tcp_sock */
    struct inet_connection_sock inet_conn;
    // 其他字段
};
 
struct inet_connection_sock {
    /* inet_sock has to be the first member! */
    struct inet_sock icsk_inet;
    // 其他字段
};
 
// sock 轉為 tcp_sock
static inline struct tcp_sock *tcp_sk(const struct sock *sk) {
    return (struct tcp_sock *)sk;
}

七、總結

  • socket 中文套接字,可理解為一套用于連接的數字。
  • sock 在內核,socket_fd 在用戶空間,socket 層介于內核和用戶空間之間。
  • 在操作系統內核空間里,實現網絡傳輸功能的結構是 sock,基于不同的協議和應用場景,會被泛化為各種類型的 xx_sock,它們結合硬件,共同實現了網絡傳輸功能。為了將這部分功能暴露給用戶空間的應用程序使用,于是引入了 socket 層,同時將 sock 嵌入到文件系統的框架里,sock 就變成了一個特殊的文件,用戶就可以在用戶空間使用文件句柄,也就是 socket_fd 來操作內核 sock 的網絡傳輸能力。
  • 服務端可以通過四元組來區分多個客戶端。
  • 內核通過 C 語言“結構體里的內存是連續的”這一特點實現了類似繼承的效果。
責任編輯:武曉燕 來源: 一安未來
相關推薦

2025-04-22 08:21:10

2021-09-10 06:50:03

Node.jsSocket端口

2025-04-18 04:05:00

2021-05-19 07:56:26

Linux內核搶占

2012-11-22 10:11:16

LispLisp教程

2017-01-12 19:34:58

2021-12-09 08:09:31

Linux內核臟頁

2021-07-26 07:47:36

數據庫

2025-06-16 05:10:00

2021-07-20 08:02:41

Linux進程睡眠

2021-07-05 06:51:45

Linux內核調度器

2021-07-02 06:54:44

Linux內核主調度器

2020-09-28 08:44:17

Linux內核

2024-07-05 10:59:26

2025-08-28 07:58:18

2021-08-31 10:32:11

LinuxPage Cache命令

2014-03-12 10:19:54

iOS對象

2025-10-28 04:25:00

2023-02-10 08:11:43

Linux系統調用

2022-11-09 08:12:07

點贊
收藏

51CTO技術棧公眾號

亚洲美女av在线| 亚洲精品欧美二区三区中文字幕| 国产69精品久久久| 麻豆av免费观看| 日本精品网站| 亚洲美女偷拍久久| 欧美在线激情| 亚洲毛片欧洲毛片国产一品色| 久久久久久久波多野高潮日日| 久久精品99久久久久久久久| 成年人的黄色片| 香蕉久久久久久| 精品福利在线看| 中文字幕乱码免费| 国产视频在线看| 粉嫩嫩av羞羞动漫久久久| 国产成人久久久| 日本一本高清视频| 国产精品久久久久无码av| 亚洲精品少妇网址| 极品人妻一区二区| 91精品国产色综合久久不卡粉嫩| 欧美日韩一区二区免费视频| 国产91在线亚洲| 毛片在线视频| 久久精品一二三| 久久精品国产99精品国产亚洲性色| 国产精品羞羞答答在线| 麻豆精品网站| 91av视频在线免费观看| 免费视频网站www| 国产精品久久久久无码av| 在线观看亚洲区| 国产熟妇搡bbbb搡bbbb| 国产亚洲精品美女久久| 欧美精品欧美精品系列| av在线无限看| 日韩精品99| 欧美色xxxx| www.av中文字幕| 91探花在线观看| 亚洲成人你懂的| 大荫蒂性生交片| 污污视频在线| 一区二区三区蜜桃网| 久久av秘一区二区三区| 久久日韩视频| 亚洲黄色录像片| 国产青草视频在线观看| 97caopor国产在线视频| 亚洲精品亚洲人成人网在线播放| 伊人色综合影院| 久久bbxx| 一区二区三区欧美在线观看| 蜜臀在线免费观看| 羞羞的视频在线观看| 亚洲欧美另类综合偷拍| 欧美日韩dvd| 麻豆福利在线观看| 午夜视频一区二区| 91好吊色国产欧美日韩在线| 亚洲天堂电影| 91精品1区2区| 欧美第一页浮力影院| 成人黄色91| 欧美mv日韩mv亚洲| 黑丝av在线播放| 精品一区在线| 色多多国产成人永久免费网站| 日本女人性生活视频| 亚洲天堂免费| 国内精品免费午夜毛片| 日韩 欧美 中文| 蜜臀av性久久久久蜜臀av麻豆| 成人妇女淫片aaaa视频| 成人av无码一区二区三区| jvid福利写真一区二区三区| 欧美日韩成人一区二区三区 | 日韩中文字幕1| 国产中文字幕日韩| 亚洲黄色在线播放| 久久天天做天天爱综合色| 日韩欧美一区二区三区四区五区| 69视频在线| 亚洲午夜成aⅴ人片| 成人在线激情网| 成人在线视频国产| 亚洲第一页自拍| 亚洲一区 欧美| 亚洲视频免费| 国产精品三级网站| 丰满熟女一区二区三区| 国产精品色哟哟| 国产不卡一区二区视频| 国产成人精品一区二区三区在线| 欧美精品自拍偷拍动漫精品| 亚洲熟女一区二区| 欧美韩日高清| 欧美一级视频一区二区| 99久久国产热无码精品免费| 成人久久视频在线观看| 亚洲一区不卡在线| 夜鲁夜鲁夜鲁视频在线播放| 91精品国产综合久久精品麻豆| 国产制服丝袜在线| 自拍日韩欧美| 国产日韩中文字幕在线| 性xxxx视频播放免费| 亚洲男帅同性gay1069| 成年人黄色片视频| 精品亚洲欧美日韩| 久青草国产在线| 一区二区免费在线播放| jizz大全欧美jizzcom| 欧美日韩导航| 欧美高清视频在线播放| 91久久久久国产一区二区| 久久午夜电影网| 成人免费观看cn| 久久99成人| 色噜噜狠狠色综合网图区| 成人毛片在线播放| 不卡av免费在线观看| 六月婷婷激情网| 香蕉久久久久久| 国产一区二区三区三区在线观看| 亚洲国产精品成人无久久精品| 国产一区二区在线看| 亚洲精品久久久久久一区二区| 一区二区三区电影大全| 精品sm捆绑视频| 免费人成年激情视频在线观看| 国产综合久久久久久鬼色| 视频在线一区二区三区| 欧亚一区二区| 亚洲天天在线日亚洲洲精| 久久久免费高清视频| 91蜜桃免费观看视频| 精品国产一二三四区| 日韩影视高清在线观看| 97超级碰碰人国产在线观看| 五月天久久久久久| 图片区小说区国产精品视频| 尤物网站在线观看| 国产视频欧美| 欧美亚洲丝袜| 经典三级一区二区| 神马国产精品影院av| 中文字幕自拍偷拍| 综合精品久久久| 久久久精品视频国产| 欧美黄免费看| 国产激情美女久久久久久吹潮| 国产盗摄精品一区二区酒店| 欧美精品一区二区精品网| 中日韩精品视频在线观看| 91美女视频网站| 亚洲一二三区av| 四季av一区二区凹凸精品| 成人免费午夜电影| 欧美xxxx黑人又粗又长| 亚洲电影免费观看高清完整版在线观看| 免费在线观看国产精品| 99精品视频在线免费观看| 免费在线激情视频| 欧美日中文字幕| 91精品国产91久久久久久吃药 | 久久亚洲AV无码专区成人国产| 久久九九99| 亚洲资源在线网| 国产一区二区视频在线看| 欧美激情亚洲综合一区| 亚洲欧美日韩成人在线| 亚洲国产sm捆绑调教视频| 国产男女猛烈无遮挡a片漫画| 天堂精品中文字幕在线| 中文字幕一区二区三区有限公司| 视频一区日韩精品| 国产91成人在在线播放| 在线毛片网站| 亚洲福利视频网站| 一级黄色av片| 亚洲综合一区在线| av黄色免费网站| 极品少妇xxxx精品少妇| 五十路熟女丰满大屁股| 欧美激情777| 久久99国产精品| 亚洲欧美在线人成swag| 97精品久久久中文字幕免费| 成人在线免费电影| 精品久久久久久久久久久久久久久 | 亚洲综合色丁香婷婷六月图片| 给我看免费高清在线观看| 久久99精品久久久久久动态图| 97超碰在线人人| 久久要要av| 精品国产区在线| **国产精品| 国产成+人+综合+亚洲欧美丁香花| 免费观看在线黄色网| 日韩av中文字幕在线免费观看| 91theporn国产在线观看| 亚洲成av人片在www色猫咪| 卡一卡二卡三在线观看| 成人国产视频在线观看| 91插插插插插插插插| 一区二区三区导航| 男人日女人的bb| 欧美亚洲激情| 久久久综合亚洲91久久98| 欧美成人精品午夜一区二区| 国产精品久久久久久久久男| 欧美男男tv网站在线播放| 久久亚洲精品成人| 国产视频网址在线| 亚洲精品视频播放| 少妇一区二区三区四区| 91精品国产综合久久蜜臀| 国产一级片免费在线观看| 精品成人久久av| 国产一级片免费看| 亚洲日本丝袜连裤袜办公室| 摸摸摸bbb毛毛毛片| 成人一区二区三区视频在线观看 | 成人综合在线观看| aaa一级黄色片| 麻豆精品一区二区av白丝在线| 久久国产精品免费观看| **女人18毛片一区二区| 一区二区三区四区五区精品| 欧美精品乱码| 日韩欧美一区二区视频在线播放| 美女亚洲一区| 欧美日韩在线观看一区| 亚洲精品合集| 日本精品一区二区三区高清 久久| 小说区图片区色综合区| 好吊色欧美一区二区三区| 国产精品tv| 国产91免费视频| 蜜桃精品视频| 成人黄视频免费| 99精品在免费线中文字幕网站一区| 亚洲最大激情中文字幕| 国产日韩在线观看视频| 亚洲一区二区三区久久| 亚洲成av人片在线观看www| 99视频在线| 国产一区二区三区亚洲| 国产在线一区二| 日韩深夜影院| 日本在线播放一区| 日韩影院二区| 一级特黄妇女高潮| 在线精品亚洲| 国产a级一级片| 久久久久久久高潮| 亚洲精品www.| 成人精品国产一区二区4080| 小毛片在线观看| 久久午夜老司机| 国产又粗又长又硬| 亚洲激情五月婷婷| 欧美成人综合色| 精品毛片三在线观看| 欧美一级特黄视频| 欧美性高清videossexo| 国产精品久久久久久久免费看| 日韩一区二区在线观看| 日本黄色不卡视频| 亚洲欧美激情四射在线日| 国产精品久久久久久久龚玥菲| 色婷婷av一区二区三区在线观看| 久草免费在线观看| 久久久久久久999| xxxxxx欧美| 91在线视频九色| 开心激情综合| 性欧美.com| 极品尤物久久久av免费看| 日本熟妇人妻xxxxx| 蜜臀av性久久久久蜜臀av麻豆| 少妇极品熟妇人妻无码| 2021中文字幕一区亚洲| 亚洲熟女毛茸茸| 天天亚洲美女在线视频| 在线观看免费中文字幕| 亚洲福利视频网站| 老司机精品视频在线观看6| 国内精品视频在线| 性欧美video另类hd尤物| 狠狠色噜噜狠狠狠狠色吗综合| 日韩成人精品一区二区| 国产成人永久免费视频| 日本sm残虐另类| 黄色性视频网站| 国产精品乱人伦一区二区| 国产91色在线免费| 嫩草研究院在线| 欧美成人精品在线播放| 在线中文字幕播放| 亚洲a∨日韩av高清在线观看| 欧美a一欧美| 91精品国产吴梦梦| 日韩精品每日更新| 日本一区二区在线观看视频| 国产精品进线69影院| 日韩毛片一区二区三区| 日韩欧美一级精品久久| melody高清在线观看| 韩剧1988在线观看免费完整版| 少妇精品视频在线观看| 欧洲精品码一区二区三区免费看| 欧美精品日韩| 国产精品自在自线| 国产欧美日韩激情| www.国产色| 亚洲大胆美女视频| 中文在线手机av| 国产日本欧美一区| 怕怕欧美视频免费大全| 日韩在线综合网| 国产aⅴ精品一区二区三区色成熟| 国产中文字幕久久| 欧美三级韩国三级日本三斤| 男人天堂资源在线| 69**夜色精品国产69乱| 国产精品久久久久av蜜臀| 300部国产真实乱| 国产一区二区三区日韩| 99久久久免费精品| 欧美日韩三级一区| 97超碰国产一区二区三区| 国产成人啪精品视频免费网| 欧美一区二区三区久久| 青娱乐自拍偷拍| 99久久精品国产网站| 日韩av男人天堂| 亚洲国产另类 国产精品国产免费| 啪啪免费视频一区| 成人自拍视频网站| 国产精品九九| 伊人网综合视频| 欧美视频中文字幕在线| 蝌蚪视频在线播放| 热久久免费国产视频| 国产成人短视频在线观看| 欧美精品一区二区三区免费播放| 久久久午夜精品理论片中文字幕| 国产又黄又猛又粗又爽| 亚洲系列中文字幕| 看片一区二区| 日本老太婆做爰视频| 成人手机电影网| 成年人免费高清视频| 亚洲色在线视频| 国产精品传媒麻豆hd| 精品日韩在线播放| 成人午夜又粗又硬又大| 日韩无码精品一区二区三区| 亚洲精选一区二区| 成人国产网站| 糖心vlog在线免费观看| jiyouzz国产精品久久| 无码人妻av一区二区三区波多野| 亚洲香蕉伊综合在人在线视看| 国产91精品在线| 成人黄色片免费| 91蜜桃在线免费视频| 在线中文字幕网站| 欧美黑人一区二区三区| 免费观看久久av| 九九九九九九九九| 午夜欧美在线一二页| 成人在线免费电影| 91久久精品国产91久久性色tv| 夜夜嗨一区二区| 性色国产成人久久久精品| 日韩精品一区二区三区蜜臀| 亚洲福利影院| 97超碰免费观看| 2021国产精品久久精品| 97在线视频人妻无码| 97精品一区二区三区| 日韩理论片av| 妖精视频一区二区| 欧美日韩另类一区| av成人 com a| 一区二区日本伦理| 97久久超碰精品国产| 91在线精品入口| 7777免费精品视频| 在线观看国产精品入口| 亚洲午夜福利在线观看| 欧美一区二区三区婷婷月色| 欧美18—19sex性hd| 激情五月婷婷六月| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久久这里有精品15一区二区三区|