- 浏览: 275069 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
highsky:
再次看到记录上海书城那段文字,自己都想笑笑。本想删点现在觉得幼 ...
模式分类笔记 -- 高斯函数 -
doudoulong2002ok:
加油!努力1我最近非常忙!连睡觉的时候都是挤出来的!不过我好在 ...
回家了一趟 -
doudoulong2002ok:
我的灯有时候亮,有时候不亮!咯咯
你的灯亮着吗?-读书笔记 -
doudoulong2002ok:
豆豆龙飘过!
模式分类笔记 -- 最小二乘法 -
doudoulong2002ok:
是么?我想想
模式分类笔记 -- 线性规划(1)
用来描叙在协议层之间交换的网络数据。
struct sk_buff
{
struct sk_buff *next; /* Next buffer in list */
struct sk_buff *prev; /* Previous buffer in list */
struct sk_buff_head *list; /* List we are on */
int magic_debug_cookie;
struct sk_buff *link3; /* Link for IP protocol level buffer chains */
struct sock *sk; /* Socket we are owned by */
unsigned long when; /* used to compute rtt's */
struct timeval stamp; /* Time we arrived */
struct device *dev; /* Device we arrived on/are leaving by */
union
{
struct tcphdr *th;
struct ethhdr *eth;
struct iphdr *iph;
struct udphdr *uh;
unsigned char *raw; /* for passing file handles in a unix domain socket */
void *filp;
} h;
union
{
/* As yet incomplete physical layer views */
unsigned char *raw;
struct ethhdr *ethernet;
} mac;
struct iphdr *ip_hdr; /* For IPPROTO_RAW */
unsigned long len; /* Length of actual data */
unsigned long csum; /* Checksum */
__u32 saddr; /* IP source address */
__u32 daddr; /* IP target address */
__u32 raddr; /* IP next hop address */
__u32 seq; /* TCP sequence number */
__u32 end_seq; /* seq [+ fin] [+ syn] + datalen */
__u32 ack_seq; /* TCP ack sequence number */
unsigned char proto_priv[16];
volatile char acked, /* Are we acked ? */
used, /* Are we in use ? */
free, /* How to free this buffer*/
arp; /* Has IP/ARP resolution finished */
unsigned char tries, /* Times tried */
lock, /* Are we locked ? */
localroute, /* Local routing asserted for this frame */
pkt_type, /* Packet class */
pkt_bridged, /* Tracker for bridging */
ip_summed; /* Driver fed us an IP checksum */
#define PACKET_HOST 0 /* To us */
#define PACKET_BROADCAST 1 /* To all */
#define PACKET_MULTICAST 2 /* To group */
#define PACKET_OTHERHOST 3 /* To someone else */
unsigned short users; /* User count - see datagram.c,tcp.c */
unsigned short protocol; /* Packet protocol from driver. */
unsigned int truesize; /* Buffer size */
atomic_t count; /* reference count */
struct sk_buff *data_skb; /* Link to the actual data skb */
unsigned char *head; /* Head of buffer */
unsigned char *data; /* Data head pointer */
unsigned char *tail; /* Tail pointer */
unsigned char *end; /* End pointer */
void (*destructor)(struct sk_buff *); /* Destruct function */
__u16 redirport; /* Redirect port */
};
struct sk_buff
{
struct sk_buff *next; /* Next buffer in list */
struct sk_buff *prev; /* Previous buffer in list */
struct sk_buff_head *list; /* List we are on */
int magic_debug_cookie;
struct sk_buff *link3; /* Link for IP protocol level buffer chains */
struct sock *sk; /* Socket we are owned by */
unsigned long when; /* used to compute rtt's */
struct timeval stamp; /* Time we arrived */
struct device *dev; /* Device we arrived on/are leaving by */
union
{
struct tcphdr *th;
struct ethhdr *eth;
struct iphdr *iph;
struct udphdr *uh;
unsigned char *raw; /* for passing file handles in a unix domain socket */
void *filp;
} h;
union
{
/* As yet incomplete physical layer views */
unsigned char *raw;
struct ethhdr *ethernet;
} mac;
struct iphdr *ip_hdr; /* For IPPROTO_RAW */
unsigned long len; /* Length of actual data */
unsigned long csum; /* Checksum */
__u32 saddr; /* IP source address */
__u32 daddr; /* IP target address */
__u32 raddr; /* IP next hop address */
__u32 seq; /* TCP sequence number */
__u32 end_seq; /* seq [+ fin] [+ syn] + datalen */
__u32 ack_seq; /* TCP ack sequence number */
unsigned char proto_priv[16];
volatile char acked, /* Are we acked ? */
used, /* Are we in use ? */
free, /* How to free this buffer*/
arp; /* Has IP/ARP resolution finished */
unsigned char tries, /* Times tried */
lock, /* Are we locked ? */
localroute, /* Local routing asserted for this frame */
pkt_type, /* Packet class */
pkt_bridged, /* Tracker for bridging */
ip_summed; /* Driver fed us an IP checksum */
#define PACKET_HOST 0 /* To us */
#define PACKET_BROADCAST 1 /* To all */
#define PACKET_MULTICAST 2 /* To group */
#define PACKET_OTHERHOST 3 /* To someone else */
unsigned short users; /* User count - see datagram.c,tcp.c */
unsigned short protocol; /* Packet protocol from driver. */
unsigned int truesize; /* Buffer size */
atomic_t count; /* reference count */
struct sk_buff *data_skb; /* Link to the actual data skb */
unsigned char *head; /* Head of buffer */
unsigned char *data; /* Data head pointer */
unsigned char *tail; /* Tail pointer */
unsigned char *end; /* End pointer */
void (*destructor)(struct sk_buff *); /* Destruct function */
__u16 redirport; /* Redirect port */
};
发表评论
-
Linux环境进程间通信
2009-06-08 19:53 1203这些确实是最基本最实用的东西,但我想 操作系统实现中最复杂的是 ... -
Linux核心数据结构--vm_area_struct
2006-11-10 19:12 4090表示某进程的一个虚拟内存区域。 struct vm_area ... -
Linux核心数据结构--tq_struct
2006-11-10 19:10 2399每个任务队列结构(tq_struct)包含着已经排队的任务信息 ... -
Linux核心数据结构--timer_list
2006-11-10 19:09 2475用来为进程实现实时时钟。 struct timer_list ... -
Linux核心数据结构--socket
2006-11-10 19:05 1357包含BSD套接口的信息。它不独立存在,一般位于一个VFS in ... -
Linux核心数据结构--sock
2006-11-10 19:03 2086包含BSD套接口的协议相关信息。例如对于一个INET(Inte ... -
Linux核心数据结构--semaphore
2006-11-10 18:49 1389保护临界区数据结构和代码信号灯。 struct semaph ... -
Linux核心数据结构--rtable
2006-11-10 18:48 2871用来描叙向某个IP主机发送包的路由信息。此结构在IP路由cac ... -
Linux核心数据结构--request
2006-11-10 18:47 1743被用来向系统的块设备发送请求。它总是向buffer cache ... -
Linux核心数据结构--pci_dev
2006-11-10 18:46 2297表示系统中的每个PCI设备,包括PCI-PCI和PCI-PCI ... -
Linux核心数据结构--pci_bus
2006-11-10 18:43 1930表示系统中的一个PCI总线。 struct pci_bus ... -
Linux核心数据结构--mm_struct
2006-11-10 18:40 3958用来描叙某任务或进程的虚拟内存。 struct mm_str ... -
Linux核心数据结构--mem_map_t
2006-11-10 18:38 1953用来保存每个物理页面的信息。 typedef struct ... -
Linux核心数据结构--linux_binfmt
2006-11-10 18:36 1755用来表示可被Linux理解的二进制文件格式。 struct ... -
Linux核心数据结构--irqaction
2006-11-10 18:35 1204用来描叙系统的中断处理过程。 struct irqactio ... -
Linux核心数据结构--ipc_perm
2006-11-10 18:33 1447此结构描叙对一个系统V IPC对象的存取权限。 struct ... -
Linux核心数据结构--inode
2006-11-10 18:32 2657此VFS inode结构描叙磁盘上一个文件或目录的信息。 s ... -
Linux核心数据结构--gendisk
2006-11-10 18:31 4296包含关于某个硬盘的信息。用于磁盘初始化与分区检查时。 str ... -
Linux核心数据结构--fs_struct
2006-11-10 18:27 1575这个还不知道是啥 struct fs_struct { ... -
Linux核心数据结构--files_struct
2006-11-10 18:26 1469描叙被某进程打开的所有文件。 struct files_st ...
相关推荐
Linux kernel 中的 sk_buff 结构是网络代码中最重要的数据结构之一,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用。本结构被网络的不同层(MAC 或者其他二层链路协议,三层的 ...
Linux SK_BUFF 结构体是网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息。该结构体在 Linux 内核中定义,并包含很多成员变量供网络代码中的各子系统使用。 SK_BUFF 结构体的成员变量包括: * ...
`sk_buff`结构体在`<include/linux/skbuff.h>`文件中定义,随着Linux内核版本的演进,其内部结构也经历了多次调整与优化。 #### 二、`sk_buff`结构的重要性 `sk_buff`结构之所以重要,主要因为它承载着数据包从低层...
`struct sk_buff` 是 Linux 网络子系统中最核心的数据结构之一,主要用于表示接收或发送的数据包的头部信息。该结构体包含了一系列成员变量,这些变量被网络栈的不同层(如 MAC 层、IP 层、TCP/UDP 层等)广泛使用。...
在Linux操作系统中,网络数据传输的核心在于一个名为`sk_buff`(socket buffer)的数据结构。这个结构体在Linux内核的网络子系统中扮演着至关重要的角色,它封装了网络数据包,使得内核能够高效地处理网络通信。`skb...
在Linux内核网络模块中,核心数据结构sk_buff(socket buffer)承担着传输数据包的主要职责。sk_buff是网络层与链路层交互的桥梁,它管理着网络包从进入系统到离开系统过程中所需的信息,并且在整个过程中提供高效的...
5. **网络协议栈的调度和队列管理**:如`netpoll`机制用于高效地处理网络事件,`sk_buff`(socket buffer)数据结构用于缓冲网络数据。 通过注释和流程分析,你可以看到每个函数的调用顺序,理解数据包是如何从物理...
内核网络子系统提供了网络协议栈,包括`socket`接口,`sk_buff`数据结构,以及`net_device`结构体,用于驱动网络设备和处理网络数据包。 9. **定时器和延迟**: `setTimeout`, `mod_timer`, `del_timer`等函数...
`nf_conntrack` 结构体是用于跟踪网络连接状态的核心数据结构之一,在 Linux 内核的 netfilter 架构中扮演着重要角色。该结构体定义如下: ```c struct nf_conntrack { atomic_t use; // 使用计数器,用于跟踪引用...
该结构在 `<include/linux/skbuff.h>` 中定义,并包含了许多成员变量供网络代码中的各子系统使用。 skb_buf 结构体的成员变量可以大致分为以下几类: 1. 布局(Layout):指 skb_buf 结构体的内存布局。 2. 通用...
- **`clear_inode`**:清除 inode 的数据结构,准备用于下一个文件。 - **`invalidate_inodes`**:使一组 inodes 无效,通常是文件系统卸载前的操作。 - **`get_empty_inode`**:获取一个空闲的 inode 结构。 - **`...
skb-buf 结构在 <include/linux/skbuff.h> 中定义,并包含很多成员变量供网络代码中的各子系统使用。 skb-buf 结构可以大致分为以下几类: 1. Layout 布局 2. General 通用 3. Feature-specific 功能相关 4. ...
3. sk_buff(socket buffer):`sk_buff`是Linux内核中用于网络数据传输的数据结构,全称为socket buffer。它封装了网络数据包,并包含了数据包的相关信息,如头部、数据、控制信息等。`sk_buff`在内核的网络协议栈...
几个月之前做了关于Linux内核版本1.2.13网络栈的结构框架分析并实现了基于Netfilter的包过滤防火墙,这里以内核3.2.1内核为例来进一步分析,更全面的分析网络栈的结构。 1、先说一下sk_buff结构体 这个...
sk_buff 结构是 Linux 网络代码中最重要的数据结构,它在 `<include/linux/skbuff.h>` 中定义,并包含很多成员变量供网络代码中的各子系统使用。 sk_buff 结构的成员变量可以大致分为四类: 1. 布局(Layout)成员...
`skbuff.c`中的`struct sk_buff`是Linux内核中网络数据包的通用缓冲区结构。它管理数据包的内存分配和释放,以及数据包在协议栈中的传递。 8. **多线程与并发处理** Linux内核的网络栈设计为多线程并行处理,利用...
- `struct sk_buff_head txq`:网络缓冲区队列,用于存储待发送的数据包。 - `struct net_device_stats stats`:网卡状态信息结构,记录设备的统计信息。 #### 驱动例程 Tun/Tap驱动中实现了一系列关键例程: - `...
Linux内核中的`skb_buff`(socket buffer)是网络数据栈中的核心数据结构,它用于存储网络传输的数据包。在`<include/linux/skbuff.h>`中定义,`skb_buff`不仅包含了网络数据包的基本信息,还具备了管理数据包在不同...