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 |