Such a scenario is particularly important in the case of peer-to-peer communications, such as Voice-over-IP (VoIP), file sharing, teleconferencing, chat systems and similar applications.
[1] The availability of TCP hole punching depends on the type of computer port allocation used by the NAT.
For two peers behind a NAT to connect to each other via TCP simultaneous open[clarify], they need to know a little bit about each other.
All TCP NAT traversal and hole punching techniques have to solve the port prediction problem.
A NAT port allocation can be one of the two: Depending on whether the NATs exhibit a predictable or non-predictable behavior, it will be possible or not to perform the TCP connection via a TCP simultaneous open, as shown below by the connection matrix representing the different cases and their impact on end-to-end communication:[citation needed] Here are some of the methods used by NATs to allow peers to perform port prediction: We assume here that port prediction has already taken place through one of the methods outlined above, and that each peer knows the remote peer endpoint.