科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux内核2.4.x的网络接口结构(二) (5)

Linux内核2.4.x的网络接口结构(二) (5)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

系统调用socket(),bind(),connect(),accept,send(),release()等是在Linux/net/socket.c里面实现的,系统调用实现的函数是相应的函数名加上sys_的前缀。

作者:hcyo 来源:赛迪网技术社区 2007年10月31日

关键字: 接口 网络 内核 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

六 Socket层

上一节把socket层大多数要讨论的东西都谈论了,现在只讲讲socket 层和用户的衔接。

系统调用socket(),bind(),connect(),accept,send(),release()等是在Linux/net/socket.c里面实现的,系统调用实现的函数是相应的函数名加上sys_的前缀。

现在看看当用户调用socket()这个函数,到底下面发生了什么。

Socket(AF_INET,SOCK_STREAM,0)调用了sys_socket(),sys_socket()接着调用socket_creat(),socket_creat()就要根据用户提供的协议族参数在net_families[]里寻找合适的协议族,如果协议族没有被安装就要请求安装该协议族的模块,然后就调用该协议族的create()函数的处理句柄。根据参数AF_INET,inet_creat()就被调用了,在inet_creat()根据服务类型在inetsw[SOCK_MAX]选择合适的协议,并把协议的操作集赋给socket就是了,根据SOCK_STREAM,TCP协议被选中,

inet_creat(){ 
  answer=inetsw [用户要求服务] ; 
  sock->ops = answer->ops; 
  sk->prot = answer->prot 
  }

到此为止,上下都打通了,该是大家读源码的时候了。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章