System and method using user layer network solution

The system addresses compatibility and event notification issues in ULN solutions by using a ULNs loader and manager to adapt network function calls and responses, ensuring efficient and unified network processing across different resources.

WO2025135485A1PCT designated stage expired Publication Date: 2025-06-26SAMSUNG ELECTRONICS CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/KR2024/017289
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-01-08
Filing Date
2024-11-05
Publication Date
2025-06-26

AI Technical Summary

Technical Problem

Existing User-Layer Network (ULN) solutions face challenges in compatibility and event notification handling due to the lack of a standardized API and incompatibility with system file descriptors, which complicates the processing of network packets and event notifications across different network resources.

Method used

A system and method that utilize a ULNs loader to detect application execution and load the corresponding ULNs manager, which intercepts and adapts network function calls, changes their parameters to fit the ULNs format, and returns responses in a library-compatible format, ensuring seamless integration with both ULNs and system resources.

Benefits of technology

This approach enables efficient and compatible processing of network packets and event notifications across ULNs and system resources, enhancing network performance and simplifying application development by providing a unified interface for network operations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure KR2024017289_26062025_PF_FP_ABST
    Figure KR2024017289_26062025_PF_FP_ABST
Patent Text Reader

Abstract

The present disclosure relates to a system and method using a user-layer network solution (ULNs), and may comprise the operations of: when a ULNs loader detects execution of an application program, checking whether or not a ULNs manager corresponding to the application program is present; when the ULNs manager corresponding to the application program is present on the basis of a result of the checking, loading, by the ULNs loader, the ULNs manager corresponding to the application program; when the application program calls a function related to a network, if the ULNs manager corresponding to the application program is present, transmitting, by a system call hooker, the called function to the ULNs manager; and when the ULNs manager receives the called function, calling the called function by changing a parameter of the called function to match the form of a corresponding function of a ULNs, and when a response corresponding to the called function is received, changing the response to match the form of a library and transmitting the response to the application program.
Need to check novelty before this filing date? Find Prior Art

Description

Systems and methods using user-layer network solutions

[0001] The following embodiments relate to an operating system and relate to a technology using a user layer network solution.

[0002] Generally, the network functions are implemented within the kernel of the operating system, and the commonly mentioned TCP (Transmission Control Protocol), IP (Internet Protocol), and NIC (Network Interface Card) drivers are implemented here, and the part that implements sockets, packet filters, routes, etc. so that TCP / IP and these protocols can be used by applications is called the network stack.

[0003] As network infrastructure speeds increase and the amount of data to be processed at both terminals and servers grows, network packet processing speed becomes increasingly critical. Therefore, network packet processing must be prioritized and processed quickly, but it must not interfere with other tasks, so it is typically handled within the kernel.

[0004] It is common for the network stack to be implemented within the operating system, but there are some limitations due to its implementation in the kernel, and there are cases where the network stack is implemented in the user layer rather than the kernel to process network packets for special purposes of the application.

[0005] However, when applying the currently commercialized User-Layer Network solution (ULNs), the application's network processing must be newly developed using the framework or API (Application Programming Interface) of the solution's own style. However, it is not standardized to use a common API for each solution, and even if it is implemented in the form of an API similar to a standard library (libc), it is not directly compatible with the file descriptor (hereinafter referred to as fd), which is a socket resource management number obtained through the system. It is not possible to receive event notifications at the same time for fds created through the system and fds obtained through ULNs. If the application is implemented to receive a file resource and a single event notification when using a network resource, modifications to the existing implementation are inevitable.

[0006] When an application calls one of the three functions, poll, select, or epoll_wait, to receive an event notification, the control is transferred to the system until it returns. When receiving this event notification, fd is used, and fd cannot be received only once, but multiple fds can be received together and event completion can be processed at the same time. If the fd of the socket created from ULNs and the fd for file I / O and pipe created by the system are entered into the event notification function together, a method is needed to process them at the same time.

[0007] A method of using a user-layer network solution according to one embodiment may include: when a ULNs (User-Layer Network solution) loader detects the execution of an application, checking whether a ULNs manager corresponding to the application exists; if the ULNs manager corresponding to the application exists as a result of the checking, loading the ULNs manager corresponding to the application from the ULNs loader; if the ULNs manager corresponding to the application exists in a system call hooker when the application calls a function related to a network, sending the called function to the ULNs manager; and when the ULNs manager receives the called function, calling the called function by changing parameters of the called function to fit the form of a function of the corresponding ULNs, and when receiving a response corresponding to the called function, changing the response to fit the form of a library and sending it to the application.

[0008] A system using a user-layer network solution according to one embodiment comprises: a memory; and a processor, wherein the processor, when detecting the execution of an application in a ULNs (User-Layer Network solution) loader, checks whether a ULNs manager corresponding to the application exists, and if the ULNs manager corresponding to the application exists, loads the ULNs manager corresponding to the application in the ULNs loader, and when the application calls a function related to a network, if the ULNs manager corresponding to the application exists in a system call hooker, transmits the called function to the ULNs manager, and when the ULNs manager receives the called function, changes parameters of the called function to fit the form of a function of the corresponding ULNs and calls the function, and when receiving a response corresponding to the called function, changes the response to fit the form of a library and transmits it to the application.

[0009] FIG. 1 is a diagram illustrating the configuration of a system using a user layer network solution according to one embodiment.

[0010] FIG. 2 is a flowchart illustrating a method for enabling a user layer network solution to be used in an application according to one embodiment.

[0011] FIG. 3 is a flowchart illustrating a method for creating a socket when using a user layer network solution in an application according to one embodiment.

[0012] FIG. 4 is a flowchart illustrating a method for performing a connect function when using a user layer network solution in an application according to one embodiment.

[0013] FIG. 5 is a flowchart illustrating a method for performing a send function when using a user layer network solution in an application according to one embodiment.

[0014] FIG. 6 is a flowchart illustrating a method for performing a receive function when using a user layer network solution in an application according to one embodiment.

[0015] FIG. 7 is a flowchart illustrating a method for processing an event completion notification related to reception in an asynchronous input / output manner when using a user layer network solution in an application according to one embodiment.

[0016] FIG. 8 is a flowchart illustrating a method for processing event completion notifications related to transmission in an asynchronous input / output manner when using a user layer network solution in an application according to one embodiment.

[0017] FIG. 9 is a schematic diagram illustrating a configuration of an electronic device using a user layer network solution according to one embodiment.

[0018] FIG. 10 is a block diagram of an electronic device within a network environment according to one embodiment.

[0019] Hereinafter, embodiments are described in detail with reference to the attached drawings. However, the embodiments may be modified in various ways, and the scope of the patent application is not limited or restricted by these embodiments. It should be understood that all modifications, equivalents, or alternatives to the embodiments are included within the scope of the patent application.

[0020] The terms used in the examples are for illustrative purposes only and should not be construed as limiting. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "have" are intended to indicate the presence of a feature, number, step, operation, component, part, or combination thereof described in the specification, but should be understood to not preclude the presence or addition of one or more other features, numbers, steps, operations, components, parts, or combinations thereof.

[0021] Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person of ordinary skill in the art to which the embodiments pertain. Terms defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the relevant technology, and shall not be interpreted in an idealized or overly formal sense unless explicitly defined herein.

[0022] In addition, when describing with reference to the attached drawings, identical components will be assigned the same reference numerals regardless of the drawing numbers, and redundant descriptions thereof will be omitted. When describing embodiments, if a detailed description of a related known technology is judged to unnecessarily obscure the gist of the embodiment, the detailed description will be omitted.

[0023] Additionally, terms such as first, second, A, B, (a), (b), etc. may be used to describe components of the embodiments. These terms are only intended to distinguish the components from other components, and the nature, order, or sequence of the components are not limited by the terms. When a component is described as being "connected," "coupled," or "connected" to another component, it should be understood that the component may be directly connected or connected to the other component, but another component may also be "connected," "coupled," or "connected" between each component.

[0024] Components included in one embodiment and components with common functions will be described using the same names in other embodiments. Unless otherwise stated, the descriptions given in one embodiment may also apply to other embodiments, and detailed descriptions will be omitted to the extent of overlap.

[0025] Hereinafter, a system and method using a user layer network solution according to an embodiment of the present invention will be described in detail with reference to the attached FIGS. 1 to 9.

