Chapter 2. SIP Overview
6. 요청과 응답 프로토콜로써의 SIP
SIP는 Client/Server 프로토콜이면서 요청과 응답 (Request / Response) 프로토콜입니다. SIP는 세션에 대한 처리 요청과 응답으로 트랜잭션을 진행합니다.
SIP를 이해하는 것은 요청과 응답의 과정을 정확히 이해하는 것입니다.
7. 요청을 위한 14개의 SIP메쏘드
SIP의 요청(Request) 메세지는 매쏘드 (Method)라고 하고, 정해진 특정 상황에서 발생되므로 용도를 알면 의미를 쉽게 파악할 수 있습니다.
RFC 3261에 정의된 6개의 기본 메쏘드는 다음과 같습니다.
- INVITE
멀티미디어 세션에 참가시키기 위한 서비스 또는 사용자를 초대하기위한 매쏘드 - ACK
INVITE 메쏘드에 대한 최종 응답인 200 OK를 수신했음을 통지하기 위한 매쏘드
ACK는 별도의 응답을 받지 않는 것이 특징 - BYE
기존의 세션을 종료하기 위한 매쏘드 - CANCEL
최종 응답 200 OK를 받기 전에 기존의 요청을 취소하기 위한 메쏘드 - OPTIONS
서버의 Capability 를 요청하기 위한 매쏘드 - REGISTER
User Agent가 Registrar Server에 등록하기 위한 매쏘드
그 외에 멀티미디어 세션 관리 및 부가 서비스를 위해 추가적으로 8개의 메쏘드가 IETF에서 발행하는 RFC 문서에 각각 정의 되었습니다.
- INFO (RFC 2976)
기존의 설립된 세션 또는 다이얼로그 내에서 추가적인 정보를 전송하기 위한 매쏘드 - PRACK (RFC 3262)
UAC (User Agent Client)가 임시적으로 Response를 승인하기위한 매쏘드 - SUBSCRIBE (RFC 3265)
특정 이벤트를 살펴보기 위해 원격노드에 요청하기 위한 매쏘드 - NOTIFY (RFC 3265)
특정 이벤트 발생 시 응답하기 위한 매쏘드 - UPDATE (RFC 3311)
세션 설정 파라미터를 업데이트하기 위한 매쏘드 - MESSAGE (RFC 3428)
채팅과 같은 단문 메세지를 (IM, Instant Messaging)을 전달하기 위한 매쏘드 - REFEER (RFC 3515)
호전환 (Call Transfer)과 같이 UA가 지금 통신 중인 UA 이외의 또 다른 UA와 통신하기 위한 매쏘드 - PUBLISH (RFC 3903)
Presence Server에 UA의 상태정보를 전송하기 위한 매쏘드
SIP는 RFC 3261에 정의된 기본 6개의 메쏘드와 추가 8개의 메쏘드를 합쳐 총 14개의 메쏘드를 사용합니다. SIP 메쏘드만 이해하여도 SIP 호 절차 분석이 쉽습니다. 다음 챕터부터는 이 모든 메쏘드를 각각 깊게 살펴보겠습니다.
9. 응답의 유형
요청에 대한 응답은 세 가지 유형으로 구분됩니다.
- Accept (승인)
요청의 처리를 승인하고, 결과로 200 OK를 송신 - Reject (거절)
요청의 처리를 거절하고, 결과로 원인에 따른 응답을 송신 - Redirect (재송신 요청)
요청의 처리를 보류하고, 요청을 재송신할 다른 주소를 송신
200 OK는 가장 많이 보는 응답이며, Reject는 거절 사유에 따라 응답 유형이 틀립니다. 각각의 거절 사유에 대한 것은 뒷 부분에서 자세히 설명합니다.
10. 기본적인 SIP 호 설립 절차
전화 통화 과정을 머리속에 그리면서 아래 그림을 살펴보시기 바랍니다. 앨리스와 밥이 통화하는 과정을 기술적으로 설명하면 다음과 같습니다.
"엘리스는 수화기를 들고 밥의 전화번호를 다이얼링하는 순간 엘리스의 전화기는 SIP INVITE 메쏘드로 세션 설립 요청을 밥에게 보냅니다. 밥의 전화기는 요청에 대한 처리의 결과로 벨을 울리기 시작하고, 엘리스에게 링백톤(Ringback tone)을 전송합니다. 밥이 수화기를 드는 순간 밥의 전화기는 200 OK를 송신하합니다. 엘리스의 전화기는 링백톤 생성을 중지합니다. 엘리스의 전화기는 200 OK 를 수신했음을 확인하기 위해 ACK (acknowledgement) 메쏘드를 송신합니다."
위의 그림은 기본적인 SIP Call Flow, 호 프로시져 또는 호 절차로 불립니다. INVITE와 ACK는 SIP 메쏘드이며, 200 OK는 INVITE 에 대한 최종 응답입니다. 위의 그림에 표시된 절차는 최소한의 SIP 세션 설립 절차이자 호 설정 절차이므로 모든 SIP 세션 설립에 반드시 포함됩니다.
특히, INVITE, 200 OK, ACK의 교환 과정을 SIP 세션 설정을 위한 "three-way handshake"라고 합니다. TCP three-way Handshake가 SYN, SYN/ACK, ACK를 교환하면서 세션 설립을 완료하듯이 SIP도 INVITE, 200 OK, ACK를 교환하면서 세션 설립을 완료합니다.
11. 실제 사용되는 SIP 호 설립 절차
앞에서 언급한 대로 SIP 세션을 설립하기 위한 3-way Handshake 에 사용되는 INVITE, 200 OK, ACK 는 필수 메세지입니다. 실제 호 설립 절차에서는 추가적인 옵션 메세지인 100 Trying 응답과 180 Ringing 응답을 함께 사용합니다. 100 Trying 응답은 SIP INVITE를 수신하여 처리하는 중임을 나타내며, 180 Ringing 응답은 착신 전화기의 벨이 울리고 있으니 링백톤을 재생하거나 컬러링과 같은 음 수신을 준비라라는 의미를 나타냅니다.
밥의 전화기가 INVITE을 수신하자 마자 100 Trying이 송신되며, INVITE를 정상적으로 처리하여 벨이 울리기 시작하면 180 Ringing을 앨리스의 전화기로 보냅니다.
IVR이나 음성사서함등의 SIP 시스템과 시스템간의 연결 시에는 180 Ringing이 필요없으므로 사용하는 경우를 제외하고는 거의 모든 SIP세션 설립에 거의 필수적으로 포함됩니다.
11. SIP 호 종료 절차
통화 중에 참가자 중 한명이 수화기를 내려 놓으면, BYE 요청이 송신되고 200 OK로 응답하면서 세션을 종료합니다.
12. ISDN Q.931와 SIP 호 절차 비교
요즘은 Voice Gateway와 IP PBX간에 SIP Trunk를 많이 구현하므로 장애처리를 해야할 경우 ISDN E1 PRI의 Q.931 호절차와 SIP의 호 절차를 비교하는 일이 자주 있습니다. Q.931 시그널링의 SETUP 메세지는 SIP INVITE와 대응되는 것처럼 각 메세지는 상호 대응되는 관계입니다.
UC 엔지니어가 반드시 알아야 하는 세션 설립 및 종료 절차입니다. SIP 패킷을 수집하거나 Voice Gatway에서 디버깅을 할 때 위의 절차를 모르면 아무것도 할 수 없습니다.
시간 나실 때 와이어샤크로 SIP 전화기의 패킷을 수집하여 호 설정 절차를 살펴보시기 바랍니다. 열 번 책을 보는 것보다 직접 해보면 알 수 있는 것들이 더 많은 법입니다.
"다시쓰는 SIP의 이해" 연재의 다른 글
2015/07/09 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 22편 Chapter 8. RTP의 이해
2015/07/09 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 21편 Chapter 7. 가끔 보는 SIP Method
2015/07/08 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 20편 Chapter 7. 가끔 보는 SIP Method
2015/05/20 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 19편 Chapter 7. 가끔 보는 SIP Method
2015/05/18 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 18편 Chapter 7. 가끔 보는 SIP Method
2015/05/07 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 17편 Chapter 6. SIP Method
2015/02/26 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 16편 Chapter 6. SIP Method
2015/02/23 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 15편 Chapter 6. SIP Method
2015/02/11 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 14편 Chapter 6. SIP Method
2015/01/30 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 13편 Chaper 5.SDP
2015/01/29 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 12편 Chapter 5. SDP
2015/01/05 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 11편 Chapter 5. SDP
2014/12/09 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 10편 Chapter 4. SIP Response
2014/12/04 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 9편 Chapter 3. SIP Method on RFC 3261
2014/12/03 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 8편 Chapter 3. SIP Method on RFC 3261
2014/12/02 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 7편 Chapter 3. SIP Method on RFC 3261
2014/11/26 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 6편 Chapter 2. SIP Overview
2014/11/21 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 5편 Chapter 2. SIP Overview
2014/11/19 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 4편 Chapter 1. VoIP의 이해 (3)
2014/11/11 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 3편 Chapter 1. VoIP의 이해 (2)
2014/11/05 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 2편 Chapter 1. VoIP의 이해 (1)
라인하트 유씨누스 (CCIEV #18487) --------------------------------------
ucwana@gmail.com (라인하트의 구글 이메일)
http://twitter.com/nexpertnet (넥스퍼트 블로그의 트위터, 최신 업데이트 정보 및 공지 사항)
http://groups.google.com/group/cciev (시스코 UC를 공부하는 사람들이 모인 구글 구룹스)
http://groups.google.com/group/ucforum (UC를 공부하는 사람들이 모인 구글 구룹스)
세상을 이롭게 하는 기술을 지향합니다. ______________________________________________