- 浏览: 275100 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
highsky:
再次看到记录上海书城那段文字,自己都想笑笑。本想删点现在觉得幼 ...
模式分类笔记 -- 高斯函数 -
doudoulong2002ok:
加油!努力1我最近非常忙!连睡觉的时候都是挤出来的!不过我好在 ...
回家了一趟 -
doudoulong2002ok:
我的灯有时候亮,有时候不亮!咯咯
你的灯亮着吗?-读书笔记 -
doudoulong2002ok:
豆豆龙飘过!
模式分类笔记 -- 最小二乘法 -
doudoulong2002ok:
是么?我想想
模式分类笔记 -- 线性规划(1)
包含BSD套接口的协议相关信息。例如对于一个INET(Internet Address Domain)套接口此数据结构 包含TCP/IP和UDP/IP信息。
struct sock
{
/* This must be first. */
struct sock *sklist_next;
struct sock *sklist_prev;
struct options *opt;
atomic_t wmem_alloc;
atomic_t rmem_alloc;
unsigned long allocation; /* Allocation mode */
__u32 write_seq;
__u32 sent_seq;
__u32 acked_seq;
__u32 copied_seq;
__u32 rcv_ack_seq;
unsigned short rcv_ack_cnt; /* count of same ack */
__u32 window_seq;
__u32 fin_seq;
__u32 urg_seq;
__u32 urg_data;
__u32 syn_seq;
int users; /* user count */
/*
* Not all are volatile, but some are, so we
* might as well say they all are.
*/
volatile char dead,
urginline,
intr,
blog,
done,
reuse,
keepopen,
linger,
delay_acks,
destroy,
ack_timed,
no_check,
zapped,
broadcast,
nonagle,
bsdism;
unsigned long lingertime;
int proc;
struct sock *next;
struct sock **pprev;
struct sock *bind_next;
struct sock **bind_pprev;
struct sock *pair;
int hashent;
struct sock *prev;
struct sk_buff *volatile send_head;
struct sk_buff *volatile send_next;
struct sk_buff *volatile send_tail;
struct sk_buff_head back_log;
struct sk_buff *partial;
struct timer_list partial_timer;
long retransmits;
struct sk_buff_head write_queue,
receive_queue;
struct proto *prot;
struct wait_queue **sleep;
__u32 daddr; __u32 saddr; /* Sending source */
__u32 rcv_saddr; /* Bound address */
unsigned short max_unacked;
unsigned short window;
__u32 lastwin_seq; /* sequence number when we last
updated the window we offer */
__u32 high_seq; /* sequence number when we did
current fast retransmit */
volatile unsigned long ato; /* ack timeout */
volatile unsigned long lrcvtime; /* jiffies at last data rcv */
volatile unsigned long idletime; /* jiffies at last rcv */
unsigned int bytes_rcv;
/*
* mss is min(mtu, max_window)
*/
unsigned short mtu; /* mss negotiated in the syn's */
volatile unsigned short mss; /* current eff. mss - can change */
volatile unsigned short user_mss; /* mss requested by user in ioctl */
volatile unsigned short max_window;
unsigned long window_clamp;
unsigned int ssthresh;
unsigned short num;
volatile unsigned short cong_window;
volatile unsigned short cong_count;
volatile unsigned short packets_out;
volatile unsigned short shutdown;
volatile unsigned long rtt;
volatile unsigned long mdev;
volatile unsigned long rto;
volatile unsigned short backoff;
int err, err_soft; /* Soft holds errors that don't
cause failure but are the cause
of a persistent failure not
just 'timed out' */
unsigned char protocol;
volatile unsigned char state;
unsigned char ack_backlog;
unsigned char max_ack_backlog;
unsigned char priority;
unsigned char debug;
int rcvbuf;
int sndbuf;
unsigned short type;
unsigned char localroute; /* Route locally only */
/*
* This is where all the private (optional) areas that don't
* overlap will eventually live.
*/
union
{
struct unix_opt af_unix;
#if defined(CONFIG_ATALK) || defined(CONFIG_ATALK_MODULE)
struct atalk_sock af_at;
#endif
#if defined(CONFIG_IPX) || defined(CONFIG_IPX_MODULE)
struct ipx_opt af_ipx;
#endif
#ifdef CONFIG_INET
struct inet_packet_opt af_packet;
#ifdef CONFIG_NUTCP
struct tcp_opt af_tcp;
#endif
#endif
} protinfo; /*
* IP 'private area'
*/
int ip_ttl; /* TTL setting */
int ip_tos; /* TOS */
struct tcphdr dummy_th;
struct timer_list keepalive_timer; /* TCP keepalive hack */
struct timer_list retransmit_timer; /* TCP retransmit timer */
struct timer_list delack_timer; /* TCP delayed ack timer */
int ip_xmit_timeout; /* Why the timeout is running */
struct rtable *ip_route_cache; /* Cached output route */
unsigned char ip_hdrincl; /* Include headers ? */
#ifdef CONFIG_IP_MULTICAST
int ip_mc_ttl; /* Multicasting TTL */
int ip_mc_loop; /* Loopback */
char ip_mc_name[MAX_ADDR_LEN]; /* Multicast device name */
struct ip_mc_socklist *ip_mc_list; /* Group array */
#endif
/*
* This part is used for the timeout functions (timer.c).
*/
int timeout; /* What are we waiting for? */
struct timer_list timer; /* This is the TIME_WAIT/receive
* timer when we are doing IP
*/
struct timeval stamp;
/*
* Identd
*/
struct socket *socket;
/*
* Callbacks
*/
void (*state_change)(struct sock *sk);
void (*data_ready)(struct sock *sk,int bytes);
void (*write_space)(struct sock *sk);
void (*error_report)(struct sock *sk);
};
struct sock
{
/* This must be first. */
struct sock *sklist_next;
struct sock *sklist_prev;
struct options *opt;
atomic_t wmem_alloc;
atomic_t rmem_alloc;
unsigned long allocation; /* Allocation mode */
__u32 write_seq;
__u32 sent_seq;
__u32 acked_seq;
__u32 copied_seq;
__u32 rcv_ack_seq;
unsigned short rcv_ack_cnt; /* count of same ack */
__u32 window_seq;
__u32 fin_seq;
__u32 urg_seq;
__u32 urg_data;
__u32 syn_seq;
int users; /* user count */
/*
* Not all are volatile, but some are, so we
* might as well say they all are.
*/
volatile char dead,
urginline,
intr,
blog,
done,
reuse,
keepopen,
linger,
delay_acks,
destroy,
ack_timed,
no_check,
zapped,
broadcast,
nonagle,
bsdism;
unsigned long lingertime;
int proc;
struct sock *next;
struct sock **pprev;
struct sock *bind_next;
struct sock **bind_pprev;
struct sock *pair;
int hashent;
struct sock *prev;
struct sk_buff *volatile send_head;
struct sk_buff *volatile send_next;
struct sk_buff *volatile send_tail;
struct sk_buff_head back_log;
struct sk_buff *partial;
struct timer_list partial_timer;
long retransmits;
struct sk_buff_head write_queue,
receive_queue;
struct proto *prot;
struct wait_queue **sleep;
__u32 daddr; __u32 saddr; /* Sending source */
__u32 rcv_saddr; /* Bound address */
unsigned short max_unacked;
unsigned short window;
__u32 lastwin_seq; /* sequence number when we last
updated the window we offer */
__u32 high_seq; /* sequence number when we did
current fast retransmit */
volatile unsigned long ato; /* ack timeout */
volatile unsigned long lrcvtime; /* jiffies at last data rcv */
volatile unsigned long idletime; /* jiffies at last rcv */
unsigned int bytes_rcv;
/*
* mss is min(mtu, max_window)
*/
unsigned short mtu; /* mss negotiated in the syn's */
volatile unsigned short mss; /* current eff. mss - can change */
volatile unsigned short user_mss; /* mss requested by user in ioctl */
volatile unsigned short max_window;
unsigned long window_clamp;
unsigned int ssthresh;
unsigned short num;
volatile unsigned short cong_window;
volatile unsigned short cong_count;
volatile unsigned short packets_out;
volatile unsigned short shutdown;
volatile unsigned long rtt;
volatile unsigned long mdev;
volatile unsigned long rto;
volatile unsigned short backoff;
int err, err_soft; /* Soft holds errors that don't
cause failure but are the cause
of a persistent failure not
just 'timed out' */
unsigned char protocol;
volatile unsigned char state;
unsigned char ack_backlog;
unsigned char max_ack_backlog;
unsigned char priority;
unsigned char debug;
int rcvbuf;
int sndbuf;
unsigned short type;
unsigned char localroute; /* Route locally only */
/*
* This is where all the private (optional) areas that don't
* overlap will eventually live.
*/
union
{
struct unix_opt af_unix;
#if defined(CONFIG_ATALK) || defined(CONFIG_ATALK_MODULE)
struct atalk_sock af_at;
#endif
#if defined(CONFIG_IPX) || defined(CONFIG_IPX_MODULE)
struct ipx_opt af_ipx;
#endif
#ifdef CONFIG_INET
struct inet_packet_opt af_packet;
#ifdef CONFIG_NUTCP
struct tcp_opt af_tcp;
#endif
#endif
} protinfo; /*
* IP 'private area'
*/
int ip_ttl; /* TTL setting */
int ip_tos; /* TOS */
struct tcphdr dummy_th;
struct timer_list keepalive_timer; /* TCP keepalive hack */
struct timer_list retransmit_timer; /* TCP retransmit timer */
struct timer_list delack_timer; /* TCP delayed ack timer */
int ip_xmit_timeout; /* Why the timeout is running */
struct rtable *ip_route_cache; /* Cached output route */
unsigned char ip_hdrincl; /* Include headers ? */
#ifdef CONFIG_IP_MULTICAST
int ip_mc_ttl; /* Multicasting TTL */
int ip_mc_loop; /* Loopback */
char ip_mc_name[MAX_ADDR_LEN]; /* Multicast device name */
struct ip_mc_socklist *ip_mc_list; /* Group array */
#endif
/*
* This part is used for the timeout functions (timer.c).
*/
int timeout; /* What are we waiting for? */
struct timer_list timer; /* This is the TIME_WAIT/receive
* timer when we are doing IP
*/
struct timeval stamp;
/*
* Identd
*/
struct socket *socket;
/*
* Callbacks
*/
void (*state_change)(struct sock *sk);
void (*data_ready)(struct sock *sk,int bytes);
void (*write_space)(struct sock *sk);
void (*error_report)(struct sock *sk);
};
发表评论
-
Linux环境进程间通信
2009-06-08 19:53 1204这些确实是最基本最实用的东西,但我想 操作系统实现中最复杂的是 ... -
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核心数据结构--sk_buff
2006-11-10 18:57 1796用来描叙在协议层之间交换的网络数据。 struct sk_b ... -
Linux核心数据结构--semaphore
2006-11-10 18:49 1390保护临界区数据结构和代码信号灯。 struct semaph ... -
Linux核心数据结构--rtable
2006-11-10 18:48 2871用来描叙向某个IP主机发送包的路由信息。此结构在IP路由cac ... -
Linux核心数据结构--request
2006-11-10 18:47 1744被用来向系统的块设备发送请求。它总是向buffer cache ... -
Linux核心数据结构--pci_dev
2006-11-10 18:46 2297表示系统中的每个PCI设备,包括PCI-PCI和PCI-PCI ... -
Linux核心数据结构--pci_bus
2006-11-10 18:43 1931表示系统中的一个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 1954用来保存每个物理页面的信息。 typedef struct ... -
Linux核心数据结构--linux_binfmt
2006-11-10 18:36 1755用来表示可被Linux理解的二进制文件格式。 struct ... -
Linux核心数据结构--irqaction
2006-11-10 18:35 1205用来描叙系统的中断处理过程。 struct irqactio ... -
Linux核心数据结构--ipc_perm
2006-11-10 18:33 1448此结构描叙对一个系统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 1470描叙被某进程打开的所有文件。 struct files_st ...
相关推荐
Linux内核中的sock和socket数据结构是网络编程的核心组成部分,它们是实现网络通信的基础构件。在Linux操作系统中,网络通信的实现依赖于BSD套接字接口,而这一接口在内核中是通过sock和socket数据结构来实现的。 ...
在深入理解Linux内核中的TCP/IP栈之前,了解其基础数据结构至关重要。本节将详细介绍 `socket` 和 `sock` 结构,它们是Linux网络编程的核心组成部分。 ##### Socket结构体 `socket` 结构体是通用的套接字结构,在...
Linux操作系统的核心在于其内核,而内核的高效运行离不开一系列关键的数据结构。这些数据结构在内存管理和系统调用中起到至关重要的作用。本章详细介绍了Linux内核中的一些主要数据结构,它们是构建和管理操作系统...
5. **网络协议栈的调度和队列管理**:如`netpoll`机制用于高效地处理网络事件,`sk_buff`(socket buffer)数据结构用于缓冲网络数据。 通过注释和流程分析,你可以看到每个函数的调用顺序,理解数据包是如何从物理...
### Linux 内核 Socket 相关数据结构介绍 #### 一、引言 在 Linux 内核中,网络通信的核心是 Socket。为了更好地理解和掌握 Socket 的工作原理与内部机制,了解其相关的数据结构至关重要。本文将详细介绍 Linux ...
- Linux文件系统采用层次结构,根目录`/`下包含各种系统目录,如`/bin`(基本命令)、`/usr`(用户程序)和`/etc`(配置文件)。 2. **进程管理**: - 进程是程序的执行实例,Linux提供了创建、终止、控制进程的...
《Linux数据结构》一书详尽地介绍了在Linux操作系统中使用的关键数据结构,这些数据结构是内核功能的基础。在Linux内核中,数据结构扮演着至关重要的角色,因为它们被用来组织和管理系统的资源,如文件、内存、设备...
本文档旨在深入探讨Zynq平台上的Linux内核外设驱动开发与工作原理,特别是针对Zynq架构下的核心外设(如NAND Flash、以太网、串口、USB协议栈)的初始化与驱动程序分析。考虑到Zynq采用了SMP(Symmetric Multi-...
Linux操作系统的核心在于其内核,而内核的高效运行离不开一系列关键的数据结构。这些数据结构在Linux中扮演着至关重要的角色,它们是操作系统理解和管理硬件、文件系统、进程、网络等核心功能的基础。以下是根据标题...
4. **数据结构**:`struct pfkey_sock`扩展了常规的`struct sock`结构,用于管理PF_KEY套接字。其中,`registered`和`promisc`字段分别表示是否已登记和是否处于混杂模式。`struct xfrm_state`则包含了SA的具体实现...
下面详细介绍 Linux 内核链表数据结构的核心概念及其实现细节。 ##### 数据结构定义 内核链表的基本单位是 `struct list_head` 结构体,它包含了两个指针:`prev` 和 `next`,用于连接前后节点。这种双向链表的...
- **实现**:`struct sock`是Linux中用来表示套接字的主要数据结构,它定义了套接字的状态和操作方法。每个套接字都有一个关联的`proto`结构,该结构定义了如何在套接字层和传输层之间执行特定操作。 3. **网络...
23. **task_struct**: 核心数据结构之一,表示系统中的进程或任务,包含了进程的状态、资源分配等信息。 24. **timer_list**: 用于实现进程的实时定时器,处理定时事件。 25. **tq_struct**: 在调度队列中,每个`...
1. sock 结构体:sock 结构体是 Linux 内核中网络子系统的核心数据结构,它描述了一个网络套接字的所有信息。 2. inet 结构体:inet 结构体是 Linux 内核中 inet 层的数据结构,它描述了一个 IPv4 或 IPv6 的网络套...
Socket分为两种类型:流式Socket(SOCK_STREAM,对应TCP)和数据报式Socket(SOCK_DGRAM,对应UDP)。 2. **Socket的建立与配置** - `socket()`函数:用于创建一个新的Socket,返回一个用于后续操作的Socket描述符...
通过对`sk_write_queue`和`sk_send_head`等关键数据结构的理解,以及对发送函数间关系的分析,我们可以更深入地了解TCP是如何管理和控制数据包的发送流程的。此外,发送前的克隆过程保证了数据包在传输过程中的可靠...
5. inet_protosw(协议交换表):inet_protosw 结构体是 Linux 网络子系统的核心数据结构之一,用于描述协议栈的交换表。 三、Linux 网络子系统的分析 Linux 网络子系统的分析是了解 Linux 网络子系统的核心组件和...