티스토리 뷰

etc

VoIP(Voice over Internet Protocol)

keehyun2 2017. 10. 1. 15:36

VOIP(Voice over Internet Protocol) 란 IP 네트워크를 이용하여 음성과 같은 실시간적인 정보를 전송하는 기법입니다. 쉽게 이야기하면 인터넷 전화라고 할수 있습니다. 상세한 내용은 Voice orver IP 를 참고하시기 바람니다.

pjsip(voip 를 구현한 C library) 를 공부하면서 생소한 용어나 약자를 보고 그것의 기능 및 역할을 추측해보고자 정리하였습니다.

사용되는 용어

SIP

SIP(Session Initiation Protocol)는 HTTP(웹 프로토콜) 와 SMTP(메일 프로토콜) 의 많은 영향을 받아서 설계되어서 주소체계, 헤더 정보, 응답코드 등에서 유사한 점을 많이 찾아 볼수 있습니다. 이 프로토콜은 하나 또는 그 이상의 참가자와 멀티미디어 세션들의 생성, 변경, 종료를 제어하는 응용계층(OSI 7 layer) 의 프로토콜로 정의됩니다. UDP, TCP 모두 사용가능 참고 wiki

UA

UA(User Agent)는 SIP 메시지를 생성하거나 수신하는 데 사용되는 논리적 네트워크 종단점입니다. User Agent는 SIP 세션을 관리합니다. 클라이언트 (UAC)로서 SIP 요청을 보내고 서버 (UAS)로 요청을 수신하고 SIP 응답을 반환합니다. 웹 브라우저가 클라이언트로만 작동하는 HTTP와 같이 클라이언트와 서버의 역할이 다른 네트워크 protocol 과 달리 SIP에서는 두 peer가 두 역할(client, server)을 모두 구현해야합니다. UAC 및 UAS의 역할은 SIP 트랜잭션 기간 동안 만 지속됩니다.

UAC

UAC(User Agent Client)는 상대방에게 sip 세션에 참여하라고 request(요청)을 보내는 역할을 합니다. 쉽게 caller(전화 거는 사람)으로 생각하면 좋습니다.

UAS

UAS(User Agent Server)는 상대방에게 sip 세션에 참여하라고 request(요청)에 대하여 response(응답)을 하는 역할을합니다. Callee(전화 받는 사람)으로 생각하면 됩니다.

Peer-to-peer SIP

P2P-SIP(Peer-to-peer SIP)는 통신 종점들 사이에서 세션 제어가 촉진되는 P2P 아키텍처 를 사용하는 분산 형 VoIP 또는 인스턴트 메시징 통신 애플리케이션 의 구현입니다. skype 가 이방식으로 구현되어있습니다.

구글에서 sip 로 검색을 해보면 대부분 중간에 register server, proxy server 를 사용하는 방식이 나타납니다. p2p sip 를 검색해야 server 없이 1대1 로 통신하는 diagram 을 보실수 있습니다.

SIP 주소 체계 예시

  • sip:bob.cisco.com FQDN (Fully-Qualified Domain Names) - 인터넷 서핑을 할 때 웹브라우저에 입력하는 도메인 주소 체계입니다. 도메인의 앞 자리에 사용자명 또는 단말기명을 붙여서 사용합니다.
  • sip:bob@cisco.com SMTP와 같은 Domain Names (RFC2368) - 메일 주소와 같은 방식을 사용합니다.
  • sip:14085551234@gateway.com; user=phone E.164와 같은 주소 - 사용자이름 부분에 전화번호를 넣어서 사용합니다.
  • sip:14085551234@10.1.1.1; user=phone sip:bob@10.1.1.1 혼합된 주소 체계 - IP 주소를 함께 사용할 수 있습니다.

SIP Request Method

HTTTP 의 GET,POST,UPDATE,DELETE 등의 메소드 처럼 SIP 도 Request 메서드를 가지고있습니다.

  • INVITE : Call 요청을 보냅니다.
  • ACK : INVITE 요청에 대해서 서버로부터 최종 응답을 받았을 때, 이에 대한 Acknowledge(ACK) - 긍정응답 을 보냅니다.
  • BYE : Call 을 Release 합니다. 세션을 종료하면서 전화를 끊습니다.
  • CANCEL : Pending request 를 Cancel 합니다.
  • OPTIONS : capability 에 대한 정보 요구
  • REGISTER : SIP location server 에 사용자 자신의 위치(location) 정보 알려줍니다.

