SIP 개요

SIP(Session Initiation Protocol) 멀티미디어 통신에 있어 세션이나 호(Call)를 관리하는 프로토콜이다. 멀티미디어 데이터 전송 자체보다는 Signaling을 통한 멀티미디어 통신 관리에 중점을 두고 있다. 

*SIP는 HTTP  프로토콜을 모토로 만들어졌다.

 

SIP는 OSI 7 계층인 응용계층에 속하며, 통신 세션을 제어하기 위해 사용하며 TCP/UDP 모두 사용이 가능한 Request/Response 구조이다. SIP는 인터넷 전화, 멀티미디어 배포 회의가 포함이 되며 이를 설정, 수정 및 종료할 수 있는 시그널링 프로토콜이다.

* SIP는 세션을 연결해 줄 뿐이지 실제 멀티미디어를 전달하는 것은 RTP 프로토콜이다.

 

RTP( Real-Time Transport protocol ) : IP네트워크 상에서 오디오와 비디오를 전달하는 통신 프로토콜

RTP는 전화, 그리고 WebRTC텔레비전 서비스, 웹 기반 푸시 투 토크 기능을 포함한 화상 통화 분야 등의 스트리밍 미디어를 수반하는 통신, 엔터테인먼트 시스템에 사용된다.

 

 

[SIP 기본통신 과정]

1) SIP를 통해서 양 끝단의 세션을 만들어 상대방을 INVITE 한다.(A가 B에게 전화를 건다)

2) SDP를 통해 멀티타입에 대한 정보를 교환한다

3) RTP를 이용하여 실시간 멀티미디어 서비스를 제공한다.(통화를 한다.)

4) 통화가 끝나고 세션이 종료된다.

 


SIP 구성요소

SIP 시스템 또한 HTTP처럼 Client / Server로 나눠진다

 

[SIP Client]

구분 설명
User Agent Client 세션 종단에 위치하며 호를 생성하고 설정을 요청한다.
User Agent Server UAC로부터 호를 수락하거나 거절 또는 Redirect 한다.

[SIP Server] : UA 간 직접 호출이 가능하지만 SIP서버를 둠으로서 확장성을 제공한다.

구분 설명
Proxy Server UAC로부터 SIP콜을 받아 자신이 콜을 대신 만들어 주는 역할을 한다.
Register Server 사용자의 Agent로부터 레지스터 요청을 수신하여 사용자의 위치정보를 유지
Redirect Server 사용자가 직접 요청할 수 있는 상대방의 URL을 알려줌
Location Server Proxy Server나 Redirect server 로부터 SIP콜의 목적지 노드의 주소가 요청되면
이를 변환 해주는 역할을 함.


SIP Request Message

1. Invite : SIP session시작 시 UAC(User Agent Client)가 UAS(User Agent Server)로 전송하는 메시지

2. ACK : UAC는 Invite 메시지에 대한 최종 Response를 받고, 그 Response에 대한 ACK를 회신한다. (Success이던 Fail이던 회신)

3. BYE : UAC가 콜 종료 시 서버에서 해당콜이 종료되었음을 알릴 때 사용

4. CANCEL : 아직 완료되지 않은 Request를 취소할 때 사용. 서버로부터 Response 메시지를 받았다면 해당 Request는 취소될 수 없음

5. OPTION : 콜 셋업과 관계없이 서버에 대한 정보를 요구할 때 사용되는 Request 메시지

6. REGISTER : Client는 Registrar 서버에 자신의 위치정보를 제공한다. Client SIP address, IP address정보 등을 제공.


SIP Response Message

1XX: Informational Message

100: Trying

180: Ringing

181: Call is being forwarded

182: Queued (temporarily unavailable, server has decided to queue the call)

183: Session Progress

 

2XX: Successful Message

200: OK

 

3XX: Redirect Message

300: Multiple Choices

301: Moved Permanently

302: Moved Temporarily

303: See Other

305: Use Proxy

380: Alternative Service

 

4XX: Client Error

400: Bad Request

401: Unauthorized

402: Payment Required

403: Forbidden

404: Not Found (Client가 요청한 SIP 주소를 찾을 수 없음.)

405: Method Not Allowed

406: Not Acceptable

407: Proxy Authentication Required

408: Request Timeout

409: Conflict

410: Gone

413: Request Entity Too Large

414: Request-URI Too Large

415: Unsupported Media Type

416: Unsupported URI Scheme

420: Bad Extension

421: Extension Required

423: Interval Too Brief

480: Temporarily not available

481: Call Leg/Transaction does not exist

482: Loop Detected

483: Too Many Hops (Max-Fowards를 넘어설 경우 발생)

484: Address Incomplete

485: Ambiguous

486: Busy Here

487: Request Terminated

488: Not Acceptable Here (Codec 호환성 이슈)

491: Request Pending

493: Undecipherable

 

5XX: Server Error

500: Internal Server Error

501: Not Implemented

502: Bad Gateway

503: Service Unavailable

504: Server Time-out

505: Version not supported (Internal Server Error)

513: Message To Large

 

6XX: Global-Failure(Other Errors)

600: Busy Everywhere

603: Decline

604: Does not exist anywhere

606: Not Acceptable

'CS. > NETWORK' 카테고리의 다른 글

네트워크 지식 정리(4)  (0) 2023.08.17
네트워크 지식 정리(3)  (0) 2023.08.17
네트워크 지식 정리(2)  (0) 2023.08.16
네트워크 지식 정리(1)  (0) 2023.07.22
Port Forwarding  (0) 2022.12.03

+ Recent posts