Project

General

Profile

SipDeveloperGuide » History » Version 43

Adrian Georgescu, 03/22/2009 09:48 AM

1 1 Adrian Georgescu
= Developer guide =
2
3
[[TOC(WikiStart, Sip*, depth=2)]]
4
5 16 Adrian Georgescu
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. 
6
7 41 Adrian Georgescu
== Prerequisites ==
8
9 40 Adrian Georgescu
To use the 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 and real time application development in general are strongly recommended.
10 1 Adrian Georgescu
11 32 Adrian Georgescu
Instructions for installing the library are found [wiki:SipInstallation here].
12 31 Adrian Georgescu
13 11 Adrian Georgescu
== Middleware ==
14 1 Adrian Georgescu
15 37 Adrian Georgescu
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.
16 1 Adrian Georgescu
17 42 Adrian Georgescu
 * [wiki:SipMiddlewareApi Middleware API] - event driven middleware suitable for developing interactive user interfaces (e.g. GUI)
18
 * [wiki:SipSettingsAPI Settings API] - used to managing the settings used by the middleware
19 24 Adrian Georgescu
20 38 Adrian Georgescu
=== Sample code ===
21
22 24 Adrian Georgescu
The middleware API is used by the command line tools used for [wiki:SipTesting testing the library].
23 1 Adrian Georgescu
24 11 Adrian Georgescu
== Components ==
25 1 Adrian Georgescu
26 42 Adrian Georgescu
To develop your own middleware or application while controlling the underlying protocol layers yourself, you can use the following APIs that provides granular control over their respective components:
27 1 Adrian Georgescu
28 36 Adrian Georgescu
 * [wiki:SipCoreApiDocumentation SIP core API] - The API for the SIP, SDP, RTP, ICE and audio engine (cross platform sound-card abstraction, codecs)
29 1 Adrian Georgescu
 * [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
30
 * [wiki:SipPresenceApi Presence API]  - The API for payloads carried within SIP signaling used for publication, subscription and notifications of SIP events
31 35 Adrian Georgescu
 * [wiki:SipXCAPApi XCAP API]  - The API for XCAP document manipulation used for storage of buddy lists and presence policy documents
32 42 Adrian Georgescu
33
You may use for example the above components API to create a SIP application server.
34 43 Adrian Georgescu
35
== Networking ==
36
37
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:
38
39
|| '''Local port''' || '''Direction''' || '''Remote port''' || '''Protocol''' || '''Description''' || '''Allocation''' || '''Setting''' ||
40
|| 1x Random>1024 || In/Out || Typically 5060 set in DNS|| UDP || SIP over UDP || At start || Global.sip.local_udp_port ||
41
|| 1x Random>1024 || In/Out || Typically 5060 set in DNS ||TCP || SIP over TCP || At start ||Global.sip.local_tcp_port ||
42
|| 1x Random>1024 || In/Out || Typically 5061  set in DNS ||TCP|| SIP over TLS || At start || Global.sip.local_tls_port ||
43
|| 2x Random>1024 || In/Out || Random negotiated in SDP || UDP || RTP/RTCP media stream || Per session || Global.rtp.port_range ||
44
|| 1x Random> 1024 || In/Out || Typically 2855 negotiated in SDP || TCP || MSRP stream over TLS || Per session || Global.msrp.local_port ||
45
|| 1x Random> 1024 || Out || Typically 443, statically provisioned || TCP || XCAP requests || Per request|| Global.xcap.local_port ||