Penetrating the NAT: Why and how?
Abstract
Network Address Translators (NATs) that map private addresses to public ones exist between a private computer network and a larger, public domain such as the Internet. The translation of network addresses makes it difficult to establish connections between clients on either side of the NAT, forcing application layer programs to find their own way to navigate across the NAT. Many protocols and methods have been implemented to traverse a NAT, but not all NATs support each of these concepts. This forces newer protocols to be incredibly verbose, containing fall-back measures that allow use of more antiquated protocols if a legacy NAT device is encountered. Our goal was to conduct a survey considering many of these protocols and methods to determine the advantages and disadvantages of each and under what circumstances they should be used. This clearly defined set of data should be used as a guideline for creating a standard for NAT traversal techniques. This information was collected primarily from documents published by the Internet Engineering Task Force (IETF) and examining the source code of applications that utilize these methods. Using such detailed documents to cite from, we were able to have a good grasp of the intricacies of the methodology, allowing the insight to examine how these techniques can work together in a meaningful manner. Hopefully, this standardization will allow less overhead in the application layer, as well as allow an easier transition from IPv4 to IPv6.