SipDeveloperGuide » History » Revision 62
« Previous |
Revision 62/215
(diff)
| Next »
Adrian Georgescu, 11/13/2009 10:23 PM
= Developer Guide =
<abbr title="WikiStart, Sip*, depth=2">TOC</abbr>
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.
PrerequisitesTo 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].
MiddlewareTo 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 interactive user interfaces (e.g. GUI)
- [wiki:SipConfigurationAPI 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]. The command line tools are the best example for how to use the library.
ComponentsIf 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:SipSessionApi Session API] - The high-level API for SIP sessions
- [wiki:SipStreamsApi Streams API] - The high-level API for Media Streams (RTP and MSRP)
- [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 low-level API for the SIP, RTP, ICE and audio engine (cross platform sound-card abstraction, codecs)
- [wiki:SipMSRPApi MSRP API] - The low-level API for Message Session Relay Protocol (MSRP) and its relay extension
- [wiki:SipXCAPApi XCAP API] - The low-level 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 portsTo 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 |
Updated by Adrian Georgescu about 15 years ago · 62 revisions