电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

linuxsk_buff完全剖析与理解VIP免费

linuxsk_buff完全剖析与理解_第1页
1/19
linuxsk_buff完全剖析与理解_第2页
2/19
linuxsk_buff完全剖析与理解_第3页
3/19
sk_buff 目录 1 sk_buff 介绍 2 sk_buff 组成 3 struct sk_buff 结构体 4 sk_buff 成员变量 4.1 Layout 布局 4.2 General 通用 4.3 Feature-specific 功能相关 5 sk_buff 管理和操作函数 5.1 缓冲区操作函数 skb_reserve skb_put skb_push skb_pull 5.2 发送tcp 报文示例 5.3 缓冲区分配、克隆和释放函数alloc_skb skb_clone pskb_copy skb_copy kfree_skb 1 sk_buff 介绍 sk_bu ff(socket bu ffer)结构是 linu x 网络代码中重要的数据结构,它管理和控制接收或发送数据包的信息。 2 sk_buff 组成 Packet data:通过网卡收发的报文,包括链路层、网络层、传输层的协议头和携带的应用数据,包括 head room,data,tail room 三部分。 skb_shared_info 作为 packet data 的补充,用于存储 ip 分片,其中 sk_bu ff *frag_list 是一系列子 skbu ff 链表,而 frag[]是由一组单独的 page 组成的数据缓冲区。 Data bu ffer:用于存储 packet data 的缓冲区,分为以上两部分。 Sk_bu ff:缓冲区控制结构sk_bu ff。 整个 sk_bu ff 结构图如图 1。 图1 sk_buff 结构图 3 stru ct sk_bu ff 结构体 /* struct sk_buff - socket buffer */ struct sk_buff { /* These two members must be first. */ struct sk_buff *next; struct sk_buff *prev; struct sock *sk; struct skb_timeval tstamp; /* Time we arrived,记录接收或发送报文的时间戳*/ struct net_device *dev; /*通过该设备接收或发送,记录网络接口的信息和完成操作 struct net_device *input_dev; /*接收数据的网络设备 struct net_device *curlayer_input_dev; struct net_device *l2tp_input_dev; union { struct tcphdr *th; struct udphdr *uh; struct icmphdr *icmph; struct igmphdr *igmph; struct iphdr *ipiph; head data tail end ...... ...... Head room DATA Tail room … frag_list frags[0] frags[1] … Packet data Data Buffer sk_buff frags[MAX_SKB..] skb_shared_info 分片 1 分片 2 页碎片 struct ipv6hdr *ipv6h; unsigned char *raw; } h; //传输层报头 union { struct iphdr *iph; struct ipv6hdr *ipv6h; struct arphdr *arph; unsigned ch...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

linuxsk_buff完全剖析与理解

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部