목록분류 전체보기 (85)
우당탕탕 개발일지
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..
1. IPC 프로세스는 완전히 독립된 실행 객체로 다른 프로세스에 문제가 발생하여도 영향을 받지 않는다는 장점이 있다. 그러나 독립되어 있는 만큼 서로간에 통신이 어렵다는 문제가 있다. 이를 위해서 커널 영역에서는 IPC(Inter-Process Communication)라는 내부 프로세스간 통신을 제공하여 IPC 설비를 이용해서 프로세스 간 통신을 할 수 있다. 정보 공유여러 사용자가 동일한 정보에 엑세스할 필요가 있을 수 있다.가속화특정 작업(task)을 여러 개의 서브 작업(sub-task)로 쪼개어 프로세스의 병렬성을 키움으로써 처리 속도를 높일 수 있다.모듈화특정한 시스템 기능을 별도의 프로세스(스레드)로 구분하여 모듈화된 시스템을 구성할 수 있다.편의성다수의 사용자가 동시에 여러가지 작업을 수..
시그널 운영체제는 실행하고 있는 프로그램에 대해 예외적인 상황을 보고하기 위해서 시그널(signal)을 사용한다. 시그널은 비동기적으로 발생하며, 다음과 같은 3가지 경우에 발생한다.0으로 나누기처럼 프로그램에서 예외적인 상황이 일어나는 경우프로세스가 kill 함수와 같이 시그널을 보낼 수 있는 함수를 사용해 다른 프로세스에 시그널을 보내는 경우사용자가 Ctrl+C와 같은 인터럽트 키를 입력한 경우 시그널을 받은 프로세스가 이를 처리하는 방법은 다음과 같이 4가지이다.프로세스가 받은 시그널에 따라 기본 동작을 수행한다.대부분 시그널의 기본 동작은 프로세스를 종료하는 것이다.이외에 시그널을 무시하거나 프로세스의 수행 일시 중지/재시작 등을 기본 동작으로 수행한다.프로세스가 받은 시그널을 무시한다.프로세스가..