[0026] FIG. 1 is a diagram illustrating the configuration of a system using a user layer network solution according to one embodiment.

[0027] Referring to FIG. 1, the system (100) may be configured to include an application program (110), a ULNs (User-Layer Network solution) loader (120), a system call hooker (130), a ULNs manager (140), ULNs (142), a library (150), a ULNs driver (160), and a network stack (170). At this time, the application program (110), the ULNs loader (120), the system call hooker (130), the ULNs manager (140), ULNs (142), and the library (150) are programs that operate in the user layer of the operating system of a device including the system (100).

[0028] The application (110) may be a program that uses a network, may use a network stack, or may use ULNs.

[0029] The ULNs loader (120) is a configuration that determines whether to load the ULNs manager (140) when the application (110) is executed, and can determine whether to load the ULNs manager (140) by checking whether the application (110) is registered in advance as an application that uses ULNs.

[0030] The system call hooker (130) bypasses the function call of the application (110) to the library (150) when the application (110) does not use ULNs and uses the library (150) and calls the function of the library (150).

[0031] The system call hooker (130) can transmit a function call of the application (110) to the ULNs manager (140) when the application (110) uses ULNs (142).

[0032] At this time, the system calls (Syscalls) hooked by the system call hooker (130) may be limited to the APIs (Application Programming Interfaces) required for network processing (e.g., socket, connect, recv, send, poll / select / epoll_wait, etc.).

[0033] The ULNs manager (140) can include and manage ULNs (142) corresponding to an application (110) when the application (110) uses ULNs (142). When the application (110) is executed and loaded by the ULNs loader (120), the ULNs manager (140) enables the application (110) to use ULNs (142) in real time.

[0034] The ULNs manager (140) can communicate directly with the ULNs driver (160) through ioctl (input output control) to map the resources of the kernel (sockets, file descriptors, etc.) and the resources of the ULNs (142).

[0035] ULNs (User-Layer Network solution) (142) is a configuration that enables network communication at the user layer.

[0036] At this time, the application program (110), system call hooker (130), ULNs manager (140), and ULNs (142) can be matched 1:1. That is, when the application program (110) is executed and the application program (110) uses ULNs, the system call hooker (130), ULNs manager (140), and ULNs (142) for only the application program (110) can be loaded.

[0037] A library (150) is a collection of programming codes used by system software and applications to interact with the operating system, and can wrap system calls of the operating system.

[0038] The ULNs driver (160) is configured to provide resource information of the system to be mapped by the ULNs manager (140). In particular, the ULNs driver (160) uses techniques such as memory mapping (mmap) to inform the ULNs manager (140) of contents related to the transmission queue and reception queue within the socket structure belonging to the system, thereby enabling the ULNs manager (140) to know the values ​​in real time, and enables necessary command processing through ioctl (input output control).

[0039] The network stack (170) is a component that processes network packets in the system (100). The network stack (170) may collectively refer to a socket that serves as a data input / output window in an application program, a part that implements a transport layer such as TCP / UDP, a part that implements a protocol layer such as IP, and a NIC (Network Interface Card) driver that processes H / W input / output.

[0040] A method of using a user layer network solution using each configuration of the system (100) is described below with reference to FIGS. 2 to 8.

[0041] FIG. 2 is a flowchart illustrating a method for enabling a user layer network solution in an application according to one embodiment.

[0042] Referring to FIG. 2, when the execution of an application (110) is detected in the ULNs (User-Layer Network solution) loader (120) of the present disclosure, it can be confirmed whether a ULNs manager (140) corresponding to the application (110) exists (210).

[0043] If the ULNs manager (140) corresponding to the application (110) exists as a result of the confirmation of operation 210, the ULNs loader (120) can load the ULNs manager (140) corresponding to the application (110) (212).

[0044] And, the system call hooker (130) can check whether the function called by the application (110) is a network-related function (214).

[0045] As a result of the confirmation of operation 214, if the function called by the application (110) is a network-related function, the function called by the system call hooker (130) can be transmitted to the ULNs manager (140).

[0046] And, when a function called from the ULNs manager (140) is received, the called function can be called by changing the parameters of the called function to fit the form of the function of the corresponding ULNs (142).

[0047] And, when a response corresponding to a function called from the ULNs manager (140) is received, the response can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0048] If the ULNs manager (140) corresponding to the application program (110) does not exist as a result of the confirmation of operation 210, the function to be called later from the system call hooker (130) can be transmitted to the library (150) (222).

[0049] If the result of operation 214 is not a network-related function, the function called from the system call hooker (130) can be transmitted to the library (150) (222).

[0050] The operation after being transmitted to the library (150) in operation 222 corresponds to a conventional general operation, so a detailed description of the operation thereafter is omitted.

[0051] FIG. 3 is a flowchart illustrating a method for creating a socket when using a user layer network solution in an application according to one embodiment.

[0052] Referring to FIG. 3, when a system call hooker (130) detects a socket function call of an application (110) (310), it can be checked whether a ULNs manager (140) corresponding to the application (110) is loaded (312).

[0053] If the ULNs manager (140) corresponding to the application program (110) is loaded as a result of the confirmation of operation 312, the system call hooker (130) can transmit a socket function call to the ULNs manager (140) (314).

[0054] When a socket function call is received from the ULNs manager (140), a first socket can be created through the socket function of the ULNs (142) corresponding to the socket function call, a file identifier of the first socket can be obtained, a second socket can be created through the socket function of the library (150), and a file identifier of the second socket can be obtained (316). At this time, the file identifier can be a file descriptor.

[0055] In the ULNs manager (140), the file identifier of the first socket and the file identifier of the second socket can be mapped and stored in a mapping table (318).

[0056] The ULNs manager (140) can return the file identifier of the second socket to the application (110) (320).

[0057] If the ULNs manager (140) corresponding to the application program (110) is not loaded as a result of the confirmation of operation 312, the system call hooker (130) can transmit a socket function call to the library (150) (322).

[0058] FIG. 4 is a flowchart illustrating a method for performing a connect function when using a user layer network solution in an application according to one embodiment.

[0059] Referring to FIG. 4, when a system call hooker (130) detects a call to a connect function of an application (110) (410), it can be checked whether a ULNs manager (140) corresponding to the application (110) is loaded (412).

[0060] If the ULNs manager (140) corresponding to the application program (110) is loaded as a result of the confirmation of operation 412, the system call hooker (130) can transmit a connect function call to the ULNs manager (140) (414).

[0061] When a connect function call is received from the ULNs manager (140), the file identifier of the socket included in the connect function call can be checked through the mapping table to determine whether a file identifier of the corresponding first socket exists (416).

[0062] As a result of the confirmation of operation 416, if there is a file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call, the ULNs manager (140) can transmit to the ULNs driver (160) that there is a socket to attempt to connect (418).

[0063] The ULNs driver (160) can assign a port number to the second socket and transmit the assigned port number to the ULNs manager (140) (420).

[0064] The port number assigned by the ULNs manager (140) can also be assigned to the first socket (422).

[0065] When the ULNs manager (140) calls the connect function of ULNs (142) and receives a response from the connect function of ULNs (142), the response from the connect function of ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110) (424).

[0066] If the ULNs manager (140) corresponding to the application program (110) is not loaded as a result of the confirmation of operation 412, the system call hooker (130) can send a connect function call to the library (150) (426).

[0067] If the file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call does not exist as a result of the confirmation of operation 416, the ULNs manager (140) can transmit the connect function call to the library (150) (426).

[0068] FIG. 5 is a flowchart illustrating a method for performing a send function when using a user layer network solution in an application according to one embodiment.

[0069] Referring to FIG. 5, when a system call hooker (130) detects a call to a send function of an application (110) (510), it can be checked whether a ULNs manager (140) corresponding to the application (110) is loaded (512).

[0070] If the ULNs manager (140) corresponding to the application program (110) is loaded as a result of the 512 operation, the system call hooker (130) can transmit a send function call to the ULNs manager (140) (514).

[0071] When a send function call is received from the ULNs manager (140), the file identifier of the socket included in the send function call can be checked through the mapping table to determine whether a file identifier of the corresponding first socket exists (516).

[0072] As a result of the verification of operation 516, if there is a file identifier of the first socket corresponding to the file identifier of the socket included in the send function call in the verification result of the ULNs manager (140), the ULNs manager (140) calls the send function of ULNs (142), and when the response of the send function of ULNs (142) is received, the response of the send function of ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110) (518).

