Patent ID: 7570636

Claim:
A method for enabling a first endpoint to traverse a first network address translation (NAT) device associated with a second endpoint in a peer-to-peer communications system, wherein the first NAT device includes a pinhole maintained between the first NAT device and a server, and wherein a second NAT device is associated with the first endpoint, the method comprising: determining whether a message sent to the second endpoint from an external source will only pass through the first NAT device if the second endpoint has first sent a message to the external source; if the determining indicates that the second endpoint must first send a message, sending a first message to a stateless reflector for reflection to the second endpoint, wherein the first message includes a message header identifying the stateless reflector as the message destination and the first endpoint as the message source; modifying the message header by the stateless reflector, wherein the modifying inserts the second endpoint as the message destination and the server as the message source; sending the modified first message to the second endpoint via the pinhole in the first NAT device; determining whether a message sent to the first endpoint from an external source will only pass through the second NAT device if the first endpoint has first sent a message to the external source; if the determining indicates that the first endpoint must first send a message, sending a second message from the second endpoint to the stateless reflector for reflection to the first endpoint, wherein the second message includes a message header identifying the stateless reflector as the message destination and the second endpoint as the message source; modifying the message header by the stateless reflector, wherein the modifying inserts the first endpoint as the message destination and the server as the message source; and sending the modified second message to the first endpoint via a pinhole maintained between the second NAT device and the server, wherein all signaling messages between the first and second endpoints are reflected via the stateless reflector and all media messages are transferred directly between the first and second endpoints if the first NAT device is a symmetric type and the second NAT device is a port restricted type or if the first NAT device is a port restricted type and the second NAT device is a symmetric type, and wherein all signaling and media messages between the first and second endpoints are reflected via the stateless reflector if the first and second NAT devices are both symmetric type.