17.1.1 INVITE Client Transaction
17.1.1.1 Overview of INVITE Transaction
17.1.1.3 Construction of the ACK Request
17.1.2 Non-INVITE Client Transaction
17.1.2.1 Overview of the non-INVITE Transaction
17.1.3 Matching Responses to Client Transactions
17.1.4 Handling Transport Errors
17.2.1 INVITE Server Transaction
17.2.2 Non-INVITE Server Transaction
17.2.3 Matching Requests to Server Transactions
transaction은 하나의 request와 다수의 response로 구성됨, response를 0또는 다수의 provisional response나 하나 혹의 다수의 final response로 구성됨
Transaction은 client transaction와 server transaction으로 이루어 짐
Stateless proxy는 client와 server transaction을 포함하지 않음
17.1 Client Transaction#
17.1.1 INVITE Client Transaction#
|INVITE from TU
Timer A fires |INVITE sent
Reset A, V Timer B fires
INVITE sent +-----------+ or Transport Err.
+---------| |---------------+inform TU
| | Calling | |
+-------->| |-------------->|
+-----------+ 2xx |
| | 2xx to TU |
| |1xx |
300-699 +---------------+ |1xx to TU |
ACK sent | | |
resp. to TU | 1xx V |
| 1xx to TU -----------+ |
| +---------| | |
| | |Proceeding |-------------->|
| +-------->| | 2xx |
| +-----------+ 2xx to TU |
| 300-699 | |
| ACK sent, | |
| resp. to TU| |
| | | NOTE:
| 300-699 V |
| ACK sent +-----------+Transport Err. | transitions
| +---------| |Inform TU | labeled with
| | | Completed |-------------->| the event
| +-------->| | | over the action
| +-----------+ | to take
| ^ | |
| | | Timer D fires |
+--------------+ | - |
| |
V |
+-----------+ |
| | |
| Terminated|<--------------+
| |
+-----------+
17.1.1.1 Overview of INVITE Transaction#
17.1.1.2 Formal Description#
17.1.1.3 Construction of the ACK Request#
2xx response에 대하여 ACK 생성은 Section 13에 따름 - transaction에 포함되지 않음
Request
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=88sja8x
Max-Forwards: 70
Call-ID: 987asjd97y7atg
CSeq: 986759 INVITE
ACK
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff <- 같은 branch
To: Bob <sip:bob@biloxi.com>;tag=99sa0xk <- tag 추가
From: Alice <sip:alice@atlanta.com>;tag=88sja8x
Max-Forwards: 70
Call-ID: 987asjd97y7atg <- 같음
CSeq: 986759 ACK <- 같은 번호 다른 method
17.1.2 Non-INVITE Client Transaction#
|send request
Timer E V
send request +-----------+
+---------| |-------------------+
| | Trying | Timer F |
+-------->| | or Transport Err.|
+-----------+ inform TU |
200-699 | | |
resp. to TU | |1xx |
+---------------+ |resp. to TU |
| | |
| Timer E V Timer F |
| send req +-----------+ or Transport Err. |
| +---------| | inform TU |
| | |Proceeding |------------------>|
| +-------->| |-----+ |
| +-----------+ |1xx |
| | ^ |resp to TU |
| 200-699 | +--------+ |
| resp. to TU | |
| | |
| V |
| +-----------+ |
| | | |
| | Completed | |
| | | |
| +-----------+ |
| ^ | |
| | | Timer K |
+--------------+ | - |
| |
V |
NOTE: +-----------+ |
| | |
transitions | Terminated|<------------------+
labeled with | |
the event +-----------+
over the action
to take
17.1.2.1 Overview of the non-INVITE Transaction#
17.1.2.2 Formal Description#
17.1.3 Matching Responses to Client Transactions#
- 최상위 Via의 branch 파라매터
- CSeq의 method, CANCEL일 경우 같은 branch를 사용하기 때문에
17.1.4 Handling Transport Errors#
transport layer가 실패를 확인하면 TU에게 알리고 terminated 상태로 천이
17.2 Server Transaction#
17.2.1 INVITE Server Transaction#
|pass INV to TU
INVITE V send 100 if TU won't in 200ms
send response+-----------+
+--------| |--------+101-199 from TU
| | Proceeding| |send response
+------->| |<-------+
| | Transport Err.
| | Inform TU
| |--------------->+
+-----------+ |
300-699 from TU | |2xx from TU |
send response | |send response |
| +------------------>+
| |
INVITE V Timer G fires |
send response+-----------+ send response |
+--------| |--------+ |
| | Completed | | |
+------->| |<-------+ |
+-----------+ |
| | |
ACK | | |
- | +------------------>+
| Timer H fires |
V or Transport Err.|
+-----------+ Inform TU |
| | |
| Confirmed | |
| | |
+-----------+ |
| |
|Timer I fires |
|- |
| |
V |
+-----------+ |
| | |
| Terminated|<---------------+
| |
+-----------+
17.2.2 Non-INVITE Server Transaction#
|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|
| |
+-----------+
17.2.3 Matching Requests to Server Transactions#
magic cookie "z9hG4bK"가 있다면
- branch parameter 비교
- sent-by 값 비교
- ACK를 제외한 method 비교
magic cooke가 없다면 request의 값들을 이용하여 비교
17.2.4 Handling Transport Errors#
transport layer에서 실패가 발생하면
[4]의 과정을 따라 처리 실패한다면 TU에게 알리고 terminated state로 천이이
'Protocol > SIP' 카테고리의 다른 글
19. Common Message Components (0) | 2013.09.25 |
---|---|
18. Transport (0) | 2013.09.25 |
16. Proxy Behavior (0) | 2013.09.25 |
15. Terminating a Session (0) | 2013.09.25 |
14. Modifying an Existing Session (0) | 2013.09.25 |