重要数据结构
strcut proto {
int (*close)(struct sock *sk,long timeout);
...........
.........
/*some memory pressure infomation*/
.........
int family;//域指示符
struct module *owner;
int (*release) (struct socket *sock);
int (*bind)(struct socket *sock,struct sockaddr *myaddr,int sockaddr_len);
.......
socket_state state;//socket的状态
short type;//指示域,比如unix inet
unsigned long flags;//标志
struct socket_wq *wq;
struct file *file;//指向VFS的结构,将socket和文件操作联系起来。
struct sock *sk; //socket 表示socket层的信息,sock表示传输层的信息,二者相互指向对方(在执行sys_socket实现)
const struct proto_ops *ops;//指向socket层操作接口
#define sk_family __sk_common.skc_family //socket域指示
#define sk_prot __sk_common.skc_prot //类型是struct proro,指向具体传输层具体操作细节,如果是tcp,指向变量tcp_prot
sk_type // 四层协议指示
struct socket *sk_socket;// 指向相对应的socket层结构
}
strcut proto {
int (*close)(struct sock *sk,long timeout);
...........
.........
/*some memory pressure infomation*/
.........
}//socket 层到传输层的接口,换句话说就是抽象出统一的接口对socket层提供服务,屏蔽udp,tcp的区别
int family;//域指示符
struct module *owner;
int (*release) (struct socket *sock);
int (*bind)(struct socket *sock,struct sockaddr *myaddr,int sockaddr_len);
.......
}//socket 对上层提供的统一接口,屏蔽unix,inet的区别
socket_state state;//socket的状态
short type;//指示域,比如unix inet
unsigned long flags;//标志
struct socket_wq *wq;
struct file *file;//指向VFS的结构,将socket和文件操作联系起来。
struct sock *sk; //socket 表示socket层的信息,sock表示传输层的信息,二者相互指向对方(在执行sys_socket实现)
const struct proto_ops *ops;//指向socket层操作接口
}
#define sk_family __sk_common.skc_family //socket域指示
#define sk_prot __sk_common.skc_prot //类型是struct proro,指向具体传输层具体操作细节,如果是tcp,指向变量tcp_prot
sk_type // 四层协议指示
struct socket *sk_socket;// 指向相对应的socket层结构
}