Project

General

Profile

SipDeveloperGuide » History » Revision 67

Revision 66 (Adrian Georgescu, 11/13/2009 10:27 PM) → Revision 67/215 (Adrian Georgescu, 11/17/2009 07:18 PM)

= Developer Guide = 

 [[TOC(WikiStart, Sip*, depth=2)]] 

 The main goal of this library is to provide a simple to use API to create real-time communications applications between end-points based on SIP protocol.  

 == Prerequisites == 

 To use SIP SIMPLE client library and the concepts described below you must be familiar with Python programming language and basic SIP call flows from [http://www.tech-invite.com/Ti-sip-CF3665.html RFC 3665]. Understanding of TCP/IP networking in general and real time application development in particular are strongly recommended. 

 Detailed instructions for installing the library are found [wiki:SipInstallation here]. 

 == Middleware == 

 To develop your application you should use the middleware API that is event-driven, non-blocking and hides the complexity and the interactions of the lower level SIP, SDP, RTP, ICE, MSRP, XCAP and related protocols.     
 With a minimal amount of coding you can create a rich client application for setting up audio, instant messaging, file transfer and desktop sharing sessions. 

  * [wiki:SipMiddlewareApi Middleware API] - middleware suitable for developing of SIP Client Applications interactive user interfaces (e.g. GUI) 
  * [wiki:SipConfigurationAPI Configuration API] - used for managing the settings used by the Middleware middleware 

 === Sample Code === 

 The middleware is used by the command line tools used for [wiki:SipTesting testing the library]. The command line tools are the best example for how to use the library. 

 === Components === 

 If you wish to develop your own middleware or applications and/or application while having full control over the underlying protocol layers yourself, you can use the following APIs that provide provides granular control over their respective components: 

  * [wiki:SipStreamsApi Streams API]    - The API for Media Streams based on RTP and MSRP transports 
  * [wiki:SipPresenceApi Presence API]    - The API for payloads carried within SIP signaling used for publication, subscription and notifications of SIP events 
  * [wiki:SipCoreApiDocumentation SIP Core API] - The API for the SIP, RTP, ICE and audio engine (cross platform sound-card abstraction, codecs) 
  * [wiki:SipMSRPApi MSRP API]    - The API for Message Session Relay Protocol (MSRP) and its relay extension 
  * [wiki:SipXCAPApi XCAP API]    - The API for XCAP document manipulation used for storage of buddy lists and presence policy documents 

 You may use for example the above components API to create a SIP Application application server, something the high level middleware was not designed for. 

 == Network == 

 To use a SIP application you need access to a TCP/IP network (e.g. the Internet). The library uses the following ports when active: 

 || '''Local port''' || '''Direction''' || '''Remote port''' || '''Protocol''' || '''Description''' || '''Allocation''' || '''Setting''' || 
 || 1xport >1024 || In/Out || Typically 5060 set in DNS|| UDP || [wiki:SipCoreApiDocumentation#Engine SIP over UDP] || At start || Global.sip.udp_port || 
 || 1xport >1024 || In/Out || Typically 5060 set in DNS ||TCP || [wiki:SipCoreApiDocumentation#Engine SIP over TCP] || At start ||Global.sip.tcp_port || 
 || 1xport >1024 || In/Out || Typically 5061    set in DNS ||TCP|| [wiki:SipCoreApiDocumentation#Engine SIP over TLS] || At start || Global.sip.tls_port || 
 || 2xport >1024 || In/Out || Random negotiated in SDP || UDP || [wiki:SipCoreApiDocumentation#RTPTransport RTP/RTCP stream] || Per session || Global.rtp.port_range || 
 || 1xport >1024 || In/Out || Typically 2855 negotiated in SDP || TCP || [wiki:SipMSRPApi#transport.MSRPTransport MSRP stream] || Per session || Global.msrp.local_port || 
 || 1xport >1024 || Out || Typically 443, configured || TCP || [wiki:SipXCAPApi XCAP requests] || Per request|| ||