`
yunfuby1
  • 浏览: 10532 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

深入理解Linux内核网络技术内幕之关键数据结构--skbuff

阅读更多
1、 skb->users 与skb->dataref的区别
        skb->users:当引用数目增加时,该值和skb->dataref都会增加
        skb->dataref:当skb被clone时,只有skb->dataref会增加,而被clone的skb的skb->users=1
2、 pskb->copy与skb->copy
        pskb->copy:只拷贝skb数据结构,不拷贝缓冲区内容
        skb->copy  :拷贝skb数据结构也会拷贝缓冲区内容
3、 skb的操作函数:reverse,put,push,pull,实际上只是修改了指针,并未真正的添加或者删除数据
        put: 移动 skb->tail, skb->tail + n, 一般作用是添加数据
        reverse: 这个函数移动了skb->data 和skb->tail指针,主要的作用是强制对齐,经常在分配完skb后会立刻被调用
        push: 移动 skb->data指针, skb->data - n, 一般作用是 添加协议首部
        pull: 移动 skb->data指针, skb->data + n, 一般作用是 删除协议首部
4、 skb 的链表操作函数
       skb_queue_head_init: 初始化双向链表
       skb_queue_head, skb_queue_tail: 把缓冲区分别添加到队列的头和尾
       skb_dequeue, skb_dequeue_tail:把一个元素从队列的首部或者尾部删除
       skb_queue_purge: 把队列变为空队列
       skb_queue_walk:依次循环运行队列中的每个元素
分享到:
评论

相关推荐

    深入理解Linux网络技术内幕(中英文)

    《深入理解Linux网络技术内幕》是一本专注于探讨Linux操作系统网络技术的专业书籍,涵盖了从底层网络设备驱动到上层协议栈的全面内容。该书不仅提供了中文版,还附带了英文版,对于学习和研究Linux网络技术的读者来...

    深入理解linux网络内幕

    《深入理解Linux网络内幕》一书致力于探索Linux操作系统中网络功能的实现原理,为读者提供了一个深入了解内核网络代码的机会。以下是对该书标题、描述、标签以及部分内容的知识点提炼和扩展。 ### 核心概念 #### ...

    深入理解linux内核word版本

    通过以上内容,我们可以看到,《深入理解Linux内核》不仅覆盖了内核的基本概念,还深入到具体的数据结构和机制,对于开发者和系统管理员来说,这是一份宝贵的参考资料。通过学习这本书,读者不仅可以了解Linux内核的...

    Linux网络体系结构 Linux内核中网络协议的设计与实现

    通过阅读《Linux网络体系结构:Linux内核中网络协议的设计与实现》,读者可以深入理解Linux网络的工作原理,这对于系统管理员、开发人员和研究人员来说是不可或缺的知识。书中详细解释了内核源码中的关键部分,并...

    understanding linux network internals

    《深入理解Linux网络内幕》是一本面向对Linux网络感兴趣的读者的专业书籍,它详细解析了Linux内核如何处理复杂的IP协议任务。这本书不仅适合已经熟悉TCP/IP协议的读者,也适合希望通过真实案例学习现代网络的人。书...

    linux sk_buff结构详解

    Linux kernel 中的 sk_buff 结构是网络代码中最重要的数据结构之一,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用。本结构被网络的不同层(MAC 或者其他二层链路协议,三层的 ...

    linux数据栈的关键数据结构skb_buf

    Linux 数据栈中的关键数据结构 skb_buf 是网络代码中最重要的数据结构之一,它表示接收或发送数据包的包头信息。该结构在 `<include/linux/skbuff.h>` 中定义,并包含了许多成员变量供网络代码中的各子系统使用。 ...

    深入分析Linux内核源码.chm

    1.5 Linux内核结构 1.6 Linux内核源代码 1.7 Linux内核源代码分析工具 第二章 Linux运行的硬件基础 2.1 i386的寄存器 2.2 内存地址 2.3 段机制和描述符 2.4 分页机制 2.5 Linux中的分页机制 2.6 Linux中的汇编语言 ...

    linux下的sk_buff

    `sk_buff`作为Linux内核网络子系统的核心数据结构之一,其设计和实现对于理解和优化网络性能至关重要。通过对`sk_buff`结构的理解和应用,开发人员可以更深入地探索Linux内核网络栈的工作原理,并为开发高性能的网络...

    [linux]sk_buff结构体详解

    Linux SK_BUFF 结构体是网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息。该结构体在 Linux 内核中定义,并包含很多成员变量供网络代码中的各子系统使用。 SK_BUFF 结构体的成员变量包括: * ...

    Linux 4.4.0内核源码分析TCP实现

    3. sk_buff 结构体:sk_buff 结构体是 Linux 内核中网络子系统的数据结构,它描述了一个网络数据包的信息。 Linux 4.4.0 内核源码中 TCP 实现的主要函数包括: 1. tcp_sendmsg 函数:tcp_sendmsg 函数是用户层 TCP...

    LINUX-1.2.13内核网络栈实现源代码分析

    - **sk_buff** 是 Linux 内核中的一个重要数据结构,用于在网络栈内部表示数据包。 - 在早期版本如 **1.2.13** 中,**sk_buff** 的管理和操作通常是直接在代码中实现的,没有专门的函数集。 - 随着内核的发展,针对 ...

    linux数据栈的关键数据结构skb-buf.doc

    Linux 数据栈的关键数据结构是 skb-buf,它是 Linux 网络代码中最重要的数据结构,表示接收或发送数据包的包头信息。skb-buf 结构在 <include/linux/skbuff.h> 中定义,并包含很多成员变量供网络代码中的各子系统...

    LINUX-1.2.13内核网络栈实现源代码分析.pdf

    2. **网络数据包处理**:探讨了数据包在网络栈中的传递过程,包括接收、发送、转发等关键步骤,并详细解释了sk_buff结构的作用及其在不同版本中的变化。 3. **协议实现**:对TCP/IP协议栈的具体实现进行了深入剖析...

    深入分析Linux内核源码

    深入分析Linux内核源码 前言 第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.3.1 Linux内核的特征 1.3.2 Linux内核版本的变化 1.4 分析Linux内核的意义 ...

    Linux-Skb_buff.rar_linux s_linux skb_linux skb结构_skb_buff

    在Linux操作系统中,网络数据传输的核心在于一个名为`sk_buff`(socket buffer)的数据结构。这个结构体在Linux内核的网络子系统中扮演着至关重要的角色,它封装了网络数据包,使得内核能够高效地处理网络通信。`skb...

Global site tag (gtag.js) - Google Analytics