[0073] If the ULNs manager (140) corresponding to the application program (110) is not loaded as a result of the 512 operation, the system call hooker (130) can transmit a send function call to the library (150) (520).

[0074] If the file identifier of the first socket corresponding to the file identifier of the socket included in the send function call does not exist as a result of the confirmation of operation 516, the ULNs manager (140) can transmit the send function call to the library (150) (520).

[0075] FIG. 6 is a flowchart illustrating a method for performing a receive function when using a user layer network solution in an application according to one embodiment.

[0076] Referring to FIG. 6, when a system call hooker (130) detects a receive function call of an application (110) (610), it can be checked whether a ULNs manager (140) corresponding to the application (110) is loaded (612).

[0077] If the ULNs manager (140) corresponding to the application program (110) is loaded as a result of the confirmation of operation 612, the system call hooker (130) can transmit a receive function call to the ULNs manager (140) (614).

[0078] When a receive function call is received from the ULNs manager (140), the file identifier of the socket included in the receive function call can be checked through the mapping table to determine whether a file identifier of the corresponding first socket exists (616).

[0079] If, as a result of the verification of operation 616, there is a file identifier of the first socket corresponding to the file identifier of the socket included in the receive call, the ULNs manager (140) calls the receive function of ULNs (142), and when the response of the receive function of ULNs (142) is received, the response of the receive function of ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110) (618).

[0080] If the ULNs manager (140) corresponding to the application program (110) is not loaded as a result of the confirmation of operation 612, the system call hooker (130) can transmit a receive function call to the library (150) (620).

[0081] If the file identifier of the first socket corresponding to the file identifier of the socket included in the receive function call does not exist as a result of the confirmation of operation 616, the ULNs manager (140) can transmit the receive function call to the library (150) (620).

[0082] FIG. 7 is a flowchart illustrating a method for processing an event completion notification related to reception in an asynchronous input / output manner when using a user layer network solution in an application according to one embodiment.

[0083] Referring to Fig. 7, an application program (110) can create a receiving thread for reception and switch the receiving thread to a receiving standby state (710). At this time, the event notification function that switches the receiving thread to the receiving standby state can be one of poll / select / epoll_wait. poll, select, and epoll_wait are event notification functions that can process multiple file identifiers simultaneously, and the characteristics of each function are as follows. The poll function returns the file identifier for which the event occurred and the event information by filling in the specified structure, and this can be used to recognize the completion of the corresponding task, but the maximum number of identifiers that can receive event notifications is limited to 1024 or 4096. select can cause performance issues because the user must sequentially search to find out for which file identifier completion has occurred. epoll_wait was added to compensate for the shortcomings of poll and select, but some older operating systems or platforms may not support epoll_wait, and the APIs are divided into epoll_create, epoll_ctl, etc., which can be cumbersome to use. In the case of simple structure event monitoring, poll has a performance advantage, so the application can select and use the appropriate API among the three depending on the purpose.

[0084] When a packet is received through the network in ULNs (142) (712), the packet can be processed and a completion of packet processing can be transmitted to the ULNs manager (140) (714).

[0085] The ULNs manager (140) can transmit the completion of packet processing to the ULNs driver (160) (716).

[0086] When the ULNs driver (160) receives the completion of packet processing, a reception standby release signal can be sent to the reception thread in the reception standby state (718).

[0087] When a reception waiting release signal is received from the receiving thread, the socket status of ULNs (142) can be checked and the reception waiting state can be released if a received packet exists (720).

[0088] And, a response corresponding to the event completion notification for reception can be transmitted to the application (110) from the receiving thread (722).

[0089] FIG. 8 is a flowchart illustrating a method for processing event completion notifications related to transmission in an asynchronous input / output manner when using a user layer network solution in an application according to one embodiment.

[0090] Referring to FIG. 8, when an application (110) receives a response from a send function (810), a transmission thread for transmission can be created and the transmission thread can be switched to a transmission standby state. At this time, the event notification function that switches the transmission thread to a transmission standby state can be one of poll / select / epoll_wait.

[0091] And, when the ULNs manager (140) detects that the transmission processing of the ULNs (142) is completed (814), it can transmit a transmission completion signal indicating that the transmission is completed to the ULNs driver (160) (816).

[0092] When the ULNs driver (160) receives a transmission completion, a transmission standby release signal can be transmitted to the transmission thread in the transmission standby state (818).

[0093] When a transmission waiting release signal is received from the transmission thread, the transmission waiting state is released and a response corresponding to the event completion notification for transmission can be sent to the application (110) (820).

[0094] FIG. 9 is a schematic diagram illustrating a configuration of an electronic device using a user layer network solution according to one embodiment.

[0095] Referring to FIG. 9, an electronic device (900) may be configured to include a processor (910) and a memory (920).

[0096] The memory (920) stores an operating system, application programs, and storage data for controlling the overall operation of the electronic device (900). In addition, the memory (920) can store information regarding the application programs and applications utilizing ULNs according to the present disclosure.

[0097] The processor (910) can operate the system (100) of FIG. 1. That is, the processor (910) can include the configuration of the system (100) of FIG. 1.

[0098] When the processor (910) detects the execution of the application (110) in the ULNs (User-Layer Network solution) loader (120), it checks whether there is a ULNs manager (140) corresponding to the application (110), and if there is a ULNs manager (140) corresponding to the application (110), it loads the ULNs manager (140) corresponding to the application (110) in the ULNs loader (120), and when the application (110) calls a function related to the network, if there is a ULNs manager (140) corresponding to the application (110) in the system call hooker (130), it transmits the called function to the ULNs manager (140), and when the called function is received in the ULNs manager (140), it changes the parameters of the called function to match the form of the function of the corresponding ULNs (142) and calls it, and sends a response corresponding to the called function. Upon receipt, the response can be converted to a library (150) format and sent to the application (110).

[0099] The processor (910) can transmit the called function to the library (150) if there is no ULNs manager (140) corresponding to the application program (110) in the system call hooker (130).

[0100] When the processor (910) detects a socket function call of an application (110) in the system call hooker (130), it checks whether the ULNs manager (140) corresponding to the application (110) is loaded, and if the ULNs manager (140) corresponding to the application (110) is loaded, it transmits a socket function call from the system call hooker (130) to the ULNs manager (140), and when the ULNs manager (140) receives the socket function call, it creates a first socket through the socket function of the corresponding ULNs (142), obtains a file identifier of the first socket, creates a second socket through the socket function of the library (150), obtains a file identifier of the second socket, maps the file identifier of the first socket and the file identifier of the second socket in the ULNs manager (140) and stores them in a mapping table, and stores the file identifier of the second socket in the application in the ULNs manager (140). It can be returned to the program (110).

[0101] If the ULNs manager (140) corresponding to the application program (110) is not loaded, the processor (910) can cause the system call hooker (130) to send a socket function call to the library (150).

[0102] When the processor (910) detects a connect function call of an application (110) in the system call hooker (130), it checks whether a ULNs manager (140) corresponding to the application (110) is loaded, and if a ULNs manager (140) corresponding to the application (110) is loaded, it transmits a connect function call from the system call hooker (130) to the ULNs manager (140), and when the ULNs manager (140) receives a connect function call, it checks the file identifier of the socket included in the connect function call through a mapping table to check whether a file identifier of a corresponding first socket exists, and if the file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call exists as a result of the check in the ULNs manager (140), it transmits to the ULNs driver (160) that there is a socket to attempt a connection, and the ULNs driver (160) assigns a port number to the second socket. When the port number allocated to the ULNs manager (140) is transmitted, the port number allocated by the ULNs manager (140) is also allocated to the first socket, the connect function of the ULNs (142) is called by the ULNs manager (140), and a response of the connect function of the ULNs (142) is received, the response of the connect function of the ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0103] The processor (910) can cause the system call hooker (130) to send a connect function call to the library (150) if the ULNs manager (140) corresponding to the application program (110) is not loaded.

[0104] If the processor (910) does not have a file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call, the ULNs manager (140) may transmit the connect function call to the library (150).

