SIP协议结构及java实现
SIP协议详解
第3章SIP协议3.1 概述3.1.1 基本概念会话启动协议SIP(Session Initiation Protocol)是由IETF提出并主持研究的一个在IP网络上进行多媒体通信的应用层控制协议,它被用来创建、修改、和终结一个或多个参加者参加的会话进程。
这些会话包括Internet多媒体会议、Internet电话、远程教育以及远程医疗等。
即所有的因特网上交互式两方或多方多媒体通信活动,统称为多媒体会话。
参加会话的成员可以通过组播方式、单播联网方式或者两者结合的方式进行通信。
SIP协议是一个正在发展和不断研究中的协议。
一方面,它借鉴了其他Internet标准和协议的设计思想,在风格上遵循因特网一贯坚持的简练、开放、兼容和可扩展等原则,并充分注意到因特网开放而复杂的网络环境下的安全问题。
另一方面,它也充分考虑了对传统公共电话网的各种业务,包括IN业务和ISDN业务的支持。
利用带有会话描述的SIP邀请消息来创建会话,以使参加者能够通过SIP交互进行媒体类型协商。
它通过代理和重定向请求用户当前位置,以支持用户的移动性。
用户也可以登记它们的当前位置。
SIP协议独立于其他会议控制协议,它在设计上独立于下面的传输层协议,因此可以灵活方便地扩展其他附加功能。
SIP作为一个应用层的多媒体会话信令协议,可以被用来发起一个会话进程、在会话中邀请其他参加者加入会议,会话本身可以通过基于组播协议的会话通告协议(SAP)、电子邮件、网页通告、以及轻量级号薄访问协议(LDAP)等方式预先通告各个可能的参加者。
SIP协议支持别名映射、重定向服务、ISDN和IN业务。
它支持个人移动(personal mobility),即终端用户能够在任何地方、任何时间请求和获得已订购的任何电信业务。
总的来说,会话启动协议能够支持下列五种多媒体通信的信令功能:●用户定位:确定参加通信的终端用户的位置;●用户通信能力协商:确定通信的媒体类型和参数;●用户意愿交互:确定被叫是否乐意参加某个通信;●建立呼叫:包括向被叫“振铃”,确定主叫和被叫的呼叫参数;●呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。
SIP协议
SIP协议简介SIP(Session Initiation Protocol)是一种用于建立、修改和终止多媒体会话的协议。
它是互联网工程任务组(IETF)定义的一种应用层协议,被广泛应用于语音通话、视频通话、即时消息和多媒体会议等实时通信领域。
SIP协议的主要目标是提供一种灵活、可扩展的机制,用于建立和管理通信会话。
它采用文本格式的消息交换方式,基于请求‑应答模式进行通信。
SIP协议使用统一资源标识符(URI)来标识终端设备和用户,通过SIP消息的交换来实现会话的控制。
SIP协议的设计思想是简单、可扩展和松散耦合。
它允许在不同的网络环境中使用各种传输协议,如UDP、TCP和TLS等。
同时,SIP协议也提供了灵活的会话控制功能,包括呼叫的建立、会话参数的修改和会话的终止。
SIP协议在实时通信领域有着广泛的应用。
它被广泛用于VoIP(Voice over IP)系统,使得用户可以通过互联网进行语音通话。
此外,SIP协议还支持视频通话、实时消息传递和多媒体会议等功能。
它提供了一种开放的架构,允许不同厂商的设备和应用进行互操作。
然而,SIP协议也面临着一些安全性和挑战。
由于SIP协议的开放性和可扩展性,攻击者可能利用其中的漏洞进行恶意攻击。
因此,实施SIP协议时需要采取一些安全措施,如认证、加密和防火墙等,以保护通信的安全和隐私。
总之,SIP协议作为一种用于建立和管理多媒体会话的协议,为实时通信提供了一种灵活、可扩展的机制。
它在VoIP 和其他实时通信应用中发挥着重要的作用,并为用户提供了丰富的通信体验。
然而,为了确保通信的安全性,使用SIP 协议时需要注意相关的安全措施。
SIP协议的工作原理SIP(Session Initiation Protocol)协议是一种基于文本的协议,用于建立、修改和终止多媒体会话。
它采用了简单而灵活的工作原理,使得通信设备能够进行会话的控制和管理。
SIP协议的工作原理可以概括为以下几个步骤:1.定位和寻址:SIP协议使用统一资源标识符(URI)来标识终端设备和用户。
阐述:SIP协议是什么
阐述:SIP协议是什么sip协议是什么?可能刚刚接触这个协议的朋友会掌握不好它的定义。
那么⾸先我们要了解⼀下,⽬前企业中⼤多数VoIP应⽤都使⽤H.323协议,但是,随着越来越多的企业研究SIP协议,不久的将来基于SIP协议的VoIP必将迅速发展.那么在了解sip协议是什么之前,我们先来看看H.323协议的定义。
H.323协议簇 1.1基本概念 H.323是ITU-T第16⼯作组的建议,H.323由⼀组协议构成,其中有负责⾳频与视频信号的编码、解码和包装,有负责呼叫信令收发和控制的信令,还有负责能⼒交换的信令.1999年7⽉前,多数系统是基于H.323第⼆版的,⽽在此之后,H.323第三版开始应⽤.H.323是个框架性的协议,由系列协议组成,包括:H.225、H.245、G.711、G.723.1、G.729等. 1.2基本功能 ⽬前我国⽹上使⽤的H.323协议基本上是第⼆版本的.针对信令⽅⾯主要为H.225、H.245. 1.2.1H.225协议的功能 (1)RAS信令功能:就是采⽤H.225中的消息在端点和⽹守之间实现注册、接⼊许可、带宽修改、状态和拆除程序. (2)呼叫信令功能:采⽤H.225呼叫信令在H.323端点之间建⽴连接,包括呼叫建⽴和拆除等流程. 1.2.2H.245协议的功能 (1)控制功能:H.245控制功能采⽤H.245控制通路交换端到端控制信息,从⽽保证H.323实体的运作,其中包括能⼒交换、打开/关闭逻辑通路模式选择、流控消息、⼀般命令和指⽰.H.245信令在两个端点和⼀个⽹守之间建⽴.端点必须为其参与的每个呼叫建⽴正确的H.245控制通路,这个通路必须使⽤H.245消息和流程. (2)H.245的能⼒交换:指提供独⽴的接收和传送功能. (3)逻辑通路信令.每个逻辑通路承载从⼀个发送⽅⾄另⼀个或多个接收⽅的信息. (4)模式选择.接收⽅可以使⽤requestMode消息请求发送⽅发送⼀个特定模式. (5)主从决定.主从决定主要是解决冲突问题. 好了,到这⾥,⼤家爱应该能够清楚H.323等⼀系列协议的内容了,那么这⾥我们就具体讲解⼀下sip协议是什么。
SIP简介
SIP简介,第1部分:SIP初探时间:2006-04-07作者:Emmanuel Proulx浏览次数:18851本文关键字:SIP, JAIN, RFC3261signaling, WebLogic Communications Platform, 会话发起协议, 信令文章工具推荐给朋友打印文章摘要会话发起协议(Session Initiation Protocol,SIP)是一种信令协议,它对于通信业有着重要的意义。
本文从技术上对SIP进行了一般性的介绍,并说明了SIP如何为通信解决方案提供重要支持。
简介我曾经构想过一种软件,它可以“浮于”应用程序之上,提供辅助作用。
这不是一个哑的“帮助”系统,而是一个活动的技术支持代理,可以在Internet上进行讨论。
那时曾有人告诉我,“现有的工具、库、协议或带宽实现不了这样的要求!”时代已经不同了!许多人家中已经拥有基于DSL、光纤和其他技术的宽带网络。
存在大量高质量的工具和库,无论是商业的还是开源的。
标准驱动应用。
现在是时候来实现上述创新思路了。
了解SIP首先,我将向您介绍SIP,也就是会话发起协议。
SIP是一种轻量级的可扩展请求/响应协议,用于在两个端点之间开始通信会话。
这听起来是不是很熟悉?SIP在概念上源自于HTTP和SMTP,但是它的目的却不同。
可以把SIP消息与CB(民用波段)隐语10-code和Q-signal进行比较。
图1.用于管理CB呼叫的隐语在这个例子中,真正的消息包含在专用的呼叫协商消息中。
SIP是IETF于1999年提出的,在2002年进行了修订。
RFC 3261对它进行了描述。
本文中有关SIP的信息就选自RFC。
对SIP存在很多扩展,这些扩展中的很多都能在SIP-related RFCs and drafts清单中找到。
SIP有哪些优点呢?通常情况下,两个端点使用它来协商一次“呼叫”。
这里的协商包括介质(文本、语音等)、传输(通常是RTP、Real Time Protocol)和编码(codec)。
SIP协议结构及java实现
SIP事件子层(SIP transaction sublayer)
SIP事件子层(SIP transaction sublayer)
• 作用:尽管提供了很多功能。最主要的功能是用 来可靠地传输UDP数据。此外他还可以被事件用 户使用,透明传输。 • 可靠: (1)请求与相应的相关性(branch) (2)传输机制
• 协议实现的所有对象不都是由SipFactory创建 的。一些其他对象是由以下工厂创建: the MessageFactory(创建对象表示SIP消息) the AddressFactory(创建对象表示SIP地址) the HeaderFactory(创建对象表示SIP头部) 这三者的实体可通过调用SipFactory的工厂创 建的方法得到。
SIP核心子层(SIP core sublayer)
SIP核心子层在SIP体系结构的顶端,在这个 子层,实现了每个SIP实体的特定服务逻辑。每个 SIP实体尽管在其他层会共用某种逻辑,但是在核 心子层,他们有各自不同的服务逻辑。这些服务 逻辑 就是SIP核心。这样每个实体的不同服务逻 辑就将他们区分开来。这些核心包括 UAC,UAS,REGISTRAR,STATEFUL PROXY&STATELESS PROXY 注意:这些SIP实体是逻辑元素,不是物理元素。
JAIN SIP概况
• 行业术语通常称一个协议的实现过程为协 议栈。 • SIP协议栈可以由Java代码编写,也可以由 其他编程语言编写。 • JAIN SIP比较底层,变成结构表现的都是 些底层概念:消息,头部,IP地址,端口 等等。用于创建用户代理,代理服务器等 SIP实体。有利于深刻理解SIP的工作机制。
创建消息(请求/响应)
实例
事件监听模式
SIP协议解析实现语音和视频通信的协议
SIP协议解析实现语音和视频通信的协议SIP(Session Initiation Protocol)是一种用于建立、管理和终止多媒体会话的通信协议。
它是一种基于IP网络的协议,可实现语音、视频以及其他多媒体应用程序之间的通信。
本文将对SIP协议进行解析,并讨论它如何实现语音和视频通信。
一、SIP协议的基本结构SIP协议采用了一种客户端/服务器架构,其中客户端被称为SIP用户代理(SIP User Agent),服务器被称为SIP服务器。
SIP协议主要包含以下几个组成部分:1. SIP消息格式:SIP消息由请求和响应组成。
请求消息用于发起会话、修改会话和终止会话等操作,响应消息用于回应请求消息。
2. SIP请求方法:SIP定义了一系列的请求方法,如INVITE(邀请对方参与会话)、ACK(确认请求消息已被接收)和BYE(终止会话)等。
3. SIP状态码:SIP状态码用于指示请求的处理状态,如200表示请求成功,404表示未找到资源等。
4. SIP头部字段:SIP头部字段包含了一些用于描述会话的元数据,如Call-ID(会话标识符)、From(发起方标识)和To(接收方标识)等。
5. SIP会话描述协议(SDP):SDP用于在SIP会话中协商媒体类型、编码方式和传输参数等。
6. SIP代理:SIP代理用于处理SIP消息的传输和路由。
它可以将消息转发给下一个代理或目标终端,并负责处理各种网络地址转换等。
二、SIP协议的工作流程SIP协议的工作流程通常包括以下几个步骤:1. 注册:SIP用户代理向SIP服务器发送注册请求,以告知服务器其可用性和位置信息。
2. 呼叫建立:SIP用户代理向服务器发送INVITE请求,请求建立通话。
服务器根据请求中的目标地址找到被叫用户代理,并向其发送INVITE请求。
3. 呼叫传输:被叫用户代理发送响应消息,表示接受或拒绝通话。
如果接受通话,双方开始通过SDP协商媒体类型和传输参数。
SIP协议在Java消息服务系统中的应用研究
rsace , ada I sa e evc s m ae nSPsrl pt td t o ia o f c apoet ee h d n SPmesg rie y t b sdo I v e ie ai e hcmbn t no t l r c. r s s e e ts x a wi i au j
Ce tr S uh s Ja tn ies , Ch n d 0 C ia 3 De at n f o ue ce c , n e, o twet ioo gUnv ri y t e g u6 3 , hn ; . 1 0 1 pr me t mp tr in e oC S
s se wh c a ul p c mpiae it b td SP a piain s se S P me sg t cu ea dc mmu iain p o e sae y tm, ih c nb i u o l td dsr ue I p l t y tm. I sa e s u tr o d c i c b r n n c t rc s r o
摘 要 : 会话 发起协 i ssini t t npo clSP作 为一 种新 兴的 因特 网多媒体 通讯 协议 , 建立 多方 多媒体通 讯和 I  ̄(es iao rt o,I) o nii o 在 P多 媒 体 子 系统 等方 面有 着很 大的优越 性 , 同时作为 N N 中的重要 协议 , I G SP协议 也越 来越 受到 业界的 关注 。Jv aa为 SP应 用 系 I 统开发提 供 了强 大的 J I Jv AP fr t rtd e rs一I A N( a Io i e a n t k) P开发平 台, 于构 建复杂 的分 布式 SP应 用 系统 。对 SP消息结 a n g e wo S 用 I I 构和 通信过程 进行 了初 步研 究 , 结合 实际 项 目阐述 了如何使 用 SPSrl 来 建立基 于 SP的消 息服 务 系统 。 并 I eve t I 关键 词: I SP协议 ; 消息服 务 系统; 分布 式应 用 系统 ; 即 时消息传 递;SP应 用 I
自己动手写SIP协议栈
自己动手写SIP协议栈首先,SIP协议栈需要实现SIP协议的各个功能,包括请求和响应的解析与生成、消息的路由和转发、状态维护、媒体的协商与传输等。
以下是一个简单的SIP协议栈的实现步骤:1.理解SIP协议:阅读SIP协议的官方文档和RFC标准,了解SIP协议的语法、语义以及各个消息的格式和含义。
2. 实现SIP消息的解析与生成:根据SIP协议的规范,实现对SIP请求和响应消息的解析和生成功能,包括解析消息头、解析和生成SIP URI、解析和生成SDP(Session Description Protocol)等。
3.实现SIP消息的路由与转发:根据SIP消息的目的地址,实现对SIP消息的路由功能,将消息转发到正确的目的地。
4.实现SIP会话的状态维护:根据SIP协议定义的各个状态和状态转换规则,实现SIP会话的状态维护功能,包括会话的建立、修改和终止。
5.实现媒体协商与传输:SIP协议通常用于建立多媒体会话,如音频或视频通话。
实现SIP协议栈的媒体协商与传输功能,包括与对方进行媒体协商、建立媒体通道、传输媒体数据等。
6.实现网络通信功能:SIP协议栈需要与网络进行通信,接收和发送SIP消息。
实现底层的网络通信功能,包括建立和维护TCP或UDP连接、接收和发送SIP消息等。
7.调试和测试:在实现完SIP协议栈的各个功能后,进行调试和测试,确保SIP协议栈的正确性和稳定性。
以上只是一个简单的实现步骤,实际的SIP协议栈实现可能更加复杂。
在实现过程中,还需要考虑对SIP协议的各种拓展和扩展,如支持SIP中的各种扩展头、支持SIP的安全性等。
总结起来,实现一个SIP协议栈是一个非常复杂的任务,需要对SIP协议有深入的理解,并具备底层网络通信的知识。
在实现过程中,需要遵循SIP协议的规范,并进行充分的调试和测试,以确保SIP协议栈的正确性和稳定性。
SIP协议解析与实现
SIP协议解析与实现SIP(Session Initiation Protocol)是一种基于IP网络的应用层协议,用于建立、修改和终止多媒体会话,如音频、视频和即时消息等。
它是一种灵活、可扩展的协议,广泛应用于VoIP(Voice over IP)和实时通信领域。
SIP协议的核心是请求-应答模型,有两种基本的消息类型:请求消息和应答消息。
请求消息由客户端发送给服务器,用于请求其中一种服务,而应答消息是服务器对请求消息的响应。
SIP消息的格式采用文本方式,以行分隔,并以空行结束,类似于HTTP协议。
SIP消息由三个部分组成:起始行、首部和消息体。
起始行包含消息类型(请求或应答)、URI(统一资源标识符)和SIP协议版本。
首部是可选的,可包含一系列首部字段,用于传递附加信息,如源地址、目标地址、通信参数等。
消息体是可选的,用于传输实际的消息内容。
1.客户端发起一个SIP请求,包括请求方法(如INVITE、REGISTER、BYE等)、目标URI、SIP协议版本等。
2.请求消息经过网络发送到服务器端,服务器根据请求类型,执行相应的操作,并生成一个应答消息。
3.服务器端将应答消息返回给客户端,应答消息包括状态码、状态原因短语等。
4.客户端根据应答消息进行相应的处理,并可能发起新的请求或结束通话。
一个完整的SIP会话通常包括四个阶段:建立、修改、终止和确认。
建立阶段由INVITE请求和200OK应答组成,用于建立会话连接。
修改阶段通过不同的请求方法(如UPDATE、REFER等)修改会话参数。
终止阶段由BYE请求和200OK应答完成,用于关闭会话连接。
确认阶段通过ACK请求和200OK应答确认会话的建立。
除了基本的请求方法和应答状态码,SIP还定义了一系列的首部字段,用于传递附加信息和控制命令。
常见的首部字段包括From、To、Contact、Call-ID、CSeq、Via、User-Agent等。
实现SIP协议需要编写对应的请求和应答处理逻辑,包括解析和生成SIP消息、发送和接收SIP消息、处理请求和应答等。
sip协议原理分析及总结
sip协议原理分析及总结SIP协议学习总结1、SIP协议定义SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的基于⽂本编码的IP电话/多媒体会议协议。
⽤于建⽴、修改并终⽌多媒体会话。
SIP 协议可⽤于发起会话,也可以⽤于邀请成员加⼊已经⽤其它⽅式建⽴的会话。
多媒体会话可以是点到点的话⾳通信或视频通信,也可以是多点参与的话⾳或视频会议等。
SIP协议透明地⽀持名字映射和重定向服务,便于实现ISDN,智能⽹以及个⼈移动业务。
SIP协议可以⽤多点控制单元(MCU)或全互连的⽅式代替组播发起多⽅呼叫。
与PSTN 相连的IP电话⽹关也可以⽤SIP协议来建⽴普通电话⽤户之间的呼叫。
SIP协议在IETF多媒体数据及控制体系协议栈结构的位置H.323SIP RTSP RSVP RTCPH.263 etc.RTP TCP UDPIPPPP Sonet AAL3/4AAL5ATM EthernetPPPV.34SIP协议⽀持多媒体通信的五个⽅⾯:◆⽤户定位:确定⽤于通信的终端系统;◆⽤户能⼒:确定通信媒体和媒体的使⽤参数;◆⽤户有效性:确定被叫加⼊通信的意愿;◆会话建⽴:建⽴主叫和被叫的呼叫参数;◆会话管理:包括呼叫转移和呼叫终⽌;SIP协议的结构SIP是⼀个分层的协议,也就是说SIP协议由⼀组相当⽆关的处理层次组成,这些层次之间只有松散的关系。
SIP最底层的是它的语法和编码层。
编码⽅式是采⽤扩展的Backus-Naur Form grammar (BNF范式)。
第⼆层是传输层。
它定义了⼀个客户端发送请求和接收应答的⽅式,以及⼀个服务器接收请求和发送应答的⽅式。
所有的SIP要素都包含⼀个通讯层。
第三层是事务层。
事务是SIP的基本组成部分。
⼀个事务是UAC向UAS发送的⼀个请求以及UAS向UAC发送的⼀系列应答。
事务层处理应⽤服务层的重发,匹配请求的应答,以及应⽤服务层的超时。
JAVA开发SIP会话协议
JAVA开发SIP会话协议
一、SIP协议简介
SIP(Session Initiation Protocol,会话初始协议)是一个基于文本的、标准化的协议,用于建立、维护和管理多种类型的多媒体会话(如语音或视频会议、即时通信)。
它也可以用于扩展多媒体应用,例如发布会议资源,发送短消息或在线游戏。
1、使用JAINSIP库
JAIN SIP是Java语言中最流行的SIP栈,并且它支持SIP,SDP,RTP等许多传输层协议。
JAIN SIP提供一个功能强大的API,可以帮助开发者完成基于SIP协议的对话开发。
JAIN SIP的Java实现几乎与RFC 3261兼容,可以帮助开发者建立、维护和管理多媒体会话的完整框架。
2、使用JAINSIPAPI
JAINSIPAPI可以帮助开发者建立SIP会话,并根据具体情况控制和管理会话。
开发者可以使用JAINSIPAPI实现以下功能:
(1)建立一个初始会话:这个功能包括建立一个SIP会话并向接收方发送一个初始请求,等待接收方的响应。
(2)更新会话:这个功能包括更新一个现有的SIP会话,向被请求者发送更新请求,并等待被请求者的响应。
java sip封装实例
java sip封装实例SIP (Session Initiation Protocol) 是一种用于建立、修改和终止多媒体会话的协议。
在 Java 中,可以使用 JAIN SIP API 来实现 SIP 封装。
以下是一个简单的 SIP 封装示例:```javaimport ;import ;import ;import ;import ;public class SipClient {private SipFactory sipFactory;private AddressFactory addressFactory;private MessageFactory messageFactory;private HeaderFactory headerFactory;private SipProvider sipProvider;private SipTransactionManager transactionManager;public SipClient() {try {// 创建 SipFactory 实例sipFactory = ();// 设置实现类型为 JAIN SIP("");// 创建 Properties 实例并设置 SIP 服务器地址和端口号 Properties properties = new Properties();("_NAME", "SipClient");("_ADDRESS", "");// 创建 SIP 事务管理器实例transactionManager = ();// 创建 SIP 栈配置实例并设置 SIP 服务器地址和端口号 ListeningPoint listeningPoint = (5060, "udp");// 创建 SIP 提供者实例并设置 SIP 服务器地址和端口号 sipProvider = (listeningPoint);(false);// 创建地址工厂、消息工厂和头部工厂实例addressFactory = ();messageFactory = ();headerFactory = ();} catch (Exception e) {();}}public void sendInvite(String targetUri, String fromUri, String fromName, String toUri) {try {// 创建 From 头部实例并设置 From 头部字段值和 URI 字段值FromHeader fromHeader = ((fromUri), fromName);// 创建 To 头部实例并设置 To 头部字段值和 URI 字段值ToHeader toHeader = ((toUri), null);// 创建 Call-ID 头部实例并设置 Call-ID 头部字段值和 URI 字段值 CallIdHeader callIdHeader = ();// 创建 CSeq 头部实例并设置 CSeq 头部字段值和 URI 字段值(初始值为1)CSeqHeader cSeqHeader = (1, );// 创建 Max-Forwards 头部实例并设置 Max-Forwards 头部字段值为70(默认值为70)MaxForwardsHeader maxForwardsHeader = (70);// 创建 Contact 头部实例并设置 Contact 头部字段值和 URI 字段值(本地主机名和端口号)ContactHeader contactHeader = (("sip::5060"));// 创建初始 INVITE SIP 请求消息并设置请求消息字段值(包括From、To、Call-ID、CSeq、Max-Forwards、Contact 和 Via)和 URI 字段值(目标主机名和端口号)Request request = ((targetUri), , callIdHeader, cSeqHeader, fromHeader, toHeader, maxForwardsHeader, contactHeader);// 在提供者上发送初始 INVITE SIP 请求消息,并将发送请求消息的 SipTransaction 对象添加到事务管理器中以进行事务处理(自动对话支持已禁用)SipTransaction transaction = (request);} catch (Exception e) {();}}}。
sip详解
漫谈V oIP技术IP电话协议之SIP协议在介绍了H.323协议之后,就不得不说说SIP协议了。
SIP与H.323起源于不同的阵营,一个是互联网领域,一个通信领域。
SIP的开发目的就是方便在互联网上提供语音服务,现在已经成为NGN可能采用的关键性标准。
SIP(Session Initiation Protocal)称为会话初始协议,1999年由IETF (Internet Engineering Task Force)组织提出的,是一个在基于IP网络中,完成实时通信应用的一种信令协议。
会话是指用户之间的数据交换。
在基于SIP 的应用中,每一个会话可以是普通的文本数据,也可以是经过数字化处理的音频、视频数据,还可以是诸如电子游戏等应用的数据。
SIP充分借鉴了其他各种Internet协议,如HTTP(超文本传输协议)、SMTP (简单邮件传输协议)等;和这些协议一样,SIP也采用基于文本的编码方式,这也是SIP同IP语音和视讯通信领域现有标准相比最大的特点之一。
一、 SIP的体系结构SIP体系结构包括以下四个主要部件:用户代理(User Agent):就是SIP终端,也可以说是SIP用户。
按功能分为两类:用户代理客户端(User Agent Client),负责发起呼叫;用户代理服务器(User Agent Server),负责接受呼叫并做出响应。
代理服务器(Proxy Server):可以当作一个客户端或者是一个服务器。
具有解析能力,负责接收用户代理发来的请求,根据网络策略将请求发给相应的服务器,并根据应答对用户做出响应,也可以将收到的消息改写后再发出。
重定向服务器(Redirect Server):负责规划SIP呼叫路由。
它将获得的呼叫的下一跳地址信息告诉呼叫方,呼叫方由此地址直接向下一跳发出申请,而重定向服务器则退出这个呼叫控制过程。
注册服务器(Registar Server ):用来完成UAS的登录。
SIP协议参数详解
SIP协议参数详解1.1 SIP消息分类SIP协议是以层协议的形式组成的,就是说它的⾏为是以⼀套相对独⽴的处理阶段来描述的,每个阶段之间的关系不是很密切。
SIP协议将Server和User Agent之间的通讯的消息分为两类:请求消息和响应消息。
请求消息:客户端为了激活特定操作⽽发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。
SIP请求的6种⽅法: 1、邀请(INVITE)——邀请⽤户加⼊呼叫 2、确认(ACK)——确认客户机已经接收到对INVITE的最终响应 3、可选项(OPTIONS)——请求关于服务器能⼒的信息 4、再见(BYE)——终⽌呼叫上的两个⽤户之间的呼叫 5、取消(CANCEL) 6、注册(REGISTER)——提供地址解析的映射,让服务器知道其它⽤户的位置响应消息:服务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应1.2 SIP消息结构请求消息和响应消息都包括SIP消息头字段和SIP消息体字段;SIP消息头主要⽤来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;SIP消息体主要⽤来描述本次会话具体实现⽅式;1.3 消息格式1.3.1 请求消息格式SIP请求消息的格式,由SIP消息头和⼀组参数⾏组成,如图3-1所⽰。
通过换⾏符区分命令⾏和每⼀条参数⾏。
图1-1 SIP请求消息结构注意:参数⾏的顺序不是固定的。
对应的参数解释见6.3 。
消息体定义:Call-ID:头字段是⽤来将消息分组的唯⼀性标识 From:头字段是指⽰请求发起⽅的逻辑标识,它可能是⽤户的注册地址。
From头字段包含⼀个URI和⼀个可选的显⽰名称 CSeq:头字段⽤于标识事务并对事务进⾏排序。
它由⼀个请求⽅法和⼀个序列号组成,请求⽅法必须与对应的请求消息类型⼀致 Max-Fowords:头字段限定⼀个请求消息在到达⽬的地之前允许经过的最⼤跳数。
sip协议报文 java解码
SIP协议报文Java解码一、SIP协议解析SIP(Session Initiation Protocol,会话初始协议)是一种用于建立、修改和终止多媒体会话(如音频、视频会议)的协议。
在SIP协议中,报文是通信的基本单位,它们通过传输层协议(如UDP或TCP)在网络中传输。
SIP报文由请求行、头部字段和消息体组成。
请求行包括方法字段(如GET、POST等)、请求URI和SIP版本。
头部字段包含多个参数,用于描述会话属性、路由信息和其他控制信息。
消息体包含实际的数据内容,如SDP(Session Description Protocol)描述,用于指定多媒体会话的媒体格式和传输参数。
二、报文解码在Java中,SIP报文的解码通常使用SIP协议栈实现。
常见的Java SIP协议栈包括JAIN-SIP、Mobicents和JAIN-SIP-API等。
这些协议栈提供了API接口,可以方便地解析和处理SIP报文。
在解码SIP报文时,需要将接收到的SIP报文数据按照SIP协议格式进行解析。
首先,解析请求行或响应行,提取方法、URI和SIP版本等信息。
然后,解析头部字段,提取每个字段的值,并根据需要进行处理。
最后,解析消息体,获取实际的媒体数据或其他会话描述信息。
三、报文内容解析解析SIP报文后,需要对报文内容进行进一步解析和处理。
根据SIP报文的类型和目的,可以提取不同的信息。
例如,对于INVITE请求报文,可以提取被叫URI、呼叫原因、媒体描述等信息;对于SDP 描述报文,可以提取媒体类型、端口号、IP地址等参数。
根据需要,还可以对SIP报文进行更高级的处理,如路由选择、负载均衡、会话控制等。
这些处理依赖于具体的业务逻辑和应用场景。
四、异常处理在解析和处理SIP报文时,可能会遇到各种异常情况。
例如,接收到的SIP报文格式不正确、字段值不符合规范或网络传输错误等。
因此,需要对异常情况进行妥善处理。
在Java中,可以使用异常处理机制来捕获和处理异常情况。
SIP(会话初始协议)理论概述
SIP原理培训教材目录第一节SIP概述 (2)1.1 SIP概念 (2)1.2 SIP功能 (3)1.3 SIP特征 (3)1.4 SIP元素 (4)1.4.1 体系架构 (4)1.4.2 基本元素 (6)第二节SIP消息和操作 (7)2.1 SIP消息 (7)2.1.1请求消息 (8)2.1.2 响应消息 (8)2.1.3 SIP地址和SIP URL (9)2.2 SIP操作 (10)2.2.1 SIP服务器定位 (10)2.2.3 SIP事务 (12)2.2.3 SIP邀请 (12)2.2.4 SIP用户定位 (14)2.2.5 SIP注册服务 (15)2.2.6 改变现有会话 (16)第三节SIP呼叫过程详解 (17)3.1直接呼叫 (17)3.1.1 主叫向被叫发出INVITE请求 (18)3.2代理呼叫 (19)3.3重定向呼叫 (20)第四节网络传真 (21)4.1传真介绍 (21)4.2 传真标准 (21)4.2.1传统通信网络传真标准——T.30标准 (21)4.2.2 IP网络传真标准——T.37、T.38标准 (22)3 IP传真方法比较 (24)关于SIP协议的扩展阅读 (24)第一节SIP概述1.1 SIP概念SIP(Session Initiation Protocol,会话初始协议)是一个基于文本且独立于底层传输协议TCP/UDP/SCTP的应用层控制协议,它用来创建、修改和终结会话。
会话的类型包括Internet 电话呼叫、多媒体会议和多媒体传输等,会话的参与者可以是一方或多方。
SIP是由IETF(INTERNET工程任务组)提出的IP电话信令协议,其主要目的是为了解决IP网中的信令控制,以及同软交换的通信,从而构成下一代的增值业务平台,对各行各业提供更好的增值服务;其结构图如下所示:图中,标有“SIP”的线路,表示SIP协议的信令流(*),“RTP”表示采用RTP协议的媒体流(譬如语音数据流)。
SIP协议栈
SIP协议栈SIP(Session Initiation Protocol)是一种用于建立、修改和终止多媒体会话的通信协议。
它使用文本格式进行通信,并在互联网上运行。
SIP协议栈是指用于实现SIP协议的软件组件的集合,下面将介绍SIP协议栈的组成和工作原理。
SIP协议栈由多个层次组成,包括传输层、协议层和应用层。
传输层负责将SIP消息从一个节点传输到另一个节点。
常用的传输层协议包括UDP(User Datagram Protocol)和TCP (Transmission Control Protocol)。
协议层负责解析和处理SIP消息,例如建立会话、修改会话参数等。
应用层负责与用户交互,并根据需要生成SIP消息。
SIP协议栈的工作原理如下:当一个节点想要建立会话时,它将发送一个INVITE消息到目标节点。
目标节点收到INVITE消息后,将返回一个100 Trying消息表示正在处理请求。
然后,如果目标节点可以接受会话,它将返回一个180 Ringing消息表示正在响铃,并开始为该会话分配资源。
之后,目标节点将返回一个200 OK消息表示会话建立成功。
发送节点收到200 OK消息后,将发送一个ACK消息确认会话建立成功。
如果发送节点需要修改会话参数,它可以发送一个UPDATE消息到目标节点。
目标节点收到UPDATE消息后,将根据需要修改会话参数,并返回一个200 OK消息确认修改成功。
如果发送节点想要终止会话,它可以发送一个BYE消息到目标节点。
目标节点收到BYE消息后,将返回一个200 OK消息表示会话终止成功。
SIP协议栈还支持其他功能,例如身份验证、位置服务和消息转发。
身份验证功能可以确保会话只能由合法用户建立和修改。
位置服务功能可以根据用户的位置信息将会话路由到合适的节点。
消息转发功能可以将SIP消息转发到其他网络中的节点。
总之,SIP协议栈是一种用于建立、修改和终止多媒体会话的通信协议。
java实现SIP一个例子
java实现SIP一个例子(如果你贴子有附件,请一定按照下面模板发贴,否则贴子会被立刻删除,谢谢合作!)【资料名称】:【作者】:【语言】:【页数】:【格式】:【发表时间】:【摘要或目录】:(请根据需要,保留上面的相应选项)package com.voip.sipphone;import gov.nist.javax.sip.address.SipUri;import gov.nist.javax.sip.header.CSeq;import gov.nist.javax.sip.header.Contact;import gov.nist.javax.sip.header.ContentLength;import gov.nist.javax.sip.header.ContentType;import gov.nist.javax.sip.header.From;import gov.nist.javax.sip.header.Via;import java.text.ParseException;import java.util.ArrayList;import java.util.Hashtable;import java.util.List;import java.util.Properties;import java.util.Timer;import javax.sip.*;import javax.sip.address.Address;import javax.sip.address.AddressFactory;import javax.sip.address.URI;import javax.sip.header.CallIdHeader;import javax.sip.header.ContactHeader;import javax.sip.header.ExpiresHeader;import javax.sip.header.FromHeader;import javax.sip.header.Header;import javax.sip.header.HeaderFactory;import javax.sip.header.MaxForwardsHeader;import javax.sip.header.RecordRouteHeader;import javax.sip.header.ToHeader;import javax.sip.header.ViaHeader;import javax.sip.message.MessageFactory;import javax.sip.message.Request;import javax.sip.message.Response;public class SipPhone implements SipListener{public void processDialogTerminated(DialogTerminatedEvent arg0) {// TODO Auto-generated method stubSystem.out.println("processDialogTerminated " + arg0.toString());}public void processIOException(IOExceptionEvent arg0) {// TODO Auto-generated method stubSystem.out.println("processIOException " + arg0.toString());}/*** 保存当前注册的用户*/private static Hashtable<URI, URI> currUser = new Hashtable();/*** @author software* 注册定时器*/class TimerTask extends Timer{/*** default constructor*/public TimerTask(){}/*** 如果定时任务到,则删除该用户的注册信息*/public void run(){}}/*** 服务器侦听IP地址*/private String ipAddr = "192.168.0.20";/*** 服务器侦听端口*/private int port = 5060;/*** 处理register请求* @param request 请求消息*/private void processRegister(Request request, RequestEvent requestEvent){if (null == request){System.out.println("processInvite request is null.");return;}//System.out.println("Request " + request.toString());ServerTransaction serverTransactionId = requestEvent.getServerTransaction();try{Response response = null;ToHeader head = (ToHeader)request.getHeader();Address toAddress = head.getAddress();URI toURI = toAddress.getURI();ContactHeader contactHeader = (ContactHeader) request.getHeader("Contact");Address contactAddr = contactHeader.getAddress();URI contactURI = contactAddr.getURI();System.out.println("processRegister from: " + toURI + " request str: " +contactURI);int expires = request.getExpires().getExpires();// 如果expires不等于0,则为注册,否则为注销。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SIP核心子层(SIP core sublayer)
SIP事件子层(SIP transaction sublayer)
• SIP事件子层是实现事件处理的层次。对于许多 SIP实体,这一层的服务逻辑是相同的。 • SIP事件的两个组成部分: (1)客户端事件(Client Transaction) (2)服务器事件(Server Transaction)
SIP事件子层(SIP transaction sublayer)
• 可靠传输机制:一个SIP事件包含请求,以及与请 求相关的临时相应和最终响应。
SIP传输子层( SIP Transport Sublayer )
• 作用:这一层负责SIP消息的实际传输与接收。 (1)确定为哪个将要被发送或接收的请求或响应 建立传输连接。 (2)命令传输层建立传输连接 (3)命令传输层监听过来的消息 (4)命令传输层发送或接受SIP消息 (5)将从传输层收到的响应交付给相应的传输用 户 (6)负责封装SIP消息 (7)处理传输层的错误
• 协议实现的所有对象不都是由SipFactory创建 的。一些其他对象是由以下工厂创建: the MessageFactory(创建对象表示SIP消息) the AddressFactory(创建对象表示SIP地址) the HeaderFactory(创建对象表示SIP头部) 这三者的实体可通过调用SipFactory的工厂创 建的方法得到。
SIP协议结构及java实现
不保证内容的准确性,指证请联系 QQ 403690072 欢迎交流
SIP实现的功能在协议内部是如何工作与实现的?
SIP核心子层(SIP core sublayer)
SIP核心子层在SIP体系结构的顶端,在这个 子层,实现了每个SIP实体的特定服务逻辑。每个 SIP实体尽管在其他层会共用某种逻辑,但是在核 心子层,他们有各自不同的服务逻辑。这些服务 逻辑 就是SIP核心。这样每个实体的不同服务逻 辑就将他们区分开来。这些核心包括 UAC,UAS,REGISTRAR,STATEFUL PROXY&STATELESS PROXY 注意:这些SI• JAIN(Java APIs for Integrated Networks) • JAIN SIP 是Java平台专为SIP提供的集成 网络接口。 • JAIN SIP主要为应用开发人员提供如下接 口:
(1)构建和解析SIP消息 (2)使用SIP事件子层 (3)使用SIP传输子层
创建消息(请求/响应)
实例
JAIN SIP概况
• 行业术语通常称一个协议的实现过程为协 议栈。 • SIP协议栈可以由Java代码编写,也可以由 其他编程语言编写。 • JAIN SIP比较底层,变成结构表现的都是 些底层概念:消息,头部,IP地址,端口 等等。用于创建用户代理,代理服务器等 SIP实体。有利于深刻理解SIP的工作机制。
JAIN SIP概况
JAIN SIP 体系结构
• JAIN SIP 体系结构基于三种模式:
提供者模式 工厂模式
事务监听模式
提供者模式(peer-provider pattern)
• 提供者允许应用接受和发送SIP消息,在JAIN SIP中这个提供者就是SipProvider接口 • 除了SipProvider之外还有两个接口用来实现 SIP的其他方面:SipStack接口和 ListeningPoint接口 • SipStack接口用于管理和配置底层的SIP协议 栈 • ListeningPoint接口是SP消息实体发送接收消 息的套接字的Java表示
SIP传输子层( SIP Transport Sublayer )
• 组成: (1)客户端传输: 负责从传输用户接收请求并将请求传送到网 络;从网络收到响应再交付给适当的传输用户 (2)服务器传输: 负责从网络接受请求,并将请求交付给适当 的传输用户;从传输用户接受响应再传送到网络。
SIP语法和编码功能
SIP核心子层(SIP core sublayer)
• 在这一层,SIP核心的实现可分为两种类型:
• 一个核心用到事件子层服务,即称他是事 件用户。 • UAS core, UAC core, STATEFUL PROXY core, REGISTRAR core
事件用户
传输用户
• 用到传输子层服务的实体,都是传输用户。 • 事件子层一定是传输用户。核心子层中只 有STATELESS PROXY core 是传输用户
SIP事件子层(SIP transaction sublayer)
SIP事件子层(SIP transaction sublayer)
• 作用:尽管提供了很多功能。最主要的功能是用 来可靠地传输UDP数据。此外他还可以被事件用 户使用,透明传输。 • 可靠: (1)请求与相应的相关性(branch) (2)传输机制
工厂模式
• 应用程序需要创建具有SIP功能的SIP对象。 这一动作需要通过工厂完成。 • 所谓工厂就是对访问实现SIP协议栈的方法 进行封装并允许应用获取其实现类实例的 中介。 • 工厂类在JAIN SIP中叫做SipFactory。 • 工厂是个单例类,整个系统中仅有他的唯 一一个实例。
工厂模式
事件监听模式
• 这种处理事务的机制被事件监听接口定义。 这个接口包含有适用于每种事件的 processEvent操作。当SIP协议栈从网络收 到SIP消息,SipProvider视之为一个事件, “告知”事件监听器 • 这个事件包括:请求事件和响应事件
如何使用这些类与接口
SIP监听器
• 一旦有事件触发(接收到网络上传递来的消息或 计时器超时)SipProvider负责将事件传递给SIP 监听器(SipListener)
• 这个功能是指在信道传输的SIP消息的具体 编码。 • 数据通过SIP传输子层交付到Socket API, 要用TCP/IP协议族传输数据必须遵循SIP 消息语法以及特定的编码规则。 • 编码规则指定要用Augmented BackusNaur Form(ABNF) grammar [RFC 4234].