SIP HOLD

9449 단어 SIPhold
http://blog.sina.com.cn/s/blog_5a8b44fa0100w7tv.html
RFC 5359 에서 SIP 서비스의 흔 한 몇 가지 예 를 묘사 했다.이러한 서비스의 개념, 절차, 소식 에 대해 비교적 상세 하 게 소개 하 였 다.최근 시간 이 비교적 한가 하 니 다시 복습 해 보 니 많은 개념 이 명확 해 졌 다.CU 에 올 라 온 블 로 그 는 쓸 만 한 것 이 없 었 다. 이 RFC 를 간단히 소개 한다.
첫 번 째 서비스의 예 는 콜 홀 드 (호출 유지) 입 니 다.절 차 는 다음 그림 과 같다.
                       Alice                     Proxy                       Bob
                         |       INVITE F1     |                           |
                         |--------------->|                           |
                         |                               |     INVITE F2   |
                         |(100 Trying) F3 |------------->|
                         |<---------------|                           |
                         |                               |180 Ringing F4|
                         | 180 Ringing F5 |<-------------|
                         |<---------------|                           |
                         |                               |   200 OK F6     |
                         |       200 OK F7     |<-------------|
                         |<---------------|                           |
                         |         ACK F8         |                           |
                         |--------------->|       ACK F9       |
                         |                               |------------->|
                         |       Both way RTP Established     |
                         |<=============================>|
                         |                               |INVITE(hold) F10
                         |INVITE(hold) F11|<-------------|
                         |<---------------|                           |
                         |       200 OK F12   |                           |
                         |--------------->|     200 OK F13 |
                         |                               |------------->|
                         |                               |         ACK F14   |
                         |         ACK F15       |<-------------|
                         |<---------------|                           |
                         |                     No RTP Sent!               |
                         |                               |   INVITE F16   |
                         |     INVITE F17     |<-------------|
                         |<---------------|                           |
                         |     200 OK F18     |                           |
                         |--------------->|   200 OK F19   |
                         |                               |------------->|
                         |                               |       ACK F20     |
                         |         ACK F21       |<-------------|
                         |<---------------|                           |
                         |       Both way RTP Established     |
                         |<=============================>|
                         |         BYE F22       |                           |
                         |--------------->|     BYE F23       |
                         |                               |------------->|
                         |                               |     200 OK F24 |
                         |       200 OK F25   |<-------------|
                         |<---------------|                           |
                                   그림 1 Call Hold 예제
위의 이 장면 에서 앨 리 스 는 Bob 을 호출 했 고 호출 이 만들어 진 후에 Bob 은 이 호출 을 유 지 했 으 며 시간 이 지난 후에 다시 호출 유 지 를 취소 하고 정상 적 인 통 화 를 회복 했다.그리고 앨 리 스 는 통 화 를 끝 냈 다.
위의 이 과정 에서 hold 의 동작 은 Bob 이 proxy 에 비교적 특수 한 Invite 를 보 낸 것 을 볼 수 있다.이 invite 가 특별한 이 유 는 invite 메시지 의 sdp 부분 입 니 다.UA 가 보 낸 이 sdp 매개 변 수 는 다 릅 니 다.초기 UA 구현 은 sdp 의 c 주 소 를 0.0.0.0 으로 바 꾸 는 것 입 니 다.현재 유행 하 는 방법 은 세 션 에 미디어 흐름 이 있 으 면 sdp 의 a 를 a = inactive 로 바 꾸 는 것 입 니 다.미디어 스 트림 이 없 으 면 a 속성 을 a = sendly 로 변경 합 니 다.
다음은 F10 에 대한 소개 입 니 다.
F10 INVITE Bob -> Proxy 1
           INVITE sips:[email protected] SIP/2.0
           Via: SIP/2.0/TLS client.biloxi.example.com:5061
             ;branch=z9hG4bKnashds7
           Route:
           Max-Forwards: 70
           From: Bob ;tag=314159
           To: Alice ;tag=1234567
           Call-ID: [email protected]
           CSeq: 1 INVITE
           Contact: ;+sip.rendering="no"
           Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
           Supported: replaces
           Content-Type: application/sdp
           Content-Length: ...
           v=0
           o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
           s=
           c=IN IP4 client.biloxi.example.com
           t=0 0
           m=audio 3456 RTP/AVP 0
           a=rtpmap:0 PCMU/8000
           
