日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer

發(fā)布時間:2025/3/21 linux 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Linux網(wǎng)絡(luò)核心數(shù)據(jù)結(jié)構(gòu)是套接字緩存(socket buffer),簡稱skb。它代表一個要發(fā)送或處理的報(bào)文,并貫穿于整個協(xié)議棧。1、套接字緩存skb由兩部分組成:(1)報(bào)文數(shù)據(jù):它保存了實(shí)際在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù);(2)管理數(shù)據(jù):供內(nèi)核處理報(bào)文的額外數(shù)據(jù),這些數(shù)據(jù)構(gòu)成了協(xié)議之間交換的控制信息。發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包:當(dāng)應(yīng)用程序向一個socket傳輸數(shù)據(jù)之后,該socket將創(chuàng)建相應(yīng)的套接字緩存,并將用戶數(shù)據(jù)拷貝到緩存中。當(dāng)報(bào)文在各協(xié)議層傳達(dá)輸?shù)倪^程中,每一導(dǎo)的報(bào)文頭將插入到用戶數(shù)據(jù)之前。相應(yīng)的,在sk_buff結(jié)構(gòu)中描述協(xié)議頭信息的地址指針會被賦值。

接收網(wǎng)絡(luò)數(shù)據(jù)包:網(wǎng)絡(luò)適配器接收到發(fā)送給本機(jī)的網(wǎng)絡(luò)數(shù)據(jù)后,首先產(chǎn)生中斷通知內(nèi)核收到網(wǎng)絡(luò)數(shù)據(jù)幀。接著在網(wǎng)絡(luò)適配器的中斷處理程序中調(diào)用dev_alloc_skb函數(shù)向系統(tǒng)申請一個Socket Buffer,將接收到的網(wǎng)絡(luò)數(shù)據(jù)幀從設(shè)備硬件的緩沖區(qū)復(fù)制到Socket Buffer的數(shù)據(jù)包緩沖區(qū);填寫sk_buff結(jié)構(gòu)中的地址、接收時間和協(xié)議等。

skb為報(bào)文頭申請了足夠的空間,所以避免了由于插入報(bào)文頭而對報(bào)文進(jìn)行多次拷貝。用戶數(shù)據(jù)只拷貝了兩次:一是從用戶空間拷貝到內(nèi)核;二是報(bào)文數(shù)據(jù)從內(nèi)核傳送到網(wǎng)絡(luò)適配器。

2.Sk_buff數(shù)據(jù)域分類

@結(jié)構(gòu)管理

@常規(guī)數(shù)據(jù)域

@網(wǎng)絡(luò)功能配置相關(guān)域

2.1.1 sk_buff的結(jié)構(gòu)管理域

1.*next和*prev

sk_buff是一個復(fù)雜的雙向鏈表,在他結(jié)構(gòu)中有next和prev指針,分別指向鏈表的下一個節(jié)點(diǎn)和前一個節(jié)點(diǎn)。并且為了某些需求(不知道是哪些目前)需要很快定位到鏈表頭部,所以還有一個指向鏈表頭部的指針list(我在2.6.25內(nèi)核沒有發(fā)現(xiàn)這個指針)。

sk_buff_head結(jié)構(gòu)是:

struct sk_buff_head {

/* These two members must be first. */

struct sk_buff *next;

struct sk_buff *prev;

__u32 qlen; //代表元素節(jié)點(diǎn)數(shù)目

spinlock_t lock; //加鎖,防止對表的并發(fā)訪問

};

2.struct sock *sk

這個指針指向一個套接字sock數(shù)據(jù)結(jié)構(gòu)。當(dāng)數(shù)據(jù)在本地產(chǎn)生或者本地進(jìn)程接受時,需要這個指針;里面的數(shù)據(jù)會有tcp/udp和用戶態(tài)程序使用。如果是轉(zhuǎn)發(fā)此指針為NULL

3.unsigned int len

緩沖區(qū)中數(shù)據(jù)塊大小。長度包括:主要緩沖區(qū)(head所指)的數(shù)據(jù)以及一些片斷(fragment)的數(shù)據(jù)。當(dāng)包在協(xié)議棧向上或向下走時,其大小會變,因?yàn)橛蓄^部的丟棄和添加。

unsigned int data_len

片段中數(shù)據(jù)大小

unsigned int mac_len

mac包頭大小

atomic_t users

引用計(jì)數(shù),使用這個sk_buff的使用者的數(shù)目,可能有多個函數(shù)要使用同一個sk_buff所以防止提前釋放掉,設(shè)置此計(jì)數(shù)

unsigned int truesize

此緩沖區(qū)總大小,包括sk_buff。sk_buff只不過是個指針的集合,他所指的才是真正的數(shù)據(jù)區(qū),所以是兩部分(sk_buff數(shù)據(jù)結(jié)構(gòu)的長度和數(shù)據(jù)包的長度和)。(見下圖)

sk_buff_data_t tail;

sk_buff_data_t end;

unsigned char *head, *data;

這些指針很重要,他們指向的是真正的數(shù)據(jù)區(qū),他們的邊界。head和end指向的是數(shù)據(jù)區(qū)的開端和尾端,指向整個數(shù)據(jù)包緩沖區(qū)的起始和結(jié)束地址,data和tail指向的是實(shí)際數(shù)據(jù)的開頭和結(jié)尾。

因?yàn)閿?shù)據(jù)區(qū)在協(xié)議棧走的時候要一層層添加或去掉一些數(shù)據(jù)(比如報(bào)頭)所以申請一塊大的足夠的內(nèi)存,然后在往里放東西。真實(shí)的實(shí)際數(shù)據(jù)可能用不了這么多,所以用data,tail指向真實(shí)的,head,tail指向邊界。剛開始沒填充數(shù)據(jù)時前三個指針指向的是一個地方。

void (*destructor) (…….)

此函數(shù)指針被初始化一個函數(shù),當(dāng)此緩沖區(qū)刪除時,完成某些工作。

2.1.2常規(guī)數(shù)據(jù)域

1.struct ktime_t tstamp

描述接收數(shù)據(jù)包到達(dá)內(nèi)核的時間。網(wǎng)絡(luò)設(shè)備驅(qū)動程序收到網(wǎng)絡(luò)數(shù)據(jù)時調(diào)用接收數(shù)據(jù)包處理函數(shù)netif_rx,再調(diào)用net_timestamp(skb)對該數(shù)據(jù)域賦值。

時間戳,表示何時被接受或有時表示包預(yù)定的傳輸時間

2.struct net_device *dev

dev是指向代表設(shè)備數(shù)據(jù)結(jié)構(gòu)的指針,表明該數(shù)據(jù)包是通過那個網(wǎng)絡(luò)設(shè)備接收或傳送的。

3.

sk_buff_data_t transport_header; //L4傳輸層協(xié)議頭在網(wǎng)絡(luò)數(shù)據(jù)包中的地址;

sk_buff_data_t network_header; //L3網(wǎng)絡(luò)層協(xié)議頭在網(wǎng)絡(luò)數(shù)據(jù)包中的地址;

sk_buff_data_t mac_header; //L2數(shù)據(jù)鏈路層協(xié)議頭在網(wǎng)絡(luò)數(shù)據(jù)包中的地址;

如果上述的協(xié)議頭在網(wǎng)絡(luò)數(shù)據(jù)包中的地址以skb->head為起始的偏移量(64位的CPU體系結(jié)構(gòu)),否則sk_buff_data_t的類型為指針(32位的CPU體系結(jié)構(gòu)),存放各協(xié)議層在網(wǎng)絡(luò)數(shù)據(jù)包中的起始地址。