SIP Request Method

  • 1xx Provisional : 정보
  • 2xx Success : 정상
  • 3xx Redirection : 요청을 다른 주소로 재송신
  • 4xx Client Error : 클라이언트 장애
  • 5xx Server Error : 서버 장애
  • 6xx Global Failure : 사용자 연결은 가능하지만 통화불가

더 자세한 코드를 확인하고 싶으시면 이 곳을 참고 해주세요.

SIP 세션의 종류

  1. Internet multimedia conferences (다자간 회의)
  2. Internet telephone calls (음성 전화)
  3. Internet video sessions (영상 전화)
  4. Multimedia distribution (멀티미디어 분배)
  5. Subscriptions and Nofitifations for Events (이벤트 신청 및 통지)
  6. Publications of State (상태 정보 배포)

RTP

Real-time Transport Protocol(실시간 전송 프로토콜) 의 줄임말입니다. 실시간으로 음성, 영상 정보를 IP 프로토콜을 통해 전송하고, 인터넷방송, 화상회의, 인터넷전화등에서 사용되어지는 프로토콜입니다. 음성이나 영상 데이터를 전달할때 물론 신뢰성있는 데이터를 전달하는 것도 중요하겠지만 실시간성이 더 중요합니다. 예를 들어 일상에서 사용하는 전화를 할때 화자가 청자에서 보내는 메세지가 바로 바로 전달되지 않는 상황을 떠올릴 수 있습니다. 그래서 데이터의 유효성 검사를 하지 않는 UDP 형식을 사용합니다. RTP 프로토콜은 다른 프로토콜들과 달리 예약된 포트(Well Known Port, ex: ssh 21) 를 사용하지 않습니다. 다만 연속된 포트 번호로 RTCP 와 동시에 사용합니다. RTP는 짝수, RTCP 는 홀수 포트번호를 사용합니다. 특정 포트를 강요하지는 않습니다.

RTCP

Real-time Transport Control Protocol 은 RTP 세션의 품질 제어를 위한 별도의 제어용 프로토콜입니다. 여러가지 기능이 있지만 공부중 ㅜㅜ…

SDP

Session Description Protocol 은 세션에 대한 정보를 제공합니다. 세션 공지, 세션 초대, 그리고 그 밖의 멀티미디어 세션 초기화를 위한 폼들을 목적으로 멀티미디어 세션들의 기술을 위해 작성되었다고합니다. 공부중 ㅜㅜ…

호 (呼) - Call

전화교환망에서 개개의 통신이 통신설비를 일시적으로 점유하는것 - 사용자가 통화를 목적으로 통신 회선 또는 설비를 점유하는 사상입니다.

참고 - TCP와 UDP 차이

간단히 설명하면 송수신된 데이터의 신뢰성 보장 여부로 비교할 수 있습니다. TCP(Transmission Control Protocol) 통신은 데이터 송신이후에 유효성 여부를 체크하고 부정적이면 다시 데이터를 송신하여 신뢰성을 보장하고 UDP(User Datagram Protocol) 의 경우는 이를 체크하지 않습니다. 대신에 UDP 는 실시간 정보 전달이 중요한 분야, 통화(voip)나 블루투스, 게임서버 분야 등에서 활용됩니다.

참고사이트

http://www.nexpert.net/category/SIP%EC%9D%98%20%EC%9D%B4%ED%95%B4

http://www.ktword.co.kr/abbrview.php?mtemp1=1381

http://www.nexpert.net/556

http://www.ktword.co.kr/abbrview.php?mtemp1=1805

'etc' 카테고리의 다른 글

bower-installer 사용법  (0) 2017.10.27
Useful JavaScript Library(1)  (1) 2017.10.12
Building and Using PJSIP  (0) 2017.09.17
멀티 브라우저 제어(Selenium Grid)  (0) 2017.08.04
웹 테스트 자동화 (Selenium IDE)  (0) 2017.07.26
댓글
글 보관함
최근에 올라온 글
Total
Today
Yesterday
링크