本文主要是介绍RFC 3261与Resiprocate对照参考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- To do this, SIP network
elementsconsult an abstract service known as a location service,
whichprovides address bindings for a particular domain
---10.1 Overview
ReSIProcate的LocationServer类,职责明确
- In order to handle the case where an INVITE request never
generatesa final response, the TU uses a timer which is called
timerC. Timer C MUST be set for each client transaction when
anINVITE request is proxied. The timer MUST be larger than 3
minutes.Section 16.7 bullet 2 discusses how this timer is
updatedwith provisional responses, and Section 16.8 discusses
processingwhen it fires.
---11. Set timer C
注:Proxy的int mTimerC;
- A dialog is identified at each UA with a dialog ID, which consists of
aCall-ID value, a local tag and a remote tag.
---12 Dialogs
参考resip::DialogId
- A dialog contains certain pieces of state needed for further message
transmissionswithin the dialog. This state consists of the dialog
ID,a local sequence number (used to order requests from the UA to
itspeer), a remote sequence number (used to order requests from its
peerto the UA), a local URI, a remote URI, remote target, a boolean
flagcalled "secure", and a route set, which is an ordered list of
URIs.The route set is the list of servers that need to be traversed
tosend a request to the peer.
---12 Dialogs
联系Dum的Dialog类
a boolean flag called "secure" | bool mSecure |
a route set, which is an ordered list of URIs The route set is the list of servers that need to be traversed to send a request to the peer. | NameAddrs mRouteSet; |
a remote sequence number (used to order requests from its peer to the UA) | unsigned int mRemoteCSeq; |
a local sequence number (used to order requests from the UA to its peer) | unsigned int mLocalCSeq; |
Dialog ID | DialogId mId;
|
a local URI | NameAddr mLocalNameAddr; |
a remote URI | NameAddr mRemoteNameAddr; |
Remote target | NameAddr mRemoteTarget; |
- The client transaction provides its functionality through the
maintenanceof a state machine.
17.1 Client Transaction
注:联想到mStateMacFifo及mStateMachineFifo,附state和machine的值
typedef enum
{
ClientNonInvite,
ClientInvite,
ServerNonInvite,
ServerInvite,
ClientStale,
ServerStale,
Stateless // may not be needed
} Machine;
typedef enum
{
Calling,
Trying,
Proceeding,
Completed,
Confirmed,
Terminated,
Bogus
} State;
- For any port and interface
that a server listens on for UDP, it MUSTlisten on that same port
and interface for TCP. This is because a message may need to be sent
using TCP, rather than UDP, if it is toolarge. As a result, the
converse is not true. A server need not listen for UDP on a
particular address and port just because itis listening on that same
address and port for TCP. There may, of course, be other reasons why
a server needs to listen for UDP on aparticular address and port.
---18.2.1 Receiving Requests
注:前面也多次提到,在某些限制条件下,即便使用UDP传输,SIP Message也不得不通过TCP传输,因此如果配置UDP传输的话,需要同时监视UDP和TCP。不过Resiprocate的proxy似乎没有注意到这一点。
这篇关于RFC 3261与Resiprocate对照参考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!