[0105] When the processor (910) detects a send function call of an application (110) in the system call hooker (130), it checks whether the ULNs manager (140) corresponding to the application (110) is loaded, and if the ULNs manager (140) corresponding to the application (110) is loaded, it transmits a send function call from the system call hooker (130) to the ULNs manager (140), and when the ULNs manager (140) receives the send function call, it checks the file identifier of the socket included in the send function call through the mapping table to check whether the file identifier of the corresponding first socket exists, and if the file identifier of the first socket corresponding to the file identifier of the socket included in the send function call exists as a result of the check in the ULNs manager (140), it calls the send function of ULNs (142) in the ULNs manager (140), and when it receives a response to the send function of ULNs (142), The response of the send function of ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0106] The processor (910) can cause the system call hooker (130) to send a send function call to the library (150) if the ULNs manager (140) corresponding to the application program (110) is not loaded.

[0107] If the processor (910) does not have a file identifier of the first socket corresponding to the file identifier of the socket included in the send function call, the ULNs manager (140) may transmit the send function call to the library (150).

[0108] When the processor (910) detects a receive function call of an application (110) in the system call hooker (130), it checks whether the ULNs manager (140) corresponding to the application (110) is loaded, and if the ULNs manager (140) corresponding to the application (110) is loaded, it transmits a receive function call from the system call hooker (130) to the ULNs manager (140), and when the ULNs manager (140) receives the receive function call, it checks the file identifier of the socket included in the receive function call through the mapping table to check whether the file identifier of the corresponding first socket exists, and if the file identifier of the first socket corresponding to the file identifier of the socket included in the receive call exists as a result of the check in the ULNs manager (140), it calls the receive function of ULNs (142) in the ULNs manager (140), and the receive of ULNs (142) When receiving a response from a function, the response of the receive function of ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0109] The processor (910) can transmit a receive function call from the system call hooker (130) to the library (150) if the ULNs manager (140) corresponding to the application program (110) is not loaded.

[0110] If the processor (910) does not have a file identifier of the first socket corresponding to the file identifier of the socket included in the receive function call, the ULNs manager (140) may transmit the receive function call to the library (150).

[0111] The processor (910) creates a receiving thread for reception in the application (110), switches the receiving thread to a receiving standby state, processes the packet when receiving a packet through the network in ULNs (142), transmits the completion of packet processing to the ULNs manager (140), transmits the completion of packet processing from the ULNs manager (140) to the ULNs driver (160), and when the completion of packet processing is received in the ULNs driver (160), transmits a reception standby release signal to the receiving thread in the receiving standby state, and when the reception standby release signal is received from the receiving thread, checks the socket status of ULNs (142), releases the reception standby state if a received packet exists, and transmits a response corresponding to the event completion notification for reception to the application (110).

[0112] When the processor (910) receives a response of a send function from the application (110), it creates a transmission thread for transmission, switches the transmission thread to a transmission standby state, and when the ULNs manager (140) detects that the transmission processing of the ULNs (142) is completed, it transmits a transmission completion signal indicating that the transmission is completed to the ULNs driver (160), and when the ULNs driver (160) receives the transmission completion signal, it transmits a transmission standby release signal to the transmission thread in the transmission standby state, and when the transmission standby release signal is received from the transmission thread, it releases the transmission standby state and transmits a response corresponding to the event completion notification for the transmission to the application (110).

[0113] FIG. 10 is a block diagram of an electronic device within a network environment according to one embodiment.

[0114] Referring to FIG. 10, in a network environment (1000), an electronic device (1001) may communicate with an electronic device (1002) via a first network (1098) (e.g., a short-range wireless communication network), or may communicate with at least one of an electronic device (1004) or a server (1008) via a second network (1099) (e.g., a long-range wireless communication network). According to one embodiment, the electronic device (1001) may communicate with the electronic device (1004) via the server (1008). According to one embodiment, the electronic device (1001) may include a processor (1020), a memory (1030), an input module (1050), an audio output module (1055), a display module (1060), an audio module (1070), a sensor module (1076), an interface (1077), a connection terminal (1078), a haptic module (1079), a camera module (1080), a power management module (1088), a battery (1089), a communication module (1090), a subscriber identification module (1096), or an antenna module (1097). In one embodiment, the electronic device (1001) may omit at least one of these components (e.g., the connection terminal (1078)), or may have one or more other components added. In one embodiment, some of these components (e.g., sensor module (1076), camera module (1080), or antenna module (1097)) may be integrated into one component (e.g., display module (1060)).

[0115] The processor (1020) may control at least one other component (e.g., hardware or software component) of the electronic device (1001) connected to the processor (1020) by executing, for example, software (e.g., program (1040)), and may perform various data processing or operations. According to one embodiment, as at least a part of the data processing or operations, the processor (1020) may store commands or data received from other components (e.g., sensor module (1076) or communication module (1090)) in volatile memory (1032), process the commands or data stored in volatile memory (1032), and store result data in non-volatile memory (1034).

[0116] Meanwhile, the processor (1020) can operate the system (100) of FIG. 1. That is, the processor (1020) can include the configuration of the system (100) of FIG. 1. Alternatively, it can perform the operation of the processor (910) of FIG. 9.

[0117] According to one embodiment, the processor (1020) may include a main processor (1021) (e.g., a central processing unit or an application processor) or an auxiliary processor (1023) (e.g., a graphics processing unit, a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor) that can operate independently or together with the main processor (1021). For example, when the electronic device (1001) includes the main processor (1021) and the auxiliary processor (1023), the auxiliary processor (1023) may be configured to use less power than the main processor (1021) or to be specialized for a given function. The auxiliary processor (1023) may be implemented separately from the main processor (1021) or as a part thereof.

[0118] The auxiliary processor (1023) may control at least a portion of functions or states associated with at least one component (e.g., the display module (1060), the sensor module (1076), or the communication module (1090)) of the electronic device (1001), for example, on behalf of the main processor (1021) while the main processor (1021) is in an inactive (e.g., sleep) state, or together with the main processor (1021) while the main processor (1021) is in an active (e.g., application execution) state. In one embodiment, the auxiliary processor (1023) (e.g., an image signal processor or a communication processor) may be implemented as a part of another functionally related component (e.g., a camera module (1080) or a communication module (1090)). In one embodiment, the auxiliary processor (1023) (e.g., a neural network processing unit) may include a hardware structure specialized for processing artificial intelligence models. The artificial intelligence models may be generated through machine learning. This learning can be performed, for example, on the electronic device (1001) itself where the artificial intelligence model is executed, or can be performed through a separate server (e.g., server (1008)). The learning algorithm can include, for example, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but is not limited to the examples described above. The artificial intelligence model can include multiple artificial neural network layers.The artificial neural network may be one of a deep neural network (DNN), a convolutional neural network (CNN), a recurrent neural network (RNN), a restricted Boltzmann machine (RBM), a deep belief network (DBN), a bidirectional recurrent deep neural network (BRDNN), a deep Q-network, or a combination of two or more of the above, but is not limited to the examples described above. In addition to, or alternatively to, a hardware structure, an artificial intelligence model may include a software structure.

[0119] The memory (1030) can store various data used by at least one component (e.g., the processor (1020) or the sensor module (1076)) of the electronic device (1001). The data can include, for example, software (e.g., the program (1040)) and input data or output data for commands related thereto. The memory (1030) can include volatile memory (1032) or non-volatile memory (1034).

[0120] Meanwhile, the memory (1030) can perform the role of the memory (920) of FIG. 9.

[0121] The program (1040) may be stored as software in memory (1030) and may include, for example, an operating system (1042), middleware (1044), or an application (1046).

[0122] The input module (1050) can receive commands or data to be used in a component of the electronic device (1001) (e.g., a processor (1020)) from an external source (e.g., a user) of the electronic device (1001). The input module (1050) can include, for example, a microphone, a mouse, a keyboard, a key (e.g., a button), or a digital pen (e.g., a stylus pen).

[0123] The audio output module (1055) can output audio signals to the outside of the electronic device (1001). The audio output module (1055) can include, for example, a speaker or a receiver. The speaker can be used for general purposes, such as multimedia playback or recording playback. The receiver can be used to receive incoming calls. According to one embodiment, the receiver can be implemented separately from the speaker or as part of the speaker.

