SIP method on RFC 3261

From 탱이의 잡동사니
Revision as of 14:42, 20 January 2015 by Pchero (talk | contribs) (Created page with " == 개요 == 원문은 이곳<ref>http://www.nexpert.net/491</ref>에서 확인할 수 있다. SIP 호 절차를 이해하기 위해서는 SIP 메시지에 포함된 SIP 헤...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

개요

원문은 이곳<ref>http://www.nexpert.net/491</ref>에서 확인할 수 있다.

SIP 호 절차를 이해하기 위해서는 SIP 메시지에 포함된 SIP 헤더를 잘 알아야 한다. SIP 헤더에 대한 기본적인 내용만 알고 있어도 쉽게 호 절차를 분석할 수 있다. 특히, 이기종 장비간 SIP Trunk 연동이나 단말 연동 시 장애가 발생할 경우에 SIP 패킷을 수집하여 분석하는 과정을 거치게 된다. SIP 헤더를 알지 못하면 수집된 패킷은 암호문일 뿐이다.

SIP 주소 체계

PSTN 전화망은 E.164 주소 체계를 사용하고, 인터넷망은 IP 주소 체계를 사용한다. E.164 주소체계는 사람이 인식하기 쉬운 주소 체계이지만, IP 주소체계는 어렵다. 인터넷에서 유투브나 네이버를 접속하기 위해 IP 주소를 웹브라우저에 입력하여 접속할 수 있지만, 사람들은 도메인 네임인 http://www.youtube.com 이나 http://google.com 이라는 도메인 네임으로 접속한다. IP 주소 체계보다 도메인 네임 체계가 훨씬 이해하기 쉽기 때문이다. 전자메일도 마찬가지이다.

SIP를 이용한 통화를 위한 주소체계는 다양한 방식의 주소 방식을 지원한다.

  • FQDN(Fully-Qualified Domain Names)
인터넷 서핑을 할 때 브라우저에 입력하는 도메인 주소 체계이다. 도메인의 앞 자리에 사용자명 또는 단말기명을 붙여서 사용한다.
sip:bob.cisco.com
  • SMTP와 같은 Domain Names(RFC 2368)
메일주소와 같은 방식을 사용한다.
sip:bob@cicsco.com
  • E.164와 같은 주소
사용자 이름 부분에 전화번호를 넣어서 사용한다.
sip:123456789@gateway.com; user=phone
  • 혼합된 주소 체계
IP 주소를 함께 사용할 수 있다.
sip:123456789@192.168.0.10; user=phone
sip:123456789@192.168.0.10

주요 SIP Header 분석

일반적으로 SIP 헤더에 포함되는 정보는 다음과 같다.

 INVITE sip:bob@biloxi.com SIP/2.0
 Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
 Max-Forwards: 70
 To: Bob <sip:bob@biloxi.com>
 From: Alice <sip:alice@atlanta.com>;tag=1928301774
 Call-ID: a84b4c76e66710@pc33.atlanta.com
 CSeq: 314159 INVITE
 Contact: <sip:alice@pc33.atlanta.com>
 Content-Type: application/sdp
 Content-Length: 142

SIP 헤더의 내용을 대충 이해할 수만 있어도 위의 메시지가 엘리스가 밥에게 보내는 SIP INVITE 메시지로 통화 요청을 위해 생성되었음을 알 수 있다. 각각의 헤더 정보를 살펴보자.

INVITE sip:bob@biloxi.com SIP/2.0

메시지 첫 줄에는 Method와 메시지를 수신하는 최종 단말의 주소와 버전이 명기되므로 메시지가 생성된 목적을 확인할 수 있다.

INVITE : 요청한 메소드
sip:bob@biloxi.com : Request URI
SIP/2.0 : 버전

Request-URI는 일반적으로 To 필드의 URI 값을 이용하여 표시한다. 이 라인은 Biloxi.com 도메인에 속해 있는 밥에게 전화를 걸고 싶다는 의미이다.

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds

Via 헤더는 요청에 대한 응답을 위한 경로를 나타낸다. Branch는 시공간에서 유일한 값을 가지며, 트랜잭션 식별자이다. 트랜잭션은 호 설정 또는 호 종료와 같은 단위 작업을 의미하며, User Agent 간에 생성된다.

이 라인의 의미는 SIP INVITE 요청에 대한 응답인 200 OK 를 앨리스에게 바로 전송하지 말고 pc33.atlanta.com 을 경유할 것을 요청한다는 의미이다.

Max-Forwards: 70

시그널링 경로 상에 SIP 서버의 최대 홉 수를 나타낸다. IP 네트워크의 TTL(Time to Live)과 같다.

To: Bob <sip:bob@biloxi.com>

SIP 메시지의 목적지를 나타낸다. 실제 메시지의 라우팅에는 사용되지 않으며 Display Name 의 의미를 가진다.

From: Alice <sip:alice@atlanta.com>;tag=1928301774

SIP 메시지의 출발지를 나타낸다. 실제 메시지의 라우팅에는 사용되지 않으며 Display Name 의 의미를 가진다.

From과 To 헤더는 현재 세션의 진행방향을 의미하는 것으로 현재 메시지의 발신자와 수신자를 의미하는 것이 아니다. 따라서 SIP INVITE 메세지의 응답인 200 OK 에서 From 과 To 헤더의 내용이 바뀌지 않는다. From과 To의 값이 엉뚱하게 적혀있어도 SIP 프로토콜이 진행되는 데는 문제가 없지만, 요즘에는 SIP 보안이 강화가 되면서 From과 To헤더가 잘못 명기되면 호가 진행되지 않기도 한다.

Call-ID: a84b4c76e66710@pc33.atlanta.com

세션에 대한 Global Unified Identifier로 사용하며, 호스트 네임 또는 IP address와 시간을 조합하여 생성된다. To/Fro/Call-ID 의 결합으로 엘리스와 밥사이의 Peer-to-Peer SIP 관계를 정의한다.

Call-ID가 같으면 하나의 다이얼로그로 인식하므로 세션의 설립과 종료 사이의 모든 SIP 메시지는 동일한 Call-ID를 가진다. SIP 호 분석 시에 다수의 호가 혼재되어 있어도 Call-ID를 기준으로 개별 호에 대한 분석이 가능하다. 다이얼로그는 다수의 트랜잭션으로 이루어질 수 있으므로 트랜잭션의 식별은 Via 헤더의 branch 값으로 추적하고, 다이얼로그의 식별은 Call-ID와 From 및 To 의 Tag로 추적한다.

CSeq: 314159 INVITE

Command Sequence 또는 Sequence Number 는 정수와 메소드 이름으로 나타낸다. 새로운 요청을 생성할 때마다 1씩 증가시킨다. 이 요청에 대한 응답인 200 OK에서도 같은 값을 확인할 수 있다.

하나의 요청과 응답은 같은 CSeq 값을 가진다.

Contact: <sip:alice@pc33.atlanta.com>

SIP URI 포멧으로 되어 있으며, 요청을 보낸 사용에 대한 직접적인 경로를 나타낸다.

일반적으로 FQDN(Fully Qualified Domain Name)나 IP주소를 선호한다. Via 헤더 필드가 요청에 대한 응답 경로를 나타내고, Contact 헤더 필드는 미래의 요청을 보낼 경로를 말한다. 요청에 대한 응답은 Via 헤더 필드를 참조하며, 신규 요청을 생성할 경우는 Contact 헤더 필드는 참조하는 것이다.

Content-Type: application/sdp

메시지 바디가 있을 경우, 메시지 바디에 대한 설명이다. application/sdp는 메시지 바디가 SDP 메시지로 구성되었다는 의미이다.

Content-Length: 142

메시지 바디의 크기를 옥텟(바이트)로 표시한다. 메시지 바디가 142 바이트로 구성되었다는 의미이다.

References

<references />