這些指針分別指向報(bào)文頭部,和2.4版本比較有了變化,不再是聯(lián)合體,使用更加方便了,Linux給出了很方便的函數(shù)直接定位到各層的頭部。下圖是2.4版本的,只是說明一下。

4 union

{

.? structdst_entry *dst;

Structrtable?? *rtable;

};

路由子系統(tǒng)使用。該數(shù)據(jù)域指明如何將數(shù)據(jù)包向前發(fā)送。其中存放了數(shù)據(jù)包的發(fā)送目標(biāo)IP地址等。

5.char cb[48]

緩沖控制區(qū),用來存儲私有信息的空間。比如tcp/udp用這個空間存儲一個結(jié)構(gòu)體tcp_skb_cb/udp_skb_cp ,可以用宏TCP_SKB_CB(__skb)/UDP_SKB_CB(_skb)定位到他,然后使用里面的變量。

6.csum

_u8 Ip_summed

Cusm域存放數(shù)據(jù)包的校驗(yàn)和,檢驗(yàn)數(shù)據(jù)包在接收或發(fā)送過程中是否有損壞。其中必須包含csum_start/csum_offset對。

csum_start:以skb_head為起始地址的偏移量。指出檢驗(yàn)和從數(shù)據(jù)的什么位置開始計(jì)算。

csum_offset:以csum_start為起始地址的偏移量,指明檢驗(yàn)和存放的位置。

Ip_summed 描述網(wǎng)絡(luò)設(shè)備是否可用硬件對IP數(shù)據(jù)進(jìn)行檢驗(yàn)編碼或解碼。

7.unsigned char pkt_type

數(shù)據(jù)包的類型根據(jù)L2層幀的目的地址進(jìn)行類型劃分。

8.fclone:sk_buff克隆類別。

9.__u32 priority; priority數(shù)據(jù)域?qū)崿F(xiàn)質(zhì)量服務(wù)QoS功能特性。

10.QoS等級:描述數(shù)據(jù)包傳送的優(yōu)先級別。

11.__be16 protocol;

接收數(shù)據(jù)包的網(wǎng)絡(luò)層協(xié)議,表明網(wǎng)絡(luò)數(shù)據(jù)包應(yīng)該傳給TCP/IP協(xié)議棧網(wǎng)絡(luò)層的哪個協(xié)議處理函數(shù)。(include/linux/if_ether.h)

12._u16 queue_mapping:描述發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的所在隊(duì)列與設(shè)備硬件發(fā)送隊(duì)列的映射關(guān)系。

13._32 mark:數(shù)據(jù)包為常規(guī)數(shù)據(jù)包的標(biāo)志。

14._u16 vlan_tci:虛擬局域網(wǎng)的標(biāo)記控制信息。、

15.struct sec_path *sp:IPsec協(xié)議跟蹤網(wǎng)絡(luò)數(shù)據(jù)包的傳送路徑。

2.1.3 Sk_buff的網(wǎng)絡(luò)功能配置域

操作sk_buff相關(guān)的函數(shù)(net/core/skbuff.c和incldue/linux/skbuff.h)與sk_buff相關(guān)的函數(shù)涉及到網(wǎng)絡(luò)報(bào)文存儲結(jié)構(gòu)和控制結(jié)構(gòu)的分配、復(fù)制、釋放,以及控制結(jié)構(gòu)里的各指針的操作,還有各種標(biāo)志的檢查。重要的函數(shù)說明如下:內(nèi)核在系統(tǒng)初始化時創(chuàng)建兩個sk_buff的內(nèi)存對象池。Skbuff_head_cache和skbuff_fclone_cache。1.(1)_alloc_skb(unsigned int size,int gfp_t gfp_mask,int fclone,int node)(skbuff.c)分配大小為size的存儲空間存放網(wǎng)絡(luò)報(bào)文,同時分配它的控制結(jié)構(gòu)。size的值是16字節(jié)對齊的,gfp_mask是內(nèi)存分配的優(yōu)先級。常見的內(nèi)存分配優(yōu)先級有GFP_ATOMIC,代表分配過程不能被中斷,一般用于中斷上下文中分配內(nèi)存;GFP_KERNEL,代表分配過程可以被中斷,相應(yīng)的分配請求被放到等待隊(duì)列中。fclone為1,表示從內(nèi)存對象池skbuff_fclone_cache中獲取sk_buff數(shù)據(jù)結(jié)構(gòu)所需的內(nèi)存空間,為0,則從內(nèi)存對象池Skbuff_head_cache。

alloc_skb(unsigned int size,gfp_t priority)和alloc_skb_fclone(unsigned int size,gfp_t priority)是_alloc_skb的包裝函數(shù),前者fclone=0,后者fclone=1

(2)dev_alloc_skb(unsigned int lenth)(skbuff.c)

_dev_alloc_skb(unsigned int lenth,gfp_t gfp_mask)

_dev_alloc_skb是給網(wǎng)絡(luò)設(shè)備驅(qū)動程序使用的函數(shù),當(dāng)網(wǎng)絡(luò)設(shè)備從網(wǎng)絡(luò)上收到一個數(shù)據(jù)包時,它調(diào)用該函數(shù)向系統(tǒng)申請緩沖區(qū)來存放數(shù)據(jù)包,調(diào)用alloc_skb來分配SocketBuffer。dev_alloc_skb是_dev_alloc_skb的包裝函數(shù)。由于網(wǎng)絡(luò)數(shù)據(jù)包是中斷處理程序中接收的,中斷不能休眠,dev_alloc_skb用GFP_ATOMIC標(biāo)志傳給_dev_alloc_skb來分配內(nèi)存。

(3)netdev_alloc_skb(struct net_decice *dev,unsigned int lenth)

_netdev_alloc_skb(struct net_decice *dev,unsigned int lenth,gfp_tgfp_mask)

_netdev_alloc_skb與_dev_alloc_skb類似,指定了接收數(shù)據(jù)包的網(wǎng)絡(luò)設(shè)備用_alloc_skb來分配Socket Buffer,返回分配的sk_buff前,初始化sk_buff的設(shè)備指針*dev域。同上面一樣,netdev_alloc_skb是包裝函數(shù)。2.struct sk_buff *skb_clone(struct sk_buff *skb, int gfp_mask)

當(dāng)同一個scoket buffer由不同的進(jìn)程獨(dú)立處理,但進(jìn)程只操作sk_buff數(shù)據(jù)結(jié)構(gòu)描述符,內(nèi)核只對sk_buff數(shù)據(jù)結(jié)構(gòu)做完全復(fù)制。從控制結(jié)構(gòu)skb中clone出一個新的控制結(jié)構(gòu),它們都指向同一個網(wǎng)絡(luò)報(bào)文。clone成功之后,將新的控制結(jié)構(gòu)和原來的控制結(jié)構(gòu)的is_clone,cloned兩個標(biāo)記都置位。同時還增加網(wǎng)絡(luò)報(bào)文的引用計(jì)數(shù)(這個引用計(jì)數(shù)存放在存儲空間的結(jié)束地址的內(nèi)存中,由函數(shù)atomic_t *skb_datarefp(struct sk_buff *skb)訪問,引用計(jì)數(shù)記錄了這個存儲空間有多少個控制結(jié)構(gòu))。由于存在多個控制結(jié)構(gòu)指向同一個存儲空間的情況,所以在修改存儲空間里面的內(nèi)容時,先要確定這個存儲空間的引用計(jì)數(shù)為1,或者用下面的拷貝函數(shù)復(fù)制一個新的存儲空間,然后才可以修改它里面的內(nèi)容。

克隆的sk_buff具有以下特點(diǎn):不放入任何的sk_buff的管理隊(duì)列,不屬于任何套接字,兩個sk_buff結(jié)構(gòu)的skb->cloned域都置為1,當(dāng)一個sk_buff被克隆后,它的數(shù)據(jù)包的值為只讀。

