목록분류 전체보기 (87)
우당탕탕 개발일지
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..
내 프로젝트의 경우, 개발 환경은 다음과 같다.⚙️ React + Typescript + npm + Tailwind Tailwind를 처음 사용해보는 터라 설치부터 난관이었다. 프로젝트 초기 세팅Tailwind와 PostCSS를 개발 의존성으로 추가한다.npm install -D tailwindcss postcssnpm tailwindcss init -p 이 명령을 실행하면 두 파일이 생성되게 된다. 📁 tailwind.config.js📁 postcss.config.js [ tailwind.config.js ]/** @type {import('tailwindcss').Config} */export default { content: ["./src/**/*.{js,jsx,ts,tsx}"], them..
[C언어] IPC(1) (feat. 공유 메모리)1. IPC 프로세스는 완전히 독립된 실행 객체로 다른 프로세스에 문제가 발생하여도 영향을 받지 않는다는 장점이 있다. 그러나 독립되어 있는 만큼 서로간에 통신이 어렵다는 문제가 있다. 이를uj0791.tistory.com 1. Pipe파이프는 두 프로세스 사이에서 한 방향으로 통신할 수 있도록 인터페이스를 제공한다.파이프는 이름 없는 파이프(익명 파이프, annoymous pipe)와 이름 있는 파이프(named pipe)로 구분된다. 특별한 수식어 없이 그냥 파이프라고 하면 일반적으로 이름 없는 파이프를 의미한다. 이름 없는 파이프는 부모-자식 프로세스 간에 통신할 수 있게 해준다. ✅ pipe()#include int pipe(int fildes[2..