Linux 协议栈中重要数据介绍

重要数据结构
strcut proto {
    int (*close)(struct sock *sk,long timeout);
    ...........
    .........
    /*some memory pressure infomation*/
    .........    

}//socket 层到传输层的接口,换句话说就是抽象出统一的接口对socket层提供服务,屏蔽udp,tcp的区别


struct proto_ops{
    int family;//域指示符
    struct module *owner;
    int (*release) (struct socket *sock);
    int (*bind)(struct socket *sock,struct sockaddr *myaddr,int sockaddr_len);
    .......

}//socket 对上层提供的统一接口,屏蔽unix,inet的区别


struct socket{
    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层操作接口

}


struct sock { //该结构比较复杂,包含了所有传输层操作所需的细节,我只列出我能理解的部分
    #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层结构

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值