3. 多個進(jìn)程對同一個scoket buffer修改sk_buff數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容,也要修改數(shù)據(jù)包內(nèi)容,對scoket buffer進(jìn)行復(fù)制。struct sk_buff *skb_copy(struct sk_buff *skb, int gfp_mask)

既修改主數(shù)據(jù)包的內(nèi)容,又要操作分片數(shù)據(jù)的值。

struct sk_buff *pskb_copy(struct sk_buff *skb, int gfp_mask)

只修改主數(shù)據(jù)包的內(nèi)容復(fù)制控制結(jié)構(gòu)skb和它所指的存儲空間的內(nèi)容。復(fù)制成功之后,新的控制結(jié)構(gòu)和存儲空間與原來的控制結(jié)構(gòu)和存儲空間相對獨(dú)立。所以新的控制結(jié)構(gòu)里的is_clone,cloned兩個標(biāo)記都是0,而且新的存儲空間的引用計(jì)數(shù)是1。4.void kfree_skb(struct sk_buff *skb)釋放控制結(jié)構(gòu)skb和它所指的存儲空間。由于一個存儲空間可以有多個控制結(jié)構(gòu),所以只有在存儲空間的引用計(jì)數(shù)為1的情況下才釋放存儲空間,一般情況下,只釋放控制結(jié)構(gòu)skb。

Kfree_release_all:釋放與sk_buff相連的其他數(shù)據(jù)結(jié)構(gòu)的引用計(jì)數(shù)。

Kfree_release_data:釋放數(shù)據(jù)包的主緩沖區(qū)和數(shù)據(jù)片緩沖區(qū)。kfree_skbmem:將sk_buff數(shù)據(jù)結(jié)構(gòu)返回內(nèi)存對象池。

dst_release:釋放對路由表的引用。5.unsigned char *skb_put(struct sk_buff *skb, unsigned int len)將tail指針下移,并增加skb的len值。data和tail之間的空間就是可以存放網(wǎng)絡(luò)報(bào)文的空間。這個操作增加了可以存儲網(wǎng)絡(luò)報(bào)文的空間,但是增加不能使tail的值大于end的值,skb的len值大于truesize的值。unsigned char *skb_push(struct sk_buff *skb, unsigned int len)將data指針上移,并增加skb的len值。這個操作在存儲空間的頭部增加了一段可以存儲網(wǎng)絡(luò)報(bào)文的空間,上一個操作在存儲空間的尾部增加了一段可以存儲網(wǎng)絡(luò)報(bào)文的空間。但是增加不能使data的值小于head的值,skb的len值大于truesize的值。unsigned char * skb_pull(struct sk_buff *skb, unsigned int len)將data指針下移,并減小skb的len值。這個操作使data指針指向下一層網(wǎng)絡(luò)報(bào)文的頭部。void skb_reserve(struct sk_buff *skb, unsigned int len)將data指針和tail指針同時下移。這個操作在存儲空間的頭部預(yù)留len長度的空隙。void skb_trim(struct sk_buff *skb, unsigned int len)將網(wǎng)絡(luò)報(bào)文的長度縮減到len。這個操作丟棄了網(wǎng)絡(luò)報(bào)文尾部的填充值。6.int skb_cloned(struct sk_buff *skb)判斷skb是否是一個clone的控制結(jié)構(gòu)。如果是clone的,它的cloned標(biāo)記是1,而且它指向的存儲空間的引用計(jì)數(shù)大于1。7.sk_buff引用的計(jì)數(shù)加1:static inline strcut sk_buff *skb_get(struct sk_buff *skb)

分片數(shù)據(jù)引用計(jì)數(shù)加1:static void skb_clone_fraglist(struct sk_buff *skb)

8.數(shù)據(jù)分片和分段

Strcut skb_shared_info數(shù)據(jù)結(jié)構(gòu)。3、套接字緩存隊(duì)列(Socket-Buffer Queues)

3.1、sk_buff_head在網(wǎng)絡(luò)協(xié)議棧的實(shí)現(xiàn)中,有時需要把許多網(wǎng)絡(luò)報(bào)文放到一個隊(duì)列中做異步處理。LINUX 為此定義了相關(guān)的數(shù)據(jù)結(jié)構(gòu)sk_buff_head。這是一個雙向鏈表的頭,它把sk_buff鏈接成一個雙向鏈表。

//套接字緩存隊(duì)列頭structsk_buff_head {/* These twomembers must be first. */structsk_buff *next;structsk_buff *prev;

__u32 qlen;//隊(duì)列的長度,即隊(duì)列中報(bào)文的數(shù)量spinlock_tlock;

};

3.2、與sk_buff_head相關(guān)的函數(shù)void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk)將newsk加到鏈表list的頭部。void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)將newsk加到鏈表list的尾部。struct sk_buff *skb_dequeue(struct sk_buff_head *list)從鏈表list的頭部取下一個sk_buff。struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list)從鏈表list的尾部取下一個sk_buff。skb_insert(struct sk_buff *old, struct sk_buff *newsk)將newsk加到old所在的鏈表上,并且newsk在old的前面。void skb_append(struct sk_buff *old, struct sk_buff *newsk)將newsk加到old所在的鏈表上,并且newsk在old的后面。void skb_unlink(struct sk_buff *skb)將skb從它所在的鏈表上取下。以上的鏈表操作都是先關(guān)中斷的。這在中斷上下文中是不需要的,所以另外有一套與上面函數(shù)同名但是有前綴“__”的函數(shù)供運(yùn)行在中斷上下文中的函數(shù)調(diào)用。

功能專用字段

Linux是模塊化的,你編譯時可以帶上特定功能,比如netfilter等,相應(yīng)的字段才會生效。應(yīng)該是那些預(yù)定義控制的。

管理函數(shù)

下面這個圖是:(a*)skb_put; (b*) skb_push; (c*)skb_pull (d*) skb_reserve的使用,主要是對skb_buf所指向的數(shù)據(jù)區(qū)的指針移動。(數(shù)據(jù)預(yù)留以及對齊)

下圖是用skb_reserve函數(shù),把一個14字節(jié)的ethernet幀拷貝到緩沖區(qū)。skb_reserve(skb, 2), 2表示16字節(jié)對齊。14+2=16

下圖是穿過協(xié)議棧從tcp層向下到鏈路層的過程

分配內(nèi)存:

alloc_skb 分配緩沖區(qū)和一個sk_buff結(jié)構(gòu)

dev_alloc_skb 設(shè)備驅(qū)動程序使用的緩沖區(qū)分配函數(shù)

釋放內(nèi)存:

kfree_skb 只有skb->users計(jì)數(shù)器為1時才釋放

dev_kfree_skb

緩沖區(qū)克隆函數(shù) skb_clone

列表管理函數(shù):

skb_queue_head_init

隊(duì)列初始化

skb_queue_head , skb_queue_tail

把一個緩沖區(qū)添加到隊(duì)列頭或尾

skb_dequeue, skb_dequeue_tail

從頭或尾去掉

skb_queue_purge

把隊(duì)列變空

skb_queue_walk

循環(huán)隊(duì)列每個元素

內(nèi)核也新增了幾個函數(shù),來提供獲取這些偏移的接口:

#ifdefNET_SKBUFF_DATA_USES_OFFSET如果使用了offset來表示偏移的話,就是說是一個相對偏移的情況:staticinline unsignedchar*skb_transport_header(conststructsk_buff *skb)

{returnskb->head + skb->transport_header;

}staticinline voidskb_reset_transport_header(structsk_buff *skb)