a=sendonly
여 기 는 a 를
sendonly。
후속 200 OK 에서 Alice 의 UA 가 보 낸 200 OK 에서 sdp 부분 은 a = recvonly 로 바 뀌 었 다. 이후 Alice 와 Bob 사이 에는 미디어 스 트림 의 상호작용 이 없 었 다.
정상 통화 회복:
Bob 은 콜 홀 드 를 취소 하기 위해 특별한 invite 를 다시 보 내야 합 니 다.이 invite 에서 sdp 부분 에 서 는 a 속성 을 sendrecv 로 다시 수정 합 니 다. 다음 예 에 서 는 a 를 rtpmap: 0 PCMU / 8000 으로 변경 합 니 다.
F16 INVITE Bob -> Proxy 1
           INVITE sips:[email protected] SIP/2.0
           Via: SIP/2.0/TLS client.biloxi.example.com:5061
             ;branch=z9hG4bKnashds73
           Route:
           Max-Forwards: 70
           From: Bob ;tag=314159
           To: Alice ;tag=1234567
           Call-ID: [email protected]
           CSeq: 2 INVITE
           Contact:
           Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
           Supported: replaces
           Content-Type: application/sdp
           Content-Length: ...
           v=0
           o=bob 2890844527 2890844529 IN IP4 client.biloxi.example.com
           s=
           c=IN IP4 client.biloxi.example.com
t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000
 Alice   200OK ,a    rtpmap:0 PCMU/8000 。  Alice Bob       RTP   。        。
      callhold,   Consultation Hold,        。      callhold    Bob    Carol   。         :
Alice Proxy Bob Carol | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | |------------->| | |(100 Trying) F3 | | | |<---------------|180 Ringing F4| | | |<-------------| | | 180 Ringing F5 | | | |<---------------| 200 OK F6 | | | |<-------------| | | 200 OK F7 | | | |<---------------| | | | ACK F8 | | | |--------------->| ACK F9 | | | |------------->| | | Both way RTP Established | | |<=============================>| | | |INVITE(hold) F10 | |INVITE(hold) F11|<-------------| | |<---------------| | | | 200 OK F12 | | | |--------------->| 200 OK F13 | | | |------------->| | | | ACK F14 | | | |<-------------| | | ACK F15 | | | |<---------------| | | | No RTP Sent! | | | | INVITE F16 | | | |<-------------| | | | | INVITE F17 | | |--------------------------------->| | |(100 Trying) F18 | | |------------->| | | | | 180 Ringing F19 | | |<---------------------------------| | | 180 Ringing F20 | | |------------->| | | | | 200 OK F21 | | |<---------------------------------| | | 200 OK F22 | | | |------------->| | | | ACK F23 | | | |<-------------| | | | | ACK F24 |
| |--------------------------------->| | | Both way RTP Established | | | |<=================>| | | BYE F25 | | | |<-------------| | | | | BYE F26 | | |--------------------------------->| | | | 200 OK F27 | | |<---------------------------------| | | 200 OK F28 | | | |------------->| | | | INVITE F29 | | | INVITE F30 |<-------------| | |<---------------| | | | 200 OK F31 | | | |--------------->| 200 OK F32 | | | |------------->| | | | ACK F33 | | | |<-------------| | | ACK F34 | | | |<---------------| | | | Both way RTP Established | | |<=============================>| | | BYE F35 | | | |--------------->| BYE F36 | | | |------------->| | | | 200 OK F37 | | | |<-------------| | | 200 OK F38 | | | |<---------------| | | | | | |
Consultation Hold  
       Alice Bob    ,Alice Bob    ,Bob          ,   ,      Carol。    Alice     hold ,    Carol。 Carol     ,  Aliceunhold  , Alice    ,    (^_^)。
      Music on Hold.

좋은 웹페이지 즐겨찾기