[0124] The display module (1060) can visually provide information to an external party (e.g., a user) of the electronic device (1001). The display module (1060) may include, for example, a display, a holographic device, or a projector and a control circuit for controlling the device. According to one embodiment, the display module (1060) may include a touch sensor configured to detect a touch, or a pressure sensor configured to measure the intensity of a force generated by the touch.

[0125] The audio module (1070) can convert sound into an electrical signal, or vice versa, convert an electrical signal into sound. According to one embodiment, the audio module (1070) can acquire sound through the input module (1050), output sound through the sound output module (1055), or an external electronic device (e.g., electronic device (1002)) (e.g., speaker or headphone) directly or wirelessly connected to the electronic device (1001).

[0126] The sensor module (1076) can detect the operating status (e.g., power or temperature) of the electronic device (1001) or the external environmental status (e.g., user status) and generate an electrical signal or data value corresponding to the detected status. According to one embodiment, the sensor module (1076) can include, for example, a gesture sensor, a gyro sensor, a barometric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, a temperature sensor, a humidity sensor, or an illuminance sensor.

[0127] The interface (1077) may support one or more designated protocols that may be used to directly or wirelessly connect the electronic device (1001) to an external electronic device (e.g., the electronic device (1002)). In one embodiment, the interface (1077) may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.

[0128] The connection terminal (1078) may include a connector through which the electronic device (1001) may be physically connected to an external electronic device (e.g., the electronic device (1002)). According to one embodiment, the connection terminal (1078) may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (e.g., a headphone connector).

[0129] The haptic module (1079) can convert electrical signals into mechanical stimuli (e.g., vibration or movement) or electrical stimuli that a user can perceive through tactile or kinesthetic sensations. In one embodiment, the haptic module (1079) can include, for example, a motor, a piezoelectric element, or an electrical stimulation device.

[0130] The camera module (1080) can capture still images and videos. According to one embodiment, the camera module (1080) may include one or more lenses, image sensors, image signal processors, or flashes.

[0131] The power management module (1088) can manage power supplied to the electronic device (1001). According to one embodiment, the power management module (1088) can be implemented as, for example, at least a part of a power management integrated circuit (PMIC).

[0132] A battery (1089) may power at least one component of the electronic device (1001). In one embodiment, the battery (1089) may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.

