- 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似乎没有注意到这一点。

本文探讨了SIP网络中的关键组件和服务,包括位置服务、客户端交易状态机及其状态管理,并介绍了对话标识、安全标志及路由集等概念。此外还讨论了在不同情况下的消息传输需求。

被折叠的 条评论
为什么被折叠?



