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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

linux 内核 丢弃分片包,LINUX内核关于IP分片重组问题请教

發(fā)布時(shí)間:2025/3/8 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 内核 丢弃分片包,LINUX内核关于IP分片重组问题请教 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近研究學(xué)習(xí)IP分片重組,也拜讀了不少dx的閱讀理解。可還是有疑問,請(qǐng)教xdm。

源代碼:linux-2.4.26\linux-2.4.26\net\ipv4\ip_fragment.c

IP分片的重組大概經(jīng)過以下幾個(gè)函數(shù):

0/ ip_defrag

1/ ip_find-->ip_frag_create-->ip_frag_intern

2/ ip_frag_queue

3/ ip_frag_reasm

這里定義了一個(gè)結(jié)構(gòu),包括幾個(gè)重組狀態(tài)宏

-------------------------------------

/* Describe an entry in the "incomplete datagrams" queue. */

struct ipq {

struct ipq *next;? /* linked list pointers?? */

struct list_head lru_list; /* lru list member??? */

u32? saddr;

u32? daddr;

u16? id;

u8? protocol;

u8? last_in;

#define COMPLETE? 4

#define FIRST_IN? 2

#define LAST_IN?? 1

struct sk_buff *fragments; /* linked list of received fragments */

int? len;? /* total length of original datagram */

int? meat;

spinlock_t lock;

atomic_t refcnt;

struct timer_list timer; /* when will this queue expire?? */

struct ipq **pprev;

int? iif;

struct timeval stamp;

};

---------------------------

在處理過程當(dāng)中有一個(gè)狀態(tài)為COMPLETE(last_in),此狀態(tài)下如果再來后續(xù)分片都被認(rèn)為無效數(shù)據(jù)丟棄。可我就是沒有看懂什么條件下設(shè)置last_in狀態(tài)為COMPLETE呢?FIRST_IN/LAST_IN都容易理解的。通篇只在函數(shù)static struct ipq *ip_frag_intern(unsigned int hash, struct ipq *qp_in)

看到了對(duì)last_in != COMPLETE的賦值。

請(qǐng)研讀過的xd明示。謝謝了!

我只是看到幾處對(duì)last_in是否等于COMPLETE的判斷,而沒有看到什么地方確定所有分片已經(jīng)到齊而設(shè)置 last_in |= COMPLETE,不知道我是哪里出了問題,請(qǐng)各位朋友指點(diǎn)

總結(jié)

以上是生活随笔為你收集整理的linux 内核 丢弃分片包,LINUX内核关于IP分片重组问题请教的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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