{

skb->transport_header = skb->data - skb->head;

}staticinline voidskb_set_transport_header(structsk_buff *skb,constintoffset)

{

skb_reset_transport_header(skb);

skb->transport_header += offset;

}staticinline unsignedchar*skb_network_header(conststructsk_buff *skb)

{returnskb->head + skb->network_header;

}staticinline voidskb_reset_network_header(structsk_buff *skb)

{

skb->network_header = skb->data - skb->head;

}staticinline voidskb_set_network_header(structsk_buff *skb,constintoffset)

{

skb_reset_network_header(skb);

skb->network_header += offset;

}staticinline unsignedchar*skb_mac_header(conststructsk_buff *skb)

{returnskb->head + skb->mac_header;

}staticinline intskb_mac_header_was_set(conststructsk_buff *skb)

{returnskb->mac_header != ~0U;

}staticinline voidskb_reset_mac_header(structsk_buff *skb)

{

skb->mac_header = skb->data - skb->head;

}staticinline voidskb_set_mac_header(structsk_buff *skb,constintoffset)

{

skb_reset_mac_header(skb);

skb->mac_header += offset;

}#else/* NET_SKBUFF_DATA_USES_OFFSET */不使用相對偏移的情況staticinline unsignedchar*skb_transport_header(conststructsk_buff *skb)

{returnskb->transport_header;

}staticinline voidskb_reset_transport_header(structsk_buff *skb)

{

skb->transport_header = skb->data;

}staticinline voidskb_set_transport_header(structsk_buff *skb,constintoffset)

{

skb->transport_header = skb->data + offset;

}staticinline unsignedchar*skb_network_header(conststructsk_buff *skb)

{returnskb->network_header;

}staticinline voidskb_reset_network_header(structsk_buff *skb)

{

skb->network_header = skb->data;

}staticinline voidskb_set_network_header(structsk_buff *skb,constintoffset)

{

skb->network_header = skb->data + offset;

}staticinline unsignedchar*skb_mac_header(conststructsk_buff *skb)

{returnskb->mac_header;

}staticinline intskb_mac_header_was_set(conststructsk_buff *skb)

{returnskb->mac_header != NULL;

}staticinline voidskb_reset_mac_header(structsk_buff *skb)

{

skb->mac_header = skb->data;

}staticinline voidskb_set_mac_header(structsk_buff *skb,constintoffset)

{

skb->mac_header = skb->data + offset;

}#endif/* NET_SKBUFF_DATA_USES_OFFSET */1、TCP層獲取相關(guān)偏移的函數(shù)staticinline structtcphdr *tcp_hdr(conststructsk_buff *skb)

{return(structtcphdr *)skb_transport_header(skb);

}這個函數(shù)用來獲得sk_buff結(jié)構(gòu)中TCP頭的指針staticinline unsignedinttcp_hdrlen(conststructsk_buff *skb)

{returntcp_hdr(skb)->doff *4;

}這個函數(shù)用來獲得TCP頭的長度staticinline unsignedinttcp_optlen(conststructsk_buff *skb)

{return(tcp_hdr(skb)->doff -5) *4;

}獲取tcp option的長度2、IP相關(guān)的函數(shù)staticinline structiphdr *ip_hdr(conststructsk_buff *skb)

{return(structiphdr *)skb_network_header(skb);

}該函數(shù)獲得ip頭staticinline structiphdr *ipip_hdr(conststructsk_buff *skb)

{return(structiphdr *)skb_transport_header(skb);

}該函數(shù)獲得ipip頭,實(shí)際上偏移已經(jīng)跑到了傳輸層的開始3、MAC相關(guān)函數(shù)staticinline structebt_802_3_hdr *ebt_802_3_hdr(conststructsk_buff *skb)

{return(structebt_802_3_hdr *)skb_mac_header(skb);

}獲取802.3MAC頭指針。staticinline structethhdr *eth_hdr(conststructsk_buff *skb)

{return(structethhdr *)skb_mac_header(skb);

}獲取以太網(wǎng)MAC頭指針。以太網(wǎng)頭指針結(jié)構(gòu)體:structethhdr {

unsignedcharh_dest[ETH_ALEN];/* destination eth addr */unsignedcharh_source[ETH_ALEN];/* source ether addr */__be16 h_proto;/* packet type ID field */} __attribute__((packed));內(nèi)核中網(wǎng)絡(luò)地址轉(zhuǎn)化為字符串形式的IP地址的宏定義:#defineNIPQUAD(addr) \

((unsignedchar*)&addr)[0], \

((unsignedchar*)&addr)[1], \

((unsignedchar*)&addr)[2], \

((unsignedchar*)&addr)[3]#defineNIPQUAD_FMT "%u.%u.%u.%u"

2.2 sk_buff套接字緩存結(jié)構(gòu):

代碼:

//套接字緩存structsk_buff {/* These two members must be first. */structsk_buff *next;structsk_buff *prev;structsk_buff_head *list;structsock *sk;//指向創(chuàng)建報(bào)文的socketstructtimeval stamp;//此報(bào)文收到時的時間structnet_device *dev;//收到此報(bào)文的網(wǎng)絡(luò)設(shè)備structnet_device *input_dev;structnet_device *real_dev;//TCP報(bào)頭union {structtcphdr *th;//tcp頭structudphdr *uh;//udp頭structicmphdr *icmph;structigmphdr *igmph;structiphdr *ipiph;structipv6hdr *ipv6h;

unsignedchar*raw;

} h;//IP報(bào)頭union {structiphdr *iph;structipv6hdr *ipv6h;structarphdr *arph;

unsignedchar*raw;

} nh;//鏈路層幀頭union {

unsignedchar*raw;

} mac;structdst_entry *dst;//此報(bào)文的路由,路由確定后賦此值structsec_path *sp;/*

* This is the control buffer. It is free to use for every

* layer. Please put your private variables there. If you

* want to keep them across layers you have to do a skb_clone()

* first. This is owned by whoever has the skb queued ATM.

*/charcb[40];//此報(bào)文的長度,這是指網(wǎng)絡(luò)報(bào)文在不同協(xié)議層中的長度,包括頭部和數(shù)據(jù)。在協(xié)議棧的不同層,這個長度是不同的。unsignedintlen,

data_len,

mac_len,

csum;

unsignedcharlocal_df,

cloned,

pkt_type,//網(wǎng)絡(luò)報(bào)文的類型,常見的有PACKET_HOST,代表發(fā)給本機(jī)的報(bào)文;還有PACKET_OUTGOING,代表本機(jī)發(fā)出的報(bào)文。ip_summed;

__u32 priority;

unsignedshortprotocol,//鏈路層協(xié)議security;void(*destructor)(structsk_buff *skb);

#ifdef CONFIG_NETFILTER

unsignedlongnfmark;

__u32 nfcache;

__u32 nfctinfo;structnf_conntrack *nfct;

#ifdef CONFIG_NETFILTER_DEBUG

unsignedintnf_debug;#endif#ifdef CONFIG_BRIDGE_NETFILTERstructnf_bridge_info *nf_bridge;#endif#endif/* CONFIG_NETFILTER */#ifdefined(CONFIG_HIPPI)

union {

__u32 ifield;

}private;#endif#ifdef CONFIG_NET_SCHED

__u32 tc_index;/* traffic control index */#ifdef CONFIG_NET_CLS_ACT

__u32 tc_verd;/* traffic control verdict */__u32 tc_classid;/* traffic control classid */#endif#endif/* These elements must be at the end, see alloc_skb() for details. *///此報(bào)文存儲區(qū)的長度,這個長度是16字節(jié)對齊的,一般要比報(bào)文的長度大unsignedinttruesize;

