NAT Traversal in Peer-to-Peer Architecture

It appears your Web browser is not configured to display PDF files. Download adobe Acrobat or click here to download the PDF file.

Click here to download the PDF file.


  • Poulin, Marc-André
  • Maldague, Lucas Rioux
  • Daigle, Alexandre
  • Gagnon, François




Peer-to-peer networks are well known for file sharing between multiple computers. They establish virtual tunnels between computers to transfer data, but NATs makes it harder. A NAT, Network Address Translation, is a process which transforms private IP addresses, such as, into public addresses, such as The idea is that multiple private addresses can hide behind a single public address and thus virtually enlarge the number of allocable public IP addresses. When an application in the local network establishes a connection to Internet, the packet passes through the NAT which adjusts the IP header and maps an external port to the computer which sent the request. When packets are received from the Internet by the NAT, they are forwarded to the internal host which is mapped to the port on which the packet was received, or dropped if no mapping exists. In this paper, we will introduce you to NAT and P2P, we will discuss the numerous ways NATs use to translate private IP addresses into public ones, we will discuss known techniques used to fix the problem and we will also present how popular peer-to-peer programs bypass NATs. This paper is written so anybody with a reasonable knowledge of networking would grasp the essentials. It is important to keep in mind that the traversal methods presented in this document work for UDP and TCP and require no manual configuration of the Network Address Translator itself.


Carleton University

Faculty Name: 

Faculty of Engineering and Design

Department Name: 

Department of Systems and Computer Engineering

Items in CURVE are protected by copyright, with all rights reserved, unless otherwise indicated. They are made available with permission from the author(s).