[0133] The communication module (1090) may support the establishment of a direct (e.g., wired) communication channel or a wireless communication channel between the electronic device (1001) and an external electronic device (e.g., electronic device (1002), electronic device (1004), or server (1008)), and the performance of communication through the established communication channel. The communication module (1090) may operate independently from the processor (1020) (e.g., application processor) and may include one or more communication processors that support direct (e.g., wired) communication or wireless communication. According to one embodiment, the communication module (1090) may include a wireless communication module (1092) (e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module (1094) (e.g., a local area network (LAN) communication module, or a power line communication module). Among these communication modules, a corresponding communication module can communicate with an external electronic device (1004) via a first network (1098) (e.g., a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network (1099) (e.g., a long-range communication network such as a legacy cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., a LAN or WAN)). These various types of communication modules can be integrated into a single component (e.g., a single chip) or implemented as multiple separate components (e.g., multiple chips). The wireless communication module (1092) can verify or authenticate the electronic device (1001) within a communication network such as the first network (1098) or the second network (1099) by using subscriber information (e.g., an international mobile subscriber identity (IMSI)) stored in the subscriber identification module (1096).

[0134] The wireless communication module (1092) can support 5G networks and next-generation communication technologies following the 4G network, such as NR access technology (new radio access technology). NR access technology can support high-speed transmission of high-capacity data (eMBB (enhanced mobile broadband)), minimizing terminal power and connecting multiple terminals (mMTC (massive machine type communications)), or high reliability and low latency (URLLC (ultra-reliable and low-latency communications)). The wireless communication module (1092) can support, for example, a high-frequency band (e.g., mmWave band) to achieve a high data transmission rate. The wireless communication module (1092) may support various technologies for securing performance in a high-frequency band, such as beamforming, massive multiple-input and multiple-output (MIMO), full dimensional MIMO (FD-MIMO), array antenna, analog beam-forming, or large scale antenna. The wireless communication module (1092) may support various requirements specified in the electronic device (1001), an external electronic device (e.g., the electronic device (1004)), or a network system (e.g., the second network (1099)). According to one embodiment, the wireless communication module (1092) may support a peak data rate (e.g., 20 Gbps or more) for eMBB realization, a loss coverage (e.g., 164 dB or less) for mMTC realization, or a U-plane latency (e.g., 0.5 ms or less for downlink (DL) and uplink (UL), or 1 ms or less for round trip) for URLLC realization.

[0135] The antenna module (1097) can transmit or receive signals or power to or from an external device (e.g., an external electronic device). According to one embodiment, the antenna module (1097) may include an antenna including a radiator formed of a conductor or a conductive pattern formed on a substrate (e.g., a PCB). According to one embodiment, the antenna module (1097) may include a plurality of antennas (e.g., an array antenna). In this case, at least one antenna suitable for a communication method used in a communication network, such as the first network (1098) or the second network (1099), may be selected from the plurality of antennas, for example, by the communication module (1090). A signal or power may be transmitted or received between the communication module (1090) and an external electronic device via the selected at least one antenna. According to one embodiment, in addition to the radiator, another component (e.g., a radio frequency integrated circuit (RFIC)) may be additionally formed as a part of the antenna module (1097).

[0136] In one embodiment, the antenna module (1097) may form a mmWave antenna module. In one embodiment, the mmWave antenna module may include a printed circuit board, an RFIC disposed on or adjacent a first side (e.g., a bottom side) of the printed circuit board and capable of supporting a designated high frequency band (e.g., a mmWave band), and a plurality of antennas (e.g., an array antenna) disposed on or adjacent a second side (e.g., a top side or a side side) of the printed circuit board and capable of transmitting or receiving signals in the designated high frequency band.

[0137] At least some of the above components can be interconnected and exchange signals (e.g., commands or data) with each other via a communication method between peripheral devices (e.g., a bus, GPIO (general purpose input and output), SPI (serial peripheral interface), or MIPI (mobile industry processor interface)).

[0138] According to one embodiment, commands or data may be transmitted or received between the electronic device (1001) and an external electronic device (1004) via a server (1008) connected to a second network (1099). Each of the external electronic devices (1002 or 1004) may be the same or a different type of device as the electronic device (1001). According to one embodiment, all or part of the operations executed in the electronic device (1001) may be executed in one or more of the external electronic devices (1002, 1004, or 1008). For example, when the electronic device (1001) is to perform a certain function or service automatically or in response to a request from a user or another device, the electronic device (1001) may, instead of or in addition to executing the function or service on its own, request one or more external electronic devices to perform the function or at least a part of the service. One or more external electronic devices that receive the request may execute at least a portion of the requested function or service, or an additional function or service related to the request, and transmit the result of the execution to the electronic device (1001). The electronic device (1001) may process the result as is or additionally and provide it as at least a portion of a response to the request. For this purpose, cloud computing, distributed computing, mobile edge computing (MEC), or client-server computing technology may be used, for example. The electronic device (1001) may provide an ultra-low latency service by using distributed computing or mobile edge computing, for example. In another embodiment, the external electronic device (1004) may include an Internet of Things (IoT) device. The server (1008) may be an intelligent server utilizing machine learning and / or a neural network.According to one embodiment, an external electronic device (1004) or server (1008) may be included in the second network (1099). The electronic device (1001) may be applied to intelligent services (e.g., smart home, smart city, smart car, or healthcare) based on 5G communication technology and IoT-related technology.

[0139] Electronic devices according to embodiments of the present disclosure may take various forms. Electronic devices may include, for example, portable communication devices (e.g., smartphones), computer devices, portable multimedia devices, portable medical devices, cameras, wearable devices, or home appliances. Electronic devices according to embodiments of the present disclosure are not limited to the aforementioned devices.

[0140] The embodiments of the present disclosure and the terminology used herein are not intended to limit the technical features described in the present disclosure to specific embodiments, but should be understood to include various modifications, equivalents, or substitutes of the embodiments. In connection with the description of the drawings, similar reference numerals may be used for similar or related components. The singular form of a noun corresponding to an item may include one or more of the items, unless the context clearly indicates otherwise. In the present disclosure, each of the phrases "A or B", "at least one of A and B", "at least one of A or B", "A, B, or C", "at least one of A, B, and C", and "at least one of A, B, or C" can include any one of the items listed together in the corresponding phrase among the phrases, or all possible combinations thereof. Terms such as "first," "second," or "first" or "second" may be used merely to distinguish one component from another, and do not limit the components in any other respect (e.g., importance or order). When a component (e.g., a first component) is referred to as "coupled" or "connected" to another component (e.g., a second component), with or without the terms "functionally" or "communicatively," it means that the component can be connected to the other component directly (e.g., wired), wirelessly, or through a third component.

[0141] The term "module" used in one embodiment of the present disclosure may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit, for example. A module may be an integral component, or a minimum unit or part of such a component that performs one or more functions. For example, according to one embodiment, a module may be implemented in the form of an application-specific integrated circuit (ASIC).

[0142] An embodiment of the present disclosure may be implemented as software (e.g., a program (1040)) including one or more instructions stored in a storage medium (e.g., an internal memory (1036) or an external memory (1038)) readable by a machine (e.g., an electronic device (1001)). For example, a processor (e.g., a processor (1020)) of the machine (e.g., an electronic device (1001)) may call at least one instruction among the one or more instructions stored from the storage medium and execute it. This enables the machine to operate to perform at least one function according to the at least one called instruction. The one or more instructions may include code generated by a compiler or code executable by an interpreter. The machine-readable storage medium may be provided in the form of a non-transitory storage medium. Here, 'non-transitory' simply means that the storage medium is a tangible device and does not contain signals (e.g., electromagnetic waves), and the term does not distinguish between cases where data is stored semi-permanently or temporarily on the storage medium.

[0143] According to one embodiment, a method according to one embodiment of the present disclosure may be provided as included in a computer program product. The computer program product may be traded as a product between a seller and a buyer. The computer program product may be distributed in the form of a machine-readable storage medium (e.g., compact disc read only memory (CD-ROM)), or may be distributed online (e.g., downloaded or uploaded) via an application store (e.g., Play Store™) or directly between two user devices (e.g., smart phones). In the case of online distribution, at least a portion of the computer program product may be temporarily stored or temporarily generated in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or a relay server.

[0144] According to one embodiment, each component (e.g., a module or a program) of the above-described components may include one or more entities, and some of the entities may be separated and placed in other components. According to one embodiment, one or more components or operations of the aforementioned components may be omitted, or one or more other components or operations may be added. Alternatively or additionally, a plurality of components (e.g., a module or a program) may be integrated into a single component. In such a case, the integrated component may perform one or more functions of each of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to the integration. According to one embodiment, the operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, omitted, or one or more other operations may be added.

[0145] According to one embodiment, a method of using a user-layer network solution comprises: when a ULNs (User-Layer Network solution) loader (120) detects the execution of an application (110), an operation of checking whether a ULNs manager (140) corresponding to the application (110) exists; when the ULNs manager (140) corresponding to the application (110) exists as a result of the checking, an operation of loading the ULNs manager (140) corresponding to the application (110) in the ULNs loader (120); when the application (110) calls a function related to a network, an operation of transmitting the called function to the ULNs manager (140) if the ULNs manager (140) corresponding to the application (110) exists in a system call hooker (130); And when the called function is received from the ULNs manager (140), the called function is called by changing the parameters of the called function to fit the form of the corresponding ULNs (142), and when a response corresponding to the called function is received, the response is changed to fit the form of the library (150) and transmitted to the application program (110).

[0146] According to one embodiment, a method of using a user layer network solution may further include an operation of transmitting the called function to the library (150) if the ULNs manager (140) corresponding to the application (110) does not exist in the system call hooker (130).

[0147] According to one embodiment, a method of using a user layer network solution comprises: when a socket function call of the application (110) is detected in the system call hooker (130), an operation of checking whether the ULNs manager (140) corresponding to the application (110) is loaded; when the ULNs manager (140) corresponding to the application (110) is loaded, an operation of transmitting the socket function call from the system call hooker (130) to the ULNs manager (140); when the ULNs manager (140) receives the socket function call, an operation of creating a first socket through a socket function of ULNs (142) corresponding to the socket function call, obtaining a file identifier of the first socket, and creating a second socket through a socket function of a library (150), and obtaining a file identifier of the second socket; The ULNs manager (140) may further include an operation of mapping the file identifier of the first socket and the file identifier of the second socket and storing the mapping table; and an operation of returning the file identifier of the second socket to the application program (110) from the ULNs manager (140).

[0148] According to one embodiment, a method of using a user layer network solution may further include an operation of transmitting the socket function call from the system call hooker (130) to the library (150) if the ULNs manager (140) corresponding to the application (110) is not loaded.

[0149] According to one embodiment, a method of using a user layer network solution comprises: when the system call hooker (130) detects a connect function call of the application (110), an operation of checking whether the ULNs manager (140) corresponding to the application (110) is loaded; when the ULNs manager (140) corresponding to the application (110) is loaded, an operation of transmitting the connect function call from the system call hooker (130) to the ULNs manager (140); when the ULNs manager (140) receives the connect function call, an operation of checking a file identifier of a socket included in the connect function call through the mapping table to check whether a file identifier of the corresponding first socket exists; The method may further include: if the file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call exists as a result of the verification in the ULNs manager (140), transmitting to the ULNs driver (160) that there is a socket to attempt a connection; if the ULNs driver (160) allocates a port number to the second socket and transmits the allocated port number to the ULNs manager (140); if the ULNs manager (140) allocates the allocated port number to the first socket; and if the ULNs manager (140) calls the connect function of the ULNs (142) and receives a response of the connect function of the ULNs (142), changing the response of the connect function of the ULNs (142) to fit the form of the library (150) and transmitting it to the application program (110).

[0150] According to one embodiment, a method of using a user layer network solution may further include an operation of transmitting a connect function call from the system call hooker (130) to the library (150) if the ULNs manager (140) corresponding to the application (110) is not loaded.

[0151] According to one embodiment, a method of using a user layer network solution may further include an operation of transmitting the connect function call to the library (150) if, as a result of the verification, there is no file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call.

[0152] According to one embodiment, a method of using a user layer network solution comprises: when a send function call of the application (110) is detected in the system call hooker (130), an operation of checking whether the ULNs manager (140) corresponding to the application (110) is loaded; when the ULNs manager (140) corresponding to the application (110) is loaded, an operation of transmitting the send function call from the system call hooker (130) to the ULNs manager (140); when the ULNs manager (140) receives the send function call, an operation of checking a file identifier of a socket included in the send function call through the mapping table to check whether a file identifier of the corresponding first socket exists; And, if the file identifier of the first socket corresponding to the file identifier of the socket included in the send function call is present as a result of verification in the ULNs manager (140), the ULNs manager (140) calls the send function of the ULNs (142), and, when receiving a response of the send function of the ULNs (142), changes the response of the send function of the ULNs (142) to fit the form of the library (150) and transmits it to the application program (110).

[0153] According to one embodiment, a method of using a user layer network solution comprises: when the system call hooker (130) detects a receive function call of the application (110), an operation of checking whether the ULNs manager (140) corresponding to the application (110) is loaded; when the ULNs manager (140) corresponding to the application (110) is loaded, an operation of transmitting the receive function call from the system call hooker (130) to the ULNs manager (140); when the ULNs manager (140) receives the receive function call, an operation of checking a file identifier of a socket included in the receive function call through the mapping table to check whether a file identifier of the corresponding first socket exists; And, if the file identifier of the first socket corresponding to the file identifier of the socket included in the receive call exists as a result of the verification in the ULNs manager (140), the ULNs manager (140) calls the receive function of the ULNs (142), and, when the response of the receive function of the ULNs (142) is received, the response of the receive function of the ULNs (142) is changed to fit the form of the library (150) and transmitted to the application program (110).

[0154] According to one embodiment, a method of using a user layer network solution may further include: creating a receiving thread for reception in the application (110) and switching the receiving thread to a receiving standby state; processing a packet when the ULNs (142) receives a packet through a network, and transmitting a packet processing completion to the ULNs manager (140); transmitting the packet processing completion from the ULNs manager (140) to the ULNs driver (160); transmitting a reception standby release signal to the receiving thread in the receiving standby state when the ULNs driver (160) receives the packet processing completion; and, upon receiving the reception standby release signal from the receiving thread, checking a socket state of the ULNs (142) and releasing the reception standby state if the received packet exists, and transmitting a response corresponding to an event completion notification for reception to the application (110).

[0155] According to one embodiment, a method of using a user layer network solution may further include: when the application (110) receives a response of the send function, creating a transmission thread for transmission and switching the transmission thread to a transmission standby state; when the ULNs manager (140) detects that the transmission processing of the ULNs (142) is completed, transmitting a transmission completion signal indicating that the transmission is completed to the ULNs driver (160); when the ULNs driver (160) receives the transmission completion signal, transmitting a transmission standby release signal to the transmission thread in the transmission standby state; and when the transmission standby release signal is received in the transmission thread, releasing the transmission standby state and transmitting a response corresponding to an event completion notification for transmission to the application (110).

[0156] According to one embodiment, the ULNs loader, the ULNs manager and the system call hooker may be programs operating in the user layer.

[0157] According to one embodiment, a system using a user layer network solution comprises: memory; And a processor, wherein, when the execution of an application (110) is detected in the ULNs (User-Layer Network solution) loader (120), the processor checks whether a ULNs manager (140) corresponding to the application (110) exists, and if the ULNs manager (140) corresponding to the application (110) exists as a result of the check, the ULNs loader (120) loads the ULNs manager (140) corresponding to the application (110), and when the application (110) calls a function related to a network, if the ULNs manager (140) corresponding to the application (110) exists in the system call hooker (130), the called function is transmitted to the ULNs manager (140), and when the ULNs manager (140) receives the called function, the called function is adapted to the form of the function of the corresponding ULNs (142). When a function is called by changing parameters and a response corresponding to the called function is received, the response can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0158] According to one embodiment, the processor may transmit the called function to the library (150) if the ULNs manager (140) corresponding to the application program (110) does not exist in the system call hooker (130).

