목록Network/SIP (7)
우당탕탕 개발일지
15절은 SIP로 설정된 세션을 종료하는 절차를 설명한다. 세션의 상태는 dialog의 상태와 매우 밀접하게 연결되어 있다.INVITE request 이후, 각기 다른 UAS로부터 받은 1xx 또는 2xx response는 각각 하나의 dialog를 생성한다.만약 그 response가 offer/answer 교환까지 완료하면, 세션도 생성된다.따라서 각 세션은 하나의 dialog와 “associated(연결)”되어 있으며, 그 dialog가 세션을 생성한 셈이다. 초기 INVITE가 non-2xx final response를 생성하면해당 response로 생성된 모든 세션과 dialog는 종료된다.트랜잭션도 완료되며, 해당 INVITE로부터 더 이상 세션 생성이 불가능해진다. BYE request는 특정..
CHAPTER 14. Modifying an Existing Session 12절에서는 기존 dialog를 target refresh 요청을 통해 수정하는 방법을 설명했다. 해당 14절에서는 주소/포트 변경, 미디어 스트림 추가/삭제 등 세션을 수정하는 방법을 설명한다. 성공적인 INVITE request는 두 UA간 dialog와 offer/answer 모델을 통해 세션을 동시에 설정한다. 세션 수정은 기존 세션을 설정했던 동일한 dialog 내에서 새로운 INVITE request를 보내는 방식으로 수행된다.기존 dialog 내에서 보내는 INVITE request를 re-INVITE라고 한다.하나의 re-INVITE가 dialog와 세션 파라미터를 동시에 수정할 수 있다는 점을 유의해야 한다. ca..
CHAPTER 13. Initiating a Session(13.1) Overview해당 13절에서는 INVITE를 사용한 세션 생성 절차를 설명한다. INVITE를 지원하는 UA는 ACK, CANCEL, BYE도 지원해야 한다. (MUST) UAC는 세션을 시작하고자 할 때 INVITE request를 생성하여 서버에게 세션 설정을 요청한다.INVITE는 프록시를 통해 전달되다가 하나 이상의 UAS에 도달한다.→ SIP 라우팅 특성상 request는 forking으로 하나의 INVITE가 여러 대상에게 전달될 수 있음 UAS는 사용자에게 수신 화면을 띄우는 등 처리를 통해 세션 수락 여부를 확인한다.UAS는 final response 전송 전, 먼저 provisional response(1xx)를 보내..
CHAPTER 12. Dialogs Dialog는 두 UA 간에 일정 시간 동안 유지되는 peer-to-peer SIP 관계를 나타낸다.메세지 순서를 유지하고, request의 올바른 라우팅을 가능하게 하며, SIP 메세지를 해석하기 위한 context를 제공한다.→ context는 dialog 상태 정보 (Call-ID, local / remote tag 등) dialog는 각 UA에서 Call-ID, local tag, remote tag로 식별된다.→ local/remote tag는 각각From/To 헤더의 tag 값 (UA 관점에 따라 local / remote가 달라짐)UA의 local tag는 상대 UA의 remote tag와 같다.→ 같은 dialog에 참여하는 각 UA가 인식하는 dialo..
CHAPTER 9. Canceling a Request CANCEL request은 클라이언트가 보낸 기존 request을 취소할 때 사용한다.UAS가 이미 final response(200 OK, 486 Busy Here, 404 Not Found 등)을 보냈다면, 그 이후에 CANCEL request이 와도 아무 효과가 없다.INVITE에 대해 CANCEL을 받으면 → 벨소리(호 연결 시도)를 멈추고 → INVITE에 대해 487(Request Terminated) response을 보낸다. (9.1) Client BehaviorINVITE request을 취소할 때만 request해야 한다.다른 request은 response이 빠르기 때문에 race condition이 발생할 수 있다.CANCEL..
CHAPTER 8. General User Agent Behavior챕터 8에서는 outside dialog에서 발생하는 request 처리에 대해 설명한다.→ 메소드와 무관하게 적용되는 공통 동작 규칙 ※ Dialog에는 Inside Dialog / Outside Dialog가 있다. UA (User Agent) : 단말(End System)UAC : 세션을 시작하는 역할request를 생성하고 보냄.UAC → proxy server → UAS 쪽으로 전달.UAS : 세션을 종료하는 역할request를 수신하면 response를 생성하고 보냄.UAS → proxy server → UAC를 향해 되돌아간다. (8.1) UAC UAC Behavior(8.1.1) Generating the RequestUA..
CHAPTER 7. SIP Messages SIP 메세지 기본 구조Start-Line → Request / Response 를 구분할 수 있다.Header Field → From, To, Call-ID 등 메타데이터를 포함하고 있다.CRLF(\\r\\n) → 빈 줄 (필수)Message Body (7.1) RequestsMethodcontact 정보를 등록하기 위한 REGISTER, 세션 설정을 위한 INVITE, INVITE에 대한 response을 확인하기 위한 ACK , 세션을 취소하기 위한 CANCEL, 세션 종료를 위한 BYE, 서버에 해당 기능에 대해 쿼리하기 위한 OPTIONS 6가지 방법이 존재한다. Request-URIrequest의 목적지 주소SIP / SIPS URI 또는 non-SI..