SipDeveloperGuide » History » Revision 57
Revision 56 (Adrian Georgescu, 03/23/2009 08:06 PM) → Revision 57/215 (Adrian Georgescu, 03/30/2009 10:56 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 the library and the concepts described below you must be familiar with Python programming language and 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.
Instructions for installing the library are found [wiki:SipInstallation here].
== Middleware ==
To develop your application you should use the middleware API that hides the complexity and interactions of the lower level SIP, SDP, RTP, ICE, MSRP, XCAP and related protocols. With a minimal amount of coding you can create a client SIP application for setting up audio, instant messaging and desktop sharing sessions.
* [wiki:SipMiddlewareApi Middleware API] - event driven middleware suitable for developing interactive user interfaces (e.g. GUI)
* [wiki:SipSettingsAPI Configuration API] - used for managing the settings used by the middleware
=== Sample code ===
The middleware API is used by the command line tools used for [wiki:SipTesting testing the library].
== Components ==
If you wish to develop your own middleware and/or application while having control over the underlying protocol layers yourself, you can use the following APIs that provides granular control over their respective components:
* [wiki:SipCoreApiDocumentation SIP core API] - The API for the SIP, SDP, 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 used for instant messaging, file transfers and desktop sharing applications
* [wiki:SipPresenceApi Presence API] - The API for payloads carried within SIP signaling used for publication, subscription and notifications of SIP events
* [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 server, something the high level middleware was not designed for.
== TCP/IP ports ==
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.local_udp_port ||
|| 1xport >1024 || In/Out || Typically 5060 set in DNS ||TCP || [wiki:SipCoreApiDocumentation#Engine SIP over TCP] || At start ||Global.sip.local_tcp_port ||
|| 1xport >1024 || In/Out || Typically 5061 set in DNS ||TCP|| [wiki:SipCoreApiDocumentation#Engine SIP over TLS] || At start || Global.sip.local_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|| Global.xcap.local_port ||