A method for establishing an end-to-end network connection, comprising: obtaining, by a first node, super node information from a server, wherein a super node is a node that is determined by the server and whose network address translation, NAT, type is cone NAT, or a node that has a public Internet protocol, IP, address; sending, by the first node, a data packet to the super nodes, and determining a NAT type corresponding to the first node based on a data packet returned by the super nodes, wherein the NAT type corresponding to the first node is a NAT type of a NAT device between the first node and a public network; obtaining, by the first node, a NAT type corresponding to a second node from the server, wherein the second node is a node to which the first node is to be connected, and the NAT type corresponding to the second node is a NAT type of a NAT device between the second node and a public network; determining, by the first node based on the NAT type corresponding to the first node and the NAT type corresponding to the second node, whether to use a relay node; and when the first node determines to use the relay node, selecting, by the first node, a node from the super nodes as the relay node, and establishing a connection to the second node by using the relay node; wherein the determining, by the first node based on the NAT type corresponding to the first node and the NAT type corresponding to the second node, whether to use a relay node comprises: when the NAT types/type corresponding to the first node and/or the second node are/is full cone NAT, or when the first node and/or the second node have/has public IP addresses/a public IP address, determining, by the first node, that the relay node does not need to be used. obtaining, by a first node, super node information from a server, wherein a super node is a node that is determined by the server and whose network address translation, NAT, type is cone NAT, or a node that has a public Internet protocol, IP, address; sending, by the first node, a data packet to the super nodes, and determining a NAT type corresponding to the first node based on a data packet returned by the super nodes, wherein the NAT type corresponding to the first node is a NAT type of a NAT device between the first node and a public network; obtaining, by the first node, a NAT type corresponding to a second node from the server, wherein the second node is a node to which the first node is to be connected, and the NAT type corresponding to the second node is a NAT type of a NAT device between the second node and a public network; determining, by the first node based on the NAT type corresponding to the first node and the NAT type corresponding to the second node, whether to use a relay node; and when the first node determines to use the relay node, selecting, by the first node, a node from the super nodes as the relay node, and establishing a connection to the second node by using the relay node; wherein the determining, by the first node based on the NAT type corresponding to the first node and the NAT type corresponding to the second node, whether to use a relay node comprises: when the NAT types/type corresponding to the first node and/or the second node are/is full cone NAT, or when the first node and/or the second node have/has public IP addresses/a public IP address, determining, by the first node, that the relay node does not need to be used.