[0159] According to one embodiment, when the processor detects a socket function call of the application (110) in the system call hooker (130), it checks whether the ULNs manager (140) corresponding to the application (110) is loaded, and if the ULNs manager (140) corresponding to the application (110) is loaded, the system call hooker (130) transmits the socket function call to the ULNs manager (140), and when the ULNs manager (140) receives the socket function call, it creates a first socket through the socket function of the corresponding ULNs (142), obtains a file identifier of the first socket, creates a second socket through the socket function of the library (150), obtains a file identifier of the second socket, maps the file identifier of the first socket and the file identifier of the second socket in the ULNs manager (140) and stores the mapping table, and stores the ULNs The manager (140) can return the file identifier of the second socket to the application program (110).

[0160] According to one embodiment, when the system call hooker (130) detects a connect function call of the application program (110), the processor checks whether the ULNs manager (140) corresponding to the application program (110) is loaded, and if the ULNs manager (140) corresponding to the application program (110) is loaded, the system call hooker (130) transmits the connect function call to the ULNs manager (140), and when the ULNs manager (140) receives the connect function call, the processor checks the file identifier of the socket included in the connect function call through the mapping table to check whether the corresponding file identifier of the first socket exists, and if the ULNs manager (140) determines that the file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call exists, the processor transmits to the ULNs driver (160) that there is a socket to attempt to connect. In the ULNs driver (160), a port number is assigned to the second socket, the assigned port number is transmitted to the ULNs manager (140), the assigned port number is also assigned to the first socket in the ULNs manager (140), the connect function of the ULNs (142) is called in the ULNs manager (140), and when a response of the connect function of the ULNs (142) is received, the response of the connect function of the ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0161] According to one embodiment, when the processor detects a send function call of the application program (110) in the system call hooker (130), it checks whether the ULNs manager (140) corresponding to the application program (110) is loaded, and if the ULNs manager (140) corresponding to the application program (110) is loaded, the system call hooker (130) transmits the send function call to the ULNs manager (140), and when the ULNs manager (140) receives the send function call, it checks the file identifier of the socket included in the send function call through the mapping table to check whether the corresponding file identifier of the first socket exists, and if the file identifier of the first socket corresponding to the file identifier of the socket included in the send function call exists as a result of the check in the ULNs manager (140), it executes the send function of the ULNs (142) in the ULNs manager (140). When calling and receiving a response of the send function of the ULNs (142), the response of the send function of the ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0162] According to one embodiment, when the processor detects a receive function call of the application program (110) in the system call hooker (130), it checks whether the ULNs manager (140) corresponding to the application program (110) is loaded, and if the ULNs manager (140) corresponding to the application program (110) is loaded, the system call hooker (130) transmits the receive function call to the ULNs manager (140), and when the ULNs manager (140) receives the receive function call, it checks the file identifier of the socket included in the receive function call through the mapping table to check whether the file identifier of the corresponding first socket exists, and if the file identifier of the first socket corresponding to the file identifier of the socket included in the receive call exists as a result of the check in the ULNs manager (140), it transmits the When the receive function of ULNs (142) is called and a response of the receive function of the ULNs (142) is received, the response of the receive function of the ULNs (142) can be changed to fit the form of the library (150) and transmitted to the application program (110).

[0163] According to one embodiment, the processor may create a receiving thread for reception in the application (110), switch the receiving thread to a reception standby state, process the packet when receiving a packet through a network in the ULNs (142), transmit the completion of packet processing to the ULNs manager (140), transmit the completion of packet processing from the ULNs manager (140) to the ULNs driver (160), and when the completion of packet processing is received in the ULNs driver (160), transmit a reception standby release signal to the receiving thread in the reception standby state, and when the reception standby release signal is received in the receiving thread, check the socket state of the ULNs (142), release the reception standby state if the received packet exists, and transmit a response corresponding to an event completion notification for reception to the application (110).

[0164] According to one embodiment, when the processor receives a response of the send function from the application program (110), it creates a transmission thread for transmission, switches the transmission thread to a transmission standby state, and when the ULNs manager (140) detects that the transmission processing of the ULNs (142) is completed, it transmits a transmission completion signal indicating that the transmission is completed to the ULNs driver (160), and when the ULNs driver (160) receives the transmission completion signal, it transmits a transmission standby release signal to the transmission thread in the transmission standby state, and when the transmission standby release signal is received from the transmission thread, it releases the transmission standby state and transmits a response corresponding to an event completion notification for transmission to the application program (110).

[0165] The method according to the embodiment may be implemented in the form of program commands that can be executed through various computer means and recorded on a computer-readable medium. The computer-readable medium may store program commands, data files, data structures, etc., singly or in combination. The program commands recorded on the medium may be those specially designed and configured for the embodiment or may be those known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, and hardware devices specially configured to store and execute program commands, such as ROMs, RAMs, and flash memories. Examples of the program commands include not only machine language codes generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter, etc. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiment, and vice versa.

[0166] Software may include a computer program, code, instructions, or a combination of one or more of these, and may configure a processing device to perform a desired operation or, independently or collectively, command the processing device. The software and / or data may be stored on any type of machine, component, physical device, virtual equipment, computer storage medium, or device, for interpretation by the processing device or for providing instructions or data to the processing device. The software may also be distributed over networked computer systems, and stored or executed in a distributed manner. The software and data may be stored on one or more computer-readable recording media.

[0167] Although the embodiments described above have been described with limited drawings, those skilled in the art will appreciate that various technical modifications and variations can be applied based on the above. For example, appropriate results can still be achieved even if the described techniques are performed in a different order than described, and / or components of the described systems, structures, devices, circuits, etc. are combined or combined in a different manner than described, or are replaced or substituted with other components or equivalents.

[0168] Therefore, other implementations, other embodiments, and equivalents to the claims also fall within the scope of the claims described below.

Claims

1. When the ULNs (User-Layer Network solution) loader detects the execution of an application, it checks whether a ULNs manager corresponding to the application exists; If the ULNs manager corresponding to the application exists as a result of the verification, the ULNs loader loads the ULNs manager corresponding to the application; When the above application calls a function related to a network, if there is a ULNs manager corresponding to the above application in the system call hooker, the action of sending the called function to the ULNs manager; and When the ULNs manager receives the called function, the called function is called by changing the parameters of the called function to fit the form of the corresponding ULNs function, and when a response corresponding to the called function is received, the response is changed to fit the form of the library and transmitted to the application program. How to use a user layer network solution that includes.

2. In paragraph 1, If the ULNs manager corresponding to the application does not exist in the above system call hooker, the action of sending the called function to the library How to use a user layer network solution that further includes.

