Claims
- 1. A computer implemented method for performing address resolution, comprising the steps of:
sending a first message by a controller to a first node causing the first node to listen for a special message from a second node, the first node not being behind a network address translator, and the second node being behind a network address translator; sending a second message by the controller to the second node, the second message telling the second node to send the special message to the first node; sending the special message by the second node to the first node; determining by the first node an external address of the second node based on information received by the first node with the special message; sending a third message by the first node to the controller, the third message including the external address of the second node; and sending a fourth message by the controller to the first node, the fourth message including a communication address of the second node, the communication address being the external address of the second node.
- 2. The method of claim 1, further comprising the step of:
determining by the controller that the first node is not behind a network address translator, and that the second node is behind a network address translator.
- 3. The method of claim 2, wherein the determining step comprises:
receiving by the controller a first address message from the first node, the first address message including a first internal address corresponding to the first node; receiving by the controller a second address message from the second node, the second address message including a second internal address corresponding to the second node; comparing by the controller the first internal address with a first source address included with the first address message, and the second internal address with a second source address included with the second address message; and determining by the controller based on a result of the comparing step that the first node is not behind a network address translator, and that the second node is behind a network address translator.
- 4. The method of claim 1, further comprising the step of:
forwarding by the controller the third message to the second node, wherein the sending the special message step comprises repeatedly sending the special message by the second node until the second node receives the third message forwarded by the controller in the forwarding step.
- 5. The method of claim 4, wherein the first message, the second message, the special message, the third message and the fourth message comprise Internet protocol messages.
- 6. The method of claim 5, wherein:
the first message, the second message, the third message, and the fourth message comprise transmission control protocol/Internet protocol messages, and the special message comprises a user datagram protocol/Internet protocol message.
- 7. The method of claim 1, wherein the first message, the second message, the special message, the third message and the fourth message comprise Internet protocol messages.
- 8. The method of claim 7, wherein:
the first message, the second message, the third message, and the fourth message comprise transmission control protocol/Internet protocol messages, and the special message comprises a user datagram protocol/Internet protocol message.
- 9. The method of claim 1, wherein the external address of the second node comprises an Internet protocol address and a user datagram protocol port.
- 10. The method of claim 1, wherein the controller is a process independent of the first node and the second node.
- 11. A computer implemented method for performing address resolution, comprising the steps of:
sending a first initiate message by a controller to a first node, the first initiate message telling the first node to send a first special message to the controller at a first predetermined address, the first node being behind a first network address translator; sending a second initiate message by the controller to a second node, the second initiate message telling the second node to send a second special message to the controller at a second predetermined address, the second node being behind a second network address translator; sending the first special message by the first node to the controller at the first predetermined address; sending the second special message by the second node to the controller at the second predetermined address; determining by the controller a first external address of the first node based on information received by the controller with the first special message; determining by the controller a second external address of the second node based on information received by the controller with the second special message; sending a third initiate message by the controller to the first node, the third initiate message telling the first node to send another first special message to the controller at a third predetermined address; sending a fourth initiate message by the controller to the second node, the fourth initiate message telling the second node to send another second special message to the controller at a fourth predetermined address; sending the another first special message by the first node to the controller at the third predetermined address; sending the another second special message by the second node to the controller at the fourth predetermined address; determining by the controller another first external address of the first node based on information received by the controller with the another first special message; determining by the controller another second external address of the second node based on information received by the controller with the another second special message; determining by the controller that none of the first network address translator and the second network address translator base an address translation on a destination of a message sent; sending a route message by the controller to the first node, the route message including a second communication address of the second node, the second communication address being the second external address of the second node; and sending another route message by the controller to the second node, the another route message including a first communication address of the first node, the first communication address being the first external address of the first node.
- 12. The method of claim 11, further comprising the step of:
determining by the controller that the first node is behind a first network address translator, and that the second node is behind a second network address translator.
- 13. The method of claim 12, wherein the determining step comprises:
receiving by the controller a first address message from the first node, the first address message including a first internal address corresponding to the first node; receiving by the controller a second address message from the second node, the second address message including a second internal address corresponding to the second node; comparing by the controller the first internal address with a first source address included with the first address message, and the second internal address with a second source address included with the second address message; and determining by the controller based on a result of the comparing step that the first node is behind a first network address translator, and that the second node is behind a second network address translator.
- 14. The method of claim 11, further comprising the steps of:
sending a first acknowledgement message by the controller to the first node after receiving the first special message; sending a second acknowledgement message by the controller to the second node after receiving the second special message; sending a third acknowledgement message by the controller to the first node after receiving the another first special message; sending a fourth acknowledgement message by the controller to the second node after receiving the another second special message, wherein the sending the first special message step comprises repeatedly sending the first special message by the first node until the first node receives the first acknowledgement message, the sending the second special message step comprises repeatedly sending the second special message by the second node until the second node receives the second acknowledgement message, the sending the another first special message step comprises repeatedly sending the another first special message by the first node until the first node receives the third acknowledgement message, and the sending the another second special message step comprises repeatedly sending the another second special message by the second node until the second node receives the fourth acknowledgement message.
- 15. The method of claim 14, wherein the initiate messages, the special messages, the route messages, and the acknowledgement messages comprise Internet protocol messages.
- 16. The method of claim 15, wherein:
the initiate messages, the route messages, and the acknowledgement messages comprise transmission control protocol/Internet protocol messages, and the special messages comprise a user datagram protocol/Internet protocol message.
- 17. The method of claim 11, wherein the initiate messages, the special messages, and the route messages comprise Internet protocol messages.
- 18. The method of claim 17, wherein:
the initiate messages and the route messages comprise transmission control protocol/Internet protocol messages, and the special messages comprise a user datagram protocol/Internet protocol message.
- 19. The method of claim 11, wherein the first external address of the first node, the another first external address of the first node, the second external address of the second node and the another second external address of the second node comprise an Internet protocol address and a user datagram protocol port.
- 20. The method of claim 11, wherein the controller is a process independent of the first node and the second node.
- 21. A computer implemented method for performing address resolution, comprising the steps of:
receiving by a controller a first address message from a first node, the first address message including a first internal address corresponding to the first node; receiving by the controller a second address message from a second node, the second address message including a second internal address corresponding to the second node; comparing by the controller the first internal address with a first source address included with the first address message, and the second internal address with a second source address included with the second address message; determining by the controller based on a result of the comparing step that the first node and the second node are behind the same network address translator; sending a first route message by the controller to the first node, the first route message including a second communication address of the second node, the second communication address being the second internal address; and sending a second route message by the controller to the second node, the second route message including a first communication address of the first node, the first communication address being the first internal address.
- 22. The method of claim 21, wherein the address messages, and the route messages comprise Internet protocol messages.
- 23. The method of claim 22, wherein:
the address messages and the route messages comprise transmission control protocol/Internet protocol messages.
- 24. The method of claim 21, wherein the controller is a process independent of the first node and the second node.
- 25. A computer implemented method for performing address resolution, comprising the steps of:
determining by a controller that at least one a first node and a second node of a communication session are behind a network address translator; categorizing by the controller a result of the determining step as one of
the first node is not behind a network address translator and the second node is behind a network address translator, the first node is behind a first network address translator and the second node is behind a second network address translator, and the first node and the second node are both behind a same network address translator; and performing address resolution by the controller based on a result of the categorizing step.
- 26. The method of claim 25, wherein:
the result of the categorizing step is that the first node is not behind a network address translator and the second node is behind a network address translator, and the performing step comprises
sending a first message by the controller to the first node causing the first node to listen for a special message from the second node, sending a second message by the controller to the second node, the second message telling the second node to send the special message to the first node, sending the special message by the second node to the first node, determining by the first node an external address of the second node based on information received by the first node with the special message, sending a third message by the first node to the controller, the third message including the external address of the second node, and sending a fourth message by the controller to the first node, the fourth message including a communication address of the second node, the communication address being the external address of the second node.
- 27. The method of claim 25, wherein:
the result of the categorizing step is that the first node is behind a first network address translator and the second node is behind a second network address translator, and the performing step comprises
sending a first initiate message by the controller to the first node, the first initiate message telling the first node to send a first special message to the controller at a first predetermined address, sending a second initiate message by the controller to the second node, the second initiate message telling the second node to send a second special message to the controller at a second predetermined address, sending the first special message by the first node to the controller at the first predetermined address, sending the second special message by the second node to the controller at the second predetermined address, determining by the controller a first external address of the first node based on information received by the controller with the first special message, determining by the controller a second external address of the second node based on information received by the controller with the second special message, sending a third initiate message by the controller to the first node, the third initiate message telling the first node to send another first special message to the controller at a third predetermined address, sending a fourth initiate message by the controller to the second node, the fourth initiate message telling the second node to send another second special message to the controller at a fourth predetermined address, sending the another first special message by the first node to the controller at the third predetermined address, sending the another second special message by the second node to the controller at the fourth predetermined address, determining by the controller another first external address of the first node based on information received by the controller with the another first special message, determining by the controller another second external address of the second node based on information received by the controller with the another second special message, determining by the controller that none of the first network address translator and the second network address translator base an address translation on a destination of a message sent, sending a route message by the controller to the first node, the route message including a second communication address of the second node, the second communication address being the second external address of the second node, and sending another route message by the controller to the second node, the another route message including a first communication address of the first node, the first communication address being the first external address of the first node.
- 28. The method of claim 25, wherein:
the result of the categorizing step is that the first node and the second node are both behind a same network address translator, and the performing step comprises
receiving by the controller a first address message from the first node, the first address message including a first internal address corresponding to the first node, receiving by the controller a second address message from the second node, the second address message including a second internal address corresponding to the second node, comparing by the controller the first internal address with a first source address included with the first address message, and the second internal address with a second source address included with the second address message, determining by the controller based on a result of the comparing step that the first node and the second node are behind the same network address translator, sending a first route message by the controller to the first node, the first route message including a second communication address of the second node, the second communication address being the second internal address, and sending a second route message by the controller to the second node, the second route message including a first communication address of the first node, the first communication address being the first internal address.
- 29. A system for performing address resolution, comprising:
means for sending a first message by a controller to a first node causing the first node to listen for a special message from a second node, the first node not being behind a network address translator, and the second node being behind a network address translator; means for sending a second message by the controller to the second node, the second message telling the second node to send the special message to the first node; means for sending the special message by the second node to the first node; means for determining by the first node an external address of the second node based on information received by the first node with the special message; means for sending a third message by the first node to the controller, the third message including the external address of the second node; and means for sending a fourth message by the controller to the first node, the fourth message including a communication address of the second node, the communication address being the external address of the second node.
- 30. The system of claim 29, further comprising:
means for determining by the controller that the first node is not behind a network address translator, and that the second node is behind a network address translator.
- 31. A system for performing address resolution, comprising:
means for sending a first initiate message by a controller to a first node, the first initiate message telling the first node to send a first special message to the controller at a first predetermined address, the first node being behind a first network address translator; means for sending a second initiate message by the controller to a second node, the second initiate message telling the second node to send a second special message to the controller at a second predetermined address, the second node being behind a second network address translator; means for sending the first special message by the first node to the controller at the first predetermined address; means for sending the second special message by the second node to the controller at the second predetermined address; means for determining by the controller a first external address of the first node based on information received by the controller with the first special message; means for determining by the controller a second external address of the second node based on information received by the controller with the second special message; means for sending a third initiate message by the controller to the first node, the third initiate message telling the first node to send another first special message to the controller at a third predetermined address; means for sending a fourth initiate message by the controller to the second node, the fourth initiate message telling the second node to send another second special message to the controller at a fourth predetermined address; means for sending the another first special message by the first node to the controller at the third predetermined address; means for sending the another second special message by the second node to the controller at the fourth predetermined address; means for determining by the controller another first external address of the first node based on information received by the controller with the another first special message; means for determining by the controller another second external address of the second node based on information received by the controller with the another second special message; means for determining by the controller that none of the first network address translator and the second network address translator base an address translation on a destination of a message sent; means for sending a route message by the controller to the first node, the route message including a second communication address of the second node, the second communication address being the second external address of the second node; and means for sending another route message by the controller to the second node, the another route message including a first communication address of the first node, the first communication address being the first external address of the first node.
- 32. The system of claim 31, further comprising:
means for determining by the controller that the first node is behind a first network address translator, and that the second node is behind a second network address translator.
- 33. A system for performing address resolution, comprising:
means for receiving by a controller a first address message from a first node, the first address message including a first internal address corresponding to the first node; means for receiving by the controller a second address message from a second node, the second address message including a second internal address corresponding to the second node; means for comparing by the controller the first internal address with a first source address included with the first address message, and the second internal address with a second source address included with the second address message; means for determining by the controller based on a result of the comparing step that the first node and the second node are behind the same network address translator; means for sending a first route message by the controller to the first node, the first route message including a second communication address of the second node, the second communication address being the second internal address; and means for sending a second route message by the controller to the second node, the second route message including a first communication address of the first node, the first communication address being the first internal address.
- 34. A system for performing address resolution, comprising:
means for determining by a controller that at least one a first node and a second node of a communication session are behind a network address translator; means for categorizing by the controller a result of the means for determining as one of
the first node is not behind a network address translator and the second node is behind a network address translator, the first node is behind a first network address translator and the second node is behind a second network address translator, and the first node and the second node are both behind a same network address translator; and means for performing address resolution by the controller based on a result of the means for categorizing.
- 35. A device for coordinating network address translation, comprising
a processor; and a computer readable medium encoded with processor readable instructions that when executed by the processor implement,
a network address translator detection mechanism configured to determine that a first node is behind a network address translator, and an address resolution mechanism configured to determine an external address for the first node and to provide the external address to a second node.
- 36. The device of claim 35, wherein the external address comprises an Internet protocol address and a user datagram protocol port.
- 37. A device for coordinating network address translation, comprising
a processor; and a computer readable medium encoded with processor readable instructions that when executed by the processor implement,
a network address translator detection mechanism configured to determine that a first node is behind a first network address translator and that a second node is behind a second network address translator, and an address resolution mechanism configured to determine a first external address for the first node and a second external address for the second node and to provide the first external address to the second node and the second external address to the first node.
- 38. The device of claim 37, wherein the first external address and the second external address each comprise an Internet protocol address and a user datagram protocol port.
- 39. A device for coordinating network address translation, comprising
a processor; and a computer readable medium encoded with processor readable instructions that when executed by the processor implement,
a network address translator detection mechanism configured to determine that a first node and a second node are both behind a same network address translator, and an address resolution mechanism configured to cause the first node to communicate with the second node using internal addresses.
- 40. A device for coordinating network address translation, comprising
a processor; and a computer readable medium encoded with processor readable instructions that when executed by the processor implement,
a translation case determination mechanism configured to characterize a communication session between a first node and a second node as one of
case zero when none of the first node and the second node is behind a network address translator, case one when the first node is behind a network address translator and the second node is not behind a network address translator, case two when the first node is behind a first network address translator and the second node is behind a second network address translator, and case three when the first node and the second node are both behind a same network address translator; a case one processor configured to determine an external address for the first node and to provide the external address to the second node when the translation case determination mechanism has characterized the communications session as case one; a case two processor configured to determine a first external address for the first node and a second external address for the second node and to provide the first external address to the second node and the second external address to the first node when the translation case determination mechanism has characterized the communications session as case two; and a case three processor configured to cause the first node to communicate with the second node using internal addresses when the translation case determination mechanism has characterized the communications session as case three.
- 41. The device of claim 40, wherein the communication session comprises at least one of a text chat session, a video chat session, a streaming data session, a voice over Internet protocol session, and a session initiation protocol-based session.
- 42. A computer program product, comprising:
a computer storage medium; and a computer program code mechanism embedded in the computer storage medium for causing a computer to coordinate network address translation between a first node and a second node in a communication session, the computer program code mechanism having
a first computer code device configured to determine that the first node is behind a network address translator, and a second computer code device configured to determine an external address for the first node and to provide the external address to the second node.
- 43. The computer program product of claim 42, wherein the external address comprises an Internet protocol address and a user datagram protocol port.
- 44. A computer program product, comprising:
a computer storage medium; and a computer program code mechanism embedded in the computer storage medium for causing a computer to coordinate network address translation between a first node and a second node in a communication session, the computer program code mechanism having
a first computer code device configured to determine that the first node is behind a first network address translator and that the second node is behind a second network address translator, and a second computer code device configured to determine a first external address for the first node and a second external address for the second node and to provide the first external address to the second node and the second external address to the first node.
- 45. The computer program product of claim 44, wherein the first external address and the second external address each comprise an Internet protocol address and a user datagram protocol port.
- 46. A computer program product, comprising:
a computer storage medium; and a computer program code mechanism embedded in the computer storage medium for causing a computer to coordinate network address translation between a first node and a second node in a communication session, the computer program code mechanism having
a first computer code device configured to determine that the first node and the second node are both behind a same network address translator, and a second computer code device configured to cause the first node and the second node to communicate using internal addresses.
- 47. A computer program product, comprising:
a computer storage medium; and a computer program code mechanism embedded in the computer storage medium for causing a computer to coordinate network address translation between a first node and a second node in a communication session, the computer program code mechanism having
a first computer code device configured to characterize the communication session between the first node and the second node as one of
case zero when none of the first node and the second node is behind a network address translator, case one when the first node is behind a network address translator and the second node is not behind a network address translator, case two when the first node is behind a first network address translator and the second node is behind a second network address translator, and case three when the first node and the second node are both behind a same network address translator; a second computer code device configured to determine an external address for the first node and to provide the external address to the second node when the first computer code device has characterized the communications session as case one; a third computer code device configured to determine a first external address for the first node and a second external address for the second node and to provide the first external address to the second node and the second external address to the first node when the first computer code device has characterized the communications session as case two; and a fourth computer code device configured to cause the first node to communicate with the second node to communicate using internal addresses when the first computer code device has characterized the communications session as case three.
- 48. The computer program produce of claim 47, wherein the communication session comprises at least one of a text chat session, a video chat session, a streaming data session, a voice over Internet protocol session, and a session initiation protocol-based session.
- 49. The device of claim 40, wherein the computer readable medium is further encoded with processor readable instructions that when executed by the processor further implement:
a call transfer mechanism configured to store an address indicator corresponding to one of the first node and the second node in a memory and to provide the address indicator to a third node to transfer the communication session from the one of the first node and the second node to the third node.
CROSS-REFERENCE TO RELATED PATENT DOCUMENTS
[0001] The present document claims the benefit of the earlier filing date of commonly owned, co-pending U.S. provisional patent application serial number 60/215,872, entitled “INTENET MESSAGING USING ADDRESS TRANSLATIONS,” filed in the United States Patent and Trademark Office on Jun. 30, 2000, the entire contents of which is incorporated herein by reference.
PCT Information
Filing Document |
Filing Date |
Country |
Kind |
PCT/US01/16512 |
6/29/2001 |
WO |
|
Provisional Applications (1)
|
Number |
Date |
Country |
|
60215872 |
Jun 2000 |
US |