UDP hole punching is a network transmission technique used to enable communication between two computers connected to the same network. Hole punching works by creating a connection through the network address translator. It allows for the transmission of data across an otherwise impermissible network boundary. Typically used in applications such as peer to peer networking and voice over Internet Protocol (VoIP) transmissions, UDP hole punching forms a link between two disparate computers on the network.
The UDP (User Datagram Protocol) method is ordinarily used to transport real-time packets of data across a network. It is used in applications when time is of the essence; in other words, when the information being transmitted must be received within a reasonable or fixed period of time. The most typical applications utilizing UDP are voice-over communications or other types of real-time media such as web broadcasts, where a delayed or interrupted communication would compromise the usefulness of the broadcast. For example, a video connection which arbitrarily cuts out or pauses every few seconds is likely to cause more irritation than help.
UDP hole punching works by creating a virtual "tunnel" connecting two computers. It maintains this connection so a constant stream of information packets can be sent and received by both parties. In essence, it is a bit like a tunnel "punched" through the network between the two computers; it affords the computers the opportunity to communicate almost without a middleman. The only thing standing between the computers is the network address translator, which modifies the Internet Protocol (IP) information of the packets being sent across the network.
Information sent across the UDP hole punching connection moves through "ports" on the computer network. A port is exactly what it sounds like: a hole through which the computers can send and receive information. In order to keep the connection open, information must be constantly utilizing the port connection in question. If the stream of information dried up, the port connection will close on its own. To avoid this issue, UDP hole punching utilizes null — or empty — packets which are sent in the absence of actual packets of information; this keeps the UDP connection alive even if no data is currently moving across the network.