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

深入 Linux 內核理解 socket 的本質

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

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

一、Socket 的概念

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

例如,當我們在網上聊天時,發送方的程序通過 Socket 將消息發送出去,接收方的程序通過對應的 Socket 接收這些消息。又比如在下載文件時,下載程序通過 Socket 與提供文件的服務器建立連接,從而能夠獲取到所需的文件數據。

二、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 電腦的某個進程,從操作上來看,就是發數據給遠端和從遠端接收數據,也就是寫數據和讀數據。

但這里有兩個問題:

  • 接收端和發送端可能不止一個,因此需要用 IP 和端口做區分,IP 用來定位是哪臺電腦,端口用來定位是這臺電腦上的哪個進程。
  • 發送端和接收端的傳輸方式有很多區別,如可靠的 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 協議為例,實現網絡傳輸功能分為建立連接和數據傳輸兩個階段。

1. 建立連接

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

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

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

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

2. 數據傳輸

為了實現發送和接收數據的功能,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-28 02:00:00

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對象

2022-11-09 08:12:07

2023-02-10 08:11:43

Linux系統調用

2025-10-28 04:25:00

點贊
收藏

51CTO技術棧公眾號

国产另类xxxxhd高清| 精品久久久久中文慕人妻| 蜜臀91精品国产高清在线观看| 欧美日韩一区二区免费视频| 日本一区二区三区视频免费看 | 亚洲中国最大av网站| 国产中文一区二区| 国产偷人爽久久久久久老妇app | 99视频国产精品| 国产成人在线一区| 精品国产视频在线观看| 久久aimee| 欧美精品乱码久久久久久按摩| 日韩欧美精品免费| 午夜在线免费观看视频| 大白屁股一区二区视频| 国产精品久久久久久av福利软件| 欧美卡一卡二卡三| 国产成人黄色| 日韩欧美久久久| 天天影视综合色| 19禁羞羞电影院在线观看| 国产精品久久毛片av大全日韩| 国产精品一区二区三区免费观看| 91女人18毛片水多国产| 久久不射2019中文字幕| 九九久久国产精品| 精品人体无码一区二区三区| 欧美自拍视频| 日韩三级在线免费观看| 日本黄色福利视频| 自拍偷自拍亚洲精品被多人伦好爽 | 国产精品二区三区| 亚洲视频一区二区三区四区| 国产视频一区三区| 欧美成人午夜剧场免费观看| 人妻激情偷乱视频一区二区三区| 欧美日韩尤物久久| 亚洲一区二区黄色| 夜夜爽www精品| 亚欧在线观看视频| 国产凹凸在线观看一区二区| 国产精品夫妻激情| wwwxxx亚洲| 欧美日韩国产精品一区二区亚洲| 亚洲久久久久久久久久久| 日本77777| 日韩免费福利视频| 亚洲高清视频在线| 男女啪啪免费观看| 最新97超碰在线| 99天天综合性| 国产精品二区三区| а√中文在线资源库| 久久成人免费电影| 国产精品白嫩美女在线观看 | 国产xxxx在线观看| 国内精品不卡在线| 国产日韩av在线播放| 日本精品入口免费视频| 亚洲一区二区伦理| 美女视频黄免费的亚洲男人天堂| 精品一区二区在线观看视频| 国模精品一区| 日韩毛片在线观看| 在线免费观看污视频| 一区二区三区四区精品视频 | 日韩在线视频观看| 久久久久亚洲AV成人无在| 制服丝袜日韩| 亚洲人成人99网站| 中文字幕一区二区人妻在线不卡| 精品按摩偷拍| 亚洲娇小xxxx欧美娇小| 久久免费精品国产| 国产精品毛片av| 欧美不卡一区二区三区四区| 亚洲最大视频网| 奇米一区二区| 精品欧美乱码久久久久久1区2区| www.午夜av| 日韩08精品| 日韩免费成人网| 中文字幕18页| 91久久偷偷做嫩草影院电| 亚洲第一精品夜夜躁人人躁| 国产精品果冻传媒| 日韩av中文字幕一区| 亚洲精品自拍视频| 久久久久亚洲av无码a片| 精品视频久久| 最近免费中文字幕视频2019| 国产99在线免费| 免费看国产曰批40分钟| sm在线观看| 亚洲 欧美综合在线网络| 国产最新免费视频| 青青热久免费精品视频在线18| 欧美性色黄大片手机版| 九九九九九九九九| 亚洲精品在线a| 日韩精品中文字幕视频在线| 纪美影视在线观看电视版使用方法| 久久福利影院| 欧美激情第1页| 欧美激情黑白配| 免费久久精品视频| 91手机在线视频| 日韩午夜影院| 亚洲欧洲精品一区二区精品久久久 | 日韩av一区二区在线| 国产特级黄色录像| 国产大片一区| 国产91精品视频在线观看| 亚洲图片欧美日韩| 国产乱一区二区| 精品欧美一区二区久久久伦| 成人一区二区不卡免费| 亚洲欧美另类久久久精品| 成人午夜视频在线观看免费| 456亚洲精品成人影院| 欧美一级搡bbbb搡bbbb| 97人妻精品一区二区免费| 亚洲国产老妈| 日本a级片电影一区二区| 91在线公开视频| 床上的激情91.| 性高潮久久久久久久久| 丁香花在线影院| 精品视频999| 在线观看国产免费视频| 天天射综合网视频| 4388成人网| 99热这里只有精品1| 久久久99精品久久| www.亚洲视频.com| 色综合久久久| 亚洲最新中文字幕| 国产香蕉视频在线| 国产精品99久久不卡二区| 亚洲电影一二三区| 福利成人导航| 欧美变态tickle挠乳网站| 久久一级免费视频| 久久精品男女| 久久99精品久久久久久动态图| 一本色道久久综合狠狠躁篇怎么玩| 国产欧美久久久久| 亚洲精品aaa| 亚洲国产精品久久| 懂色av懂色av粉嫩av| 日本午夜一本久久久综合| 国产一区二区高清视频| 在线观看中文| 91精品国产aⅴ一区二区| 伊人网在线视频观看| 在线播放日韩| 高清国产一区| 深夜国产在线播放| 日韩欧美国产系列| 欧美偷拍第一页| 精品一区二区av| 欧美日本韩国一区二区三区| caoporn视频在线观看| 日韩免费在线观看| 我家有个日本女人| 蜜臀av性久久久久蜜臀aⅴ| 日本一区二区三区在线视频| 免费观看亚洲| 亚洲精品日韩欧美| 国产成人精品777777| 91老司机福利 在线| 成人免费观看cn| 都市激情久久| 国自产精品手机在线观看视频| 精品国自产拍在线观看| 自拍视频在线观看一区二区| 99久久综合网| 伊人狠狠色j香婷婷综合| 国产91精品入口17c| www.色在线| 亚洲男人天堂久| 香蕉污视频在线观看| 久久精品视频在线免费观看| 国产精品少妇在线视频| 日韩国产专区| 91亚洲永久免费精品| 午夜av在线免费观看 | 中文字幕在线观看精品| 亚洲国产精品精华液2区45| 性猛交ⅹ×××乱大交| 五月激情综合| 国产91社区| 日韩电影大全网站| 久久久国产视频91| 午夜精品久久久久久久第一页按摩| 亚洲一区二区在线免费观看视频| 少妇极品熟妇人妻无码| 国产精品丝袜xxxxxxx| 五月天久久综合网| 一区二区三区视频播放| 日本sm极度另类视频| 国产综合在线观看| 日韩一区二区免费在线电影| 久久久国产精品成人免费| 国产喷白浆一区二区三区| 黄色一级片免费播放| 亚洲激情成人| 色一情一乱一伦一区二区三欧美| 精品午夜视频| 欧美在线免费观看| 成人性生交大片免费看午夜| 日韩一区二区电影| 中文字幕黄色片| 国产精品久久久久影院亚瑟| 日本一区二区三区在线免费观看| 日韩视频在线一区二区三区 | 成人午夜免费在线| 成人激情在线| 国产精品久久7| 日本精品网站| 国内精品久久久久久中文字幕| 国产一区二区影视| 欧美成人高清电影在线| 黄瓜视频在线免费观看| 亚洲国产综合色| 永久免费毛片在线观看| 丰满白嫩尤物一区二区| 波多结衣在线观看| 精品动漫3d一区二区三区免费版| 亚洲精品成人自拍| 琪琪久久久久日韩精品| 亚洲一区二区免费| 成人综合网站| 欧美在线观看网址综合| 制服丝袜中文字幕在线| 中文字幕精品在线| 欧美xxx.com| 亚洲国产精品视频在线观看 | 欧美一区二区三区思思人| 波多野结衣视频在线观看| 亚洲va国产va欧美va观看| 全网免费在线播放视频入口| 欧美精彩视频一区二区三区| av网站有哪些| 白白色 亚洲乱淫| 中文字幕乱码在线人视频| 捆绑调教美女网站视频一区| 欧美aⅴ在线观看| 亚洲精品乱码| avav在线播放| 欧美精品综合| 四虎4hu永久免费入口| 日韩欧美高清在线播放| 欧美自拍资源在线| 婷婷精品视频| 国产精品视频免费一区二区三区| 亚洲成熟丰满熟妇高潮xxxxx| 一区二区导航| 韩国成人一区| 91亚洲精品视频在线观看| 99porn视频在线| 日韩精品一级| 51国偷自产一区二区三区的来源 | 国产精品中文久久久久久| 久久精品国产**网站演员| 污视频免费在线观看网站| 久久午夜激情| 亚洲少妇久久久| 蜜臀av性久久久久蜜臀aⅴ流畅 | 一二三四在线观看视频| 国产欧美精品一区aⅴ影院 | 日韩高清一级| 久久久久久久久久久久久久久久av | 黄大色黄女片18第一次| 青青草一区二区三区| 手机在线看福利| 男男成人高潮片免费网站| 天天干天天色天天干| 国产一区二区三区在线观看免费视频 | 在线xxxxx| 99精品国产一区二区三区不卡| 少妇精品无码一区二区三区| 99久久久免费精品国产一区二区| 成人网站免费观看| 国产三级久久久| 韩国一级黄色录像| 亚洲精品视频在线观看免费| 久久精品国产亚洲av无码娇色 | 国产精品一二三在线观看| 欧美久久视频| 黄色一级视频片| 久久亚洲综合| 亚洲 国产 图片| 国产成人8x视频一区二区 | www.伊人久久| 欧美性感一区二区三区| 国产视频aaa| 亚洲精品电影网| 成人在线免费看| 另类色图亚洲色图| 老司机深夜福利在线观看| 国产精品扒开腿做爽爽爽视频 | 在线看国产一区| 国产人妖一区二区| 精品亚洲一区二区三区在线播放| 高清毛片在线看| 欧美丰满少妇xxxxx| 亚洲wwww| 99国产在线| 欧美亚洲国产精品久久| 九一免费在线观看| 黄色软件在线观看| 国产精品嫩草久久久久| 在线免费看视频| 一区二区三区小说| 日本久久综合网| 日韩一级片在线播放| 日韩一二三四| 欧美日本在线视频中文字字幕| 日韩在线伦理| 91久久夜色精品国产网站| 麻豆一区一区三区四区| 资源网第一页久久久| 国产亚洲精品久久久久婷婷瑜伽| 亚洲欧美国产中文| 99精品视频一区二区三区| 97在线观看免费高| 一本久久综合亚洲鲁鲁五月天| av观看在线免费| 在线丨暗呦小u女国产精品| 国产黄色在线免费观看| 456亚洲影院| 国产伦精品一区二区三区免费优势| 亚洲成人自拍视频| 国产精品普通话对白| 丰满人妻一区二区三区大胸| 国产精品家庭影院| 极品国产91在线网站| 亚洲精品一区二区三区精华液 | 国产亚洲福利社区一区| 精品在线免费观看视频| 欧美精选一区二区| 国产在线视频网站| 欧洲成人在线视频| 久久1电影院| 福利视频一区二区三区四区| 国产一区二区在线电影| 一级性生活免费视频| 色综合天天综合网天天看片| xxxx18国产| 欧美黄色片免费观看| 国产午夜亚洲精品一级在线| 亚洲va久久久噜噜噜久久狠狠| 欧美亚洲一区| 中文字幕在线免费看线人| 午夜精品久久久久影视| av老司机久久| 欧美精品在线视频观看| 国产一区二区三区| 可以在线看黄的网站| 黄一区二区三区| 999精品在线视频| 欧美日产国产精品| 搞黄视频在线观看| 成人免费视频97| 91青青国产在线观看精品| 亚洲免费999| 国产精品妹子av| 国产精品爽爽久久久久久| 色777狠狠综合秋免鲁丝| 免费高清视频在线一区| 亚洲激情电影在线| 国内成人自拍视频| 久久成人国产精品入口| 亚洲精品在线观看网站| 成年人在线网站| 欧美高清视频一区| 亚洲一区亚洲| www.av欧美| 欧美精品第1页| 啦啦啦中文在线观看日本| 国产亚洲情侣一区二区无| 男女av一区三区二区色多| 人妻少妇一区二区| 91福利精品第一导航| 毛片激情在线观看| 97netav| 亚洲欧美日韩国产综合精品二区| 在线不卡av电影| 欧美网站大全在线观看| 高h视频在线播放| 欧美日本国产精品| 精品亚洲aⅴ乱码一区二区三区| 永久久久久久久| 日韩电视剧在线观看免费网站 | 国产精品对白交换视频| 精品国产亚洲av麻豆| 欧美中文在线观看国产| 视频在线不卡免费观看|