A non-transitory machine readable medium having instructions that, when executed, cause a terminal device to:
- transmit a first invite command to a connection management server, the first invite command including a first SIPURI assigned to another terminal device, a second SIPURI assigned to the terminal device and a global address assigned to the terminal device;
- receive a global address assigned to the other terminal device from the connection management server in response to the first invite command;
- establish a first RTP communication session with the other terminal device, the terminal device being configured to transmit to and receive from the other terminal device any data by using the first global address and the second global address without communication via the connection management server during the first RTP communication session;
- transmit, to the other terminal device during the first RTP communication session, a first request for first authentication information of the other terminal device, the first request including second authentication information of the terminal device;
- receive the first authentication information from the other terminal device during the first RTP communication session;
- store the first global address and the first authentication information in a storage area for a predetermined amount of time, the first global address and the first authentication information being associated with the first SIPURI, wherein the first global address and the first authentication information are deleted after the predetermined amount of time has elapsed;
- terminate the first RTP communication session with the other terminal device;
- transmit, after terminating the first RTP communication session with the other terminal device, a second invite command to the first global address stored in the storage area without communication with the connection management server, the second invite command including the first SIPURI, the second SIPURI, the second global address and a challenge code;
- receive a response code from the other terminal device in response to the second invite command;
- process the response code by using the first authentication information stored in the storage area;
- compare the processed response code with the challenge code;
- determine whether the processed response code is identical to the challenge code;
- transmit, when the processed response code is identical to the challenge code, an acknowledgment to the other terminal device at the first global address without communication with the connection management server;
- and
- establish a second RTP communication session with the other terminal device, the terminal device being configured to transmit to and receive from the other terminal device any data by using the first global address and the second global address without communication via the connection management server during the second RTP communication session.