Link establishment method, apparatus and system
By using the IP address and port number carried in the target frame in the QUIC protocol, the problem of public network clients being unable to establish a link with private network servers is solved, thus achieving secure and reliable link establishment.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- PURPLE MOUNTAIN LAB
- Filing Date
- 2022-10-28
- Publication Date
- 2026-05-29
AI Technical Summary
In the QUIC protocol, when one device is located on a public network and the other device is located on a private network, the client on the public network cannot establish a link with the server on the private network.
Under the QUIC protocol, the client on the first device sends a target frame carrying its own IP address and port number, and receives the target frame returned by the server in the case of Network Address Translation (NAT). The server establishes a link based on the IP address and port number in the target frame, including authentication and determining transmission parameters.
It enables the establishment of a link between a client on the public network and a server on the private network, solving the problem that the client on the public network cannot communicate with the server on the private network, and ensuring the security and reliability of the link.
Smart Images

Figure CN115695525B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of computers, and more specifically, to a link establishment method, apparatus, and system. Background Technology
[0002] Currently, in the general usage of QUIC, when both devices have both clients and servers, and both devices are located on a public network, the client of the first device can establish a link and communicate with the server of the second device, and the client of the second device can also establish a link and communicate with the server of the first device. However, when the first device is located on a private network and the second device is located on a public network, the client of the first device can establish a link with the server of the second device, but the client of the second device cannot establish a link with the server of the first device.
[0003] There is currently no effective solution to the above problems. Summary of the Invention
[0004] This invention provides a link establishment method, apparatus, and system to at least solve the technical problem in related technologies where, when two ends are communicating, one end is on a public network and the other end is on a private network, the client on the public network cannot establish a link with the server on the private network.
[0005] According to one aspect of the present invention, a link establishment method is provided, comprising: when the transport layer protocol is the Fast User Datagram Networking (QUIC) protocol, a first client on a first device sends a first target frame to a second server on a second device, wherein the first target frame carries a first IP address and a first port number, the first IP address being the IP address of the first device and the first port number being the port number of the first client on the first device; when the User Datagram Protocol (UDP) packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client on the first device receives a second target frame sent by the second server on the second device, wherein the second target frame carries a second IP address and a second port number, the second IP address being the IP address of the second device and the second port number being the port number of the second client on the second device; the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, wherein the second target frame received by the first server on the first device is forwarded by the first client on the first device.
[0006] Optionally, the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, including: the first server on the first device sending a server greeting SHLO message to the second client on the second device, wherein the SHLO message carries authentication information of the first server on the first device; the first server on the first device receiving a client greeting CHLO message returned by the second client on the second device, and authenticating the CHLO message to obtain a first authentication result, wherein the CHLO message carries authentication information of the second client on the second device; if the first authentication result is successful, the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame.
[0007] Optionally, the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, including: the first server on the first device determining target transmission parameters; and the first server on the first device establishing a link between the first server on the first device and the second client on the second device based on the target transmission parameters, the second IP address, and the second port number.
[0008] Optionally, the case where the User Datagram Protocol (UDP) packet received by the second server on the second device undergoes Network Address Translation (NAT) includes: the target IP address received by the second server on the second device is different from the first IP address, wherein the target IP address is carried in the UDP packet.
[0009] According to one aspect of the present invention, a link establishment method is provided, comprising: when the transport layer protocol is Fast User Datagram Networking (QUIC) protocol, a second server on a second device receives a first target frame and a User Datagram Protocol (UDP) packet, wherein the first target frame is frame data sent by a first client on the first device, the first target frame carries a first IP address and a first port number, and the UDP packet carries a target IP address and a target port number, the first IP address being the IP address of the first device, and the first port number being the port number of the first client on the first device; when the User Datagram Protocol (UDP) packet undergoes Network Address Translation (NAT), the second server on the second device obtains a second target frame, wherein the second target frame carries a second IP address and a second port number, the second IP address being the IP address of the second device, and the second port number being the port number of the second client on the second device; the second server on the second device sends the second target frame to the first client on the first device, so that the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried on the second target frame.
[0010] Optionally, after the second server on the second device receives the first target frame and the User Datagram Protocol (UDP) packet, the method further includes: if the UDP packet does not pass through NAT, the second server on the second device sends an acquisition request to the second client on the second device; the second client on the second device receives and responds to the acquisition request, acquires the first IP address and the third port number, wherein the third port number is the port number of the first server on the first device; and the second client on the second device establishes a link between the second client on the second device and the first server on the first device based on the first IP address and the third port number.
[0011] Optionally, after the second server on the second device sends the second target frame to the first client on the first device, the method further includes: the second client on the second device receiving a server greeting message (SHLO) sent by the first server on the first device, and authenticating the SHLO message to obtain a second authentication result, wherein the SHLO message carries the authentication information of the first server on the first device; if the second authentication result is successful, the second client on the second device sends a client greeting message (CHLO) to the first server on the first device, wherein the CHLO message carries the authentication information of the second client on the second device.
[0012] Optionally, the case where the User Datagram Protocol (UDP) packet undergoes Network Address Translation (NAT) includes situations where the target IP address is different from the first IP address.
[0013] According to one aspect of the present invention, a link establishment apparatus is provided, comprising: a first client on a first device, configured to send a first target frame to a second server on a second device, and, when a User Datagram Protocol (UDP) packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client on the first device receives a second target frame sent by the second server on the second device, wherein the first target frame carries a first IP address and a first port number, the first IP address being the IP address of the first device and the first port number being the port number of the first client on the first device; the second target frame carries a second IP address and a second port number, the second IP address being the IP address of the second device and the second port number being the port number of the second client on the second device; and a first server on the first device, configured to establish a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, wherein the second target frame received by the first server on the first device is forwarded by the first client on the first device.
[0014] According to one aspect of the present invention, a link establishment system is provided, comprising: a first client of a first device, configured to send a first target frame to a second server of a second device, and, when the User Datagram Protocol (UDP) packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client on the first device receives a second target frame sent by the second server on the second device, wherein the first target frame carries a first IP address and a first port number, the first IP address being the IP address of the first device and the first port number being the port number of the first client on the first device; the second target frame carries a second IP address and a second port number, the second IP address being the IP address of the second device and the second port number being the port number of the second client on the second device; and a first server of the first device, configured to establish a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, wherein the first server on the first device receives a first target frame sent by the second server on the second device. The second target frame is forwarded by the first client on the first device; the second server on the second device is used to receive the first target frame and a User Datagram Protocol (UDP) packet, and, when the UDP packet passes through Network Address Translation (NAT), obtain the second target frame and then send the second target frame to the first client on the first device. The first target frame is frame data sent by the first client on the first device, carrying a first IP address and a first port number. The UDP packet carries a target IP address and a target port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. The second target frame carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. The second client on the second device is used to send the second target frame to the second server on the second device when the UDP packet passes through NAT.
[0015] In this embodiment of the invention, when the transport layer protocol is the Fast User Datagram Networking (QUIC) protocol, a first client on the first device sends a first target frame to a second server on the second device. The first target frame carries a first IP address and a first port number, where the first IP address is the IP address of the first device and the first port number is the port number of the first client on the first device. When the UDP packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client on the first device receives a second target frame sent by the second server on the second device. This second target frame carries a second IP address and a second port number, where the second IP address is the IP address of the second device and the second port number is the port number of the second client on the second device. The first server on the first device establishes a link between itself and the second client on the second device based on the second IP address and second port number carried in the second target frame. The second target frame received by the first server on the first device is forwarded by the first client on the first device. Since the first server can obtain the second IP address and second port number of the second client, the first server can actively establish a link with the second client, thereby achieving the technical effect of establishing a link between the second client of the second device located in the public network and the first server of the first device located in the private network. This solves the technical problem in related technologies where, when the two ends are communicating, one end is in the public network and the other end is in the private network, the client in the public network cannot establish a link with the server in the private network. Attached Figure Description
[0016] The accompanying drawings, which are included to provide a further understanding of the invention and form part of this application, illustrate exemplary embodiments of the invention and, together with their description, serve to explain the invention and do not constitute an undue limitation thereof. In the drawings:
[0017] Figure 1 This is a diagram illustrating the general usage of QUIC in related technologies;
[0018] Figure 2 This is a schematic diagram of a bidirectional peer-to-peer channel in related technologies;
[0019] Figure 3 This is a schematic diagram of a bidirectional peer-to-peer channel via NAT in related technologies;
[0020] Figure 4 This is a flowchart of a link establishment method according to an embodiment of the present invention;
[0021] Figure 5 This is a flowchart of the link establishment method two according to an embodiment of the present invention;
[0022] Figure 6This is a schematic diagram of a solution provided by an optional embodiment of the present invention;
[0023] Figure 7 This is a schematic diagram of the target frame format provided by an optional embodiment of the present invention;
[0024] Figure 8 This is a schematic diagram of a process provided by an optional embodiment of the present invention;
[0025] Figure 9 This is a schematic diagram of data transmission between the first client and the second server provided in an optional embodiment of the present invention;
[0026] Figure 10 This is a schematic diagram of data transmission between the first server and the second client provided in an optional embodiment of the present invention;
[0027] Figure 11 This is a schematic diagram of the frame format of a LOAN frame with an internal type of source provided in an optional embodiment of the present invention;
[0028] Figure 12 This is a schematic diagram of the frame format of a LOAN frame with an internal type of dest provided in an optional embodiment of the present invention;
[0029] Figure 13 This is a schematic diagram of the frame format of a LOAN frame with an internal type of ClientHello provided in an optional embodiment of the present invention;
[0030] Figure 14 This is a schematic diagram of the frame format of a LOAN frame with an internal type of transportParam provided in an optional embodiment of the present invention;
[0031] Figure 15 This is a structural block diagram of a link establishment device according to an embodiment of the present invention;
[0032] Figure 16 This is a structural block diagram of a link establishment system according to an embodiment of the present invention. Detailed Implementation
[0033] To enable those skilled in the art to better understand the present invention, the technical solutions of the present invention will be clearly and completely described below with reference to the accompanying drawings of the embodiments of the present invention. Obviously, the described embodiments are only some embodiments of the present invention, and not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort should fall within the scope of protection of the present invention.
[0034] It should be noted that the terms "first," "second," etc., in the specification, claims, and accompanying drawings of this invention are used to distinguish similar objects and are not necessarily used to describe a specific order or sequence. It should be understood that such data can be interchanged where appropriate so that the embodiments of the invention described herein can be implemented in orders other than those illustrated or described herein. Furthermore, the terms "comprising" and "having," and any variations thereof, are intended to cover a non-exclusive inclusion; for example, a process, method, system, product, or apparatus that comprises a series of steps or units is not necessarily limited to those steps or units explicitly listed, but may include other steps or units not explicitly listed or inherent to such processes, methods, products, or apparatus.
[0035] Example 1
[0036] According to an embodiment of the present invention, an embodiment of a link establishment method is provided. It should be noted that the steps shown in the flowchart in the accompanying drawings can be executed in a computer system such as a set of computer-executable instructions. Furthermore, although a logical order is shown in the flowchart, in some cases, the steps shown or described may be executed in a different order than that shown here.
[0037] First, it's important to clarify that in the traditional usage of the Quick User Datagram (QUIC) protocol for network connections, it's generally used in the HTTP / 3.0 hypertext transfer protocol, employing a client-server model. In this model, the client explicitly knows the server's IP address and port number and can actively establish a link with the server. The server, however, is indifferent to the client's IP address and port number. Even if multiple levels of Network Address Translation (NAT) occur—meaning the server receives a modified version of the client's IP address and port number after NAT—it doesn't affect the establishment of the link between the client on the private network and the server on the public network. Figure 1 This is a diagram illustrating the general usage of QUIC in related technologies. Figure 1 In Chinese: QUIC client represents the client, QUIC server represents the server, IP1 represents the client's IP address, port1 represents the client's port number, IP2 represents the server's IP address, port2 represents the server's port number, IP1' represents the client's IP address after NAT translation, and port1' represents the client's port number after NAT translation. Figure 1 As shown, the client explicitly knows the server's IP address IP2 and port number port2 and actively establishes a link with the server. The server does not need to know the client's IP address IP1 and port number port1, nor does it need to know the IP address IP1' and port number port1' after NAT translation.
[0038] Figure 2 This is a schematic diagram of a bidirectional peer-to-peer channel in related technologies. Figure 2 In Chinese: QUIC Client represents the client, and QUICServer represents the server, such as... Figure 2 As shown, in certain situations, both ends of the device need to be able to act as both a server and a client. In this case, if both ends of the device are on the public network or the same private network, NAT is not required, and a link can be established directly for communication. This can be achieved using the existing QUIC connection method.
[0039] However, if one device is on a public network and the other is on a private network, NAT is required to establish a link for communication. The methods described in related technologies cannot enable a client on the public network to establish a link with a server on the private network. Figure 3 This is a schematic diagram of a bidirectional peer-to-peer channel via NAT in related technologies. Figure 3 In Chinese: QUIC server and QUIC client(1) represents the first device on the public network, QUIC server and QUIC client(2) represents the second device on the private network, IP1 represents the IP address of the client on the first device, port1 represents the port number of the first device, IP2 represents the IP address of the second device, port2 represents the port number of the second device, IP1' represents the IP address of the first device after NAT translation, and port1' represents the port number of the first device after NAT translation. Figure 3 As shown, in related technologies, a first device acting as a client in a private network can establish a link with a second device acting as a server in a public network, but a second device acting as a client in a public network cannot establish a link with a first device acting as a server in a private network. This is because the first device acting as a client in the private network knows the IP address IP2 and port number port2 of the second device acting as a server in the public network, while the second device acting as a client in the public network only knows the IP address IP1 after NAT translation (IP1') and port number port1 after NAT translation (port1') of the first device acting as a server in the private network. Based on IP1' and port1', the second device acting as a client in the public network cannot establish a link with the first device acting as a server in the private network.
[0040] To address the aforementioned issues, this application provides a method for enabling a client on a public network to establish a link with a server on a private network. The method described in this application is as follows:
[0041] Figure 4 This is a flowchart of a link establishment method according to an embodiment of the present invention, such as... Figure 4 As shown, the method includes the following steps:
[0042] In step S402, when the transport layer protocol is the Fast User Datagram Network Connection (QUIC) protocol, the first client on the first device sends the first target frame to the second server on the second device.
[0043] Step S404: When the User Datagram Protocol (UDP) packet received by the second server on the second device passes through Network Address Translation (NAT), the first client on the first device receives the second target frame sent by the second server on the second device.
[0044] In step S406, the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame.
[0045] Through the above steps, from the perspective of the first device, when the transport layer protocol is the Fast User Datagram Networking (QUIC) protocol, the first client on the first device sends a first target frame to the second server on the second device. The first target frame carries a first IP address and a first port number; the first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. When the UDP packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client on the first device receives a second target frame sent by the second server on the second device. This second target frame carries a second IP address and a second port number; the second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. Based on the second IP address and second port number carried in the second target frame, the first server on the first device establishes a link between itself and the second client on the second device. The second target frame received by the first server on the first device is forwarded by the first client on the first device. Since the first server can obtain the second IP address and second port number of the second client, the first server can actively establish a link with the second client, thereby achieving the technical effect of establishing a link between the second client of the second device located in the public network and the first server of the first device located in the private network. This solves the technical problem in related technologies where, when the two ends are communicating, one end is in the public network and the other end is in the private network, the client in the public network cannot establish a link with the server in the private network.
[0046] As an optional embodiment, when the transport layer protocol is the Fast User Datagram Networking (QUIC) protocol, a first client on the first device sends a first target frame to a second server on the second device. The first target frame carries a first IP address and a first port number, where the first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. Optionally, the target frame can be a LOAN type target frame, including various information such as Frame Type: LOAN, indicating that the frame type is LOAN; Frame Length, indicating the frame length; InnerType, indicating the internal type of the frame; and Data, indicating data. The InnerType includes various frame internal types, such as source, dest, ClientHello, and transportParam. Source represents the first IP address and first port number; dest represents the second IP address and the port number of the server in the second device; ClientHello represents the client information to be connected, including the shared key (key_share), signature algorithm (signature_algorithms), pre-shared key (pre_shared_key), and pre-shared key exchange mode (psk_key_exchange_modes), i.e., a CHLO message; transportParam represents the client information to be connected, such as target transmission parameters. In this optional embodiment, the first target frame can be a LOAN type target frame with an internal type of source, meaning the Data portion carries the first IP address and first port number; the second target frame has an internal type of dest, meaning the Data portion carries the second IP address and second port number.
[0047] Optionally, the second server can receive UDP packets and a first target frame. The first target frame carries a first IP address and a first port number, and the UDP packet carries a target IP address and a target port number. When the UDP packet received by the second server on the second device undergoes Network Address Translation (NAT), the conditions for this can be varied. For example, it could be that the target IP address in the UDP packet is different from the first IP address in the first target frame, and / or that the target port number in the UDP packet is different from the first port number in the first target frame. In this case, the first client on the first device receives a second target frame sent by the second server on the second device. The second target frame carries a second IP address and a second port number, where the second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. In this way, the first server on the first device located in a private network can receive the second IP address and the second port number of the second client on the second device located in a public network. The first server can then actively establish a link with the second client based on the second IP address and the second port number.
[0048] Optionally, when the UDP packet does not pass through NAT, the judgment condition can be multiple. For example, it could be that the destination IP address in the UDP packet is the same as the first IP address in the first destination frame, and / or that the destination port number in the UDP packet is the same as the first port number in the first destination frame. The second device performs an operation: the second server on the second device sends an acquisition request to the second client on the second device. The second client on the second device receives and responds to the acquisition request, obtaining the first IP address and the third port number, which is the port number of the first server on the first device. Based on the first IP address and the third port number, the second client on the second device establishes a link between itself and the first server on the first device. Without NAT, the second client's known IP address and port number are the IP address and port number of the first server, i.e., the first IP address and the third port number. In this case, the second client can directly establish a link with the first server based on the first IP address and the third port number, without needing to send the second IP address and the second port number to the first server. This method allows for classification and processing of different situations, speeding up the link establishment process.
[0049] As an optional embodiment, when the UDP packet received by the second server passes through NAT, the determination conditions for this situation can be multiple. For example, it could be that the destination IP address in the UDP packet is different from the first IP address in the first destination frame, and / or that the destination port number in the UDP packet is different from the first port number in the first destination frame. The first client on the first device receives the second destination frame sent by the second server on the second device, wherein the second destination frame carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. The first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second destination frame. The first server on the first device receives... The second target frame is forwarded by the first client on the first device. The link establishment process can be as follows: the first server on the first device sends a server greeting SHLO message carrying the authentication information of the first server on the first device to the second client on the second device, so that the second device authenticates the first device; the first server on the first device receives a client greeting CHLO message carrying the authentication information of the second client on the second device, and authenticates the CHLO message, so that the first device authenticates the second device, obtaining a first authentication result; if the first authentication result is successful, it means that the second device has been verified, and the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and second port number carried in the second target frame. Since the link establishment process involves authentication via SHLO and CHLO messages, the link established in this way is more secure and reliable, providing a guarantee for secure communication between the first and second devices.
[0050] As an optional embodiment, when the first server on the first device establishes a link between itself and the second client on the second device based on the second IP address and second port number carried in the second target frame, the first server on the first device can determine the target transmission parameters; the first server on the first device then establishes the link between itself and the second client on the second device based on the target transmission parameters, the second IP address, and the second port number. By determining the target transmission parameters, the execution of the link establishment process can be guaranteed.
[0051] It should be noted that the following situations occur when the User Datagram Protocol (UDP) packets received by the second server on the second device have undergone Network Address Translation (NAT): the destination IP address received by the second server on the second device is different from the first IP address, where the destination IP address is carried in the UDP packet. This method allows for a quick determination of whether a UDP packet has passed through NAT.
[0052] Figure 5 This is a flowchart of the link establishment method two according to Embodiment 1 of the present invention, as follows: Figure 5 As shown, the method includes the following steps:
[0053] In step S502, when the transport layer protocol is the Fast User Datagram Network Connection (QUIC) protocol, the second server on the second device receives the first target frame and the User Datagram Protocol (UDP) message.
[0054] Step S504: When the User Datagram Protocol (UDP) packet passes through Network Address Translation (NAT), the second server on the second device obtains the second target frame.
[0055] In step S506, the second server on the second device sends a second target frame to the first client on the first device, so that the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried on the second target frame.
[0056] Through the above steps, for the second device side, when the transport layer protocol is the Fast User Datagram Networking (QUIC) protocol, the second server on the second device receives the first target frame and a User Datagram Protocol (UDP) packet. The first target frame is frame data sent by the first client on the first device, carrying a first IP address and a first port number. The UDP packet carries a destination IP address and a destination port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. When the UDP packet undergoes Network Address Translation (NAT), the second server on the second device obtains the second target frame, carrying a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. The second server on the second device sends the second target frame to the first client on the first device, enabling the first server on the first device to establish a link between itself and the second client on the second device based on the second IP address and second port number carried in the second target frame. Since the second client can send a second target frame carrying a second IP address and a second port number to the second server, the second server can send the second target frame to the first client through the established link with the first client. The first client then sends the second target frame to the first server. That is, the second client can send its own IP address and port number to the first server in this way, and wait for the first server to actively establish a link with the second client. This solves the technical problem in related technologies where, when two ends are communicating, one end is on the public network and the other end is on the private network, the client on the public network cannot establish a link with the server on the private network.
[0057] As an optional embodiment, when the transport layer protocol is the Fast User Datagram Networking (QUIC) protocol, the second server on the second device receives a first target frame and a User Datagram Protocol (UDP) packet. The first target frame is frame data sent by the first client on the first device, carrying a first IP address and a first port number. The UDP packet carries a destination IP address and a destination port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. Optionally, the target frame can be a LOAN type target frame, including various information such as Frame Type: LOAN, indicating the frame type is LOAN; Frame Length, indicating the frame length; InnerType, indicating the internal type of the frame; and Data, indicating data. The InnerType includes various frame internal types, such as source, dest, ClientHello, and transportParam. Source represents the first IP address and first port number; dest represents the second IP address and the port number of the server in the second device; ClientHello represents the client information to be connected, including the shared key (key_share), signature algorithm (signature_algorithms), pre-shared key (pre_shared_key), and pre-shared key exchange mode (psk_key_exchange_modes), i.e., a CHLO message; transportParam represents the client information to be connected, such as target transmission parameters. In this optional embodiment, the first target frame can be a LOAN type target frame with an internal type of source, meaning the Data portion carries the first IP address and first port number; the second target frame has an internal type of dest, meaning the Data portion carries the second IP address and second port number.
[0058] As an optional embodiment, after receiving the UDP packet and the first target frame, the second server needs to determine whether the UDP packet has passed through NAT. For example, the second server will compare the received target IP address with the first IP address. If the target IP address in the UDP packet is different from the first IP address in the first target frame, and / or the target port number in the UDP packet is different from the first port number in the first target frame, it is determined that the UDP packet has passed through NAT. The second server on the second device obtains the second target frame, which carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. The second server on the second device sends the second target frame to the first client on the first device, so that the first server on the first device can establish a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried on the second target frame. Since the second client can send a second target frame carrying a second IP address and a second port number to the second server, the second server can send the second target frame to the first client through the established link with the first client. The first client then sends the second target frame to the first server. In other words, the second client can send its own IP address and port number to the first server in this way, and wait for the first server to actively establish a link with the second client.
[0059] As an optional embodiment, when the User Datagram Protocol (UDP) packet does not pass through NAT, the judgment condition can be various. For example, it could be that the destination IP address in the UDP packet is the same as the first IP address in the first destination frame, and / or that the destination port number in the UDP packet is the same as the first port number in the first destination frame. The second server on the second device sends an acquisition request to the second client on the second device. The second client on the second device receives and responds to the acquisition request, acquiring the first IP address and the third port number, where the third port number is the port number of the first server on the first device. Based on the first IP address and the third port number, the second client on the second device establishes a link between itself and the first server on the first device. Without NAT, the IP address and port number known to the second client are the IP address and port number of the first server, i.e., the first IP address and the third port number. In this case, the second client can directly establish a link with the first server based on the first IP address and the third port number, without needing to send the second IP address and the second port number to the first server. This method allows for the classification and processing of different situations, speeding up the link establishment process.
[0060] As an optional embodiment, a first server on the first device sends a server greeting SHLO message carrying authentication information of the first server on the first device to a second client on the second device. When the second device authenticates the first device, the second client on the second device receives the server greeting SHLO message sent by the first server on the first device and authenticates the SHLO message to obtain a second authentication result. If the second authentication result is successful, it indicates that the first device has been verified. At this time, the second client on the second device sends a client greeting CHLO message carrying authentication information of the second client on the second device to the first server on the first device, so that the first server verifies the second device based on the CHLO message. Because the link establishment process involves authentication via SHLO and CHLO messages, the link established in this way is more secure and reliable, providing a guarantee for secure communication between the first and second devices.
[0061] In related technologies, when one end of the two devices that need to communicate is on a public network and the other end is on a private network, the client on the public network cannot establish a link with the server on the private network.
[0062] In view of this, an optional embodiment of the present invention provides a method for establishing a link between a client on the public network and a server on the private network when one of the two devices that need to communicate is on a public network and the other is on a private network.
[0063] Figure 6 This is a schematic diagram of the solution provided by an optional embodiment of the present invention. Figure 6 In this context, QUIC Client1 represents the first client in the first device on the private network, QUIC Server1 represents the first server in the first device on the private network, QUIC Server2 represents the second server in the second device on the public network, and QUIC Client2 represents the second client in the second device on the public network. Figure 6 As shown, the steps of the solution provided by the optional embodiment of the present invention are as follows:
[0064] S1. The first client establishes a link with the second server and sends a first target frame carrying its own native IP address (i.e., the first IP address mentioned above) and port number (i.e., the first port number mentioned above) to the second server.
[0065] S2. The second server compares the native IP address (i.e., the first IP address mentioned above) with the source IP address (i.e., the destination IP address mentioned above) in the UDP packet, and compares the native port number (i.e., the first port number mentioned above) with the source port number (i.e., the destination port number mentioned above) in the UDP packet to determine whether NAT has been passed. That is, the second server receives the first target frame and the UDP packet, compares the native IP address (i.e., the first IP address mentioned above) in the first target frame with the source IP address (i.e., the destination IP address mentioned above) in the UDP packet, and compares the native port number (i.e., the first port number mentioned above) in the first target frame with the source port number (i.e., the destination port number mentioned above) in the UDP packet to determine whether NAT has been passed. If the destination IP address in the UDP packet is different from the first IP address in the first target frame, and / or the destination port number in the UDP packet is different from the first port number in the first target frame, it is determined that the UDP packet has passed through NAT.
[0066] S3. When the UDP packet passes through NAT, the second server notifies the second client to start UDP listening (i.e., the process described above where the second client obtains the second IP address and the second port number).
[0067] S4. The second client sends the second target frame, carrying the second IP address and the second port number, to the second server.
[0068] S5. The second server sends the second target frame to the first client.
[0069] S6. The first client sends the second target frame to the first server;
[0070] S7. The first server sends a SHLO message to the second client based on the second IP address and second port number in the second target frame;
[0071] S8. The second client receives the SHLO message, verifies the SHLO message, and if the SHLO message authentication is successful, sends a CHLO message to the first server. The first server receives the CHLO message, verifies the CHLO message, and if the CHLO message authentication is successful, establishes a link with the second client.
[0072] This allows a client on the public network to establish a connection with a server on the private network when one device is on the public network and the other device is on the private network.
[0073] Figure 7 This is a schematic diagram of the target frame format provided by an optional embodiment of the present invention. Figure 7In the CHLO message: Frame Type: LOAN indicates the frame type is LOAN; Frame Length indicates the frame length; InnerType indicates the internal type of the frame; Data indicates the data. InnerType includes four internal types: source, dest, ClientHello, and transportParam. Source represents the source IP and port number (the first IP address and port number mentioned above); dest represents the IP and port number of the client to be connected (the second IP address and port number mentioned above); ClientHello represents information about the client to be connected, which may include shared key (key_share), signature algorithm (signature_algorithms), pre-shared key (pre_shared_key), pre-shared key exchange mode (psk_key_exchange_modes), etc. TransportParam contains information about the client to be connected, i.e., the target transmission parameters mentioned above. Figure 7 As shown, the target frames can be named LOAN. The internal type of the first target frame is source, that is, the Data contains the first IP address and the first port number. The internal type of the second target frame is dest, that is, the Data contains the second IP address and the second port number.
[0074] Figure 8 This is a schematic diagram of a process provided by an optional embodiment of the present invention. Figure 8In this code, QUIC Client1 represents the first client on the first device in the private network, QUIC Server2 represents the first server on the first device in the private network, QUICServer1 represents the second server on the second device in the public network, and QUIC Client2 represents the second client on the second device in the private network. IP1 represents the IP address of the first device, Port11 represents the port number of the first client, and Port12 represents the port number of the first server. IP2 represents the IP address of the second device, Port21 represents the port number of the second server, and Port22 represents the port number of the second client. IP1' represents the IP address of the first device after NAT translation, Port11' represents the port number of the first client after NAT translation, and Port12' represents the port number of the first server after NAT translation. Quic_connection_1 represents the link between the first client and the second server, Quic_connection_2 represents the link between the second client and the first server, ClientHello represents CHLO packets, and ServerHello represents SHLO packets. Figure 8 The process shown is the same as Figure 6 The process shown is similar and will not be repeated here.
[0075] Figure 9 This is a schematic diagram illustrating data transmission between the first client and the second server according to an optional embodiment of the present invention. Figure 9 In the diagram: QUIC Client1 represents the first client mentioned above, QUIC Server1 represents the second server mentioned above, (10.1.1.1, 5000) indicates that the first IP address is 10.1.1.1 and the first port number is 5000. A schematic diagram of the frame format of the first target frame carrying the first IP address and the first port number is shown below. Figure 11 As shown, (220.1.1.1, 6000) indicates that the target IP address is 220.1.1.1 and the target port number is 6000; (223.1.1.1, 443) indicates that the IP address of QUICServer1 is 223.1.1.1 and the port number of QUIC Server1 is 443. Figure 7As shown, the source IP of QUICclient1 in the private network (i.e., the first IP address mentioned above) is 10.1.1.1, and the source port number (i.e., the first port number mentioned above) is 5000. The source IP of the second server in the public network (i.e., the second IP address mentioned above) is 223.1.1.1, and the listening port number is 443. After the UDP packet sent by QUICclient1 passes through the NAT device, the source IP becomes 220.1.1.1 (i.e., the destination IP address), and the source port number becomes 6000 (i.e., the destination port number). After Server1 receives the first destination frame, it compares the first IP address 10.1.1.1 with the source IP of the UDP packet 220.1.1.1. Since the two are different, it determines that it has passed through NAT.
[0076] Figure 10 This is a schematic diagram illustrating data transmission between the first server and the second client according to an optional embodiment of the present invention. Figure 10 In the diagram: QUIC server2 represents the first server mentioned above, QUIC client2 represents the second client mentioned above, (10.1.1.1, 5002) indicates that the first IP address is 10.1.1.1 and the third port number is 5002, (220.1.1.1, 6001) indicates that the IP address of QUIC server2 is 220.1.1.1 and the port number obtained after NAT translation of the third port of QUIC server2 is 6001, (223.1.1.1, 6002) indicates that the second IP address is 223.1.1.1 and the second port number is 6002. The frame format of the second target frame carrying the second IP address and the second port number is shown below. Figure 12 As shown, QUICclient2 compares the IP address of QUIC server2 (10.1.1.1) with the source IP address of the UDP packet (220.1.1.1). Since the two are different, it is determined that NAT has been used.
[0077] Figure 11 This is a schematic diagram of the frame format of a LOAN frame with an internal type of "source" provided in an optional embodiment of the present invention, as shown below. Figure 11 As shown, Frame Type: 0x1f indicates that the frame with type 0x1f is a LOAN frame, Frame Length: 7 indicates that the frame length is 7, InnerType: 1 indicates that the internal type of the LOAN frame is source, and Data: 10.1.1.1,5000 indicates that the first IP address is 10.1.1.1 and the first port number is 5000.
[0078] Figure 12 This is a schematic diagram of the frame format of a LOAN frame with an internal type of dest provided in an optional embodiment of the present invention, as shown below. Figure 12As shown, Frame Type: 0x1f indicates that the frame with a frame type of 0x1f is a LOAN frame, Frame Length: 7 indicates that the frame length is 7, InnerType: 2 indicates that the inner type of the LOAN frame is dest, and Data: 223.1.1.1,6002 indicates that the second IP address is 223.1.1.1 and the second port number is 6002.
[0079] Figure 13 This is a schematic diagram of the frame format of a LOAN frame with an internal type of ClientHello provided in an optional embodiment of the present invention, as shown below. Figure 13 As shown, Frame Type: 0x1f indicates that a frame with a frame type of 0x1f is a LOAN frame, Frame Length: 'determined by content' indicates that the frame length is determined by the specific information carried by the frame, InnerType: 3 indicates that the internal type of the LOAN frame is ClientHello, and Data: ClientHello indicates that it carries a CHLO message.
[0080] Figure 14 This is a schematic diagram of the frame format of a LOAN frame with an internal type of transportParam provided in an optional embodiment of the present invention, as shown below. Figure 14 As shown, Frame Type: 0x1f indicates that the frame with type 0x1f is a LOAN frame, FrameLength: 3 indicates that the frame length is 3, InnerType: 4 indicates that the internal type of the LOAN frame is transportParam, Data: 9(transport-id)100(Value) indicates that the id number is 9, and the maximum number of data that the second client can send at one time is 100.
[0081] The above optional implementation methods can achieve at least the following beneficial effects: when one end of the two devices that need to communicate is in the public network and the other end is in the private network, the client in the public network can establish a link with the server in the private network.
[0082] It should be noted that, for the sake of simplicity, the foregoing method embodiments are all described as a series of actions. However, those skilled in the art should understand that the present invention is not limited to the described order of actions, because according to the present invention, some steps can be performed in other orders or simultaneously. Furthermore, those skilled in the art should also understand that the embodiments described in the specification are preferred embodiments, and the actions and modules involved are not necessarily essential to the present invention.
[0083] Through the above description of the embodiments, those skilled in the art can clearly understand that the methods according to the above embodiments can be implemented by means of software plus necessary general-purpose hardware platforms. Of course, they can also be implemented by hardware, but in many cases the former is a better implementation method. Based on this understanding, the technical solution of the present invention, in essence, or the part that contributes to the prior art, can be embodied in the form of a software product. This computer software product is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk) and includes several instructions to cause a terminal device (which may be a mobile phone, computer, server, or network device, etc.) to execute the methods of the various embodiments of the present invention.
[0084] Example 2
[0085] According to an embodiment of the present invention, an apparatus for implementing the above-described link establishment method is also provided. Figure 15 This is a structural block diagram of a link establishment device according to an embodiment of the present invention, such as... Figure 15 As shown, the device includes a first client 1502 and a first server 1504. The device will be described in detail below.
[0086] A first client 1502 is used to send a first target frame to a second server on a second device. When the UDP packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client 1502 on the first device receives a second target frame sent by the second server on the second device. The first target frame carries a first IP address and a first port number, where the first IP address is the IP address of the first device and the first port number is the port number of the first client 1502 on the first device. The second target frame carries a second IP address and a second port number, where the second IP address is the IP address of the second device and the second port number is the port number of the second client on the second device. A first server 1504 is connected to the first client 1502 and is used to establish a link between the first server 1504 on the first device and the second client on the second device based on the second IP address and second port number carried in the second target frame. The second target frame received by the first server 1504 on the first device is forwarded by the first client 1502 on the first device.
[0087] It should be noted that the first client 1502 and the first server 1504 are used to implement steps S102 to S106 in the link establishment method. The steps implemented by the two ends are the same in terms of examples and application scenarios, but are not limited to the content disclosed in the above embodiment 1.
[0088] Example 3
[0089] According to an embodiment of the present invention, a system for implementing the above-described link establishment method is also provided. Figure 16 This is a structural block diagram of a link establishment system according to an embodiment of the present invention, such as... Figure 16 As shown, the system includes: a first client 1602, a first server 1604, a second server 1606, and a second client 1608. The system will be described in detail below.
[0090] A first client 1602 is used to send a first target frame to a second server 1606 on a second device. When the User Datagram Protocol (UDP) packet received by the second server 1606 on the second device undergoes Network Address Translation (NAT), the first client 1602 on the first device receives the second target frame sent by the second server 1606 on the second device. The first target frame carries a first IP address and a first port number, where the first IP address is the IP address of the first device and the first port number is the port number of the first client 1602 on the first device. The second target frame carries a second IP address and a second port number, where the second IP address is the IP address of the second device and the second port number is the port number of the second client 1608 on the second device. A first server 1604, connected to the first client 1602, is used to establish a link between the first server 1604 on the first device and the second client 1608 on the second device based on the second IP address and second port number carried in the second target frame. The second target frame received by the first server 1604 on the first device is... The first client 1602 on the first device forwards the data; the second server 1606 is used to receive the first target frame and the User Datagram Protocol (UDP) packet, and, when the UDP packet passes through Network Address Translation (NAT), obtain the second target frame and then send the second target frame to the first client 1602 on the first device. The first target frame is the frame data sent by the first client 1602 on the first device, carrying a first IP address and a first port number. The UDP packet carries a target IP address and a target port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client 1602 on the first device. The second target frame carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client 1608 on the second device. The second client 1608 is connected to the second server 1606 and is used to send the second target frame to the second server 1606 on the second device when the UDP packet passes through NAT.
[0091] It should be noted that the first client 1602, the first server 1604, the second server 1606, and the second client 1608 are used to implement the steps involved in this application in the link establishment method. The steps of the multiple terminals are implemented in the same instances and application scenarios, but are not limited to the content disclosed in the above embodiment 1.
[0092] Example 4
[0093] According to another aspect of the present invention, an electronic device is also provided, comprising: a processor; and a memory for storing processor-executable instructions, wherein the processor is configured to execute instructions to implement the link establishment method of any of the above embodiments.
[0094] Example 5
[0095] According to another aspect of the present invention, a computer-readable storage medium is also provided, which, when the instructions in the computer-readable storage medium are executed by a processor of an electronic device, enables the electronic device to perform any of the link establishment methods described above.
[0096] The sequence numbers of the above embodiments of the present invention are for descriptive purposes only and do not represent the superiority or inferiority of the embodiments.
[0097] In the above embodiments of the present invention, the descriptions of each embodiment have different focuses. For parts not described in detail in a certain embodiment, please refer to the relevant descriptions of other embodiments.
[0098] In the several embodiments provided in this application, it should be understood that the disclosed technical content can be implemented in other ways. The device embodiments described above are merely illustrative; for example, the division of units can be a logical functional division, and in actual implementation, there may be other division methods. For instance, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the displayed or discussed mutual coupling, direct coupling, or communication connection may be through some interfaces; the indirect coupling or communication connection between units or modules may be electrical or other forms.
[0099] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0100] Furthermore, the functional units in the various embodiments of the present invention can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
[0101] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present invention, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of the present invention. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, read-only memory (ROM), random access memory (RAM), portable hard drives, magnetic disks, or optical disks.
[0102] The above description is only a preferred embodiment of the present invention. It should be noted that for those skilled in the art, several improvements and modifications can be made without departing from the principle of the present invention, and these improvements and modifications should also be considered within the scope of protection of the present invention.
Claims
1. A link establishment method, characterized in that, include: In the case where the transport layer protocol is the Fast User Datagram Network Connection (QUIC) protocol, a first client on a first device sends a first target frame to a second server on a second device. The first device is located in a private network, and the second device is located in a public network. The first target frame carries a first IP address and a first port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. When the User Datagram Protocol (UDP) packet received by the second server on the second device passes through Network Address Translation (NAT), the first client on the first device receives the second target frame sent by the second server on the second device. The second target frame carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client in the second device. The first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, wherein the second target frame received by the first server on the first device is forwarded by the first client on the first device.
2. The method according to claim 1, characterized in that, The first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, including: The first server on the first device sends a server greeting SHLO message to the second client on the second device, wherein the SHLO message carries the authentication information of the first server on the first device; The first server on the first device receives a client greeting CHLO message returned by the second client on the second device, and authenticates the CHLO message to obtain a first authentication result, wherein the CHLO message carries the authentication information of the second client on the second device; If the first authentication result is successful, the first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame.
3. The method according to claim 1, characterized in that, The first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, including: The first server on the first device determines the target transmission parameters; The first server on the first device establishes a link between the first server on the first device and the second client on the second device based on the target transmission parameters, the second IP address, and the second port number.
4. The method according to claim 1, characterized in that, The case where the User Datagram Protocol (UDP) packet received by the second server on the second device undergoes Network Address Translation (NAT) includes situations where the target IP address received by the second server on the second device is different from the first IP address, wherein the target IP address is carried in the UDP packet.
5. A link establishment method, characterized in that, include: In the case where the transport layer protocol is the Fast User Datagram Networking (QUIC) protocol, the second server on the second device receives a first target frame and a User Datagram Protocol (UDP) packet. The first device is located in a private network, and the second device is located in a public network. The first target frame is frame data sent by the first client on the first device. The first target frame carries a first IP address and a first port number. The UDP packet carries a target IP address and a target port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. When the User Datagram Protocol (UDP) packet passes through Network Address Translation (NAT), the second server on the second device obtains the second target frame, wherein the second target frame carries a second IP address and a second port number, the second IP address being the IP address of the second device, and the second port number being the port number of the second client on the second device; The second server on the second device sends the second target frame to the first client on the first device, so that the first server on the first device can establish a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried on the second target frame.
6. The method according to claim 5, characterized in that, After the second server on the second device receives the first target frame and the User Datagram Protocol (UDP) message, it also includes: When the User Datagram Protocol (UDP) packet does not pass through NAT, the second server on the second device sends an acquisition request to the second client on the second device; The second client on the second device receives and responds to the acquisition request to acquire the first IP address and the third port number, wherein the third port number is the port number of the first server on the first device; The second client on the second device establishes a link between the second client on the second device and the first server on the first device based on the first IP address and the third port number.
7. The method according to claim 5 or 6, characterized in that, After the second server on the second device sends the second target frame to the first client on the first device, the method further includes: The second client on the second device receives a server greeting SHLO message sent by the first server on the first device, and authenticates the SHLO message to obtain a second authentication result. The SHLO message carries the authentication information of the first server on the first device. If the second authentication result is successful, the second client on the second device sends a client greeting CHLO message to the first server on the first device, wherein the CHLO message carries the authentication information of the second client on the second device.
8. The method according to claim 5, characterized in that, The case where the User Datagram Protocol (UDP) packet undergoes Network Address Translation (NAT) includes situations where the target IP address is different from the first IP address.
9. A link establishment device, characterized in that, include: A first client on a first device is configured to send a first target frame to a second server on a second device, and, when the User Datagram Protocol (UDP) packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client on the first device receives a second target frame sent by the second server on the second device. The first device is located in a private network, the second device is located in a public network, and the first target frame carries a first IP address and a first port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. The second target frame carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. The first server on the first device is configured to establish a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, wherein the second target frame received by the first server on the first device is forwarded by the first client on the first device.
10. A link establishment system, characterized in that, include: A first client of a first device is configured to send a first target frame to a second server on a second device, and, when the User Datagram Protocol (UDP) packet received by the second server on the second device undergoes Network Address Translation (NAT), the first client on the first device receives a second target frame sent by the second server on the second device. The first device is located in a private network, the second device is located in a public network, and the first target frame carries a first IP address and a first port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. The second target frame carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client in the second device. The first server of the first device is used to establish a link between the first server on the first device and the second client on the second device based on the second IP address and the second port number carried in the second target frame, wherein the second target frame received by the first server on the first device is forwarded by the first client on the first device; The second server of the second device is configured to receive a first target frame and a User Datagram Protocol (UDP) packet, and, when the UDP packet undergoes Network Address Translation (NAT), obtain a second target frame and then send the second target frame to the first client on the first device. The first target frame is frame data sent by the first client on the first device, and carries a first IP address and a first port number. The UDP packet carries a target IP address and a target port number. The first IP address is the IP address of the first device, and the first port number is the port number of the first client on the first device. The second target frame carries a second IP address and a second port number. The second IP address is the IP address of the second device, and the second port number is the port number of the second client on the second device. The second client of the second device is configured to send the second target frame to the second server on the second device when the User Datagram Protocol (UDP) packet passes through Network Address Translation (NAT).