日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

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

最近研究學習IP分片重組,也拜讀了不少dx的閱讀理解。可還是有疑問,請教xdm。

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

IP分片的重組大概經過以下幾個函數:

0/ ip_defrag

1/ ip_find-->ip_frag_create-->ip_frag_intern

2/ ip_frag_queue

3/ ip_frag_reasm

這里定義了一個結構,包括幾個重組狀態宏

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

/* 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;

};

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

在處理過程當中有一個狀態為COMPLETE(last_in),此狀態下如果再來后續分片都被認為無效數據丟棄??晌揖褪菦]有看懂什么條件下設置last_in狀態為COMPLETE呢?FIRST_IN/LAST_IN都容易理解的。通篇只在函數static struct ipq *ip_frag_intern(unsigned int hash, struct ipq *qp_in)

看到了對last_in != COMPLETE的賦值。

請研讀過的xd明示。謝謝了!

我只是看到幾處對last_in是否等于COMPLETE的判斷,而沒有看到什么地方確定所有分片已經到齊而設置 last_in |= COMPLETE,不知道我是哪里出了問題,請各位朋友指點

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。