IP重组与分析笔记
发布时间
阅读量:
阅读量
看过ip协议源码后,将分片与重组注意事项记录下来,以免忘记。
1。ip重组结构体组织形式
要彻底弄通任何代码,则首先要掌握其中的数据结构,并且要超越这些数据结构所执行的操作。
整体而言,所有分片都存储在全局变量ip4_frags中:
#define INETFRAGS_HASHSZ 64
static struct inet_frags ip4_frags->hash
struct hlist_head hash[INETFRAGS_HASHSZ]
此全局变量中还嵌入了一组函数指针,负责处理数据包分割的操作。其中关键的一组函数指针被命名为match,在分片封包队列中进行匹配操作。
每个IP分片都被IP层接收,并以由skb_buff成员next连接构成的链表形式存储;此链表被嵌入到一个代表独立封包的队列数据结构inet_frag_queue中;每个这样的队列数据结构代表唯一的封包;多个封包通过其所属的struct hlist_node列表连接形成链表;最后 inet_frag_queue又被嵌入到更大的IP队列数据机构块(struct ipq)内部;整个数据块还包含了与IP分片相关的关键字段信息
目前关注的结构体包括 struct ipq、struct inet_frag_queue 以及它们与全局成员的哈希数组之间的关系
哈希表的大小预设为64个元素,默认情况下
全部评论 (0)
还没有任何评论哟~
