一种Linux内核接管socket链接的方法和装置的制造方法

文档序号:9217040阅读:254来源:国知局
一种Linux内核接管socket链接的方法和装置的制造方法
【技术领域】
[0001]本发明涉及控制系统软件设计技术领域,具体涉及一种Linux内核接管socket链接的方法。
【背景技术】
[0002]在Linux操作系统上进行软件设计时,原则之一就是内核空间程序尽量精简,复杂的工作如果不是必须在Linux内核中处理的就尽量放到Linux用户空间去处理。
[0003]在数据通信时,采用socket链接建立的链路,为了确保通信双方参数设置的一致性,以及身份认证的安全性,等等相关链路管理工作是有必要的,并且此类处理更适合在Linux用户空间的程序中执行。如果通信双方被传输的数据都在Linux内核空间中,那么采用socket链接建立链路时,传统的做法一般有两种。一种方法是直接在Linux内核空间建立socket链接,并在Linux内核中完成协商、认证等一系列的链路管理工作,然后用此socket链接传输Linux内核空间中的数据。这种处理的缺点是使得Linux内核增加了不必要的复杂性,违背Linux内核空间程序尽量精简的原则。另一种方法是在Linux用户空间和Linux内核空间分别各建立一条socket链接,然后让这两条链接建立关联关系,协商、认证等链路管理工作由Linux用户空间的socket链接来完成,然后再有Linux内核空间的socket链接开始数据传输。这种处理方式缺点就是带来了 socket资源的浪费。如果对该方法稍作改进,完成协商和认证等链路管理工作之后关闭Linux用户空间中socket链接,但仍然涉及多socket链路相互关联,增加了耦合性和复杂性,并且关闭socket链路的过程需要解除关联,增加了出现故障的概率。

【发明内容】

[0004]为了解决上述技术问题,本发明提供了一种Linux内核接管socket链接的方法和装置,在节约Linux系统资源的条件下,使得同一条socket链接既能在Linux用户空间完成协商和认证等链路管理性工作,又能承担Linux内核空间数据传输任务。
[0005]为了达到本发明目的,本发明提供了一种Linux内核接管socket链接的方法,其特征在于,包括:在用户空间,建立socket链接;在用户空间完成socket链路管理工作;设置Linux内核接管socket,将socket链接下发到内核空间;在内核中使用socket链接传输内核空间的数据。
[0006]进一步地,所述socket链路管理包括:链路协商、和/或身份认证。
[0007]进一步地,在需要内核数据传输前,进行链路协商、和/或身份认证的链路管理。
[0008]进一步地,如果链路协商、和/或身份认证不成功,则关闭socket链接。
[0009]进一步地,所述Linux内核接管包括:将Linux用户空间的socket链接的标识符传递到Linux内核;Linux内核根据socket链接的标识符,获得并标记此socket链接在Linux内核中使用;关闭Linux用户空间的socket。
[0010]进一步地,所述在内核中使用socket链接传输内核空间的数据是利用Linux内核中socket链接的数据发送和接收函数接口进行的。
[0011]为了达到本发明目的,本发明提供了一种用于Linux内核接管socket链接的装置,其特征在于,包括:socket链接建立单元402,用于在用户空间建立socket链接;socket链路管理单元404,用于在用户空间完成链路管理工作;S0Cket链接接管单元406,用于设置socket链接的内核接管;数据传输单元408,用于进行Linux内核空间的数据传输。
[0012]进一步地,所述socket链路管理包括:链路协商、和/或身份认证。
[0013]进一步地,在需要内核数据传输前,进行链路协商、和/或身份认证的链路管理。
[0014]进一步地,所述Linux内核接管包括:将Linux用户空间的socket链接的标识符传递到Linux内核;Linux内核根据socket链接的标识符,获得并标记此socket链接在Linux内核中使用;关闭Linux用户空间的socket。
[0015]进一步地,所述Linux内核空间的数据传输是利用Linux内核中socket链接的数据发送和接收函数接口进行的。
[0016]与现有技术相比,本发明的有益效果是:减少了 Linux操作系统中socket链接资源的浪费,避免了多个socket链接相互关联的复杂性,更加符合Linux操作系统软件的设计原则,为Linux操作系统中socket链接的设计提供了很高的参考价值。
【附图说明】
[0017]附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
[0018]附图1示出了根据本发明一实施例的socket链接在Linux用户空间完成协商和认证的示意图;
[0019]附图2示出了根据本发明一实施例的socket链接进行Linux内核接管的示意图;
[0020]附图3示出了根据本发明一实施例的socket链接在Linux内核空间承担数据传输任务的不意图;
[0021]附图4示出了根据本发明一实施例的Linux内核接管socket链接装置的框图。
【具体实施方式】
[0022]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0023]本发明包括在Linux用户空间创建socket链接,socket链接在Linux用户空间完成协商和认证等链路管理工作,设置Linux内核接管socket链接,Linux内核中使用socket链接传输Linux内核空间的数据。根据本发明的一实施例,下面结合图1-3详细说明Linux内核接管socket链接的方法。
[0024]分布式设备的多个控制器或多个主机运行Linux操作系统,其包括用户空间和内核空间。下面以控制器之间的数据通信为例进行说明,但该数据通信的执行主体不限于控制器之间,也可以是主机之间或控制器与主机之间。
[0025]参考图1,当控制器的内核空间之间需要数据通信时,本端控制器与其他控制器在用户空间通过socket建立链接。
[0026]在Linux用户空间,通过socket链接传输协商和认证信息。进一步地,若链路协商成功且安全认证通过,则继续下边步骤,否则标识该socket链接通信链路不安全,关闭程序。
[0027]参考图2,Linux用户空间socket链接建立的链路协商和认证过程成功后,设置Linux内核接管。
[0028]Linux内核接管可通过如下步骤设置:
[0029]将Linux用户空间的socket链接的标识符传递到
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1