请问什么是SIP协议?
SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。广泛应用于CS(Circuit Switched,电路交换)、NGN(Next Generation Network,下一代网络)以及IMS(IP Multimedia Subsystem,IP多媒体子系统)的网络中,可以支持并应用于语音、视频、数据等多媒体业务,同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务。可以说,有IP网络的地方就有SIP协议的存在。[1-2] SIP是类似于HTTP。SIP可以减少应用特别是高级应用的开发时间。由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的远意义。中文名会话初始化协议外文名Session Initiation Protocol出现时间二十世纪九十年代中期发布机构IETF发布时间1999年目录1会话协议
▪ 压缩机制▪ 应用
2发展历程
3通信要求
4会话构成
▪ 用户代理▪ 注册服务器▪ 代理服务器▪ 重定向服务器
5常用消息
6协议比较
▪ 标准应用目标▪ 标准体系结构▪ 系统组成结构▪ 实现难易性▪ 总 结
7相关技术▪ 开源项目▪ 5Java1会话协议SIPSIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议[3] 、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。SIP与负责语音质量的资源预留协议(RSVP) 互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。SIP 的一个重要特点是它不定义要建立的会话的类型,而只定义应该如何管理会话。有了这种灵活性,也就意味着SIP可以用于众多应用和服务中,包括交互式游戏、音乐和视频点播以及语音、视频和 Web 会议。SIP消息是基于文本的,因而易于读取和调试。新服务的编程更加简单,对于设计人员而言更加直观。SIP如同电子邮件客户机一样重用 MIME 类型描述,因此与会话相关的应用程序可以自动启动。SIP 重用几个现有的比较成熟的 Internet 服务和协议,如 DNS、RTP、RSVP 等。不必再引入新服务对 SIP 基础设施提供支持,因为该基础设施很多部分已经到位或现成可用。对 SIP 的扩充易于定义,可由服务提供商在新的应用中添加,不会损坏网络。网络中基于 SIP 的旧设备不会妨碍基于 SIP 的新服务。例如,如果旧 SIP 实施不支持新的 SIP 应用所用的方法/标头,则会将其忽略。SIP 独立于传输层。因此,底层传输可以是采用 ATM 的 IP。SIP 使用用户数据报协议(UDP) 以及传输控制协议(TCP),将独立于底层基础设施的用户灵活地连接起来。SIP 支持多设备功能调整和协商。如果服务或会话启动了视频和语音,则仍然可以将语音传输到不支持视频的设备,也可以使用其他设备功能,如单向视频流传输功能。通信提供商及其合作伙伴和用户越来越渴求新一代基于 IP 的服务。如今有了 SIP(The Session Initiation Protocol 会话启动协议),一解燃眉之急。SIP 是不到十年前在计算机科学实验室诞生的一个想法。它是第一个适合各种媒体内容而实现多用户会话的协议,如今已成了 Internet 工程任务组 (IETF) 的规范。今天,越来越多的运营商、CLEC(竞争本地运营商)和 ITSP(IP 电话服务商)都在提供基于 SIP 的服务,如市话和长途电话技术、在线信息和即时消息、IP Centrex/Hosted PBX、语音短信、push-to-talk(按键通话)、多媒体会议等等。独立软件供应商 (ISV) 正在开发新的开发工具,用来为运营商网络构建基于 SIP 的应用程序以及 SIP 软件。网络设备供应商 (NEV) 正在开发支持 SIP 信令和服务的硬件。如今,有众多 IP 电话、用户代理、网络代理服务器、VOIP网关、媒体服务器和应用服务器都在使用 SIP。SIP 从类似的权威协议--如 Web超文本传输协议(HTTP) 格式化协议以及简单邮件传输协议(SMTP) 电子邮件协议--演变而来并且发展成为一个功能强大的新标准。但是,尽管 SIP 使用自己独特的用户代理和服务器,它并非自成一体地封闭工作。SIP 支持提供融合的多媒体服务,与众多负责身份验证、位置信息、语音质量等的现有协议协同工作。SIP 较为灵活,可扩展,而且是开放的。它激发了 Internet 以及固定和移动 IP 网络推出新一代服务的威力。SIP 能够在多台 PC 和电话上完成网络消息,模拟 Internet 建立会话。与存在已久的国际电信联盟(ITU) SS7 标准(用于呼叫建立)和 ITU H323 视频协议组合标准不同,SIP 独立工作于底层网络传输协议和媒体。它规定一个或多个参与方的终端设备如何能够建立、修改和中断连接,而不论是语音、视频、数据或基于 Web 的内容。SIP 大大优于现有的一些协议,如将 PSTN 音频信号转换为 IP 数据包的媒体网关控制协议(MGCP)。因为 MGCP 是封闭的纯语音标准,所以通过信令功能对其进行增强比较复杂,有时会导致消息被破坏或丢弃,从而妨碍提供商增加新的服务。而使用 SIP,编程人员可以在不影响连接的情况下在消息中增加少量新信息。例如,SIP 服务提供商可以建立包含语音、视频和聊天内容的全新媒体。如果使用 MGCP、H323 或 SS7 标准,则提供商必须等待可以支持这种新媒体的协议新版本。而如果使用 SIP,尽管网关和设备可能无法识别该媒体,但在两个大陆上设有分支机构的公司可以实现媒体传输。而且,因为 SIP 的消息构建方式类似于 HTTP,开发人员能够更加方便便捷地使用通用的编程语言(如 Java)来创建应用程序。对于等待了数年希望使用 SS7 和高级智能网络(AIN) 部署呼叫等待、主叫号码识别以及其他服务的运营商,现在如果使用 SIP[4] ,只需数月时间即可实现高级通信服务的部署。这种可扩展性已经在越来越多基于 SIP 的服务中取得重大成功。Vonage 是针对用户和小企业用户的服务提供商。它使用 SIP 向用户提供 20,000 多条数字市话、长话及语音邮件线路。Deltathree 为服务提供商提供 Internet 电话技术产品、服务和基础设施。它提供了基于 SIP 的 PC 至电话解决方案,使 PC 用户能够呼叫全球任何一部电话。Denwa Communications 在全球范围内批发语音服务。它使用 SIP 提供 PC 至 PC 及电话至 PC 的主叫号码识别、语音邮件,以及电话会议、统一通信、客户管理、自配置和基于 Web 的个性化服务。某些权威人士预计,SIP 与 IP 的关系将发展成为类似 SMTP 和 HTTP 与 Internet 的关系,但也有人说它可能标志着 AIN 的终结。迄今为止,3G 界已经选择 SIP 作为下一代移动网络的会话控制机制。Microsoft 已经选择 SIP 作为其实时通信策略并在 Microsoft XP、Pocket PC 和 MSN Messenger 中进行了部署。Microsoft 同时宣布 CE dot net 的下一个版本将使用基于 SIP 的 VoIP 应用接口层,并承诺向用户 PC 提供基于 SIP 的语音和视频呼叫。另外,MCI 正在使用 SIP 向 IP 通信用户部署高级电话技术服务。用户将能够通知主叫方自己是否有空以及首选的通信方式,如电子邮件、电话或即时消息。利用在线信息,用户还能够即时建立聊天会话和召开音频会议。使用 SIP 将不断地实现各种功能。压缩机制SIP 压缩机制主要是通过改变 SIP 消息的长度来降低时延。典型的 SIP 消息的大小由几百到几千字节,为了适合在窄带无线信道上传输,IMS对SIP进行了扩展,支持SIP消息的压缩。当无线信道一定时, 一条SIP消息所含帧数 k仅取决于消息大小。从时延模型可以看出,不仅影响 SIP 消息传输时延, 还影响SIP重传的概率, 对自适应的定时器来说,k还成了影响定时器初值的关键因素。[5] 应用google 发布世界上首个开源的Html5 sip 客户端HTML5 SIP客户端是一款开源的,完全利用JavaScript编写的集社交(FaceBook,Twitter,Google+),在线游戏,电子商务等应用于一体。无扩展,无插件或是必备的网关,视频堆栈技术依赖于WebRTC。如同主页
目前,SIP是类似于HTTP的基于文本的协议。SIP可以减少应用特别是高级应用的开发时间。由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义。
市场上几乎所有的IP语音相关产品都遵循了ITU-T组织所公布的H323协议。虽然这些产品的开发和制作都将H323标准作为了实际的制作标准,但是由于H323主要是是对局域网中的数据传输进行了描述,但是其中很少有设计IP电话方面的描述,并且各个厂商在实际的开发与实现过程中,所选取的H323协议中的内容也并不相同,也就是说虽然各大厂商都遵循H323协议,但是所遵循的协议并不相同。因此,也导致了各大厂商之间的IP电话并不能够进行相互之间的通话。导致了企业内部IP语音通信系统在进行设计时就必须选取同一个厂商生产的网关等设备。这对IP语音通信系统的发展产生了很大的制约。目前,大家都己经认识到了这个问题,并且都纷纷要求能够有一个真正统一的一个标准,并且,各大厂商都进行了一定程度的联盟,来研究IP语音通信系统真正标准的制定。
金蝶Apusic应用服务器60新特性
在金蝶Apusic应用服务器60旧有版本的基础上,金蝶Apusic应用服务器60具备了更多的新的特性和对以前特性的增强,情况如下。
对RIA(Rich Internet Application)的更全面支持
金蝶Apusic应用服务器60在JSF 12及标准EL的基础上作了重要扩充,在容器级别提供JSF 托管Bean与JPA实体、Spring Bean之间的双向注入管理,结合全球独创的OperaMasks SDK及一体化开发与管理环境OperaMasks Studio,真正实现基于Java EE技术RIA应用开发的全生命周期管理。
提供增强SOA基础设施
金蝶Apusic应用服务器60在50的基础上,进一步强化了SOA基础设施能力,实现对SCA/SDO技术的良好支持,并实现对第三方Web Services框架的良好兼容性,为面向SOA系统提供更为平滑的支撑能力。
实现增强的可靠性
金蝶Apusic应用服务器60不仅支持应用的垂直扩展和水平扩展,并且能够适应复杂环境下系统的扩展需求,提供配对算法、全复制算法等,实现对F5、Radware等硬件负载均衡设备及常规Web Server的全面兼容。
性能优化及提升
金蝶Apusic应用服务器60在50的基础上,进行了大量性能优化工作,包括静态资源缓存、NIO InputStream算法及长连接管理优化、HTTP 304算法优化、GZIP算法优化、Chunked算法优化等。经优化后,性能提升明显,服务的加载时间、JSP页面的编译时间等大大缩短。
安全性能增强
金蝶Apusic应用服务器60在安全性方面作了重要增强,实现对多种安全身份管理及第三方安全产品的可插拔式支持,并实现对多认证中心、级联证书的全面支持。
更全面的兼容性支持
金蝶Apusic应用服务器60实现对第三方应用服务器上开发的应用更好的兼容性,提供可配置的类加载策略、更宽松的TLD验证、可插拔的JSP编译器、可配置的中文编码支持策略等非常实用、有针对性的功能,帮助第三方应用无缝迁移到金蝶Apusic应用服务器60。
我只知道j2me的网络连接看起来即时的东西都是作假的,因为在j2me里服务器端要主动找寻客户端的话难度太大,至少在没有客户端的IP或者任何能标识客户端的东西都没有。
说到这里你也应该明白了吧~ 并不只是单靠API就可以完成一个商业软件的,就像你这个问题,完全可以在客户端做一个循环,刷服务器端,每1秒发送给服务器端本机在线确认信息,或者每几秒发送一次,然后在服务器端也做一个等待验证,如果3分钟或者1分钟或者更短的时间内接收不到该用户所登录的客户端发送过来的在线确认信息,而且也没有收到正常退出信息,那就一定是非正常退出咯~ 总结就是客户端刷服务器端~
或者你厉害的话,就再做一个进程,当你这个程序启动时调用另一个监听该程序的进程,但要用JAVA做到这一步就很麻烦了。
类似聊天室的即时通讯,用JAVA做肯定是需要一个服务器端超时机制的,这个机制也肯定需要客户端定时发送在线确认的,就这么简单。
随着互联网的不断发展,无服务器应用编程开发成为了程序员学习的又一个发展方向,下面北大青鸟就一起来了解一下,实现无服务器编程开发的框架都有哪些呢。
Nimbus是一个旨在简化FaaS应用程序开发、测试和部署的Java框架。Nimbus提供了一组与云平台无关的公共接口,用于与云提供商的无服务器功能发生交互。
对于那些想要开发简单的应用程序的新手们来说,他们需要面临非常陡峭的学习曲线。他们可能只想要部署一些HTTP端点用来保存数据,但仍然要学习很多与云相关的概念。
Nimbus的主要优势是不需要通过创建配置文件来声明云资源(如AWSSAM或者Serverless框架),这样开发人员“就不会因为忘记了某些参数而犯错”。另外,Nimbus会对部署参数进行编译时检查,以便尽早检测出错误。
Nimbus还支持其他的操作:
WebSocketFunction:用于处理websocket请求;
DocumentStoreFunction:用于执行因文档存储变更而触发的代码;
KeyValueStoreFunction:用于执行因键值存储变更而触发的代码;
NotificationFunction:用于执行由通知触发的代码;
QueueFunction:用于执行因队列变化而触发的代码;
BasicFunction:用于执行不需要触发器的代码;
FileStorageFunction:用于执行基于文件存储事件(文件创建和删除)的代码;
AfterDeploymentFunction:用于执行部署之后需要立即执行的操作。
除了支持各种不同的操作之外,Nimbus还支持几种数据存储类型。
其他支持的数据存储(和客户端)包括:用于存储关系型数据的关系型存储、用于存储键值数据的键值存储和用于存储对象的文件存储(支持静态网站托管和文件上传)。
测试也是构建无服务器应用程序的另一个常见难点。Nimbus提供了单元测试和集成测试支持。在进行单元测试时,可以为上述列表中的任何一个操作创建本地部署,可以接受请求,并验证函数是否被正确调用,或者数据是否被正确保存。Nimbus对集成测试的支持相对有限,只支持基于HTTP的测试。在进行集成测试时,会启动一个本地Web服务器,用于验证请求调用了正确的函数。
H323协议和SIP协议的比较
H323和SIP分别是通信领域与因特网两大阵营推出的协议。H323企图把IP电话当作是众所周知的传统电话,只是传输方式发生了改变,由电路交换变成了分组交换。而SIP协议侧重于将IP电话作为因特网上的一个应用,较其它应用(如FTP,E-mail等)增加了信令和QoS的要求,它们支持的 业务基本相同,也都利用RTP作为媒体传输的协议。但H323是一个相对复杂的协议。
H323采用基于ASN1和压缩编码规则的二进制方法表示其消息。ASN1通常需要特殊的代码生成器来进行词法和语法分析。而SIP的基于文本的协议,类似于HTTP。基于文本的编码意味着头域的含义是一目了然的,如From、To、Subject等域名。这种分布式、几乎不需要复杂的文档说明的标准规范风格,其优越性已在过去的实践中得到了充分的证明(如今广为流行的邮件协议SMTP就是 这样的一个例子)。SIP的消息体部份采用SDP进行描述,SDP中的每一项格式为=,也比较简单。
在支持会议电话方面,H323由于由多点控制单元(MCU)集中执行会议控制功能,所有参加会议终端都向MCU发送控制消息,MCU可能会成为颈,特别是对于具有附加特性的大型会议;并且H323不支持信令的组播功能,其单功能限制了可扩展性,降低了可靠性。而SIP设计上就为分布式的呼叫模型,具有分布式的组播功能,其组播功能不仅便于会议控制,而且简化了用户定位、群组邀请等,并且能节约带宽。但是H323的集中控制便于计费,对带宽的管理也比较简单、有效。
H323中定义了专门的协议用于补充业务,如H4501、H4502和H4503等。SIP并未专门定义的协议用于此目的,但它很方便地支持补充业务或智能业务。只要充分利用SIP已定义的头域(如Contact头域),并对SIP进行简单的扩展(如增加几个域),就可以实现这些业务。例如对于呼叫 转移,只要在BYE请求消息中添加Contact头域,加入意欲转至的第三方地址就可以实现此业务。对 于通过扩展头域较难实现的一些智能业务,可在体系结构中增加业务代理,提供一些补充服务或与 智能网设备的接口。
在H323中,呼叫建立过程涉及到第三条信令信致到:RAS信令信道、呼叫信令信道和H245控制信道。通过这三条信道的协调才使得H323的呼叫得以进行,呼叫建立时间很长。在SIP中,会话请求过程和媒体协商过程等一起进行。尽管H323v2已对呼叫建立过程作了改进,但较之SIP只需要15个回路时延来建立呼叫,仍是无法相比。H323的呼叫信令通道和H245控制信道需要可靠的传 输协议。而SIP独立于低层协议,一般使用UDP等无法连接的协议,用自己信用层的可靠性机制来保 证消息的可靠传输。
总之,H323沿用的是传统的实现电话信令模式,比较成熟,已经出现了不少H323产品。H323符合通信领域传统的设计思想,进行集中、层次控制,采用H323协议便于与传统的电话网相连。SIP协议借鉴了其它因特网的标准和协议的设计思想,在风格上遵循因特网一贯坚持的简练、开放、兼容和可扩展等原则,比较简单。
以下针对它们的应用目标、标准结构、系统组成以及系统实现的难易程度等几个方面进行简单分析。 h323标准是itu-t组织 1996年在h320/h324的基础上建立起来的,其应用目标是,在基ip的网络环境中,实现可靠的面向音视频和数据的实时应用。如今经过多年的技术发展和标准的不断完善,h323已经成为被广大的itu成员以及客户所接受的一个成熟标准族。
sip标准是itef组织在1999年提出的,其应用目标是在基于internet环境,实现数据、音视频实时通讯,特别是通过internet将视频通讯这种应用大众化,引入到千家万户。由于sip协议相对于h323而言,相对简单、自由,厂商可以使用相对小的成本就可以构造满足应用的系统。例如仅仅使用微软基于sip协议的msn,和rtc就可以构造一个简单的,基于internet应用环境的视频通讯环境。这样网络运营商就可以在尽量少的成本基础上,利用现有的网络资源开展视音频通讯业务的扩展工作。 h323是一个单一标准,而不是一个关于在ip环境中实时多媒体应用的完整标准族,对于呼叫的建立、管理以及所传输媒体格式等各个方面都有完善而严格的规定。一个遵守h323标准建立的多媒体系统,可以保证实现客户稳定完善的多媒体通讯应用。
sip标准严格意义上讲是一个实现实时多媒体应用的信令标准,由于它采用了基于文本的编码方式,使得它在应用上,特别是点到点的应用环境中,具有极大的灵活性、扩充性以及跨平台使用的兼容性,这一点使得运营商可以十分方便的利用现有的网络环境实现大规模的推广应用。
但是sip协议自身不支持多点的会议功能以及管理和控制功能,而是要依赖于别的协议实现,影响了系统的完备性,特别是对于需要多点通讯的要求,应用单纯的sip系统难以实现。针对这些不足,以radvison公司为首的itu-t sg16小组提出了sip的运用规范,并实现了sip和h323之间的互通互联,并成功的解决了sip在多点环境下的应用难题。 首先,在系统主要组成成员的功能性方面进行类比,sip的ua等价于一个h323的终端,实现呼叫的发起和接收,并完成所传输媒体的编解码应用;sip代理服务器、重定向服务器以及注册服务器的功能则等价于h323的gatekeeper,实现了终端的注册、呼叫地址的解析以及路由。
其次,虽然在呼叫信令和控制的具体实现上不同,但一个基于sip的呼叫流程与h323的q931相类似,sip所采用的会话描述协议(sdp)则类似于h323中的呼叫控制协议h245。 h323标准的信令信息是采用符合asn1 per的二进制编码,并且在连接实现全过程都要严格标准的定义,系统的自由度小,如要实现大规模的应用,需要对整个网络的各个环节进行规划。
sip标准的信令信息是基于文本的,采用符合iso10646的utf-8编码,并且全系统的构造结构相对灵活,终端和服务器的实现也相对容易成本也较低,从网络运营商的角度考虑,构造一个大规模视频通讯网络,采用sip系统的成本要廉价许多,而且也更具有可实现性。 在这里,我只讨论与java相关的SIP技术,其实实现SIP的技术有多种,比如CGI
java为SIP提供了非常好的支持,JCP(Java Community Process)组织推动开发的一套基于Java技术的API:JAIN API(Java API for Integrated Networks),它包含JAIN SIP(JAIN SIP Lite)和SIP Servlet(JSR 116),SIP for J2ME,三个规范
以下为与java相关的SIP技术:
JAIN SIP API (JSR 32)
SIP Servlet API (JSR 116)
JAIN SIP Lite (JSR 125)
SIP API for J2ME (JSR 180)
JAIN SIMPLE Presence (JSR 164)
JAIN SIMPLE Instant Messaging (JSR 165)
JAIN SDP (JSR 141) SIP描述协议
Java Media Framework for RTP (J2SE可选包,并非JAIN的)
SIP for J2ME:(JSR 180 )
JAIN SIP API主要提供了J2SE平台的SIP协议栈的实现,主要面向桌面的J2SE应用;SIP Servlet API主要为面向服务端的SIP程序提供了一个API规范,如今实现了该规范的应用服务器有BEA Weblogic SIP Server和Micromethod,还有Jiplet Container,至于如何开发sip servlet,可参见参考资料SIP for J2ME主要为面向手机的CLDC设备的J2ME客户端它们之间的差别在参考资料[6]中讲解得很详细
其它Java相关技术:
jiplet: 一个支持sip servlet的应用服务器
nist-sip SIP Libraries and Tools
JAIN Service Logic Execution Environment (SLEE)
Asterisk是一款基于linux的开源VOIP服务器软件,它具有强大的功能和灵活的设置,随着VOIP的普及正得到越来越多的应用。我前两天刚刚给公司安装了一套系统,已取代使用了20年的Lucent PBX。
下载并安装ubunbu server
使用其他linux当然也可以,选择ubunbu是因为它的用户群更大,有问题更容易在网上找到答案。安装后需要做简单的网络设置。
安装Asterisk
sudo wet http://downloadsasteriskorg/pub/telephony/asterisk/asterisk-161-currenttargz
sudo tar xvzf asterisk-161-currenttargz
sudo /configure
sudo make
sudo make install
设置extensionsconf
[globals]
[general]
autofallthrough=yes
[default]
[incoming_calls]
[internal]
exten => 999,1,Answer()
exten => 999,n,Playback(tt-weasels)
exten => 999,n,Hangup()
exten => 800,1,VoiceMailMain()
exten => 123,1,Dial(SIP/ZhangSan)
这里设置了两个分机,999是测试号,拨打该号时听到测试录音,123是SIP分机号。800是访问语音信箱的号码。
设置sipconf
[TEST]
type=friend
context=internal
host=dynamic
[ZhangSan]
type=friend
context=internal
host=dynamic
mailbox=123@default
下载安装x-lite softphone
x-lite易于设置,在调试阶段非常有帮助
这时xlite就应该可以连接到Asterisk了,若拨打999就可以听到预先录制的测试音频
设置voicemailconf
[general]
format=wav49|gsm
serveremail=Asterisk
attach=yes
maxmessage=300
mailcmd=/usr/sbin/ssmtp -t
[default]
123 => 1234,User1,user@youmailservercom
这里经常会遇到的问题是用户收不到email通知,通常是email的路由问题,安装ssmtp并进行简单设置后问题就会比较容易地得到解决。
设置SIP电话机
这个就取决于你所使用的设备型号了,我用的是Aastra的6755i,可以使用web界面进行设置,最主要的就是SIP服务器的地址、端口,和用户名。如果一切正常就看以用xlite拨打该分机了。
0条评论