목록Network (6)
우당탕탕 개발일지
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..
