Home arrow SIP arrow Transaction layer operations in SIP

Language Translator

Hacking Zone

Hacking Tools
Attacking

Configure Windows

Windows Configuration

Novels

Mix Novels

Human Personality

Body Language
Transaction layer operations in SIP PDF Print E-mail
Written by Hemanshu Patel   
Thursday, 08 November 2007
Article Index
Transaction layer operations in SIP
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8

17.2.2 Non-INVITE Server Transaction


The state machine for the non-INVITE server transaction is shown in
Figure 8.

The state machine is initialized in the "Trying" state and is passed
a request other than INVITE or ACK when initialized. This request is
passed up to the TU. Once in the "Trying" state, any further request
retransmissions are discarded. A request is a retransmission if it
matches the same server transaction, using the rules specified in
Section 17.2.3.

While in the "Trying" state, if the TU passes a provisional response
to the server transaction, the server transaction MUST enter the
"Proceeding" state. The response MUST be passed to the transport
layer for transmission. Any further provisional responses that are
received from the TU while in the "Proceeding" state MUST be passed
to the transport layer for transmission. If a retransmission of the
request is received while in the "Proceeding" state, the most
recently sent provisional response MUST be passed to the transport
layer for retransmission. If the TU passes a final response (status
codes 200-699) to the server while in the "Proceeding" state, the
transaction MUST enter the "Completed" state, and the response MUST
be passed to the transport layer for transmission.

When the server transaction enters the "Completed" state, it MUST set
Timer J to fire in 64*T1 seconds for unreliable transports, and zero
seconds for reliable transports. While in the "Completed" state, the
server transaction MUST pass the final response to the transport
layer for retransmission whenever a retransmission of the request is
received. Any other final responses passed by the TU to the server
transaction MUST be discarded while in the "Completed" state. The
server transaction remains in this state until Timer J fires, at
which point it MUST transition to the "Terminated" state.

The server transaction MUST be destroyed the instant it enters the
"Terminated" state.

17.2.3 Matching Requests to Server Transactions


When a request is received from the network by the server, it has to
be matched to an existing transaction. This is accomplished in the
following manner.

The branch parameter in the topmost Via header field of the request
is examined. If it is present and begins with the magic cookie
"z9hG4bK", the request was generated by a client transaction
compliant to this specification. Therefore, the branch parameter
will be unique across all transactions sent by that client. The
request matches a transaction if:

1. the branch parameter in the request is equal to the one in the
top Via header field of the request that created the
transaction, and

2. the sent-by value in the top Via of the request is equal to the
one in the request that created the transaction, and

3. the method of the request matches the one that created the
transaction, except for ACK, where the method of the request
that created the transaction is INVITE.

This matching rule applies to both INVITE and non-INVITE transactions
alike.

The sent-by value is used as part of the matching process because
there could be accidental or malicious duplication of branch
parameters from different clients.

If the branch parameter in the top Via header field is not present,
or does not contain the magic cookie, the following procedures are
used. These exist to handle backwards compatibility with RFC 2543
compliant implementations.

The INVITE request matches a transaction if the Request-URI, To tag,
From tag, Call-ID, CSeq, and top Via header field match those of the
INVITE request which created the transaction. In this case, the
INVITE is a retransmission of the original one that created the
transaction. The ACK request matches a transaction if the Request-
URI, From tag, Call-ID, CSeq number (not the method), and top Via
header field match those of the INVITE request which created the
transaction, and the To tag of the ACK matches the To tag of the
response sent by the server transaction. Matching is done based on
the matching rules defined for each of those header fields.
Inclusion of the tag in the To header field in the ACK matching
process helps disambiguate ACK for 2xx from ACK for other responses
at a proxy, which may have forwarded both responses (This can occur
in unusual conditions. Specifically, when a proxy forked a request,
and then crashes, the responses may be delivered to another proxy,
which might end up forwarding multiple responses upstream). An ACK
request that matches an INVITE transaction matched by a previous ACK
is considered a retransmission of that previous ACK.

|Request received
|pass to TU
V
+-----------+
| |
| Trying |-------------+
| | |
+-----------+ |200-699 from TU
| |send response
|1xx from TU |
|send response |
| |
Request V 1xx from TU |
send response+-----------+send response|
+--------| |--------+ |
| | Proceeding| | |
+------->| |<-------+ |
+<--------------| | |
|Trnsprt Err +-----------+ |
|Inform TU | |
| | |
| |200-699 from TU |
| |send response |
| Request V |
| send response+-----------+ |
| +--------| | |
| | | Completed |<------------+
| +------->| |
+<--------------| |
|Trnsprt Err +-----------+
|Inform TU |
| |Timer J fires
| |-
| |
| V
| +-----------+
| | |
+-------------->| Terminated|
| |
+-----------+

Figure 8: non-INVITE server transaction

For all other request methods, a request is matched to a transaction
if the Request-URI, To tag, From tag, Call-ID, CSeq (including the
method), and top Via header field match those of the request that
created the transaction. Matching is done based on the matching
rules defined for each of those header fields. When a non-INVITE
request matches an existing transaction, it is a retransmission of
the request that created that transaction.

Because the matching rules include the Request-URI, the server cannot
match a response to a transaction. When the TU passes a response to
the server transaction, it must pass it to the specific server
transaction for which the response is targeted.

17.2.4 Handling Transport Errors


When the server transaction sends a response to the transport layer
to be sent, the following procedures are followed if the transport
layer indicates a failure.

First, the procedures in [4] are followed, which attempt to deliver
the response to a backup. If those should all fail, based on the
definition of failure in [4], the server transaction SHOULD inform
the TU that a failure has occurred, and SHOULD transition to the
terminated state.




Digg!Reddit!Del.icio.us!Google!Live!Facebook!Slashdot!Netscape!Technorati!StumbleUpon!Spurl!Wists!Simpy!Newsvine!Blinklist!Furl!Fark!Blogmarks!Yahoo!Smarking!Netvouz!Shadows!RawSugar!Ma.gnolia!PlugIM!Squidoo!BlogMemes!FeedMeLinks!BlinkBits!Tailrank!linkaGoGo!Free social bookmarking plugins and extensions for Joomla! websites! title=
Comments
Add NewSearch
Only registered users can write comments!

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.



 
< Prev   Next >
Your Ad Here

Donate us!!

Enter Amount:

RSS socialnet

Add to MyYahoo!
Subscribe in NewsGator Online
Add to Newsburst
Add to Google
Add to My AOL
Add to Pluck
Subscribe in FeedLounge
Add to Windows Live
Add to NetVibes
Subscribe in Rojo
Subscribe in Bloglines
Add to MyMSN
Add to Plusmo for your cellphone
Add to PageFlakes
Add to Technorati
Add to BlinkBits