3. In paragraph 1, When the above system call hook detects a socket function call of the above application, an action to check whether the ULNs manager corresponding to the above application is loaded; If the ULNs manager corresponding to the above application is loaded, an action of sending the socket function call from the system call hooker to the ULNs manager; An operation of, when the socket function call is received from the ULNs manager, creating a first socket through the socket function of the ULNs corresponding to the socket function call, obtaining a file identifier of the first socket, creating a second socket through the socket function of the library, and obtaining a file identifier of the second socket; An operation of mapping the file identifier of the first socket and the file identifier of the second socket in the above ULNs manager and storing them in a mapping table; and An action to return the file identifier of the second socket from the above ULNs manager to the above application. How to use a user layer network solution that further includes.

4. In paragraph 3, If the ULNs manager corresponding to the above application is not loaded, the system call hooker sends the socket function call to the library. How to use a user layer network solution that further includes.

5. In paragraph 3, When the above system call hook detects a call to the connect function of the above application, an action is taken to check whether the ULNs manager corresponding to the above application is loaded; If the ULNs manager corresponding to the above application is loaded, the action of sending the connect function call from the system call hooker to the ULNs manager; When the above ULNs manager receives the above connect function call, the operation of checking the file identifier of the socket included in the above connect function call through the mapping table to check whether a corresponding file identifier of the first socket exists; If the file identifier of the first socket corresponding to the file identifier of the socket included in the connect function call exists as a result of verification by the ULNs manager, an action of transmitting to the ULNs driver that there is a socket to attempt to connect; An action of assigning a port number to the second socket in the above ULNs driver and transmitting the assigned port number to the ULNs manager; An operation of assigning the port number allocated by the above ULNs manager to the first socket; and An operation of calling the connect function of the ULNs in the ULNs manager and, upon receiving a response of the connect function of the ULNs, changing the response of the connect function of the ULNs to a library format and transmitting it to the application program. How to use a user layer network solution that further includes.

6. In paragraph 5, If the ULNs manager corresponding to the above application is not loaded, the system call hooker sends the connect function call to the library. How to use a user layer network solution that further includes.

7. In paragraph 5, If the file identifier of the first socket corresponding to the file identifier of the socket included in the above connect function call does not exist as a result of the verification, an operation of transmitting the connect function call to the library. How to use a user layer network solution that further includes.

8. In paragraph 3, When the system call hooker detects a call to the send function of the application, an action is taken to check whether the ULNs manager corresponding to the application is loaded; If the ULNs manager corresponding to the above application is loaded, an action of sending the send function call from the system call hooker to the ULNs manager; When the send function call is received from the ULNs manager, an operation of checking the file identifier of the socket included in the send function call through the mapping table to check whether a corresponding file identifier of the first socket exists; and If the file identifier of the first socket corresponding to the file identifier of the socket included in the send function call exists as a result of verification in the ULNs manager, the ULNs manager calls the send function of the ULNs, and when a response of the send function of the ULNs is received, the response of the send function of the ULNs is changed to fit the library format and transmitted to the application program. How to use a user layer network solution that further includes.

9. In paragraph 3, When the system call hooker detects a call to the receive function of the application, an action is taken to check whether the ULNs manager corresponding to the application is loaded; If the ULNs manager corresponding to the above application is loaded, an action of sending the receive function call from the system call hooker to the ULNs manager; When the receive function call is received from the ULNs manager, an operation of checking the file identifier of the socket included in the receive function call through the mapping table to check whether a corresponding file identifier of the first socket exists; and If the file identifier of the first socket corresponding to the file identifier of the socket included in the receive call exists as a result of the verification in the ULNs manager, the ULNs manager calls the receive function of the ULNs, and when a response of the receive function of the ULNs is received, the response of the receive function of the ULNs is changed to fit the library format and transmitted to the application program. How to use a user layer network solution that further includes.

10. In paragraph 1, An action of creating a receiving thread for reception in the above application and switching the receiving thread to a reception standby state; An operation of receiving a packet through a network from the above ULNs, processing the packet, and sending a notification of completion of packet processing to the ULNs manager; An action of transmitting the completion of packet processing from the above ULNs manager to the above ULNs driver; When the packet processing completion is received from the ULNs driver, the operation of sending a reception standby release signal to the reception thread in the reception standby state; and When the reception waiting release signal is received from the above receiving thread, the socket status of the ULNs is checked, and if the received packet exists, the reception waiting state is released, and a response corresponding to the event completion notification for reception is transmitted to the application program. How to use a user layer network solution that further includes.

11. In paragraph 8, When the application receives a response to the send function, an action of creating a transmission thread for transmission and switching the transmission thread to a transmission standby state; When the above ULNs manager detects that the transmission processing of the above ULNs is completed, an action of transmitting a transmission completion signal indicating that the transmission is completed to the above ULNs driver; When the above ULNs driver receives the transmission completion, the operation of transmitting a transmission standby release signal to the transmission thread in the transmission standby state; and When the transmission waiting release signal is received from the above transmission thread, the transmission waiting state is released and a response corresponding to the event completion notification for transmission is transmitted to the above application. How to use a user layer network solution that further includes.

12. In a non-transitory computer-readable recording medium, Save the commands, The above instructions, when executed by one or more processors, When the ULNs(User-Layer Network solution) loader detects the execution of an application, it checks whether a ULNs manager corresponding to the application exists; If the ULNs manager corresponding to the application exists as a result of the verification, the ULNs loader loads the ULNs manager corresponding to the application; When the above application calls a function related to a network, if there is a ULNs manager corresponding to the above application in the system call hooker, the action of sending the called function to the ULNs manager; and When the ULNs manager receives the called function, the called function is called by changing the parameters of the called function to fit the form of the corresponding ULNs function, and when a response corresponding to the called function is received, the response is changed to fit the form of the library and transmitted to the application program. A computer-readable recording medium that causes the computer to perform the following.

13. In the system, memory; and Contains a processor, The above processor, When the ULNs(User-Layer Network solution) loader detects the execution of an application, it checks whether a ULNs manager corresponding to the application exists, If the ULNs manager corresponding to the application exists as a result of the verification, the ULNs loader loads the ULNs manager corresponding to the application, When the above application calls a network-related function, if there is a ULNs manager corresponding to the above application in the system call hooker, the called function is sent to the ULNs manager. When the above ULNs manager receives the called function, it changes the parameters of the called function to fit the form of the corresponding ULNs function and calls it, and when it receives a response corresponding to the called function, it changes the response to fit the form of the library and sends it to the application program. Systems that use user-level network solutions.

14. In paragraph 13, The above processor, When the above system call hook detects a socket function call of the above application, it checks whether the ULNs manager corresponding to the above application is loaded, If the ULNs manager corresponding to the above application is loaded, the system call hooker sends the socket function call to the ULNs manager, When the above ULNs manager receives the socket function call, it creates a first socket through the socket function of the corresponding ULNs, obtains the file identifier of the first socket, creates a second socket through the socket function of the library, and obtains the file identifier of the second socket. In the above ULNs manager, the file identifier of the first socket and the file identifier of the second socket are mapped and stored in a mapping table, Returning the file identifier of the second socket from the above ULNs manager to the application. Systems that use user-level network solutions.

15. In paragraph 13, The above processor, In the above application, a receiving thread is created for reception, and the receiving thread is switched to a receiving standby state. When the above ULNs receive a packet through the network, they process the packet and send the completion of packet processing to the ULNs manager. The above ULNs manager sends the completion of packet processing to the above ULNs driver, When the above ULNs driver receives the completion of packet processing, it sends a reception standby release signal to the reception thread in the reception standby state, When the reception waiting release signal is received from the above receiving thread, the socket status of the ULNs is checked, and if the received packet exists, the reception waiting state is released, and a response corresponding to the event completion notification for reception is transmitted to the application. Systems that use user-level network solutions.

Citation Information

Patent Citations

  • Secure enclaves for use by kernel mode applications

    KR1020160098430A

  • Framework for user-mode crash reporting

    KR1020160132856A

  • System and method for detecting interpreter-based exploit attacks

    US10033747B1

  • Online software execution platform

    US20160162451A1

  • Rules processing systems and methods with just-in-time compilation for endpoint protection in kernel mode

    US20230367564A1