This document discusses various techniques for allowing peer-to-peer communication between hosts located behind Network Address Translation (NAT) devices, including NAT traversal using UDP hole punching, TCP hole punching, relaying, connection reversal, and the TURN protocol. It also covers proxy protocols like SOCKS that can be used to traverse NATs, as well as the UPnP standard for automatic port forwarding configuration.