SIP는 매우 간단한 텍스트 기반의 응용계층 제어 프로토콜로서, 하나 이상의 참가자들이 함께 세션을 만들고, 수정하고 종료할 수 있게 한다. 이러한 세션들에는 인터넷을 이용한 원격회의, 전화, 면회, 이벤트 통지, 인스턴트 메시징 등이 포함된다. SIP는 하위에 있는 패킷 프로토콜 (TCP, UDP, ATM, X.25)에 독립적이다.
SIP는 텍스트 기반의 SMTP와 HTTP 이후에 설계되었다. SIP는 클라이언트들이 호출을 시작하면 서버가 그 호출에 응답을 하는 클라이언트/서버 구조에 기반을 두고 있다. SIP는 이러한 기존의 텍스트 기반 인터넷 표준들에 따름으로써, 고장 수리와 네트웍 디버깅 등이 쉽다.
SIP의 주요 특징들은 다음과 같다.
인터넷 멀티미디어 회의, 인터넷 전화, 멀티미디어 배포 등을 지원
멀티캐스트, 또는 망사형 유니캐스트 관계들을 통한 통신
교섭을 허용
프록시와 리다이렉트 등을 통해 "사용자 이동성"을 지원
하위계층 프로토콜에 독립적
특정 응용프로그램으로 확장이 가능
SIP는 IETF의 MMUSIC (Multiparty Multimedia Session Control) 작업그룹에서 개발되었다. SIP는 RFC 2543에 설명되어 있다.
● SIP(Session Initiation Protocol)
SIP는 VoIP 서비스를 실현하는 프로토콜 기술 중 하나로, 현재 제공되고 있는 대부분의 상용 인터넷전화 서비스에서 채택하고 있는 H.323 표준 기술을 대체할 목적으로 인터넷 표준 개발 기구인 IETF(Internet Engineering Task Force)에서 개발된 프로토콜 이다.
SIP는 멀티미디어 세션의 설정, 세션 정보 교환 및 해지 기능 등을 제공하는 응용 계층의 호 시그널링 프로토콜로, 인터넷전화, 멀티미디어 메세징 등과 같은 다양한 차세대인터넷 응용 개발에 필수적으로 요구되는 기술이다. SIP 기술은 인터넷전화 뿐만 아니라 웹 이후의 새로운 차세대 킬러 응용으로 부각되고 있는 인스턴트 메세징 및 프리젠스 서비스의 핵심 표준기술로 자리잡고 있으며, 제3세대 이동통신 서비스에서 호 제어 프로토콜로 채택되는 등 세계적으로 관련 기술에 대한 연구개발과 표준화 작업이 현재 활발하게 진행되고 있다. 현재 세계적으로 SIP 기반 장비 및 서비스 개발이 경쟁적으로 추진되고 있다.
SIP(Session Initiation Protocol)란?
Internet 기반 Multimedia 서비스 session을 생성하고 수정하고 종료하기 위한 signaling protocol이다. signaling protocol의 역할은 메시지 교환을 원하는 주체들간에 메시지 세션을 제어하기 위한 정보를 교환하는데 있다. 일반 전화망에서 통화를 하기 위해 다이얼 번호를 누르고, 상대가 전화 수화기를 들기 전까지 대기음을 듣고, 통화가 끝난 뒤 회선 자원을 반납하는 과정들이 signaling을 통한 제어 메세지 전달을 통해 이뤄진다. 이와 비슷하게 Internet을 기반으로 하는 Internet Telephony service, 원격 화상회의, 음성 메일 등에 사용될 수 있는 signaling protocol중에 하나가 바로 IETF(Internet Engineering Task Force)의 MMUSIC(Multiparty Multimedia Session Control)에 의해 제안된 SIP이다. | |
![]() [그림1] |
SIP는 IETF의 Toolkit 개념에 충실히 부합되게 설계되었다. 그래서 인터넷에서 사용되는 다른 많은 프로토콜과 결합하여 다양한 서비스들을 만들 수 있는 유연성과 확장성을 제공한다. 일반적인 예로서 SAP(Session Advertise Protocol)로 세션에 대한 정보를 관심있는 그룹에 제공하고 SIP를 통해 대화를 원하는 상대가 세션에 참가하도록 INVITE하며 SDP(Session Description Protocol)를 통해 열고자 하는 media type에 대한 정보를 교환한다. 또한 SDP에 기술된 RTP등을 이용해서 실시간 Multimedia 서비스를 제공할 수 있게 한다. SIP는 응용계층 protocol로서 TCP와 UDP 모두 사용할 수 있으며 request / response 구조이다. 또한 HTTP와 SMTP의 syntax와 semantics의 많은 부분을 그대로 사용하며 HTTP와 유사한 transaction을 한다. text-based이기 때문에 H.323에 비해 구현이 용이한 장점도 있다. SIP는 각 사용자들을 구분하기 위해 e-mail address와 비슷한 SIP URL을 사용함으로서 사용자는 IP주소에 종속되지 않고 서비스를 제공받을 수 있다. |

![]() [그림2] SIP Message 형식 예 | |
Start line에는 요청할 Method와 SIP URI가 위치하고 Header에는 세션을 control하기 위한 값들이 세팅된다. message body에는 header에서 Content-type에 설정된 타입의 내용이 들어가게 된다. [그림2] 에서는 SDP를 사용한 media type에 대한 기술부분이 Body 부분에 들어가 있다. | |
![]() [그림3] SIP의 simple한 동작 과정 | |
[그림3] 예를 통해 간단히 SIP의 동작을 알아보면 changsu는 INVITE method를 이용해서 hogyun과 통화할 수 있도록 요청한다. 이 과정에서 SIP body에 changsu의 media type에 대한 정보가 같이 전달된다. INVITE 메시지가 hogyun의 전화기에 전달되면 전화벨을 울리고 그 상태를 다시 changsu에게 알려준다. hogyun이 전화를 받으면 통화를 할려는 의지가 있다는 메시지를 hogyun의 media type 정보와 함께 changsu에게 전해주고 changsu는 ACK 메시지를 보냄으로써 통화를 시도하는 media type이 일치함을 알리며 둘간에 실제 통화를 하게된다. 통화가 끝난 뒤 hogyun이 전화 수화기를 내림으로서 BYE method가 changsu에게 전달되고 세션을 끝내는 BYE method 요청이 잘 처리되었음을 알리는 200OK 메시지를 보냄으로써 비로서 세션을 끝마치게 된다. |