1. SIP 메세지
ㅇ 호(呼) 또는 세션(Session)의 제어(설정/변경/종료) 처리를 위해,
- 크게 요청(Request) 메세지 및 응답(Response) 메세지 형태로 구성됨
ㅇ SIP/TCP/IP, SIP/UDP/IP, SIP/SCTP/IP 등과 같은 프로토콜 스택 상에서 전달됨
2. SIP 메세지 구성
ㅇ 메세지 구성 : (start line + header + blank line + body)
- 시작 줄 (start line) : (method + sip uri + version)
. 요청 메세지 : (Method + Request URI + SIP Version)
.. 例) 요청시 => INVITE sip:userid@ktword.co.kr SIP/2.0
. 응답 메세지 : (SIP Version + 응답 상태 코드)
.. 例) 응답시 => SIP/2.0 200 OK
. SIP URI : scheme:사용자이름:암호@호스트명;uri-parameters
.. Scheme 종별 : sip, sips, tel, pres, im 등
- 메세지 헤더 (Message Header)
. 세션의 서비스, 주소, 프로토콜 등의 정보 (To,From,Contact,Cseq,Call-ID 등)
.. 例) Via: SIP/2.0/UDP 221.146.2.5:5060; branch=z93ksh52
. 여기서, 한 세션을 구분하는 단위로써, `세션 Dialog` 라고 불리움
.. 한 세션 동안 무 변화하므로,
.. 갑작스런 단말 고장시에도 상대 단말이 이 정보를 유지함으로써 재 설정이 가능
- 빈 줄 (blank line)
- 메세지 본체 (Message Body)
. SDP(Session Description Protocol)를 통해, 세션 정보를, 각각의 필드로써 구분 기술하게됨
. 例) `v=` 필드 : 현재 버젼, `s=` 필드 : 세션 명칭, `m=` 필드 : 미디오 관련 정보 등
3. SIP 메세지 구분(종류) 및 특징
ㅇ Client -> Server 요청 메세지 : 메소드 이름으로 요청
- (특징) SIP Request 는, 기본 6가지의 메소드(Method)로 나뉨 (RFC 3261)
. INVITE : 세션 설정
. ACK : 응답 확인 (INVITE 요청에 대한 최종응답 확인)
. BYE : 세션 종료
. CANCEL : 요청 취소 (세션 취소)
. REGISTER : 서버에 등록 (사용자 URI 등록)
. OPTIONS : 수신자 능력 질의
- 기타, 확장 메소드 => INFO, PRACK, UPDATE, SUBSCRIBE, PUBLISH, REFER, NOTIFY 등
ㅇ Server -> Client 응답 메세지 : 1xx~6xx의 상태코드로 구분하여 응답
- (특징) SIP Reponse(응답 상태 코드) 은, 숫자로 표시됨
. 1xx : 정보메세지 (처리중)
.. 例) 100 trying, 180 ringing, 181 call is being forwarded
. 2xx : 성공적인 호 응답 (완료)
. 3xx : Redirection 응답 (요청 대체)
. 4xx : Request Fail 응답(클라이언트 오류)
. 5xx : Server Fail 응답 (서버 오류)
. 6xx : Global Fail 응답 (처리 실패)
- (HTTP 응답 코드와 유사함)