atomic_t users;/*head和end指向報(bào)文數(shù)據(jù)的整個單元.head與data之間的空間稱為headroom,tail與end之間的空間稱為tailroom.

*/unsignedchar*head, *data, *tail, *end; };

總結(jié)

以上是生活随笔為你收集整理的linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

久久久久国产精品免费网站 | 91视频 - 88av | 久久久久久综合 | 中文国产字幕在线观看 | 国产精品美女久久久久久网站 | 97香蕉久久超级碰碰高清版 | 亚洲狠狠操 | 日日麻批40分钟视频免费观看 | 色综合久久久久综合体桃花网 | 91精品天码美女少妇 | 天天操天天摸天天干 | 日韩一二区在线观看 | 欧美日韩视频在线观看一区二区 | 午夜视频在线观看网站 | 91视频免费视频 | 久久国产精品色婷婷 | 久久久久久久免费 | 国产精品一区二区在线免费观看 | 亚洲亚洲精品在线观看 | 成年人视频在线免费 | 精品国产一区二区三区在线观看 | 91亚洲夫妻 | 夜夜操天天 | 久久99视频免费观看 | 99精品在线播放 | 欧美资源 | 成人观看 | 欧美色插| 婷婷色伊人 | 一区二区三区日韩在线观看 | 九九色综合 | 国产精品毛片久久久 | 久久久久欠精品国产毛片国产毛生 | 国产麻豆精品免费视频 | 高清不卡免费视频 | 黄色片软件网站 | 99色亚洲| 国产这里只有精品 | 一区二区精品在线 | 久久激情五月丁香伊人 | 色综合久久88色综合天天6 | 丁香激情综合国产 | 婷婷激情五月 | 国产999 | 国产女v资源在线观看 | 91资源在线免费观看 | av在线免费观看不卡 | 天天综合久久 | 在线 国产一区 | 国产又粗又猛又爽又黄的视频免费 | 日韩 在线a| 国产小视频免费观看 | 久99久中文字幕在线 | 欧美日韩一区二区三区不卡 | 欧美精品久久久久久久亚洲调教 | 91 在线视频播放 | 国产字幕av | 91色视频 | 日韩欧美视频在线观看免费 | 久久精品久久精品 | 国产精品一区二区你懂的 | 五月婷婷亚洲 | 伊人夜夜 | 久久福利在线 | 色综合久久88色综合天天免费 | 粉嫩一二三区 | 91精品国产欧美一区二区成人 | 日韩影视在线 | 国产精品久久一区二区三区不卡 | 国产日产在线观看 | 亚洲综合精品视频 | 亚洲精品国产精品久久99 | 美女黄视频免费 | 黄色av电影免费观看 | 4438全国亚洲精品在线观看视频 | 99视频+国产日韩欧美 | 欧美日韩精品二区第二页 | 最近中文字幕免费av | 国产精品18久久久久久久 | 伊人五月在线 | 精品亚洲va在线va天堂资源站 | 免费a网 | 亚洲国产精品久久久久久 | 日韩免费在线视频 | 免费的黄色的网站 | 91视频久久久久 | 欧美一级日韩三级 | 久热电影| 日日躁你夜夜躁你av蜜 | 精品亚洲网 | 色资源在线 | 黄色一级在线免费观看 | 久久欧美精品 | 亚洲国产色一区 | 97视频在线免费 | 玖玖视频精品 | 婷婷视频在线播放 | 91精品国产自产老师啪 | 久久精品亚洲一区二区三区观看模式 | 久久久在线视频 | 亚洲欧洲精品一区二区 | 色综合网在线 | 免费三级大片 | 国产精品大片在线观看 | 欧美最猛性xxxx | 精品在线观看一区二区三区 | 久久手机视频 | 婷婷色综| 一级黄色片在线免费观看 | 亚州精品视频 | 色99在线| 日韩精品在线视频免费观看 | 国产一在线精品一区在线观看 | 亚洲精品免费播放 | 911免费视频| 久久国产精品久久精品 | 久久精品免费看 | 成人小视频免费在线观看 | 中文av日韩| 草久久久久久久 | 国产精品9区 | 国产精品久久久久国产精品日日 | 欧美在线aa | 免费看av在线 | 伊人狠狠色 | 日本黄色免费电影网站 | 久久午夜精品视频 | 亚洲aⅴ久久精品 | 国产精品男女 | 亚洲免费视频观看 | 韩日av在线 | 五月综合网站 | adc在线观看 | 四虎成人av | wwwav视频 | 久久官网 | 日韩在线不卡视频 | 欧美日韩中文字幕在线视频 | 日韩精品中文字幕有码 | 日韩在线视频网址 | 久久dvd | 欧美日韩免费一区二区三区 | 九九精品在线观看 | 亚洲日韩欧美一区二区在线 | 色噜噜狠狠狠狠色综合 | 欧美在线观看小视频 | 美女黄久久 | 久久人人艹 | 亚洲国产欧美在线人成大黄瓜 | 国产成人a亚洲精品 | 国产二区免费视频 | 日韩国产精品一区 | 精品国产一区二区三区在线观看 | 久久人人爽人人人人片 | 精品亚洲国产视频 | 亚洲精品国精品久久99热 | 91av在线免费看 | 视频精品一区二区三区 | 亚州日韩中文字幕 | 国产精品mm | www.久草.com | 国产五码一区 | 欧美精品久久久久久久久免 | 久久久伊人网 | 色a在线观看 | 婷色在线 | 97电影手机 | 在线日韩精品视频 | 欧美激情视频在线免费观看 | 黄a在线| 在线观看视频三级 | 久久国产精品99国产精 | 91爱在线| 综合色伊人 | 91x色| 国产精品视频app | 黄色小说免费观看 | av福利资源| 香蕉视频在线网站 | 深爱开心激情 | 国产精品一区二区三区在线免费观看 | 日韩三级中文字幕 | 激情影院在线 | 国产色视频 | 五月婷婷中文字幕 | 欧亚日韩精品一区二区在线 | 婷婷在线网站 | 国产精品一区二区久久精品 | 久久国产精品99国产精 | 97超碰人人澡人人爱学生 | 午夜精品在线看 | 国内精品久久久久久久久久久久 | 欧美孕妇视频 | 在线观看黄色大片 | 99精彩视频| 激情欧美一区二区三区 | 国产精品久久久久久久久久三级 | 国产69精品久久久久99 | 久久久久久久av麻豆果冻 | 99在线免费观看视频 | 成人免费影院 | 免费91在线观看 | 午夜视频在线观看一区 | 久久毛片网 | 一区二区三区电影 | 黄色网大全 | 国内精品免费久久影院 | 午夜影院日本 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 私人av| 亚洲电影第一页av | 精品国产欧美 | 免费久久精品视频 | www国产亚洲 | 成人sm另类专区 | 亚洲最快最全在线视频 | 在线精品国产 | 四虎国产免费 | 国产美女久久久 | 91豆麻精品91久久久久久 | 国产一区二区视频在线 | 狠狠干天天 | 国产不卡在线观看 | 97伊人网 | 亚洲国产精品一区二区久久,亚洲午夜 | 久久久久久久久久久久电影 | 欧美日韩不卡一区二区三区 | 99精品视频免费看 | 国产精品video | 成人av久久 | avwww在线观看 | 免费看一及片 | 亚洲欧美在线视频免费 | 免费观看第二部31集 | 色婷婷综合久久久中文字幕 | 亚洲天天在线 | 国产精品久久嫩一区二区免费 | 黄色a大片 | 久草精品在线播放 | 日精品在线观看 | 91最新国产 | 亚洲日本激情 | 99久久这里只有精品 | 国产高清视频色在线www | 一区二区精品在线观看 | 99成人免费视频 | 色婷婷色| 久久综合久久综合九色 | 久久精品站 | 欧美不卡在线 | 亚洲日本韩国一区二区 | 欧美一级欧美一级 | 欧美一级性生活视频 | av在线播放快速免费阴 | 日韩com | 国产爽妇网 | 国产高清中文字幕 | 久久免费视频8 | 久色婷婷 | 欧美一级特黄高清视频 | 亚洲激情 欧美激情 | 97网| 伊人天天综合 | 一区二区视频在线看 | 99福利片 | 在线观看自拍 | 国产精品扒开做爽爽的视频 | 国产午夜一区二区 | 天天操天天干天天综合网 | 91精品亚洲影视在线观看 | 国产糖心vlog在线观看 | 日韩免费观看视频 | 久久精品4| 色a网| 一级欧美日韩 | 96久久欧美麻豆网站 | 美女网站视频免费黄 | 四虎亚洲精品 | 欧美一区二区伦理片 | 中文av网 | 手机在线看片日韩 | 久久精品日本啪啪涩涩 | 一区二区精品在线 | 久久a v视频 | 久久无码精品一区二区三区 | 热re99久久精品国产66热 | 看片黄网站 | 久久9999久久免费精品国产 | 天天干天天看 | 午夜精品福利一区二区 | 九色一区二区 | 久久国产欧美日韩 | 在线岛国av | 日韩黄色在线 | 激情久久婷婷 | 久久精品国产免费看久久精品 | 亚洲精品视频在线播放 | 国产无遮挡又黄又爽馒头漫画 | 国色天香在线 | 波多野结衣视频一区二区三区 | 日产乱码一二三区别在线 | 黄色在线视频网址 | 精品极品在线 | 国产精品免费观看视频 | 狠狠色丁香婷婷综合久小说久 | 狠狠操精品 | 亚洲精品一区二区三区高潮 | 久久人人精 | 伊甸园永久入口www 99热 精品在线 | 999久久久久 | 99热高清| 精品人人人人 | 亚洲爱视频 | 亚洲欧美激情精品一区二区 | 玖玖精品在线 | 久久影院精品 | www.eeuss影院av撸 | 99九九99九九九视频精品 | 欧美日韩在线网站 | 久久不色 | 久久久久久久久久久电影 | 国产美女主播精品一区二区三区 | 亚洲电影院| 国产精品久久 | 国产亚洲精品久久久久久移动网络 | 国产女人18毛片水真多18精品 | 丁香电影小说免费视频观看 | 免费av在 | 婷婷六月天丁香 | av 一区 二区 久久 | 亚洲精品成人 | 成人a视频在线观看 | 另类老妇性bbwbbw高清 | av线上免费观看 | 国产精品嫩草影视久久久 | av导航福利 | 国产精品久久久免费看 | 日韩一区二区三区免费视频 | 色狠狠狠| av短片在线 | 人操人 | 国产免费大片 | 国产精品日韩高清 | 国产亚洲精品福利 | 日韩久久午夜一级啪啪 | 五月天国产精品 | av字幕在线 | 国产中文字幕亚洲 | 欧美日韩视频 | 中文字幕中文字幕 | 超碰在线个人 | 中文久久精品 | 天天综合狠狠精品 | 特级西西www44高清大胆图片 | 亚洲在线黄色 | 在线观看视频免费播放 | 综合国产在线观看 | 久久综合毛片 | 免费亚洲精品视频 | 伊人国产在线观看 | 成人福利在线观看 | 日韩欧美在线视频一区二区 | 欧美精品在线观看免费 | 国内久久精品视频 | 天天爱天天操天天爽 | 四虎在线视频免费观看 | 亚洲理论片 | www.色午夜.com | 美女网站色免费 | 99热最新地址 | 色七七亚洲影院 | 97视频入口免费观看 | 婷婷免费在线视频 | 91精品老司机久久一区啪 | 婷婷丁香激情五月 | 久久亚洲国产精品 | 国产精品2018 | 免费久草视频 | 婷婷中文字幕在线观看 | 精品国产aⅴ一区二区三区 在线直播av | 中文字幕在线不卡国产视频 | 亚洲精品国产自产拍在线观看 | 欧美午夜精品久久久久久浪潮 | 久久视讯| 在线成人观看 | 狠狠色狠狠色综合日日92 | 999久久久久 | 色鬼综合网 | 日韩久久精品一区二区三区 | 免费热情视频 | 中文av资源站 | 99色人| 国产亚洲精品成人av久久ww | 欧美国产大片 | 国产一区二区免费在线观看 | 天天干天天射天天操 | 九九热只有这里有精品 | 97免费在线观看视频 | 免费毛片一区二区三区久久久 | 高清国产午夜精品久久久久久 | av中文字幕电影 | 日本少妇久久久 | 国产福利小视频在线 | 国产又粗又硬又爽视频 | 久草com| 亚洲激情在线视频 | 婷婷久久综合九色综合 | 国产精品1000 | 成人在线小视频 | 一级黄色片网站 | 韩国中文三级 | 成人av久久 | 美女福利视频一区二区 | 国产福利久久 | 久久午夜精品影院一区 | 精品一区 在线 | 91精品国自产在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 日韩免费视频一区二区 | 97超碰国产在线 | 欧美一级特黄aaaaaa大片在线观看 | 在线免费色 | 三级黄在线| 国产无套精品久久久久久 | 99国产精品视频免费观看一公开 | 一区二区久久久久 | 久草在线观看视频免费 | 综合久久综合久久 | 成人在线超碰 | 日韩视频免费在线 | 色综合天 | 天天操天天干天天操天天干 | 中文字幕一区二区三区在线视频 | 人人要人人澡人人爽人人dvd | 国产一二三四在线观看视频 | 99精品视频免费在线观看 | 欧美一区二区三区免费看 | 成全免费观看视频 | 精品福利片 | 国产99免费| 欧美夫妻性生活电影 | 精品国产一区二区三区噜噜噜 | 亚洲精品456在线播放乱码 | 天天操天天谢 | 日韩免费在线观看视频 | 伊人久久婷婷 | 国产精品成久久久久 | 成人性生交大片免费观看网站 | 日韩有码第一页 | 人人草网站 | 黄色亚洲精品 | 91视频 - 88av | 国产在线中文字幕 | 亚洲欧美成人综合 | 亚洲国产电影在线观看 | 9在线观看免费高清完整 | 久久高清毛片 | 国产综合小视频 | 夜色资源站wwwcom | 日本黄色黄网站 | 亚洲成av人片在线观看 | 有码一区二区三区 | 色多多污污在线观看 | 亚洲激情视频 | 久草在线久草在线2 | 91香蕉视频色版 | 麻豆视频国产精品 | 日本特黄特色aaa大片免费 | 中文字幕在线看视频国产中文版 | 99草视频在线观看 | 日韩欧美精品在线 | 日韩在线视频观看免费 | 日韩高清dvd | 午夜视频在线观看一区 | 日韩激情视频在线观看 | 免费又黄又爽视频 | 国产精彩在线视频 | 久久免费黄色网址 | 午夜性色 | 狠狠的日日 | 久草精品在线 | 伊人官网| 毛片一级免费一级 | 欧美一区免费观看 | 国产精品99视频 | 在线三级播放 | 久久精品二区 | 亚洲在线激情 | 久章草在线 | 69国产成人综合久久精品欧美 | av在线之家电影网站 | 亚洲成人国产精品 | 91成人短视频在线观看 | 91av在线播放视频 | 日免费视频 | 欧美激情综合五月 | 黄色a在线| 精品一区二区在线免费观看 | 国产免费视频在线 | 精品视频专区 | 日韩免费电影一区二区三区 | 在线免费观看麻豆 | 五月婷婷网站 | 久草在线资源免费 | 成人av一区二区三区 | 国产精品福利午夜在线观看 | 国产大片黄色 | 日日爱视频 | 免费在线成人av电影 | 国内精品视频久久 | av中文字幕网 | www.一区二区三区 | 日韩一区二区久久 | 欧美大片在线观看一区 | 91视频免费国产 | 国产精品黄网站在线观看 | 成人综合婷婷国产精品久久免费 | av网站有哪些 | 免费看成人片 | 亚洲最新av在线网址 | 99久久这里有精品 | 日韩成人不卡 | 精品综合久久 | 亚洲精品视频在线免费播放 | 免费网站在线观看人 | 在线观看日本高清mv视频 | 国产福利a | 在线看欧美 | 香蕉97视频观看在线观看 | 天天躁天天操 | 人人爽人人爽人人爽学生一级 | 日韩成人看片 | 亚洲综合小说电影qvod | 黄色精品在线看 | 国产精品99久久免费黑人 | 亚洲特级片| 99视频精品| 中文字幕在线观看免费高清电影 | 亚洲成a人片在线观看网站口工 | 五月香视频在线观看 | 国产一区欧美一区 | 国产露脸91国语对白 | 亚洲精品自拍 | 91精品伦理 | 在线国产一区二区 | 最新av在线网址 | 国产成人一区三区 | 91在线免费播放 | 日韩不卡高清 | 久草国产视频 | 久久国内精品 | 欧洲激情综合 | 国产精品粉嫩 | 麻豆传媒视频在线免费观看 | 欧美影片| 免费观看全黄做爰大片国产 | 97精品国产91久久久久久久 | 色婷婷亚洲精品 | 国产精品av在线 | 亚洲精品国产品国语在线 | 色狠狠婷婷 | 爱爱av网站| 在线免费黄色毛片 | 91精品国 | 日本三级吹潮在线 | 日本动漫做毛片一区二区 | 怡春院av| 美女视频a美女大全免费下载蜜臀 | 成年人在线电影 | 天天碰天天操视频 | 免费观看成人av | 就操操久久 | 天天做天天爱天天综合网 | 激情五月激情综合网 | 久久99久久99精品免费看小说 | 国产精品成人aaaaa网站 | 免费亚洲婷婷 | 久久久九九 | 婷婷激情综合五月天 | www.色综合.com | 正在播放久久 | 992tv人人草| 精品国产一区二 | 91大神免费在线观看 | 麻豆果冻剧传媒在线播放 | 精品视频国产一区 | 久久伊人八月婷婷综合激情 | 麻豆超碰| 成人小视频在线观看免费 | 色综合天天色综合 | 国产在线观看h | 国产精品久久久久久久久久免费 | 婷婷中文字幕在线观看 | 亚洲精品女人久久久 | 久草免费新视频 | 天天爱综合 | 国产精品九九九 | 亚洲精品视频免费 | 一区二区三区精品久久久 | av高清不卡 | 亚洲精品玖玖玖av在线看 | 日韩三级精品 | 成人h视频| 久久久精品国产免费观看一区二区 | 99久久精品无码一区二区毛片 | 996久久国产精品线观看 | 麻豆影视在线播放 | 成人高清av在线 | 99热最新 | 国产精品毛片网 | 久久国产精品一国产精品 | 国产精品欧美久久久久天天影视 | 中文在线8新资源库 | 亚洲精品美女久久久 | 欧美日韩视频免费看 | 国产日韩欧美在线影视 | 超碰av在线播放 | 在线观看v片 | 久久国产免费 | 久久免费视频3 | 国产高清精品在线 | 香蕉视频网站在线观看 | 在线看片成人 | 午夜久久视频 | 精品国产乱码久久久久久浪潮 | 黄在线免费观看 | 91成人观看 | 日日弄天天弄美女bbbb | 日本久久高清视频 | 欧美地下肉体性派对 | 在线视频成人 | 国内精品久久久久久久久久清纯 | japanese黑人亚洲人4k | 444av| 色橹橹欧美在线观看视频高清 | 久久草精品 | 在线视频电影 | 久久久精品欧美 | 69国产在线观看 | 在线蜜桃视频 | 精品亚洲二区 | av视屏在线| 麻豆精品传媒视频 | 久久99精品国产麻豆婷婷 | 制服丝袜在线 | 日韩理论片在线 | 精品国产大片 | 日韩中文字幕在线不卡 | 毛片网站在线 | 91tv国产成人福利 | 不卡av在线 | 久久天天操 | 天天激情综合 | 日韩欧美区 | 九九免费精品视频在线观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 一 级 黄 色 片免费看的 | 丁香婷婷激情啪啪 | 日韩精品中文字幕有码 | 亚洲免费成人av电影 | 天天爽人人爽夜夜爽 | 日韩av快播电影网 | 黄色大片视频网站 | 黄色大全免费网站 | 手机在线永久免费观看av片 | 婷婷综合电影 | 久久久久久久久久久免费视频 | 中文字幕 国产视频 | 亚洲一区美女视频在线观看免费 | 天天色天天草天天射 | www日韩精品| 亚洲欧美日韩国产一区二区 | 精品 一区 在线 | 美女久久久 | 亚洲激精日韩激精欧美精品 | 激情图片久久 | 欧美日韩国产色综合一二三四 | 精品久久久久久久久久国产 | 国产最新精品视频 | 男女拍拍免费视频 | 亚洲精品女 | 一二区电影 | 在线天堂日本 | 国产视频在线观看免费 | 国产又粗又长又硬免费视频 | 黄色片网站免费 | 久久在线影院 | 91中文字幕在线播放 | 欧美日韩国产高清视频 | 欧美性色黄大片在线观看 | 色av婷婷 | 国产精品一区二区在线看 | 中文字幕超清在线免费 | 99视频免费 | 蜜臀av性久久久久av蜜臀妖精 | 欧洲在线免费视频 | 国产精品视频久久久 | 又黄又爽又刺激 | 日韩高清片 | 一本一道久久a久久精品 | 97超碰资源网 | 国产日韩精品在线观看 | 中文永久免费观看 | 狠狠干免费 | 亚洲不卡av一区二区三区 | 色吊丝在线永久观看最新版本 | 成人一区二区在线观看 | 五月天网页 | 天天色欧美| 西西4444www大胆视频 | 日韩在线视频观看 | 精品一区二区久久久久久久网站 | 国产专区视频在线观看 | 99产精品成人啪免费网站 | 国内成人精品视频 | 欧美激情综合网 | 久久免费电影 | 久久精品这里都是精品 | 人人爽人人片 | 久久天天躁狠狠躁亚洲综合公司 | 久久久久欧美精品999 | 在线影院 国内精品 | 久久久免费观看 | 久久婷婷丁香 | 国产一区二区精品 | 久久第四色 | 亚洲综合在线五月 | 成人免费一区二区三区在线观看 | 97人人超| 国产精品入口传媒 | 久草线| 久久久国产精品网站 | 在线网址你懂得 | 国产精品夜夜夜一区二区三区尤 | 亚洲天堂网站视频 | 四月婷婷在线观看 | 欧美日韩在线免费视频 | 免费黄色a网站 | 超碰在线最新地址 | 中文字幕观看视频 | 久久综合操 | 久久国产经典 | 精品福利在线观看 | 黄色软件视频网站 | 国产精品igao视频网网址 | 99久久精品免费看国产麻豆 | 国产在线观看污片 | 天天干人人干 | 特级片免费看 | 欧美一级片免费播放 | 在线视频 区 | 国产精品国内免费一区二区三区 | 婷婷亚洲五月 | 亚洲自拍偷拍色图 | 波多野结衣一区二区三区中文字幕 | 亚洲国产网站 | 亚洲成年片| 久久久久久久久久毛片 | 国产精品免费观看在线 | 天天躁日日躁狠狠躁av中文 | 色欧美视频 | 国产精品欧美 | 好看av在线 | 色视频网站在线 | 男女免费视频观看 | 国产亚洲精品久久久久久网站 | 91色在线观看| 美女啪啪图片 | 欧美日韩国产精品爽爽 | 天天干天天插伊人网 | 欧美在线久久 | 天天激情在线 | 91亚洲国产成人 | 日韩高清二区 | 手机av在线不卡 | 亚洲一区二区三区精品在线观看 | 欧美一级大片在线观看 | 三级黄色大片在线观看 | 国产91精品高清一区二区三区 | 亚洲国产大片 | 毛片美女网站 | 不卡的av在线播放 | 中文字幕网站视频在线 | 99精品欧美一区二区 | 欧美日韩国产精品一区二区亚洲 | 97视频人人澡人人爽 | 免费视频黄| 一区av在线播放 | 日韩欧美高清视频在线观看 | 黄色av影院 | 国产精品女人久久久 | 久久成人亚洲欧美电影 | 亚洲免费视频观看 | 久久久www成人免费毛片麻豆 | 亚洲人av免费网站 | 97精品国产91久久久久久久 | 99麻豆久久久国产精品免费 | 欧美久久久久久久久久 | 国产免费人人看 | 国产尤物在线观看 | 在线观看视频一区二区三区 | 久久影视中文字幕 | 免费av在线| 日韩欧美在线一区二区 | 少妇bbr搡bbb搡bbb| 97超级碰碰 | 成人在线一区二区三区 | 中文字幕人成不卡一区 | 999国产精品视频 | 亚洲一区二区精品3399 | 91精品久久久久久粉嫩 | 免费精品国产 | 免费人做人爱www的视 | 久久理论片 | 99精品在线直播 | 99久久精品国产观看 | 国产日女人 | 亚洲精品日韩一区二区电影 | 天天色天天搞 | 97国产在线视频 | 一区二区三区国 | 久久久久久久毛片 | www.久久色| 狂野欧美激情性xxxx | 91免费看黄| 亚洲午夜精品久久久久久久久久久久 | 激情文学丁香 | 国产区在线 | 亚洲不卡在线 | 美女很黄免费网站 | 在线看日韩 | 99精品久久精品一区二区 | 性色xxxxhd| 又色又爽又激情的59视频 | 草久中文字幕 | 狠狠色丁香婷婷综合久久片 | 免费在线看v | 国产又粗又猛又黄视频 | 51精品国自产在线 | 天天躁天天操 | 国产精品久久久久一区二区三区 | 欧美激情视频免费看 | 国产91精品高清一区二区三区 | 免费观看成人 | 国产精品视频永久免费播放 | 在线a视频 | 九九免费精品视频 | 777视频在线观看 | av中文字幕网 | 久久久久久久久久久久久9999 | 亚洲午夜电影网 | 五月天婷婷在线观看视频 | 免费成人看片 | 国产精品免费看久久久8精臀av | 午夜精品福利在线 | 97偷拍在线视频 | 婷婷播播网 | 成人精品视频久久久久 | 激情文学综合丁香 | avwww在线观看 | 天天色综合1 | 在线观看日韩视频 | 免费观看黄色12片一级视频 | 国产黄色视 | 青青河边草观看完整版高清 | 黄色一级大片免费看 | 日韩v欧美v日本v亚洲v国产v | 欧美精品亚洲精品日韩精品 | 亚洲欧美视频在线播放 | 麻豆传媒一区二区 | 精品久久福利 | 99精品色| 日韩中文字幕免费视频 | 热99在线视频 | 久久国产品 | 国产天天综合 | 国产99久久久欧美黑人 | 日韩欧美一区二区在线播放 | 欧美日韩性 | 91人人在线 | 欧美91精品久久久久国产性生爱 | 麻豆久久久久 | 国产无遮挡猛进猛出免费软件 | 日韩综合一区二区 | 999男人的天堂 | 午夜在线免费观看 | 免费91在线 | 国产明星视频三级a三级点| .国产精品成人自产拍在线观看6 | 日韩精品你懂的 | 欧美日韩一区二区三区视频 | 国产一二三精品 | 免费高清在线视频一区· | 亚洲欧美色婷婷 | 国产99久久久国产精品免费看 | 福利视频网站 | 在线综合 亚洲 欧美在线视频 | 久久 一区 | 午夜国产福利在线 | 91网免费看| 四虎影视精品永久在线观看 | 97电影在线看视频 | 99久热在线精品视频观看 | 碰超人人 | 亚洲国产操 | 二区三区毛片 | 国产99久久久国产精品 | 亚洲免费视频在线观看 | 99视频精品| 99久久婷婷 | 日本中文字幕一二区观 | 中文字幕一区二区三区乱码不卡 | 91免费观看视频在线 | 日韩不卡高清视频 | 成人午夜剧场在线观看 | 狠狠色综合网站久久久久久久 | 午夜精品久久久久久久99 | 国内精品亚洲 | 欧美激情第八页 | 欧美精品一区在线发布 | 婷婷精品国产欧美精品亚洲人人爽 | 超碰在线1 | 午夜精品电影 | 精品国产乱码一区二 | 91在线观看视频 | 欧美日韩久久不卡 | 日韩大片在线免费观看 | 在线观看日本高清mv视频 | 免费大片黄在线 | 婷婷丁香色| 伊人婷婷色 | 日韩视频1区 | 欧美一级性生活片 | 国产精品6 | 51久久成人国产精品麻豆 | 久久久免费高清视频 | 人人爱人人做人人爽 | 日韩中文字幕一区 | 欧美日比视频 | 久久久久成 | 中文字幕在线播放第一页 | 在线观看精品一区 | 特级西西www44高清大胆图片 | 久久黄色小说 | av福利在线看 | 国产精品久一 | 天天玩天天操天天射 | 九九视频网 | 碰天天操天天 | 国产99久久久国产精品免费看 | 丁香花五月| 午夜av在线电影 | 黄色在线观看污 | 久草在线免费看视频 | 色综合久久久久久中文网 | 日韩国产欧美在线视频 | 9999精品| 最新一区二区三区 | 国产美女无遮挡永久免费 | 国产一级久久 | 欧美韩国在线 | 久久久久久免费网 | 91av看片 | 97超碰在线久草超碰在线观看 | 亚洲区另类春色综合小说 | 国内精品久久久久影院优 | 国产区欧美 | 成人国产网站 | 亚洲人久久久 | 亚洲少妇久久 | 黄色大片免费播放 | 亚洲精品国偷自产在线99热 | 深爱激情五月综合 | 91麻豆福利| 一本大道久久精品懂色aⅴ 五月婷社区 | 久久香蕉电影网 | 五月婷婷在线视频观看 | 最新国产精品拍自在线播放 | 天堂中文在线视频 | www.狠狠操.com | 91观看视频 | 国产亚洲成av人片在线观看桃 | 五月婷婷在线视频观看 | 国产中文字幕在线免费观看 | 中文字幕在线看视频 | 久久久 激情 | 伊人手机在线 | 国产中文字幕视频在线观看 | 最新91在线视频 | 黄色毛片在线观看 | 日韩大片在线 | 精品国产乱码久久久久久1区2匹 | 日韩色综合| 精品视频免费 | 蜜臀久久99精品久久久无需会员 | 超碰av在线免费观看 | 丝袜美腿一区 | 草在线 |